use new better methods to retrieve enchant levels

This commit is contained in:
2024-10-30 16:41:13 +01:00
parent 536c074439
commit a49cebc86f
3 changed files with 15 additions and 24 deletions
@@ -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;
@@ -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);
}
@@ -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<ItemStack> hotbarItems = new ArrayList<>(Arrays.stream(inventory.getContents()).toList().subList(0, 9));
Collections.shuffle(hotbarItems, ThreadLocalRandom.current());