Updated to newer BedrockBlockUpgradeSchema

This commit is contained in:
Dylan K. Taylor 2023-02-01 21:21:55 +00:00
parent aeb26141b2
commit d3fff4e0b2
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
2 changed files with 23 additions and 13 deletions

8
composer.lock generated
View File

@ -254,12 +254,12 @@
"source": {
"type": "git",
"url": "https://github.com/pmmp/BedrockBlockUpgradeSchema.git",
"reference": "63f5f5e02e952ffa196a4c0671d7fcf8b8cdd9a4"
"reference": "b0cc441e029cf5a6de5b05dd0f5657208855232b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/63f5f5e02e952ffa196a4c0671d7fcf8b8cdd9a4",
"reference": "63f5f5e02e952ffa196a4c0671d7fcf8b8cdd9a4",
"url": "https://api.github.com/repos/pmmp/BedrockBlockUpgradeSchema/zipball/b0cc441e029cf5a6de5b05dd0f5657208855232b",
"reference": "b0cc441e029cf5a6de5b05dd0f5657208855232b",
"shasum": ""
},
"default-branch": true,
@ -273,7 +273,7 @@
"issues": "https://github.com/pmmp/BedrockBlockUpgradeSchema/issues",
"source": "https://github.com/pmmp/BedrockBlockUpgradeSchema/tree/master"
},
"time": "2022-08-07T19:29:31+00:00"
"time": "2023-02-01T21:11:39+00:00"
},
{
"name": "pocketmine/bedrock-data",

View File

@ -24,7 +24,8 @@ declare(strict_types=1);
namespace pocketmine\data\bedrock\block\upgrade;
use pocketmine\data\bedrock\block\BlockStateData;
use pocketmine\network\mcpe\protocol\serializer\NetworkNbtSerializer;
use pocketmine\nbt\LittleEndianNbtSerializer;
use pocketmine\utils\BinaryDataException;
use pocketmine\utils\BinaryStream;
/**
@ -75,15 +76,24 @@ final class BlockIdMetaUpgrader{
$mappingTable = [];
$legacyStateMapReader = new BinaryStream($data);
$nbtReader = new NetworkNbtSerializer();
while(!$legacyStateMapReader->feof()){
$id = $legacyStateMapReader->get($legacyStateMapReader->getUnsignedVarInt());
$meta = $legacyStateMapReader->getLShort();
$nbtReader = new LittleEndianNbtSerializer();
$offset = $legacyStateMapReader->getOffset();
$state = $nbtReader->read($legacyStateMapReader->getBuffer(), $offset)->mustGetCompoundTag();
$legacyStateMapReader->setOffset($offset);
$mappingTable[$id][$meta] = $blockStateUpgrader->upgrade(BlockStateData::fromNbt($state));
$idCount = $legacyStateMapReader->getUnsignedVarInt();
for($idIndex = 0; $idIndex < $idCount; $idIndex++){
$id = $legacyStateMapReader->get($legacyStateMapReader->getUnsignedVarInt());
$metaCount = $legacyStateMapReader->getUnsignedVarInt();
for($metaIndex = 0; $metaIndex < $metaCount; $metaIndex++){
$meta = $legacyStateMapReader->getUnsignedVarInt();
$offset = $legacyStateMapReader->getOffset();
$state = $nbtReader->read($legacyStateMapReader->getBuffer(), $offset)->mustGetCompoundTag();
$legacyStateMapReader->setOffset($offset);
$mappingTable[$id][$meta] = $blockStateUpgrader->upgrade(BlockStateData::fromNbt($state));
}
}
if(!$legacyStateMapReader->feof()){
throw new BinaryDataException("Unexpected trailing data in legacy state map data");
}
return new self($mappingTable, $idMap);