diff --git a/src/pocketmine/level/format/Chunk.php b/src/pocketmine/level/format/Chunk.php index 2a7521643..d3c8a002e 100644 --- a/src/pocketmine/level/format/Chunk.php +++ b/src/pocketmine/level/format/Chunk.php @@ -667,6 +667,13 @@ class Chunk{ return $this->entities; } + /** + * @return Entity[] + */ + public function getSavableEntities() : array{ + return array_filter($this->entities, function(Entity $entity) : bool{ return $entity->canSaveWithChunk() and !$entity->isClosed(); }); + } + /** * @return Tile[] */ diff --git a/src/pocketmine/level/format/io/leveldb/LevelDB.php b/src/pocketmine/level/format/io/leveldb/LevelDB.php index 0f765a9f6..c106bcd54 100644 --- a/src/pocketmine/level/format/io/leveldb/LevelDB.php +++ b/src/pocketmine/level/format/io/leveldb/LevelDB.php @@ -537,11 +537,9 @@ class LevelDB extends BaseLevelProvider{ /** @var CompoundTag[] $entities */ $entities = []; - foreach($chunk->getEntities() as $entity){ - if($entity->canSaveWithChunk() and !$entity->isClosed()){ - $entity->saveNBT(); - $entities[] = $entity->namedtag; - } + foreach($chunk->getSavableEntities() as $entity){ + $entity->saveNBT(); + $entities[] = $entity->namedtag; } $this->writeTags($entities, $index . self::TAG_ENTITY); diff --git a/src/pocketmine/level/format/io/region/Anvil.php b/src/pocketmine/level/format/io/region/Anvil.php index 56f7c085c..0a7892039 100644 --- a/src/pocketmine/level/format/io/region/Anvil.php +++ b/src/pocketmine/level/format/io/region/Anvil.php @@ -66,11 +66,9 @@ class Anvil extends McRegion{ $entities = []; - foreach($chunk->getEntities() as $entity){ - if($entity->canSaveWithChunk() and !$entity->isClosed()){ - $entity->saveNBT(); - $entities[] = $entity->namedtag; - } + foreach($chunk->getSavableEntities() as $entity){ + $entity->saveNBT(); + $entities[] = $entity->namedtag; } $nbt->setTag(new ListTag("Entities", $entities, NBT::TAG_Compound)); diff --git a/src/pocketmine/level/format/io/region/McRegion.php b/src/pocketmine/level/format/io/region/McRegion.php index eab5036b5..3d4f60cc0 100644 --- a/src/pocketmine/level/format/io/region/McRegion.php +++ b/src/pocketmine/level/format/io/region/McRegion.php @@ -87,11 +87,9 @@ class McRegion extends BaseLevelProvider{ $entities = []; - foreach($chunk->getEntities() as $entity){ - if($entity->canSaveWithChunk() and !$entity->isClosed()){ - $entity->saveNBT(); - $entities[] = $entity->namedtag; - } + foreach($chunk->getSavableEntities() as $entity){ + $entity->saveNBT(); + $entities[] = $entity->namedtag; } $nbt->setTag(new ListTag("Entities", $entities, NBT::TAG_Compound));