From ef5fcc88693d0924830cc17c024216cd8f19c8f5 Mon Sep 17 00:00:00 2001 From: Auxilor Date: Fri, 13 Aug 2021 13:29:08 +0100 Subject: [PATCH] Fixed unbreakable bugs --- .../ecoenchants/normal/BlastMining.java | 14 +++++++++----- .../ecoenchants/normal/Lumberjack.java | 13 ++++++++----- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/BlastMining.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/BlastMining.java index 450dd9bf..12e14a84 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/BlastMining.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/BlastMining.java @@ -83,9 +83,11 @@ public class BlastMining extends EcoEnchant { } } } + ItemStack itemStack = player.getInventory().getItemInMainHand(); ItemMeta beforeMeta = itemStack.getItemMeta(); assert beforeMeta != null; + boolean hadUnbreak = beforeMeta.isUnbreakable(); beforeMeta.setUnbreakable(true); itemStack.setItemMeta(beforeMeta); int blocks = toBreak.size(); @@ -98,15 +100,17 @@ public class BlastMining extends EcoEnchant { ItemMeta afterMeta = itemStack.getItemMeta(); assert afterMeta != null; - afterMeta.setUnbreakable(false); + afterMeta.setUnbreakable(hadUnbreak); itemStack.setItemMeta(afterMeta); PlayerItemDamageEvent mockEvent = new PlayerItemDamageEvent(player, itemStack, blocks); Bukkit.getPluginManager().callEvent(mockEvent); - ItemMeta wayAfterMeta = itemStack.getItemMeta(); - assert wayAfterMeta != null; - ((Damageable) wayAfterMeta).setDamage(((Damageable) wayAfterMeta).getDamage() + mockEvent.getDamage()); - itemStack.setItemMeta(wayAfterMeta); + if (!hadUnbreak) { + ItemMeta wayAfterMeta = itemStack.getItemMeta(); + assert wayAfterMeta != null; + ((Damageable) wayAfterMeta).setDamage(((Damageable) wayAfterMeta).getDamage() + mockEvent.getDamage()); + itemStack.setItemMeta(wayAfterMeta); + } AnticheatManager.unexemptPlayer(player); } diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Lumberjack.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Lumberjack.java index 5d9fb58c..7d7e79c3 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Lumberjack.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/ecoenchants/normal/Lumberjack.java @@ -58,6 +58,7 @@ public class Lumberjack extends EcoEnchant { ItemStack itemStack = player.getInventory().getItemInMainHand(); ItemMeta beforeMeta = itemStack.getItemMeta(); assert beforeMeta != null; + boolean hadUnbreak = beforeMeta.isUnbreakable(); beforeMeta.setUnbreakable(true); itemStack.setItemMeta(beforeMeta); int blocks = treeBlocks.size(); @@ -75,15 +76,17 @@ public class Lumberjack extends EcoEnchant { ItemMeta afterMeta = itemStack.getItemMeta(); assert afterMeta != null; - afterMeta.setUnbreakable(false); + afterMeta.setUnbreakable(hadUnbreak); itemStack.setItemMeta(afterMeta); PlayerItemDamageEvent mockEvent = new PlayerItemDamageEvent(player, itemStack, blocks); Bukkit.getPluginManager().callEvent(mockEvent); - ItemMeta wayAfterMeta = itemStack.getItemMeta(); - assert wayAfterMeta != null; - ((Damageable) wayAfterMeta).setDamage(((Damageable) wayAfterMeta).getDamage() + mockEvent.getDamage()); - itemStack.setItemMeta(wayAfterMeta); + if (!hadUnbreak) { + ItemMeta wayAfterMeta = itemStack.getItemMeta(); + assert wayAfterMeta != null; + ((Damageable) wayAfterMeta).setDamage(((Damageable) wayAfterMeta).getDamage() + mockEvent.getDamage()); + itemStack.setItemMeta(wayAfterMeta); + } AnticheatManager.unexemptPlayer(player); }