pmmp / PocketMine-MP

A server software for Minecraft: Bedrock Edition in PHP
https://pmmp.io
GNU Lesser General Public License v3.0
3.25k stars 1.53k forks source link

Broken Stonecutter Crafting #5715

Closed DavyCraft648 closed 1 year ago

DavyCraft648 commented 1 year ago

Issue description

This bug started happening after the ItemStackRequest update (4.18)

https://user-images.githubusercontent.com/67502532/233750554-3c5d79b9-6817-413b-a211-2e416c315a8b.mp4

Steps to reproduce the issue

  1. Put a Stone item into the stonecutter input
  2. Click on crafting results

OS and versions

Crashdump, backtrace or other files

[07:04:02.593] [Server thread/DEBUG]: [Player: SixFlyer7688559] Opening inventory pocketmine\block\inventory\StonecutterInventory#127075
[07:04:05.287] [Server thread/DEBUG]: [NetworkSession: SixFlyer7688559] ItemStackRequest #-5 failed: Error processing action 0 (CraftRecipeStackRequestAction): Player's current window is not a crafting grid
[07:04:05.293] [Server thread/DEBUG]: [NetworkSession: SixFlyer7688559] pocketmine\network\mcpe\handler\ItemStackRequestProcessException: "Error processing action 0 (CraftRecipeStackRequestAction): Player's current window is not a crafting grid" (EXCEPTION) in "pmsrc/src/network/mcpe/handler/ItemStackRequestExecutor" at line 375
--- Stack trace ---
  #0 pmsrc/src/network/mcpe/handler/InGamePacketHandler(576): pocketmine\network\mcpe\handler\ItemStackRequestExecutor->generateInventoryTransaction()
  #1 pmsrc/src/network/mcpe/handler/InGamePacketHandler(598): pocketmine\network\mcpe\handler\InGamePacketHandler->handleSingleItemStackRequest(object pocketmine\network\mcpe\protocol\types\inventory\stackrequest\ItemStackRequest#147901)
  #2 pmsrc/vendor/pocketmine/bedrock-protocol/src/ItemStackRequestPacket(55): pocketmine\network\mcpe\handler\InGamePacketHandler->handleItemStackRequest(object pocketmine\network\mcpe\protocol\ItemStackRequestPacket#147892)
  #3 pmsrc/src/network/mcpe/NetworkSession(433): pocketmine\network\mcpe\protocol\ItemStackRequestPacket->handle(object pocketmine\network\mcpe\handler\InGamePacketHandler#128656)
  #4 pmsrc/src/network/mcpe/NetworkSession(377): pocketmine\network\mcpe\NetworkSession->handleDataPacket(object pocketmine\network\mcpe\protocol\ItemStackRequestPacket#147892, string[26] ..........5....<2.........)
  #5 pmsrc/src/network/mcpe/raklib/RakLibInterface(198): pocketmine\network\mcpe\NetworkSession->handleEncoded(string[73] .......s................?..O`|....!...T......icb.3.......8....1...&,.....)
  #6 pmsrc/vendor/pocketmine/raklib-ipc/src/RakLibToUserThreadMessageReceiver(42): pocketmine\network\mcpe\raklib\RakLibInterface->onPacketReceive(int 0, string[74] ........s................?..O`|....!...T......icb.3.......8....1...&,.....)
  #7 pmsrc/src/network/mcpe/raklib/RakLibInterface(122): raklib\server\ipc\RakLibToUserThreadMessageReceiver->handle(object pocketmine\network\mcpe\raklib\RakLibInterface#25742)
  #8 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\raklib\RakLibInterface->pocketmine\network\mcpe\raklib\{closure}()
  #9 pmsrc/src/TimeTrackingSleeperHandler(58): pocketmine\snooze\SleeperHandler->processNotifications()
  #10 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(82): pocketmine\TimeTrackingSleeperHandler->processNotifications()
  #11 pmsrc/src/Server(1681): pocketmine\snooze\SleeperHandler->sleepUntil(float 1682121845.2832)
  #12 pmsrc/src/Server(1061): pocketmine\Server->tickProcessor()
  #13 pmsrc/src/PocketMine(339): pocketmine\Server->__construct(object BaseClassLoader#5, object pocketmine\utils\MainLogger#2, string[38] E:\DavyCraft648\Server\YouTube_Stable\, string[46] E:\DavyCraft648\Server\YouTube_Stable\plugins\)
  #14 pmsrc/src/PocketMine(362): pocketmine\server()
  #15 pmsrc(11): require(string[82] phar://E:/DavyCraft648/Server/YouTube_Stable/PocketMine-MP.phar/src/PocketMine.p)
