mirror of
https://github.com/Artillex-Studios/AxMinions.git
synced 2025-02-16 01:11:23 +01:00
Mutable Items
This commit is contained in:
parent
addae7afbc
commit
84f83279d7
@ -7,7 +7,7 @@ import org.bukkit.event.Event
|
|||||||
import org.bukkit.event.HandlerList
|
import org.bukkit.event.HandlerList
|
||||||
import org.bukkit.inventory.ItemStack
|
import org.bukkit.inventory.ItemStack
|
||||||
|
|
||||||
class MinionToolEvent(minion: Minion, private val player: Player, private val newTool: ItemStack) : MinionEvent(minion), Cancellable {
|
class MinionToolEvent(minion: Minion, private val player: Player, var newTool: ItemStack, var oldTool: ItemStack) : MinionEvent(minion), Cancellable {
|
||||||
companion object {
|
companion object {
|
||||||
private val handlerList = HandlerList()
|
private val handlerList = HandlerList()
|
||||||
|
|
||||||
@ -29,10 +29,6 @@ class MinionToolEvent(minion: Minion, private val player: Player, private val ne
|
|||||||
return player
|
return player
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getNewTool(): ItemStack {
|
|
||||||
return newTool
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun setCancelled(cancelled: Boolean) {
|
override fun setCancelled(cancelled: Boolean) {
|
||||||
isCancelled = cancelled
|
isCancelled = cancelled
|
||||||
}
|
}
|
||||||
|
@ -69,19 +69,20 @@ class MinionInventoryListener : Listener {
|
|||||||
player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.WRONG_TOOL()))
|
player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.WRONG_TOOL()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val minionToolEvent = MinionToolEvent(minion, player, event.currentItem!!)
|
|
||||||
|
val minionToolEvent = MinionToolEvent(minion, player, event.currentItem!!.clone(), minion.getTool()!!.clone())
|
||||||
Bukkit.getPluginManager().callEvent(minionToolEvent)
|
Bukkit.getPluginManager().callEvent(minionToolEvent)
|
||||||
if (minionToolEvent.isCancelled) return
|
if (minionToolEvent.isCancelled) return
|
||||||
|
|
||||||
if (minion.getTool()?.type != Material.AIR) {
|
if (minion.getTool()?.type != Material.AIR) {
|
||||||
val current = event.currentItem!!.clone()
|
val current = minionToolEvent.newTool
|
||||||
val tool = minion.getTool()?.clone()
|
val tool = minionToolEvent.oldTool
|
||||||
minion.setTool(current)
|
minion.setTool(current)
|
||||||
minion.updateArmour()
|
minion.updateArmour()
|
||||||
event.currentItem!!.amount = 0
|
event.currentItem!!.amount = 0
|
||||||
event.clickedInventory!!.addItem(tool)
|
event.clickedInventory!!.addItem(tool)
|
||||||
} else {
|
} else {
|
||||||
minion.setTool(event.currentItem!!)
|
minion.setTool(minionToolEvent.newTool)
|
||||||
event.currentItem!!.amount = 0
|
event.currentItem!!.amount = 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -95,18 +96,19 @@ class MinionInventoryListener : Listener {
|
|||||||
player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.ERROR_INVENTORY_FULL()))
|
player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.ERROR_INVENTORY_FULL()))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
val minionToolEvent = MinionToolEvent(minion, player, ItemStack(Material.AIR))
|
val tool = minion.getTool()?.clone() ?: return
|
||||||
|
|
||||||
|
val minionToolEvent = MinionToolEvent(minion, player, ItemStack(Material.AIR), tool)
|
||||||
Bukkit.getPluginManager().callEvent(minionToolEvent)
|
Bukkit.getPluginManager().callEvent(minionToolEvent)
|
||||||
if (minionToolEvent.isCancelled) return
|
if (minionToolEvent.isCancelled) return
|
||||||
|
|
||||||
val tool = minion.getTool()?.clone() ?: return
|
|
||||||
minion.setTool(ItemStack(Material.AIR))
|
minion.setTool(ItemStack(Material.AIR))
|
||||||
minion.updateArmour()
|
minion.updateArmour()
|
||||||
val toolMeta = tool.itemMeta ?: return
|
val toolMeta = minionToolEvent.oldTool.itemMeta ?: return
|
||||||
toolMeta.persistentDataContainer.remove(Keys.GUI)
|
toolMeta.persistentDataContainer.remove(Keys.GUI)
|
||||||
tool.setItemMeta(toolMeta)
|
minionToolEvent.oldTool.setItemMeta(toolMeta)
|
||||||
|
|
||||||
player.inventory.addItem(tool)
|
player.inventory.addItem(minionToolEvent.oldTool)
|
||||||
minion.updateInventories()
|
minion.updateInventories()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user