NetherGamesMC / PocketMine-MP

A multi protocol server software for Minecraft: Bedrock Edition in PHP
https://pmmp.io
GNU Lesser General Public License v3.0
83 stars 96 forks source link

Skulls aren't deserialized from item NBT correctly #500

Closed kostamax27 closed 5 hours ago

kostamax27 commented 1 day ago
[Server thread/EMERGENCY]: Crash occurred while handling a packet from session: kostamax27
[13:18:08.828] [Server thread/CRITICAL]: pocketmine\data\SavedDataLoadingException: "No deserializer found for ID minecraft:player_head" (EXCEPTION) in "pmsrc/src/item/Item" at line 749
--- Stack trace ---
  #0 pmsrc/src/entity/Human(304): pocketmine\item\Item::nbtDeserialize(object pocketmine\nbt\tag\CompoundTag#210160)
  #1 pmsrc/src/player/Player(354): pocketmine\entity\Human->initEntity(object pocketmine\nbt\tag\CompoundTag#210170)
  #2 pmsrc/src/entity/Entity(219): pocketmine\player\Player->initEntity(object pocketmine\nbt\tag\CompoundTag#210170)
  #3 pmsrc/src/entity/Human(118): pocketmine\entity\Entity->__construct(object pocketmine\entity\Location#208519, object pocketmine\nbt\tag\CompoundTag#210170)
  #4 pmsrc/src/player/Player(336): pocketmine\entity\Human->__construct(object pocketmine\entity\Location#208519, object pocketmine\entity\Skin#210111, object pocketmine\nbt\tag\CompoundTag#210170)
  #5 pmsrc/src/Server(593): pocketmine\player\Player->__construct(object pocketmine\Server#13, object pocketmine\network\mcpe\NetworkSession#62330, object pocketmine\player\XboxLivePlayerInfo#210109, true, object pocketmine\entity\Location#208519, object pocketmine\nbt\tag\CompoundTag#210170)
  #6 pmsrc/src/Server(618): pocketmine\Server->pocketmine\{closure}(object pocketmine\entity\Location#208519)
  #7 pmsrc/src/Server(630): pocketmine\Server->pocketmine\{closure}()
  #8 pmsrc/src/network/mcpe/NetworkSession(258): pocketmine\Server->createPlayer(object pocketmine\network\mcpe\NetworkSession#62330, object pocketmine\player\XboxLivePlayerInfo#210109, true, object pocketmine\nbt\tag\CompoundTag#210170)
  #9 pmsrc/src/network/mcpe/NetworkSession(1003): pocketmine\network\mcpe\NetworkSession->createPlayer()
  #10 pmsrc/src/network/mcpe/handler/ResourcePacksPacketHandler(187): pocketmine\network\mcpe\NetworkSession->pocketmine\network\mcpe\{closure}()
  #11 pmsrc/vendor/nethergamesmc/bedrock-protocol/src/ResourcePackClientResponsePacket(61): pocketmine\network\mcpe\handler\ResourcePacksPacketHandler->handleResourcePackClientResponse(object pocketmine\network\mcpe\protocol\ResourcePackClientResponsePacket#208562)
  #12 pmsrc/src/network/mcpe/NetworkSession(531): pocketmine\network\mcpe\protocol\ResourcePackClientResponsePacket->handle(object pocketmine\network\mcpe\handler\ResourcePacksPacketHandler#208549)
  #13 pmsrc/src/network/mcpe/NetworkSession(469): pocketmine\network\mcpe\NetworkSession->handleDataPacket(object pocketmine\network\mcpe\protocol\ResourcePackClientResponsePacket#208562, string[4] ....)
  #14 pmsrc/src/network/mcpe/raklib/RakLibInterface(214): pocketmine\network\mcpe\NetworkSession->handleEncoded(string[6] ......)
  #15 pmsrc/vendor/pocketmine/raklib-ipc/src/RakLibToUserThreadMessageReceiver(40): pocketmine\network\mcpe\raklib\RakLibInterface->onPacketReceive(int 0, string[15] .....5a.._....s)
  #16 pmsrc/src/network/mcpe/raklib/RakLibInterface(107): raklib\server\ipc\RakLibToUserThreadMessageReceiver->handle(object pocketmine\network\mcpe\raklib\RakLibInterface#178380)
  #17 pmsrc/src/TimeTrackingSleeperHandler(58): pocketmine\network\mcpe\raklib\RakLibInterface->pocketmine\network\mcpe\raklib\{closure}()
  #18 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(120): pocketmine\TimeTrackingSleeperHandler->pocketmine\{closure}()
  #19 pmsrc/src/TimeTrackingSleeperHandler(77): pocketmine\snooze\SleeperHandler->processNotifications()
  #20 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(79): pocketmine\TimeTrackingSleeperHandler->processNotifications()
  #21 pmsrc/src/Server(1743): pocketmine\snooze\SleeperHandler->sleepUntil(float 1729862288.7524)
  #22 pmsrc/src/Server(1110): pocketmine\Server->tickProcessor()
  #23 pmsrc/src/PocketMine(355): pocketmine\Server->__construct(object pocketmine\thread\ThreadSafeClassLoader#6, object pocketmine\utils\MainLogger#2, string[25] C:\API5\ng\PocketMine-MP\, string[33] C:\API5\ng\PocketMine-MP\plugins\)
  #24 pmsrc/src/PocketMine(378): pocketmine\server()
  #25 C:/API5/ng/PocketMine-MP/PocketMine-MP.phar(168): require(string[101] 

