pmmp / PocketMine-MP

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

Unexpected ``Player inventory slots should always be tracked`` #5651

Closed ShockedPlot7560 closed 1 year ago

ShockedPlot7560 commented 1 year ago

Issue description

An error occurs rather randomly: Player inventory slots should always be tracked.

Steps to reproduce the issue

I tried to find a link to some action or a way to reproduce this error but I have nothing.

OS and versions

Plugins

One: not affecting the internal inventory system

Crashdump, backtrace or other files

2023-03-26 [14:15:03.671] [Server thread/CRITICAL]: pocketmine\utils\AssumptionFailedError: "Player inventory slots should always be tracked" (EXCEPTION) in "pmsrc/src/network/mcpe/InventoryManager" at line 581
--- Stack trace ---
  #0 pmsrc/src/network/mcpe/InventoryManager(122): pocketmine\network\mcpe\InventoryManager->syncSelectedHotbarSlot()
  #1 pmsrc/src/inventory/PlayerInventory(95): pocketmine\network\mcpe\InventoryManager->pocketmine\network\mcpe\{closure}(int 4)
  #2 pmsrc/src/player/Player(1491): pocketmine\inventory\PlayerInventory->setHeldItemIndex(int 5)
  #3 pmsrc/src/network/mcpe/handler/InGamePacketHandler(590): pocketmine\player\Player->selectHotbarSlot(int 5)
  #4 pmsrc/vendor/pocketmine/bedrock-protocol/src/MobEquipmentPacket(59): pocketmine\network\mcpe\handler\InGamePacketHandler->handleMobEquipment(object pocketmine\network\mcpe\protocol\MobEquipmentPacket#189898)
  #5 pmsrc/src/network/mcpe/NetworkSession(445): pocketmine\network\mcpe\protocol\MobEquipmentPacket->handle(object pocketmine\network\mcpe\handler\InGamePacketHandler#165323)
  #6 pmsrc/src/network/mcpe/NetworkSession(389): pocketmine\network\mcpe\NetworkSession->handleDataPacket(object pocketmine\network\mcpe\protocol\MobEquipmentPacket#189898, string[6] ......)
  #7 pmsrc/src/network/mcpe/raklib/RakLibInterface(196): pocketmine\network\mcpe\NetworkSession->handleEncoded(string[55] .Wda@.l.b........\...n.:w.Sv*....V.b.S..ohh.`fb.....)
  #8 pmsrc/vendor/pocketmine/raklib-ipc/src/RakLibToUserThreadMessageReceiver(42): pocketmine\network\mcpe\raklib\RakLibInterface->onPacketReceive(int 8, string[64] ..`.....g.8.DT]..~..>.Z.4.(%...........F..6....^.v..R..A..6.)
  #9 pmsrc/src/network/mcpe/raklib/RakLibInterface(121): raklib\server\ipc\RakLibToUserThreadMessageReceiver->handle(object pocketmine\network\mcpe\raklib\RakLibInterface#136473)
  #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 1679832903.6948)
  #14 pmsrc/src/Server(1061): pocketmine\Server->tickProcessor()
  #15 pmsrc/src/PocketMine(339): pocketmine\Server->__construct(object BaseClassLoader#2, object pocketmine\utils\MainLogger#5, string[6] /data/, string[9] /plugins/)
  #16 pmsrc/src/PocketMine(362): pocketmine\server()
  #17 pmsrc(11): require(string[56] phar:///pocketmine/PocketMine-MP.phar/src/PocketMine.php)
--- End of exception information ---
dktapps commented 1 year ago

Do you have any plugins using PlayerItemHeldEvent?

I don't see how it's reaching this code path at all unless a plugin is changing the selected slot using that event.

dktapps commented 1 year ago

I haven't been able to reproduce this, or find any pathway by which it can occur, and no one else has reported issues (manually or automatically), so I'm going to close this unless you have any further information.