diff --git a/src/main/java/me/youhavetrouble/enchantio/listeners/BeheadingListener.java b/src/main/java/me/youhavetrouble/enchantio/listeners/BeheadingListener.java index 268b0fd..854b246 100644 --- a/src/main/java/me/youhavetrouble/enchantio/listeners/BeheadingListener.java +++ b/src/main/java/me/youhavetrouble/enchantio/listeners/BeheadingListener.java @@ -2,6 +2,7 @@ package me.youhavetrouble.enchantio.listeners; import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; +import me.youhavetrouble.enchantio.Enchantio; import me.youhavetrouble.enchantio.EnchantioConfig; import me.youhavetrouble.enchantio.enchants.BeheadingEnchant; import me.youhavetrouble.enchantio.enchants.EnchantioEnchant; @@ -43,11 +44,11 @@ public class BeheadingListener implements Listener { if (!(killer instanceof LivingEntity killerEntity)) return; EntityEquipment killerEquipment = killerEntity.getEquipment(); if (killerEquipment == null) return; - ItemStack weapon = killerEquipment.getItemInMainHand(); - if (!weapon.containsEnchantment(beheading)) return; + int level = Enchantio.getHighestEnchantLevel(killerEquipment, beheading); + if (level == 0) return; - double chance = weapon.getEnchantmentLevel(beheading) * beheadingEnchant.getChanceToDropHeadPerLevel(); + double chance = level * beheadingEnchant.getChanceToDropHeadPerLevel(); if (ThreadLocalRandom.current().nextDouble() > chance) return; diff --git a/src/main/java/me/youhavetrouble/enchantio/listeners/ExecutionerListener.java b/src/main/java/me/youhavetrouble/enchantio/listeners/ExecutionerListener.java index d21354b..c2cd561 100644 --- a/src/main/java/me/youhavetrouble/enchantio/listeners/ExecutionerListener.java +++ b/src/main/java/me/youhavetrouble/enchantio/listeners/ExecutionerListener.java @@ -2,6 +2,7 @@ package me.youhavetrouble.enchantio.listeners; import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; +import me.youhavetrouble.enchantio.Enchantio; import me.youhavetrouble.enchantio.EnchantioConfig; import me.youhavetrouble.enchantio.enchants.EnchantioEnchant; import me.youhavetrouble.enchantio.enchants.ExecutionerEnchant; @@ -16,7 +17,6 @@ import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.inventory.EntityEquipment; -import org.bukkit.inventory.ItemStack; @SuppressWarnings("UnstableApiUsage") @@ -37,9 +37,8 @@ public class ExecutionerListener implements Listener { EntityEquipment damagerEquipment = damagerEntity.getEquipment(); if (damagerEquipment == null) return; - ItemStack attackingItem = damagerEquipment.getItemInMainHand(); - - if (!attackingItem.containsEnchantment(executioner)) return; + int level = Enchantio.getSumOfEnchantLevels(damagerEquipment, executioner); + if (level == 0) return; Entity target = event.getEntity(); if (!(target instanceof LivingEntity livingEntity)) return; @@ -51,7 +50,7 @@ public class ExecutionerListener implements Listener { double targetHealthPercentage = livingEntity.getHealth() / targetMaxHealth; if (targetHealthPercentage < executionerEnchant.getMaxDamageHpThreshold()) { - double damageMultiplier = 1 + (executionerEnchant.getDamageMultiplierPerLevel() * attackingItem.getEnchantmentLevel(executioner)); + double damageMultiplier = 1 + (executionerEnchant.getDamageMultiplierPerLevel() * level); event.setDamage(event.getDamage() * damageMultiplier); } diff --git a/src/main/java/me/youhavetrouble/enchantio/listeners/PanicListener.java b/src/main/java/me/youhavetrouble/enchantio/listeners/PanicListener.java index d285e1e..3342ec4 100644 --- a/src/main/java/me/youhavetrouble/enchantio/listeners/PanicListener.java +++ b/src/main/java/me/youhavetrouble/enchantio/listeners/PanicListener.java @@ -2,6 +2,7 @@ package me.youhavetrouble.enchantio.listeners; import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; +import me.youhavetrouble.enchantio.Enchantio; import me.youhavetrouble.enchantio.EnchantioConfig; import me.youhavetrouble.enchantio.enchants.EnchantioEnchant; import me.youhavetrouble.enchantio.enchants.PanicEnchant; @@ -14,6 +15,7 @@ import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.entity.EntityDamageEvent; +import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.PlayerInventory; @@ -37,26 +39,15 @@ public class PanicListener implements Listener { EnchantioEnchant enchant = EnchantioConfig.ENCHANTS.get(PanicEnchant.KEY); if (!(enchant instanceof PanicEnchant panicEnchant)) return; - PlayerInventory inventory = player.getInventory(); - ItemStack highestPanicEnchantItem = null; + EntityEquipment equipment = player.getEquipment(); - for (ItemStack item : inventory.getArmorContents()) { - if (item == null) continue; - if (item.containsEnchantment(panic)) { - if (highestPanicEnchantItem == null) { - highestPanicEnchantItem = item; - } else if (item.getEnchantmentLevel(panic) > highestPanicEnchantItem.getEnchantmentLevel(panic)) { - highestPanicEnchantItem = item; - } - } - } - - if (highestPanicEnchantItem == null) return; - - double chance = highestPanicEnchantItem.getEnchantmentLevel(panic) * panicEnchant.getPanicChancePerLevel(); + int level = Enchantio.getHighestEnchantLevel(equipment, panic); + if (level == 0) return; + double chance = level * panicEnchant.getPanicChancePerLevel(); if (ThreadLocalRandom.current().nextDouble() > chance) return; + PlayerInventory inventory = player.getInventory(); List hotbarItems = new ArrayList<>(Arrays.stream(inventory.getContents()).toList().subList(0, 9)); Collections.shuffle(hotbarItems, ThreadLocalRandom.current());