kostamax27.dat - is from the old version (1.21.30).

/players/kostamax27.dat:

Inventory:[{Count:64b,Slot:9b,Name:"minecraft:skull",Damage:3s,PMMPDataVersion:1L},{Count:64b,Slot:10b,Name:"minecraft:skull",Damage:2s,PMMPDataVersion:1L},{Count:64b,Slot:11b,Name:"minecraft:skull",Damage:4s,PMMPDataVersion:1L},{Count:64b,Slot:12b,Name:"minecraft:skull",Damage:5s,PMMPDataVersion:1L},{Count:64b,Slot:13b,Name:"minecraft:skull",Damage:0s,PMMPDataVersion:1L},{Count:64b,Slot:14b,Name:"minecraft:skull",Damage:1s,PMMPDataVersion:1L},{Count:64b,Slot:15b,Name:"minecraft:skull",Damage:6s,PMMPDataVersion:1L}]
dries-c commented 1 day ago

minecraft:player_head is registered in the BlockStateToObjectDeserializer at line 694. Are you sure all dependencies are up to date? Does this happen without plugins as well?

kostamax27 commented 1 day ago

minecraft:player_head is registered in the BlockStateToObjectDeserializer at line 694. Are you sure all dependencies are up to date? Does this happen without plugins as well?

image

dries-c commented 1 day ago

PocketMine-MP.phar.zip Can you try this phar?

kostamax27 commented 1 day ago

minecraft:player_head is registered in the BlockStateToObjectDeserializer at line 694. Are you sure all dependencies are up to date? Does this happen without plugins as well?

image

installation:

git clone https://github.com/NetherGamesMC/PocketMine-MP
cd PocketMine-MP
composer install --no-dev --prefer-dist --no-interaction --ignore-platform-reqs
cd build
php server-phar.php
cp PocketMine-MP.phar ../
cd ../
start.cmd
kostamax27 commented 1 day ago

PocketMine-MP.phar.zip Can you try this phar?

