change the way main hand item is resolved

This commit is contained in:
2024-10-26 12:35:20 +02:00
parent 0eb75dd6dd
commit 0754ccc29c
2 changed files with 9 additions and 10 deletions
@@ -11,13 +11,13 @@ import org.bukkit.Material;
import org.bukkit.Registry; import org.bukkit.Registry;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDeathEvent; import org.bukkit.event.entity.EntityDeathEvent;
import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta; import org.bukkit.inventory.meta.SkullMeta;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -37,14 +37,13 @@ public class BeheadingListener implements Listener {
if (beheading == null) return; if (beheading == null) return;
EnchantioEnchant enchant = EnchantioConfig.ENCHANTS.get(BeheadingEnchant.KEY); EnchantioEnchant enchant = EnchantioConfig.ENCHANTS.get(BeheadingEnchant.KEY);
if (!(enchant instanceof BeheadingEnchant beheadingEnchant)) return; if (!(enchant instanceof BeheadingEnchant beheadingEnchant)) return;
if (event.getEntity().getKiller() == null) return;
if (event.getDamageSource().isIndirect()) return; if (event.getDamageSource().isIndirect()) return;
Entity killer = event.getDamageSource().getCausingEntity(); Entity killer = event.getDamageSource().getCausingEntity();
if (killer == null) return; if (killer == null) return;
if (!(killer instanceof InventoryHolder inventoryHolder)) return; if (!(killer instanceof LivingEntity killerEntity)) return;
if (!(inventoryHolder.getInventory() instanceof EntityEquipment entityEquipment)) return; EntityEquipment killerEquipment = killerEntity.getEquipment();
if (killerEquipment == null) return;
ItemStack weapon = entityEquipment.getItemInMainHand(); ItemStack weapon = killerEquipment.getItemInMainHand();
if (!weapon.containsEnchantment(beheading)) return; if (!weapon.containsEnchantment(beheading)) return;
@@ -16,7 +16,6 @@ import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.EntityEquipment;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
@@ -34,10 +33,11 @@ public class ExecutionerListener implements Listener {
Entity damager = event.getDamageSource().getCausingEntity(); Entity damager = event.getDamageSource().getCausingEntity();
if (damager == null) return; if (damager == null) return;
if (!damager.equals(event.getDamageSource().getDirectEntity())) return; if (!damager.equals(event.getDamageSource().getDirectEntity())) return;
if (!(damager instanceof InventoryHolder inventoryHolder)) return; if (!(damager instanceof LivingEntity damagerEntity)) return;
if (!(inventoryHolder.getInventory() instanceof EntityEquipment entityEquipment)) return;
ItemStack attackingItem = entityEquipment.getItemInMainHand(); EntityEquipment damagerEquipment = damagerEntity.getEquipment();
if (damagerEquipment == null) return;
ItemStack attackingItem = damagerEquipment.getItemInMainHand();
if (!attackingItem.containsEnchantment(executioner)) return; if (!attackingItem.containsEnchantment(executioner)) return;