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,10 +201,11 @@ 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
if(player.gameMode != GameMode.CREATIVE){
// Get repairCost
leftItem.itemMeta?.let { leftMeta -> leftItem.itemMeta?.let { leftMeta ->
val leftName = leftMeta.displayName val leftName = leftMeta.displayName
output.itemMeta?.let { output.itemMeta?.let {
@ -216,17 +218,16 @@ class AnvilEventListener : Listener {
repairCost+= calculatePenalty(leftItem,null,resultCopy) repairCost+= calculatePenalty(leftItem,null,resultCopy)
repairCost+= resultAmount*ConfigOptions.unitRepairCost repairCost+= resultAmount*ConfigOptions.unitRepairCost
val ignoreXpCost = player.gameMode == GameMode.CREATIVE if((inventory.maximumRepairCost < repairCost)
if((!ignoreXpCost) && ((inventory.maximumRepairCost < repairCost) || (player.level < repairCost)) return
|| (player.level < repairCost))) return }
// If not creative middle click...
if(event.click != ClickType.MIDDLE){
// We remove what should be removed // We remove what should be removed
inventory.setItem(ANVIL_INPUT_LEFT,null) inventory.setItem(ANVIL_INPUT_LEFT,null)
rightItem.amount-= resultAmount rightItem.amount-= resultAmount
inventory.setItem(ANVIL_INPUT_RIGHT,rightItem) inventory.setItem(ANVIL_INPUT_RIGHT,rightItem)
inventory.setItem(ANVIL_OUTPUT_SLOT, null) inventory.setItem(ANVIL_OUTPUT_SLOT, null)
if(!ignoreXpCost){
player.level-= repairCost player.level-= repairCost
} }