diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java index 7df3facd..eb169b9b 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecoenchants/enchantments/util/EnchantmentUtils.java @@ -10,18 +10,11 @@ import com.willfp.ecoenchants.EcoEnchantsPlugin; import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.EcoEnchants; import lombok.experimental.UtilityClass; -import org.bukkit.Bukkit; -import org.bukkit.GameMode; import org.bukkit.NamespacedKey; import org.bukkit.block.Block; import org.bukkit.enchantments.Enchantment; import org.bukkit.entity.LivingEntity; import org.bukkit.entity.Player; -import org.bukkit.event.player.PlayerItemBreakEvent; -import org.bukkit.event.player.PlayerItemDamageEvent; -import org.bukkit.inventory.ItemStack; -import org.bukkit.inventory.meta.Damageable; -import org.bukkit.inventory.meta.ItemMeta; import org.jetbrains.annotations.NotNull; import java.lang.reflect.Field; @@ -181,7 +174,7 @@ public class EnchantmentUtils { } /** - * Rehandle breaking in a fast way that doesn't call Player#updateInventory. + * Old method still used for backwards compatibility. * * @param player The player. * @param toBreak The blocks to break. @@ -190,49 +183,10 @@ public class EnchantmentUtils { public static void rehandleBreaking(@NotNull final Player player, @NotNull final Set toBreak, @NotNull final EcoPlugin plugin) { - if (plugin.getConfigYml().getBool("advanced.rehandle-breaking.enabled")) { - ItemStack itemStack = player.getInventory().getItemInMainHand(); - ItemMeta beforeMeta = itemStack.getItemMeta(); - assert beforeMeta != null; - boolean hadUnbreak = beforeMeta.isUnbreakable() || player.getGameMode() == GameMode.CREATIVE; - beforeMeta.setUnbreakable(true); - itemStack.setItemMeta(beforeMeta); - int blocks = toBreak.size(); - - for (Block block : toBreak) { - block.setMetadata("block-ignore", plugin.getMetadataValueFactory().create(true)); - BlockUtils.breakBlock(player, block); - block.removeMetadata("block-ignore", plugin); - } - - ItemMeta afterMeta = itemStack.getItemMeta(); - assert afterMeta != null; - afterMeta.setUnbreakable(hadUnbreak); - itemStack.setItemMeta(afterMeta); - PlayerItemDamageEvent mockEvent = new PlayerItemDamageEvent(player, itemStack, blocks); - Bukkit.getPluginManager().callEvent(mockEvent); - int unbLevel = EnchantChecks.getItemLevel(itemStack, Enchantment.DURABILITY); - double cancelChance = (100 / (double) (unbLevel + 1)); - - if (hadUnbreak || NumberUtils.randFloat(0, 100) > cancelChance) { - return; - } - - ItemMeta wayAfterMeta = itemStack.getItemMeta(); - assert wayAfterMeta != null; - ((Damageable) wayAfterMeta).setDamage(((Damageable) wayAfterMeta).getDamage() + mockEvent.getDamage()); - itemStack.setItemMeta(wayAfterMeta); - if (((Damageable) wayAfterMeta).getDamage() >= itemStack.getType().getMaxDurability()) { - PlayerItemBreakEvent breakEvent = new PlayerItemBreakEvent(player, itemStack); - Bukkit.getPluginManager().callEvent(breakEvent); - itemStack.setAmount(0); - } - } else { - for (Block block : toBreak) { - block.setMetadata("block-ignore", plugin.getMetadataValueFactory().create(true)); - BlockUtils.breakBlock(player, block); - block.removeMetadata("block-ignore", plugin); - } + for (Block block : toBreak) { + block.setMetadata("block-ignore", plugin.getMetadataValueFactory().create(true)); + BlockUtils.breakBlock(player, block); + block.removeMetadata("block-ignore", plugin); } } } diff --git a/eco-core/core-plugin/src/main/resources/config.yml b/eco-core/core-plugin/src/main/resources/config.yml index eef3fbe1..b4e39faa 100644 --- a/eco-core/core-plugin/src/main/resources/config.yml +++ b/eco-core/core-plugin/src/main/resources/config.yml @@ -224,8 +224,3 @@ advanced: # Players with ecoenchants.anvil.bypasshardcap permission will be ignored. # This may impact performance. enabled: false - rehandle-breaking: - # Helps with server performance under load by preventing updateInventory packets from being processed. - # Can cause bugs with unbreakable items / durability from other plugins: enable if performance is an issue - # with enchantments like Blast Mining and Lumberjack. - enabled: false