From c34f75d95aa15a938bb3f7d7e620991c59eae9a7 Mon Sep 17 00:00:00 2001 From: Jonas Herzig Date: Sun, 31 Jul 2022 12:53:11 +0200 Subject: [PATCH] Fix item staying visually equipped after being dropped (fixes #658) --- .../com/replaymod/recording/handler/RecordingEventHandler.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java index 17427bad..822c3944 100644 --- a/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java +++ b/src/main/java/com/replaymod/recording/handler/RecordingEventHandler.java @@ -266,6 +266,9 @@ public class RecordingEventHandler extends EventRegistrations { //$$ int index = slot; //#endif if (!ItemStack.areEqual(playerItems.get(index), stack)) { + // ItemStack has internal mutability, so we need to make a copy now if we want to compare its + // current state with future states (e.g. dropping on modern versions will set the count to zero). + stack = stack != null ? stack.copy() : null; playerItems.set(index, stack); //#if MC>=11600 packetListener.save(new EntityEquipmentUpdateS2CPacket(player.getEntityId(), Collections.singletonList(Pair.of(slot, stack))));