Removed advanced.rehandle-breaking

This commit is contained in:
Auxilor 2022-03-05 13:28:19 +00:00
parent 2124c773f9
commit fbbe351870
2 changed files with 5 additions and 56 deletions

View File

@ -10,18 +10,11 @@ import com.willfp.ecoenchants.EcoEnchantsPlugin;
import com.willfp.ecoenchants.enchantments.EcoEnchant; import com.willfp.ecoenchants.enchantments.EcoEnchant;
import com.willfp.ecoenchants.enchantments.EcoEnchants; import com.willfp.ecoenchants.enchantments.EcoEnchants;
import lombok.experimental.UtilityClass; import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import org.bukkit.GameMode;
import org.bukkit.NamespacedKey; import org.bukkit.NamespacedKey;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; 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 org.jetbrains.annotations.NotNull;
import java.lang.reflect.Field; 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 player The player.
* @param toBreak The blocks to break. * @param toBreak The blocks to break.
@ -190,44 +183,6 @@ public class EnchantmentUtils {
public static void rehandleBreaking(@NotNull final Player player, public static void rehandleBreaking(@NotNull final Player player,
@NotNull final Set<Block> toBreak, @NotNull final Set<Block> toBreak,
@NotNull final EcoPlugin plugin) { @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) { for (Block block : toBreak) {
block.setMetadata("block-ignore", plugin.getMetadataValueFactory().create(true)); block.setMetadata("block-ignore", plugin.getMetadataValueFactory().create(true));
BlockUtils.breakBlock(player, block); BlockUtils.breakBlock(player, block);
@ -235,4 +190,3 @@ public class EnchantmentUtils {
} }
} }
} }
}

View File

@ -224,8 +224,3 @@ advanced:
# Players with ecoenchants.anvil.bypasshardcap permission will be ignored. # Players with ecoenchants.anvil.bypasshardcap permission will be ignored.
# This may impact performance. # This may impact performance.
enabled: false 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