From f364a5bb072f2ef6483d4815f92e036c1339b26d Mon Sep 17 00:00:00 2001 From: sylvessa <225480449+sylvessa@users.noreply.github.com> Date: Thu, 2 Apr 2026 17:45:21 -0500 Subject: [PATCH] fix disenchanting when dropping item from inv --- Minecraft.World/AbstractContainerMenu.cpp | 49 ++++++++++++++--------- 1 file changed, 29 insertions(+), 20 deletions(-) diff --git a/Minecraft.World/AbstractContainerMenu.cpp b/Minecraft.World/AbstractContainerMenu.cpp index df4003c7a..696a538b3 100644 --- a/Minecraft.World/AbstractContainerMenu.cpp +++ b/Minecraft.World/AbstractContainerMenu.cpp @@ -260,15 +260,18 @@ shared_ptr AbstractContainerMenu::clicked(int slotIndex, int butto { int outId = carried->id, outCount = carried->count, outAux = carried->getAuxValue(); if (FourKitBridge::FirePlayerDropItem( - player->entityId, carried->id, carried->count, carried->getAuxValue(), - &outId, &outCount, &outAux)) - dropAllowed = false; - else - { - player->drop(std::make_shared(outId, outCount, outAux)); - inventory->setCarried(nullptr); - dropAllowed = false; - } + player->entityId, carried->id, carried->count, carried->getAuxValue(), + &outId, &outCount, &outAux)) + dropAllowed = false; + else + { + carried->id = outId; + carried->count = outCount; + carried->setAuxValue(outAux); + player->drop(carried); + inventory->setCarried(nullptr); + dropAllowed = false; + } } if (dropAllowed) { @@ -290,16 +293,19 @@ shared_ptr AbstractContainerMenu::clicked(int slotIndex, int butto { int outId = carried->id, outCount = 1, outAux = carried->getAuxValue(); if (FourKitBridge::FirePlayerDropItem( - player->entityId, carried->id, 1, carried->getAuxValue(), - &outId, &outCount, &outAux)) - dropAllowed = false; - else - { - carried->remove(1); - if (carried->count == 0) inventory->setCarried(nullptr); - player->drop(std::make_shared(outId, outCount, outAux)); - dropAllowed = false; - } + player->entityId, carried->id, 1, carried->getAuxValue(), + &outId, &outCount, &outAux)) + dropAllowed = false; + else + { + shared_ptr dropped = carried->remove(1); + if (carried->count == 0) inventory->setCarried(nullptr); + dropped->id = outId; + dropped->count = outCount; + dropped->setAuxValue(outAux); + player->drop(dropped); + dropAllowed = false; + } } if (dropAllowed) { @@ -548,7 +554,10 @@ shared_ptr AbstractContainerMenu::clicked(int slotIndex, int butto { shared_ptr item = slot->remove(dropCount); slot->onTake(player, item); - player->drop(std::make_shared(outId, outCount, outAux)); + item->id = outId; + item->count = outCount; + item->setAuxValue(outAux); + player->drop(item); dropAllowed = false; } }