diff --git a/src/pocketmine/level/format/io/leveldb/LevelDB.php b/src/pocketmine/level/format/io/leveldb/LevelDB.php index a71deb1dd..f0807e5a0 100644 --- a/src/pocketmine/level/format/io/leveldb/LevelDB.php +++ b/src/pocketmine/level/format/io/leveldb/LevelDB.php @@ -458,8 +458,7 @@ class LevelDB extends BaseLevelProvider{ $tiles = []; foreach($chunk->getTiles() as $tile){ if(!$tile->isClosed()){ - $tile->saveNBT($tileTag = new CompoundTag()); - $tiles[] = $tileTag; + $tiles[] = $tile->saveNBT(); } } $this->writeTags($tiles, $index . self::TAG_BLOCK_ENTITY); diff --git a/src/pocketmine/level/format/io/region/Anvil.php b/src/pocketmine/level/format/io/region/Anvil.php index 272d89617..9cd69599f 100644 --- a/src/pocketmine/level/format/io/region/Anvil.php +++ b/src/pocketmine/level/format/io/region/Anvil.php @@ -75,8 +75,7 @@ class Anvil extends McRegion{ $tiles = []; foreach($chunk->getTiles() as $tile){ - $tile->saveNBT($tileTag = new CompoundTag()); - $tiles[] = $tileTag; + $tiles[] = $tile->saveNBT(); } $nbt->setTag(new ListTag("TileEntities", $tiles, NBT::TAG_Compound)); diff --git a/src/pocketmine/level/format/io/region/McRegion.php b/src/pocketmine/level/format/io/region/McRegion.php index d935cc8a4..c080b79a4 100644 --- a/src/pocketmine/level/format/io/region/McRegion.php +++ b/src/pocketmine/level/format/io/region/McRegion.php @@ -94,8 +94,7 @@ class McRegion extends BaseLevelProvider{ $tiles = []; foreach($chunk->getTiles() as $tile){ - $tile->saveNBT($tileTag = new CompoundTag()); - $tiles[] = $tileTag; + $tiles[] = $tile->saveNBT(); } $nbt->setTag(new ListTag("TileEntities", $tiles, NBT::TAG_Compound)); diff --git a/src/pocketmine/tile/Tile.php b/src/pocketmine/tile/Tile.php index 3cb001fbe..0bda6abd7 100644 --- a/src/pocketmine/tile/Tile.php +++ b/src/pocketmine/tile/Tile.php @@ -181,12 +181,15 @@ abstract class Tile extends Position{ */ abstract protected function writeSaveData(CompoundTag $nbt) : void; - public function saveNBT(CompoundTag $nbt) : void{ + public function saveNBT() : CompoundTag{ + $nbt = new CompoundTag(); $nbt->setString(self::TAG_ID, static::getSaveId()); $nbt->setInt(self::TAG_X, $this->x); $nbt->setInt(self::TAG_Y, $this->y); $nbt->setInt(self::TAG_Z, $this->z); $this->writeSaveData($nbt); + + return $nbt; } public function getCleanedNBT() : ?CompoundTag{