mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 00:33:59 +00:00
Sync NBT dependency
This commit is contained in:
parent
9c16caf27b
commit
2924303169
30
composer.lock
generated
30
composer.lock
generated
@ -233,16 +233,16 @@
|
||||
},
|
||||
{
|
||||
"name": "particle/validator",
|
||||
"version": "v2.3.3",
|
||||
"version": "v2.3.4",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/particle-php/Validator.git",
|
||||
"reference": "becaa89160fe220ebd9e9cd10addc62cf2adf3f0"
|
||||
"reference": "657c7543e51938dd9d114750e49d695129527a7a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/particle-php/Validator/zipball/becaa89160fe220ebd9e9cd10addc62cf2adf3f0",
|
||||
"reference": "becaa89160fe220ebd9e9cd10addc62cf2adf3f0",
|
||||
"url": "https://api.github.com/repos/particle-php/Validator/zipball/657c7543e51938dd9d114750e49d695129527a7a",
|
||||
"reference": "657c7543e51938dd9d114750e49d695129527a7a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -291,20 +291,20 @@
|
||||
"validation",
|
||||
"validator"
|
||||
],
|
||||
"time": "2018-09-12T08:03:23+00:00"
|
||||
"time": "2019-01-07T13:39:13+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pocketmine/binaryutils",
|
||||
"version": "0.1.5",
|
||||
"version": "0.1.6",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/pmmp/BinaryUtils.git",
|
||||
"reference": "03361b0d78ef2b400a99e96406aa594a5bc1c4ed"
|
||||
"reference": "53cbb5a958130a6c6b5a4c511e623f4d401c1476"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/pmmp/BinaryUtils/zipball/03361b0d78ef2b400a99e96406aa594a5bc1c4ed",
|
||||
"reference": "03361b0d78ef2b400a99e96406aa594a5bc1c4ed",
|
||||
"url": "https://api.github.com/repos/pmmp/BinaryUtils/zipball/53cbb5a958130a6c6b5a4c511e623f4d401c1476",
|
||||
"reference": "53cbb5a958130a6c6b5a4c511e623f4d401c1476",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -322,10 +322,10 @@
|
||||
],
|
||||
"description": "Classes and methods for conveniently handling binary data",
|
||||
"support": {
|
||||
"source": "https://github.com/pmmp/BinaryUtils/tree/0.1.5",
|
||||
"source": "https://github.com/pmmp/BinaryUtils/tree/0.1.6",
|
||||
"issues": "https://github.com/pmmp/BinaryUtils/issues"
|
||||
},
|
||||
"time": "2019-01-04T13:32:11+00:00"
|
||||
"time": "2019-01-06T15:20:40+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pocketmine/math",
|
||||
@ -372,12 +372,12 @@
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/pmmp/NBT.git",
|
||||
"reference": "863b2e509485baffd4897cd6fa8e98e7e7e5ae14"
|
||||
"reference": "ead8577bf3ff0eb8dd3c19c40a67a9ee6d06783a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/pmmp/NBT/zipball/863b2e509485baffd4897cd6fa8e98e7e7e5ae14",
|
||||
"reference": "863b2e509485baffd4897cd6fa8e98e7e7e5ae14",
|
||||
"url": "https://api.github.com/repos/pmmp/NBT/zipball/ead8577bf3ff0eb8dd3c19c40a67a9ee6d06783a",
|
||||
"reference": "ead8577bf3ff0eb8dd3c19c40a67a9ee6d06783a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
@ -405,7 +405,7 @@
|
||||
"source": "https://github.com/pmmp/NBT/tree/master",
|
||||
"issues": "https://github.com/pmmp/NBT/issues"
|
||||
},
|
||||
"time": "2019-01-04T15:32:10+00:00"
|
||||
"time": "2019-01-07T21:01:32+00:00"
|
||||
},
|
||||
{
|
||||
"name": "pocketmine/raklib",
|
||||
|
@ -94,7 +94,7 @@ use pocketmine\nbt\tag\DoubleTag;
|
||||
use pocketmine\nbt\tag\ListTag;
|
||||
use pocketmine\network\mcpe\CompressBatchPromise;
|
||||
use pocketmine\network\mcpe\NetworkCipher;
|
||||
use pocketmine\network\mcpe\NetworkLittleEndianNBTStream;
|
||||
use pocketmine\network\mcpe\NetworkNbtSerializer;
|
||||
use pocketmine\network\mcpe\NetworkSession;
|
||||
use pocketmine\network\mcpe\ProcessLoginTask;
|
||||
use pocketmine\network\mcpe\protocol\AdventureSettingsPacket;
|
||||
@ -2465,7 +2465,7 @@ class Player extends Human implements CommandSender, ChunkLoader, IPlayer{
|
||||
|
||||
$t = $this->level->getTile($pos);
|
||||
if($t instanceof Spawnable){
|
||||
$nbt = new NetworkLittleEndianNBTStream();
|
||||
$nbt = new NetworkNbtSerializer();
|
||||
$compound = $nbt->read($packet->namedtag);
|
||||
if(!$t->updateCompoundTag($compound, $this)){
|
||||
$t->spawnTo($this);
|
||||
|
@ -61,7 +61,7 @@ use pocketmine\level\LevelException;
|
||||
use pocketmine\metadata\EntityMetadataStore;
|
||||
use pocketmine\metadata\LevelMetadataStore;
|
||||
use pocketmine\metadata\PlayerMetadataStore;
|
||||
use pocketmine\nbt\BigEndianNBTStream;
|
||||
use pocketmine\nbt\BigEndianNbtSerializer;
|
||||
use pocketmine\nbt\NBT;
|
||||
use pocketmine\nbt\tag\ByteTag;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
@ -812,7 +812,7 @@ class Server{
|
||||
if($this->shouldSavePlayerData()){
|
||||
if(file_exists($path . "$name.dat")){
|
||||
try{
|
||||
$nbt = new BigEndianNBTStream();
|
||||
$nbt = new BigEndianNbtSerializer();
|
||||
return $nbt->readCompressed(file_get_contents($path . "$name.dat"));
|
||||
}catch(\Throwable $e){ //zlib decode error / corrupt data
|
||||
rename($path . "$name.dat", $path . "$name.dat.bak");
|
||||
@ -875,7 +875,7 @@ class Server{
|
||||
$ev->call();
|
||||
|
||||
if(!$ev->isCancelled()){
|
||||
$nbt = new BigEndianNBTStream();
|
||||
$nbt = new BigEndianNbtSerializer();
|
||||
try{
|
||||
file_put_contents($this->getDataPath() . "players/" . strtolower($name) . ".dat", $nbt->writeCompressed($ev->getSaveData()));
|
||||
}catch(\Throwable $e){
|
||||
|
@ -33,7 +33,7 @@ use pocketmine\entity\Entity;
|
||||
use pocketmine\item\enchantment\Enchantment;
|
||||
use pocketmine\item\enchantment\EnchantmentInstance;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\nbt\LittleEndianNBTStream;
|
||||
use pocketmine\nbt\LittleEndianNbtSerializer;
|
||||
use pocketmine\nbt\NBT;
|
||||
use pocketmine\nbt\tag\ByteTag;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
@ -61,7 +61,7 @@ class Item implements ItemIds, \JsonSerializable{
|
||||
public const TAG_DISPLAY_LORE = "Lore";
|
||||
|
||||
|
||||
/** @var LittleEndianNBTStream */
|
||||
/** @var LittleEndianNbtSerializer */
|
||||
private static $cachedParser = null;
|
||||
|
||||
private static function parseCompoundTag(string $tag) : CompoundTag{
|
||||
@ -70,7 +70,7 @@ class Item implements ItemIds, \JsonSerializable{
|
||||
}
|
||||
|
||||
if(self::$cachedParser === null){
|
||||
self::$cachedParser = new LittleEndianNBTStream();
|
||||
self::$cachedParser = new LittleEndianNbtSerializer();
|
||||
}
|
||||
|
||||
return self::$cachedParser->read($tag);
|
||||
@ -78,7 +78,7 @@ class Item implements ItemIds, \JsonSerializable{
|
||||
|
||||
private static function writeCompoundTag(CompoundTag $tag) : string{
|
||||
if(self::$cachedParser === null){
|
||||
self::$cachedParser = new LittleEndianNBTStream();
|
||||
self::$cachedParser = new LittleEndianNbtSerializer();
|
||||
}
|
||||
|
||||
return self::$cachedParser->write($tag);
|
||||
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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);
|
||||
|
@ -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");
|
||||
|
@ -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");
|
||||
|
@ -30,7 +30,7 @@ use pocketmine\entity\Entity;
|
||||
use pocketmine\item\Item;
|
||||
use pocketmine\item\ItemFactory;
|
||||
use pocketmine\math\Vector3;
|
||||
use pocketmine\nbt\LittleEndianNBTStream;
|
||||
use pocketmine\nbt\LittleEndianNbtSerializer;
|
||||
use pocketmine\network\mcpe\protocol\types\CommandOriginData;
|
||||
use pocketmine\network\mcpe\protocol\types\EntityLink;
|
||||
use pocketmine\utils\BinaryStream;
|
||||
@ -39,7 +39,7 @@ use function count;
|
||||
use function strlen;
|
||||
|
||||
class NetworkBinaryStream extends BinaryStream{
|
||||
/** @var LittleEndianNBTStream */
|
||||
/** @var LittleEndianNbtSerializer */
|
||||
private static $itemNbtSerializer = null;
|
||||
|
||||
public function getString() : string{
|
||||
@ -85,7 +85,7 @@ class NetworkBinaryStream extends BinaryStream{
|
||||
$compound = null;
|
||||
if($nbtLen > 0){
|
||||
if(self::$itemNbtSerializer === null){
|
||||
self::$itemNbtSerializer = new LittleEndianNBTStream();
|
||||
self::$itemNbtSerializer = new LittleEndianNbtSerializer();
|
||||
}
|
||||
$compound = self::$itemNbtSerializer->read($this->get($nbtLen));
|
||||
}
|
||||
@ -119,7 +119,7 @@ class NetworkBinaryStream extends BinaryStream{
|
||||
$nbtLen = 0;
|
||||
if($item->hasNamedTag()){
|
||||
if(self::$itemNbtSerializer === null){
|
||||
self::$itemNbtSerializer = new LittleEndianNBTStream();
|
||||
self::$itemNbtSerializer = new LittleEndianNbtSerializer();
|
||||
}
|
||||
$nbt = self::$itemNbtSerializer->write($item->getNamedTag());
|
||||
$nbtLen = strlen($nbt);
|
||||
|
@ -23,59 +23,55 @@ declare(strict_types=1);
|
||||
|
||||
namespace pocketmine\network\mcpe;
|
||||
|
||||
use pocketmine\nbt\LittleEndianNBTStream;
|
||||
use pocketmine\nbt\LittleEndianNbtSerializer;
|
||||
use function count;
|
||||
use function strlen;
|
||||
#ifndef COMPILE
|
||||
use pocketmine\utils\Binary;
|
||||
#endif
|
||||
|
||||
#include <rules/NBT.h>
|
||||
class NetworkNbtSerializer extends LittleEndianNbtSerializer{
|
||||
|
||||
class NetworkLittleEndianNBTStream extends LittleEndianNBTStream{
|
||||
|
||||
public function getInt() : int{
|
||||
return Binary::readVarInt($this->buffer, $this->offset);
|
||||
public function readInt() : int{
|
||||
return $this->buffer->getVarInt();
|
||||
}
|
||||
|
||||
public function putInt(int $v) : void{
|
||||
$this->put(Binary::writeVarInt($v));
|
||||
public function writeInt(int $v) : void{
|
||||
$this->buffer->putVarInt($v);
|
||||
}
|
||||
|
||||
public function getLong() : int{
|
||||
return Binary::readVarLong($this->buffer, $this->offset);
|
||||
public function readLong() : int{
|
||||
return $this->buffer->getVarLong();
|
||||
}
|
||||
|
||||
public function putLong(int $v) : void{
|
||||
$this->put(Binary::writeVarLong($v));
|
||||
public function writeLong(int $v) : void{
|
||||
$this->buffer->putVarLong($v);
|
||||
}
|
||||
|
||||
public function getString() : string{
|
||||
return $this->get(Binary::readUnsignedVarInt($this->buffer, $this->offset));
|
||||
public function readString() : string{
|
||||
return $this->buffer->get($this->buffer->getUnsignedVarInt());
|
||||
}
|
||||
|
||||
public function putString(string $v) : void{
|
||||
public function writeString(string $v) : void{
|
||||
$len = strlen($v);
|
||||
if($len > 32767){
|
||||
throw new \InvalidArgumentException("NBT strings cannot be longer than 32767 bytes, got $len bytes");
|
||||
}
|
||||
$this->put(Binary::writeUnsignedVarInt($len) . $v);
|
||||
$this->buffer->putUnsignedVarInt($len);
|
||||
$this->buffer->put($v);
|
||||
}
|
||||
|
||||
public function getIntArray() : array{
|
||||
$len = $this->getInt(); //varint
|
||||
public function readIntArray() : array{
|
||||
$len = $this->readInt(); //varint
|
||||
$ret = [];
|
||||
for($i = 0; $i < $len; ++$i){
|
||||
$ret[] = $this->getInt(); //varint
|
||||
$ret[] = $this->readInt(); //varint
|
||||
}
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
public function putIntArray(array $array) : void{
|
||||
$this->putInt(count($array)); //varint
|
||||
public function writeIntArray(array $array) : void{
|
||||
$this->writeInt(count($array)); //varint
|
||||
foreach($array as $v){
|
||||
$this->putInt($v); //varint
|
||||
$this->writeInt($v); //varint
|
||||
}
|
||||
}
|
||||
}
|
@ -26,7 +26,7 @@ namespace pocketmine\tile;
|
||||
use pocketmine\nbt\tag\CompoundTag;
|
||||
use pocketmine\nbt\tag\IntTag;
|
||||
use pocketmine\nbt\tag\StringTag;
|
||||
use pocketmine\network\mcpe\NetworkLittleEndianNBTStream;
|
||||
use pocketmine\network\mcpe\NetworkNbtSerializer;
|
||||
use pocketmine\network\mcpe\protocol\BlockEntityDataPacket;
|
||||
use pocketmine\Player;
|
||||
use function get_class;
|
||||
@ -37,7 +37,7 @@ abstract class Spawnable extends Tile{
|
||||
/** @var bool */
|
||||
private $dirty = true; //default dirty, until it's been spawned appropriately on the level
|
||||
|
||||
/** @var NetworkLittleEndianNBTStream|null */
|
||||
/** @var NetworkNbtSerializer|null */
|
||||
private static $nbtWriter = null;
|
||||
|
||||
public function createSpawnPacket() : BlockEntityDataPacket{
|
||||
@ -95,7 +95,7 @@ abstract class Spawnable extends Tile{
|
||||
final public function getSerializedSpawnCompound() : string{
|
||||
if($this->spawnCompoundCache === null){
|
||||
if(self::$nbtWriter === null){
|
||||
self::$nbtWriter = new NetworkLittleEndianNBTStream();
|
||||
self::$nbtWriter = new NetworkNbtSerializer();
|
||||
}
|
||||
|
||||
$this->spawnCompoundCache = self::$nbtWriter->write($this->getSpawnCompound());
|
||||
|
Loading…
x
Reference in New Issue
Block a user