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; } }