From 84f83279d72d525139c95a2abac00402f36132a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Can=20Y=C4=B1lmazlar?= Date: Sat, 20 Jul 2024 15:29:37 +0300 Subject: [PATCH] Mutable Items --- .../axminions/api/events/MinionToolEvent.kt | 6 +----- .../listeners/MinionInventoryListener.kt | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/api/src/main/kotlin/com/artillexstudios/axminions/api/events/MinionToolEvent.kt b/api/src/main/kotlin/com/artillexstudios/axminions/api/events/MinionToolEvent.kt index 0f7c368..98dd3cd 100644 --- a/api/src/main/kotlin/com/artillexstudios/axminions/api/events/MinionToolEvent.kt +++ b/api/src/main/kotlin/com/artillexstudios/axminions/api/events/MinionToolEvent.kt @@ -7,7 +7,7 @@ import org.bukkit.event.Event import org.bukkit.event.HandlerList 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 { private val handlerList = HandlerList() @@ -29,10 +29,6 @@ class MinionToolEvent(minion: Minion, private val player: Player, private val ne return player } - fun getNewTool(): ItemStack { - return newTool - } - override fun setCancelled(cancelled: Boolean) { isCancelled = cancelled } diff --git a/common/src/main/kotlin/com/artillexstudios/axminions/listeners/MinionInventoryListener.kt b/common/src/main/kotlin/com/artillexstudios/axminions/listeners/MinionInventoryListener.kt index 29bc8da..fb7aa6c 100644 --- a/common/src/main/kotlin/com/artillexstudios/axminions/listeners/MinionInventoryListener.kt +++ b/common/src/main/kotlin/com/artillexstudios/axminions/listeners/MinionInventoryListener.kt @@ -69,19 +69,20 @@ class MinionInventoryListener : Listener { player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.WRONG_TOOL())) return } - val minionToolEvent = MinionToolEvent(minion, player, event.currentItem!!) + + val minionToolEvent = MinionToolEvent(minion, player, event.currentItem!!.clone(), minion.getTool()!!.clone()) Bukkit.getPluginManager().callEvent(minionToolEvent) if (minionToolEvent.isCancelled) return if (minion.getTool()?.type != Material.AIR) { - val current = event.currentItem!!.clone() - val tool = minion.getTool()?.clone() + val current = minionToolEvent.newTool + val tool = minionToolEvent.oldTool minion.setTool(current) minion.updateArmour() event.currentItem!!.amount = 0 event.clickedInventory!!.addItem(tool) } else { - minion.setTool(event.currentItem!!) + minion.setTool(minionToolEvent.newTool) event.currentItem!!.amount = 0 } @@ -95,18 +96,19 @@ class MinionInventoryListener : Listener { player.sendMessage(StringUtils.formatToString(Messages.PREFIX() + Messages.ERROR_INVENTORY_FULL())) 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) if (minionToolEvent.isCancelled) return - val tool = minion.getTool()?.clone() ?: return minion.setTool(ItemStack(Material.AIR)) minion.updateArmour() - val toolMeta = tool.itemMeta ?: return + val toolMeta = minionToolEvent.oldTool.itemMeta ?: return toolMeta.persistentDataContainer.remove(Keys.GUI) - tool.setItemMeta(toolMeta) + minionToolEvent.oldTool.setItemMeta(toolMeta) - player.inventory.addItem(tool) + player.inventory.addItem(minionToolEvent.oldTool) minion.updateInventories() return }