mirror of
https://github.com/YouHaveTrouble/Enchantio.git
synced 2026-05-12 14:16:56 +00:00
use new better methods to retrieve enchant levels
This commit is contained in:
@@ -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());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user