From 5a6bf5e73336da36393f3ba599b79a2f6a6e1d3e Mon Sep 17 00:00:00 2001 From: sylvessa <225480449+sylvessa@users.noreply.github.com> Date: Thu, 26 Mar 2026 16:16:22 -0500 Subject: [PATCH] fix enchants disappearing when dropped --- Minecraft.Client/PlayerConnection.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/Minecraft.Client/PlayerConnection.cpp b/Minecraft.Client/PlayerConnection.cpp index 867e9b540..e4dcac288 100644 --- a/Minecraft.Client/PlayerConnection.cpp +++ b/Minecraft.Client/PlayerConnection.cpp @@ -504,7 +504,14 @@ void PlayerConnection::handlePlayerAction(shared_ptr packet) if (cancelled) return; player->inventory->removeItem(player->inventory->selected, 1); - player->drop(std::make_shared(outId, outCount, outAux)); + // oops + // fix enchants disappearing + shared_ptr dropItem = (outId == selected->id) + ? selected->copy() + : std::make_shared(outId, outCount, outAux); + dropItem->count = outCount; + if (outAux != selected->getAuxValue()) dropItem->setAuxValue(outAux); + player->drop(dropItem); return; } } @@ -526,7 +533,12 @@ void PlayerConnection::handlePlayerAction(shared_ptr packet) if (cancelled) return; player->inventory->removeItem(player->inventory->selected, selected->count); - player->drop(std::make_shared(outId, outCount, outAux)); + shared_ptr dropItem = (outId == selected->id) + ? selected->copy() + : std::make_shared(outId, outCount, outAux); + dropItem->count = outCount; + if (outAux != selected->getAuxValue()) dropItem->setAuxValue(outAux); + player->drop(dropItem); return; } }