diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 8cd5bbc9f..2877cf9ca 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -306,6 +306,7 @@ class Level implements ChunkManager, Metadatable{ if($this->getAutoSave()){ $this->save(); } + $this->unloadChunks(); $this->provider->close(); } diff --git a/src/pocketmine/level/format/anvil/Chunk.php b/src/pocketmine/level/format/anvil/Chunk.php index 02c22ddee..0373a0d56 100644 --- a/src/pocketmine/level/format/anvil/Chunk.php +++ b/src/pocketmine/level/format/anvil/Chunk.php @@ -186,8 +186,8 @@ class Chunk extends BaseChunk{ $tiles[] = $tile->namedtag; } - $nbt->Entities = new Enum("TileEntities", $tiles); - $nbt->Entities->setTagType(NBT::TAG_Compound); + $nbt->TileEntities = new Enum("TileEntities", $tiles); + $nbt->TileEntities->setTagType(NBT::TAG_Compound); $writer = new NBT(NBT::BIG_ENDIAN); $nbt->setName("Level"); $writer->setData(new Compound("", ["Level" => $nbt])); diff --git a/src/pocketmine/level/format/generic/BaseFullChunk.php b/src/pocketmine/level/format/generic/BaseFullChunk.php index da2f42ed1..b17bd465e 100644 --- a/src/pocketmine/level/format/generic/BaseFullChunk.php +++ b/src/pocketmine/level/format/generic/BaseFullChunk.php @@ -274,7 +274,7 @@ abstract class BaseFullChunk implements FullChunk{ if($level === null){ return true; } - if($save === true){ + if($save === true and $this->hasChanged){ $level->saveChunk($this->getX(), $this->getZ()); } if($safe === true){ diff --git a/src/pocketmine/level/format/mcregion/Chunk.php b/src/pocketmine/level/format/mcregion/Chunk.php index 0bcd1ee92..13cbc04f0 100644 --- a/src/pocketmine/level/format/mcregion/Chunk.php +++ b/src/pocketmine/level/format/mcregion/Chunk.php @@ -284,7 +284,7 @@ class Chunk extends BaseFullChunk{ $entities = []; foreach($this->getEntities() as $entity){ - if(!($entity instanceof Player) and $entity->closed !== true){ + if(!($entity instanceof Player) and !$entity->closed){ $entity->saveNBT(); $entities[] = $entity->namedtag; } @@ -300,8 +300,8 @@ class Chunk extends BaseFullChunk{ $tiles[] = $tile->namedtag; } - $nbt->Entities = new Enum("TileEntities", $tiles); - $nbt->Entities->setTagType(NBT::TAG_Compound); + $nbt->TileEntities = new Enum("TileEntities", $tiles); + $nbt->TileEntities->setTagType(NBT::TAG_Compound); $writer = new NBT(NBT::BIG_ENDIAN); $nbt->setName("Level"); $writer->setData(new Compound("", ["Level" => $nbt]));