Sync NBT dependency

This commit is contained in:
Dylan K. Taylor
2019-01-07 22:26:22 +00:00
parent 9c16caf27b
commit 2924303169
12 changed files with 69 additions and 73 deletions

View File

@ -27,7 +27,7 @@ use pocketmine\level\format\io\exception\UnsupportedLevelFormatException;
use pocketmine\level\generator\Flat;
use pocketmine\level\generator\GeneratorManager;
use pocketmine\level\Level;
use pocketmine\nbt\LittleEndianNBTStream;
use pocketmine\nbt\LittleEndianNbtSerializer;
use pocketmine\nbt\tag\ByteTag;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\nbt\tag\FloatTag;
@ -97,13 +97,13 @@ class BedrockLevelData extends BaseNbtLevelData{
new StringTag("generatorOptions", $options["preset"] ?? "")
]);
$nbt = new LittleEndianNBTStream();
$nbt = new LittleEndianNbtSerializer();
$buffer = $nbt->write($levelData);
file_put_contents($path . "level.dat", Binary::writeLInt(self::CURRENT_STORAGE_VERSION) . Binary::writeLInt(strlen($buffer)) . $buffer);
}
protected function load() : ?CompoundTag{
$nbt = new LittleEndianNBTStream();
$nbt = new LittleEndianNbtSerializer();
$levelData = $nbt->read(substr(file_get_contents($this->dataPath), 8));
$version = $levelData->getInt("StorageVersion", INT32_MAX, true);
@ -148,7 +148,7 @@ class BedrockLevelData extends BaseNbtLevelData{
$this->compoundTag->setInt("NetworkVersion", ProtocolInfo::CURRENT_PROTOCOL);
$this->compoundTag->setInt("StorageVersion", self::CURRENT_STORAGE_VERSION);
$nbt = new LittleEndianNBTStream();
$nbt = new LittleEndianNbtSerializer();
$buffer = $nbt->write($this->compoundTag);
file_put_contents($this->dataPath, Binary::writeLInt(self::CURRENT_STORAGE_VERSION) . Binary::writeLInt(strlen($buffer)) . $buffer);
}

View File

@ -25,7 +25,7 @@ namespace pocketmine\level\format\io\data;
use pocketmine\level\generator\GeneratorManager;
use pocketmine\level\Level;
use pocketmine\nbt\BigEndianNBTStream;
use pocketmine\nbt\BigEndianNbtSerializer;
use pocketmine\nbt\tag\ByteTag;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\nbt\tag\FloatTag;
@ -61,7 +61,7 @@ class JavaLevelData extends BaseNbtLevelData{
new StringTag("LevelName", $name),
new CompoundTag("GameRules", [])
]);
$nbt = new BigEndianNBTStream();
$nbt = new BigEndianNbtSerializer();
$buffer = $nbt->writeCompressed(new CompoundTag("", [
$levelData
]));
@ -69,7 +69,7 @@ class JavaLevelData extends BaseNbtLevelData{
}
protected function load() : ?CompoundTag{
$nbt = new BigEndianNBTStream();
$nbt = new BigEndianNbtSerializer();
$levelData = $nbt->readCompressed(file_get_contents($this->dataPath));
if($levelData->hasTag("Data", CompoundTag::class)){
return $levelData->getCompoundTag("Data");
@ -90,7 +90,7 @@ class JavaLevelData extends BaseNbtLevelData{
}
public function save() : void{
$nbt = new BigEndianNBTStream();
$nbt = new BigEndianNbtSerializer();
$this->compoundTag->setName("Data");
$buffer = $nbt->writeCompressed(new CompoundTag("", [
$this->compoundTag

View File

@ -31,7 +31,7 @@ use pocketmine\level\format\io\exception\UnsupportedChunkFormatException;
use pocketmine\level\format\io\exception\UnsupportedLevelFormatException;
use pocketmine\level\format\io\LevelData;
use pocketmine\level\format\SubChunk;
use pocketmine\nbt\LittleEndianNBTStream;
use pocketmine\nbt\LittleEndianNbtSerializer;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\utils\Binary;
use pocketmine\utils\BinaryStream;
@ -239,7 +239,7 @@ class LevelDB extends BaseLevelProvider{
throw new UnsupportedChunkFormatException("don't know how to decode chunk format version $chunkVersion");
}
$nbt = new LittleEndianNBTStream();
$nbt = new LittleEndianNbtSerializer();
/** @var CompoundTag[] $entities */
$entities = [];
@ -332,7 +332,7 @@ class LevelDB extends BaseLevelProvider{
*/
private function writeTags(array $targets, string $index) : void{
if(!empty($targets)){
$nbt = new LittleEndianNBTStream();
$nbt = new LittleEndianNbtSerializer();
$this->db->put($index, $nbt->writeMultiple($targets));
}else{
$this->db->delete($index);

View File

@ -27,7 +27,7 @@ use pocketmine\level\format\Chunk;
use pocketmine\level\format\io\ChunkUtils;
use pocketmine\level\format\io\exception\CorruptedChunkException;
use pocketmine\level\format\SubChunk;
use pocketmine\nbt\BigEndianNBTStream;
use pocketmine\nbt\BigEndianNbtSerializer;
use pocketmine\nbt\NBT;
use pocketmine\nbt\tag\CompoundTag;
use pocketmine\nbt\tag\IntArrayTag;
@ -89,14 +89,14 @@ trait LegacyAnvilChunkTrait{
//TODO: TileTicks
$writer = new BigEndianNBTStream();
$writer = new BigEndianNbtSerializer();
return $writer->writeCompressed(new CompoundTag("", [$nbt]), ZLIB_ENCODING_DEFLATE, RegionLoader::$COMPRESSION_LEVEL);
}
abstract protected function serializeSubChunk(SubChunk $subChunk) : CompoundTag;
protected function deserializeChunk(string $data) : Chunk{
$nbt = new BigEndianNBTStream();
$nbt = new BigEndianNbtSerializer();
$chunk = $nbt->readCompressed($data);
if(!$chunk->hasTag("Level")){
throw new CorruptedChunkException("'Level' key is missing from chunk NBT");

View File

@ -27,7 +27,7 @@ use pocketmine\level\format\Chunk;
use pocketmine\level\format\io\ChunkUtils;
use pocketmine\level\format\io\exception\CorruptedChunkException;
use pocketmine\level\format\SubChunk;
use pocketmine\nbt\BigEndianNBTStream;
use pocketmine\nbt\BigEndianNbtSerializer;
use pocketmine\nbt\NBT;
use pocketmine\nbt\tag\ByteArrayTag;
use pocketmine\nbt\tag\CompoundTag;
@ -95,7 +95,7 @@ class McRegion extends RegionLevelProvider{
$nbt->setTag(new ListTag("TileEntities", $tiles, NBT::TAG_Compound));
$writer = new BigEndianNBTStream();
$writer = new BigEndianNbtSerializer();
return $writer->writeCompressed(new CompoundTag("", [$nbt]), ZLIB_ENCODING_DEFLATE, RegionLoader::$COMPRESSION_LEVEL);
}
@ -106,7 +106,7 @@ class McRegion extends RegionLevelProvider{
* @throws CorruptedChunkException
*/
protected function deserializeChunk(string $data) : Chunk{
$nbt = new BigEndianNBTStream();
$nbt = new BigEndianNbtSerializer();
$chunk = $nbt->readCompressed($data);
if(!$chunk->hasTag("Level")){
throw new CorruptedChunkException("'Level' key is missing from chunk NBT");