From 188124bcc38839421fe2d2b067ee26ac61b5e9b1 Mon Sep 17 00:00:00 2001 From: Owen <23108066+Owen1212055@users.noreply.github.com> Date: Sun, 22 Dec 2024 23:58:01 -0500 Subject: [PATCH] Fix totems negating incorrect item (#11776) --- .../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 15811ba3c8..89bdfae78b 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 @@ -668,22 +668,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