--- Previous ---
pocketmine\network\mcpe\handler\ItemStackRequestProcessException: "Player's current window is not a crafting grid" (EXCEPTION) in "pmsrc/src/network/mcpe/handler/ItemStackRequestExecutor" at line 251
  #0 pmsrc/src/network/mcpe/handler/ItemStackRequestExecutor(345): pocketmine\network\mcpe\handler\ItemStackRequestExecutor->beginCrafting(int 743, int 1)
  #1 pmsrc/src/network/mcpe/handler/ItemStackRequestExecutor(373): pocketmine\network\mcpe\handler\ItemStackRequestExecutor->processItemStackRequestAction(object pocketmine\network\mcpe\protocol\types\inventory\stackrequest\CraftRecipeStackRequestAction#147895)
  #2 pmsrc/src/network/mcpe/handler/InGamePacketHandler(576): pocketmine\network\mcpe\handler\ItemStackRequestExecutor->generateInventoryTransaction()
  #3 pmsrc/src/network/mcpe/handler/InGamePacketHandler(598): pocketmine\network\mcpe\handler\InGamePacketHandler->handleSingleItemStackRequest(object pocketmine\network\mcpe\protocol\types\inventory\stackrequest\ItemStackRequest#147901)
  #4 pmsrc/vendor/pocketmine/bedrock-protocol/src/ItemStackRequestPacket(55): pocketmine\network\mcpe\handler\InGamePacketHandler->handleItemStackRequest(object pocketmine\network\mcpe\protocol\ItemStackRequestPacket#147892)
  #5 pmsrc/src/network/mcpe/NetworkSession(433): pocketmine\network\mcpe\protocol\ItemStackRequestPacket->handle(object pocketmine\network\mcpe\handler\InGamePacketHandler#128656)
  #6 pmsrc/src/network/mcpe/NetworkSession(377): pocketmine\network\mcpe\NetworkSession->handleDataPacket(object pocketmine\network\mcpe\protocol\ItemStackRequestPacket#147892, string[26] ..........5....<2.........)
  #7 pmsrc/src/network/mcpe/raklib/RakLibInterface(198): pocketmine\network\mcpe\NetworkSession->handleEncoded(string[73] .......s................?..O`|....!...T......icb.3.......8....1...&,.....)
  #8 pmsrc/vendor/pocketmine/raklib-ipc/src/RakLibToUserThreadMessageReceiver(42): pocketmine\network\mcpe\raklib\RakLibInterface->onPacketReceive(int 0, string[74] ........s................?..O`|....!...T......icb.3.......8....1...&,.....)
  #9 pmsrc/src/network/mcpe/raklib/RakLibInterface(122): raklib\server\ipc\RakLibToUserThreadMessageReceiver->handle(object pocketmine\network\mcpe\raklib\RakLibInterface#25742)
  #10 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(123): pocketmine\network\mcpe\raklib\RakLibInterface->pocketmine\network\mcpe\raklib\{closure}()
  #11 pmsrc/src/TimeTrackingSleeperHandler(58): pocketmine\snooze\SleeperHandler->processNotifications()
  #12 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(82): pocketmine\TimeTrackingSleeperHandler->processNotifications()
  #13 pmsrc/src/Server(1681): pocketmine\snooze\SleeperHandler->sleepUntil(float 1682121845.2832)
  #14 pmsrc/src/Server(1061): pocketmine\Server->tickProcessor()
  #15 pmsrc/src/PocketMine(339): pocketmine\Server->__construct(object BaseClassLoader#5, object pocketmine\utils\MainLogger#2, string[38] E:\DavyCraft648\Server\YouTube_Stable\, string[46] E:\DavyCraft648\Server\YouTube_Stable\plugins\)
  #16 pmsrc/src/PocketMine(362): pocketmine\server()
  #17 pmsrc(11): require(string[82] phar://E:/DavyCraft648/Server/YouTube_Stable/PocketMine-MP.phar/src/PocketMine.p)
--- End of exception information ---
[07:04:05.300] [Server thread/DEBUG]: [NetworkSession: SixFlyer7688559] Full inventory sync requested, sending contents of 6 inventories
dktapps commented 1 year ago

This is a bit of a problem to fix, since the internal crafting system assumes that crafting can only be done using a CraftingGrid.