From 779b3f2b09e52d308d1ffc3fa459c0c6ba85ca81 Mon Sep 17 00:00:00 2001 From: Owen1212055 <23108066+Owen1212055@users.noreply.github.com> Date: Sun, 22 Dec 2024 20:46:38 -0500 Subject: Fix totems negating incorrect item --- .../minecraft/world/entity/LivingEntity.java.patch | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/paper-server/patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/paper-server/patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index 6e41390320..958afd1115 100644 --- a/paper-server/patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -669,22 +669,25 @@ if (deathProtection != null) { + hand = interactionHand; // CraftBukkit itemStack = itemInHand.copy(); -- itemInHand.shrink(1); + // itemInHand.shrink(1); // CraftBukkit - break; - } - } - -- if (itemStack != null) { -- if (this instanceof ServerPlayer serverPlayer) { ++ break; ++ } ++ } ++ + org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; + EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); + event.setCancelled(itemStack == null); + this.level().getCraftServer().getPluginManager().callEvent(event); + + if (!event.isCancelled()) { -+ if (!itemStack.isEmpty() && itemStack != null) { // Paper - only reduce item if actual totem was found -+ itemStack.shrink(1); ++ if (!itemInHand.isEmpty() && itemStack != null) { // Paper - only reduce item if actual totem was found + itemInHand.shrink(1); +- break; +- } +- } +- +- if (itemStack != null) { +- if (this instanceof ServerPlayer serverPlayer) { + } + // Paper start - fix NPE when pre-cancelled EntityResurrectEvent is uncancelled + // restore the previous behavior in that case by defaulting to vanillas totem of undying efect -- cgit v1.2.3