fix creative issues

This commit is contained in:
alexcrea 2024-02-11 07:14:48 +01:00
parent 2f051a93e3
commit b36c1827a4

View file

@ -16,6 +16,7 @@ import org.bukkit.event.Event
import org.bukkit.event.EventHandler import org.bukkit.event.EventHandler
import org.bukkit.event.EventPriority.HIGHEST import org.bukkit.event.EventPriority.HIGHEST
import org.bukkit.event.Listener import org.bukkit.event.Listener
import org.bukkit.event.inventory.ClickType
import org.bukkit.event.inventory.InventoryClickEvent import org.bukkit.event.inventory.InventoryClickEvent
import org.bukkit.event.inventory.PrepareAnvilEvent import org.bukkit.event.inventory.PrepareAnvilEvent
import org.bukkit.inventory.AnvilInventory import org.bukkit.inventory.AnvilInventory
@ -200,33 +201,33 @@ class AnvilEventListener : Listener {
// But first we check if we should give the item // But first we check if we should give the item
val slotDestination = getActionSlot(event,player) val slotDestination = getActionSlot(event,player)
if(slotDestination.type == SlotType.NO_SLOT) return if(slotDestination.type == SlotType.NO_SLOT) return
if(inventory.repairCost > player.level) return
// Get repairCost // Test repair cost
var repairCost = 0 var repairCost = 0
leftItem.itemMeta?.let { leftMeta -> if(player.gameMode != GameMode.CREATIVE){
val leftName = leftMeta.displayName // Get repairCost
output.itemMeta?.let { leftItem.itemMeta?.let { leftMeta ->
if(!leftName.contentEquals(it.displayName)){ val leftName = leftMeta.displayName
repairCost+= ConfigOptions.itemRenameCost 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
} }
// If not creative middle click...
repairCost+= calculatePenalty(leftItem,null,resultCopy) if(event.click != ClickType.MIDDLE){
repairCost+= resultAmount*ConfigOptions.unitRepairCost // We remove what should be removed
inventory.setItem(ANVIL_INPUT_LEFT,null)
val ignoreXpCost = player.gameMode == GameMode.CREATIVE rightItem.amount-= resultAmount
if((!ignoreXpCost) && ((inventory.maximumRepairCost < repairCost) inventory.setItem(ANVIL_INPUT_RIGHT,rightItem)
|| (player.level < repairCost))) return inventory.setItem(ANVIL_OUTPUT_SLOT, null)
// 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){
player.level-= repairCost player.level-= repairCost
} }