[16:07:49.865] [Server thread/EMERGENCY]: Crash occurred while handling a packet from session: kostamax27
[16:07:49.867] [Server thread/CRITICAL]: pocketmine\data\SavedDataLoadingException: "No deserializer found for ID minecraft:player_head" (EXCEPTION) in "pmsrc/src/item/Item" at line 749
--- Stack trace ---
  #0 pmsrc/src/entity/Human(304): pocketmine\item\Item::nbtDeserialize(object pocketmine\nbt\tag\CompoundTag#175908)
  #1 pmsrc/src/player/Player(354): pocketmine\entity\Human->initEntity(object pocketmine\nbt\tag\CompoundTag#175948)
  #2 pmsrc/src/entity/Entity(219): pocketmine\player\Player->initEntity(object pocketmine\nbt\tag\CompoundTag#175948)
  #3 pmsrc/src/entity/Human(118): pocketmine\entity\Entity->__construct(object pocketmine\entity\Location#193774, object pocketmine\nbt\tag\CompoundTag#175948)
  #4 pmsrc/src/player/Player(336): pocketmine\entity\Human->__construct(object pocketmine\entity\Location#193774, object pocketmine\entity\Skin#175898, object pocketmine\nbt\tag\CompoundTag#175948)
  #5 pmsrc/src/Server(593): pocketmine\player\Player->__construct(object pocketmine\Server#13, object pocketmine\network\mcpe\NetworkSession#50991, object pocketmine\player\XboxLivePlayerInfo#193936, true, object pocketmine\entity\Location#193774, object pocketmine\nbt\tag\CompoundTag#175948)
  #6 pmsrc/src/Server(618): pocketmine\Server->pocketmine\{closure}(object pocketmine\entity\Location#193774)
  #7 pmsrc/src/Server(630): pocketmine\Server->pocketmine\{closure}()
  #8 pmsrc/src/network/mcpe/NetworkSession(258): pocketmine\Server->createPlayer(object pocketmine\network\mcpe\NetworkSession#50991, object pocketmine\player\XboxLivePlayerInfo#193936, true, object pocketmine\nbt\tag\CompoundTag#175948)
  #9 pmsrc/src/network/mcpe/NetworkSession(1003): pocketmine\network\mcpe\NetworkSession->createPlayer()
  #10 pmsrc/src/network/mcpe/handler/ResourcePacksPacketHandler(187): pocketmine\network\mcpe\NetworkSession->pocketmine\network\mcpe\{closure}()
  #11 pmsrc/vendor/nethergamesmc/bedrock-protocol/src/ResourcePackClientResponsePacket(61): pocketmine\network\mcpe\handler\ResourcePacksPacketHandler->handleResourcePackClientResponse(object pocketmine\network\mcpe\protocol\ResourcePackClientResponsePacket#193787)
  #12 pmsrc/src/network/mcpe/NetworkSession(531): pocketmine\network\mcpe\protocol\ResourcePackClientResponsePacket->handle(object pocketmine\network\mcpe\handler\ResourcePacksPacketHandler#174350)
  #13 pmsrc/src/network/mcpe/NetworkSession(469): pocketmine\network\mcpe\NetworkSession->handleDataPacket(object pocketmine\network\mcpe\protocol\ResourcePackClientResponsePacket#193787, string[4] ....)
  #14 pmsrc/src/network/mcpe/raklib/RakLibInterface(214): pocketmine\network\mcpe\NetworkSession->handleEncoded(string[6] ......)
  #15 pmsrc/vendor/pocketmine/raklib-ipc/src/RakLibToUserThreadMessageReceiver(40): pocketmine\network\mcpe\raklib\RakLibInterface->onPacketReceive(int 0, string[15] .........B...w.)
  #16 pmsrc/src/network/mcpe/raklib/RakLibInterface(107): raklib\server\ipc\RakLibToUserThreadMessageReceiver->handle(object pocketmine\network\mcpe\raklib\RakLibInterface#176488)
  #17 pmsrc/src/TimeTrackingSleeperHandler(58): pocketmine\network\mcpe\raklib\RakLibInterface->pocketmine\network\mcpe\raklib\{closure}()
  #18 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(120): pocketmine\TimeTrackingSleeperHandler->pocketmine\{closure}()
  #19 pmsrc/src/TimeTrackingSleeperHandler(77): pocketmine\snooze\SleeperHandler->processNotifications()
  #20 pmsrc/vendor/pocketmine/snooze/src/SleeperHandler(79): pocketmine\TimeTrackingSleeperHandler->processNotifications()
  #21 pmsrc/src/Server(1743): pocketmine\snooze\SleeperHandler->sleepUntil(float 1729872469.6624)
  #22 pmsrc/src/Server(1110): pocketmine\Server->tickProcessor()
  #23 pmsrc/src/PocketMine(355): pocketmine\Server->__construct(object pocketmine\thread\ThreadSafeClassLoader#6, object pocketmine\utils\MainLogger#2, string[26] C:\API5\ng2\PocketMine-MP\, string[34] C:\API5\ng2\PocketMine-MP\plugins\)
  #24 pmsrc/src/PocketMine(378): pocketmine\server()
  #25 C:/API5/ng2/PocketMine-MP/PocketMine-MP.phar(168)
dries-c commented 1 day ago

Could you send over the .dat?

kostamax27 commented 1 day ago

Could you send over the .dat?

kostamax27.dat.zip

kostamax27 commented 18 hours ago

How can this problem be solved?

dries-c commented 17 hours ago

I boils down to the saved item state not having the block data since it used to be done using a special deserializer. With the name changes it can be done using block data, but the upgrader doesn't add it

dries-c commented 8 hours ago

https://github.com/pmmp/PocketMine-MP/pull/6476