From b36c1827a4f5d6c71a60baef2dc3cbc7dc22174c Mon Sep 17 00:00:00 2001 From: alexcrea <42614139+alexcrea@users.noreply.github.com> Date: Sun, 11 Feb 2024 07:14:48 +0100 Subject: [PATCH] fix creative issues --- .../io/delilaheve/AnvilEventListener.kt | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/src/main/kotlin/io/delilaheve/AnvilEventListener.kt b/src/main/kotlin/io/delilaheve/AnvilEventListener.kt index 76d9cf4..11b583d 100644 --- a/src/main/kotlin/io/delilaheve/AnvilEventListener.kt +++ b/src/main/kotlin/io/delilaheve/AnvilEventListener.kt @@ -16,6 +16,7 @@ import org.bukkit.event.Event import org.bukkit.event.EventHandler import org.bukkit.event.EventPriority.HIGHEST import org.bukkit.event.Listener +import org.bukkit.event.inventory.ClickType import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.inventory.AnvilInventory @@ -200,33 +201,33 @@ class AnvilEventListener : Listener { // But first we check if we should give the item val slotDestination = getActionSlot(event,player) if(slotDestination.type == SlotType.NO_SLOT) return - if(inventory.repairCost > player.level) return - // Get repairCost + // Test repair cost var repairCost = 0 - leftItem.itemMeta?.let { leftMeta -> - val leftName = leftMeta.displayName - output.itemMeta?.let { - if(!leftName.contentEquals(it.displayName)){ - repairCost+= ConfigOptions.itemRenameCost + if(player.gameMode != GameMode.CREATIVE){ + // Get repairCost + leftItem.itemMeta?.let { leftMeta -> + val leftName = leftMeta.displayName + output.itemMeta?.let { + if(!leftName.contentEquals(it.displayName)){ + repairCost+= ConfigOptions.itemRenameCost + } } } + + repairCost+= calculatePenalty(leftItem,null,resultCopy) + repairCost+= resultAmount*ConfigOptions.unitRepairCost + + if((inventory.maximumRepairCost < repairCost) + || (player.level < repairCost)) return } - - repairCost+= calculatePenalty(leftItem,null,resultCopy) - repairCost+= resultAmount*ConfigOptions.unitRepairCost - - val ignoreXpCost = player.gameMode == GameMode.CREATIVE - if((!ignoreXpCost) && ((inventory.maximumRepairCost < repairCost) - || (player.level < repairCost))) return - - // We remove what should be removed - inventory.setItem(ANVIL_INPUT_LEFT,null) - rightItem.amount-= resultAmount - inventory.setItem(ANVIL_INPUT_RIGHT,rightItem) - inventory.setItem(ANVIL_OUTPUT_SLOT, null) - - if(!ignoreXpCost){ + // If not creative middle click... + if(event.click != ClickType.MIDDLE){ + // We remove what should be removed + inventory.setItem(ANVIL_INPUT_LEFT,null) + rightItem.amount-= resultAmount + inventory.setItem(ANVIL_INPUT_RIGHT,rightItem) + inventory.setItem(ANVIL_OUTPUT_SLOT, null) player.level-= repairCost }