Fix big issue with enchantment level not being checked and relying on server implementation

This commit is contained in:
alexcrea 2024-12-07 15:36:16 +01:00
parent 8f12d79cb9
commit e003a23af1
No known key found for this signature in database
GPG key ID: 43FD265DB0DBF91F

View file

@ -52,6 +52,11 @@ class AnvilResultListener: Listener {
val leftItem = inventory.getItem(ANVIL_INPUT_LEFT) ?: return val leftItem = inventory.getItem(ANVIL_INPUT_LEFT) ?: return
val rightItem = inventory.getItem(ANVIL_INPUT_RIGHT) val rightItem = inventory.getItem(ANVIL_INPUT_RIGHT)
if(!GameMode.CREATIVE.equals(player.gameMode) && inventory.repairCost >= inventory.maximumRepairCost) {
event.result = Event.Result.DENY
return
}
// Test custom recipe // Test custom recipe
val recipe = CustomRecipeUtil.getCustomRecipe(leftItem, rightItem) val recipe = CustomRecipeUtil.getCustomRecipe(leftItem, rightItem)
if(recipe != null){ if(recipe != null){
@ -107,6 +112,7 @@ class AnvilResultListener: Listener {
val amount = CustomRecipeUtil.getCustomRecipeAmount(recipe, leftItem, rightItem) val amount = CustomRecipeUtil.getCustomRecipeAmount(recipe, leftItem, rightItem)
val xpCost = amount * recipe.xpCostPerCraft val xpCost = amount * recipe.xpCostPerCraft
CustomAnvil.log("gamemode: ${player.gameMode != GameMode.CREATIVE}, cost: $xpCost, level: ${player.level}, result: ${player.level < xpCost}")
if ((player.gameMode != GameMode.CREATIVE) && (player.level < xpCost)) return if ((player.gameMode != GameMode.CREATIVE) && (player.level < xpCost)) return
// We give the item manually // We give the item manually