Fixes entities not being saved and tile entities having an incorrect field, closes #1661

This commit is contained in:
Shoghi Cervantes 2014-10-15 12:15:17 +02:00
parent e3a9db5d8f
commit 69d132401e
4 changed files with 7 additions and 6 deletions

View File

@ -306,6 +306,7 @@ class Level implements ChunkManager, Metadatable{
if($this->getAutoSave()){ if($this->getAutoSave()){
$this->save(); $this->save();
} }
$this->unloadChunks();
$this->provider->close(); $this->provider->close();
} }

View File

@ -186,8 +186,8 @@ class Chunk extends BaseChunk{
$tiles[] = $tile->namedtag; $tiles[] = $tile->namedtag;
} }
$nbt->Entities = new Enum("TileEntities", $tiles); $nbt->TileEntities = new Enum("TileEntities", $tiles);
$nbt->Entities->setTagType(NBT::TAG_Compound); $nbt->TileEntities->setTagType(NBT::TAG_Compound);
$writer = new NBT(NBT::BIG_ENDIAN); $writer = new NBT(NBT::BIG_ENDIAN);
$nbt->setName("Level"); $nbt->setName("Level");
$writer->setData(new Compound("", ["Level" => $nbt])); $writer->setData(new Compound("", ["Level" => $nbt]));

View File

@ -274,7 +274,7 @@ abstract class BaseFullChunk implements FullChunk{
if($level === null){ if($level === null){
return true; return true;
} }
if($save === true){ if($save === true and $this->hasChanged){
$level->saveChunk($this->getX(), $this->getZ()); $level->saveChunk($this->getX(), $this->getZ());
} }
if($safe === true){ if($safe === true){

View File

@ -284,7 +284,7 @@ class Chunk extends BaseFullChunk{
$entities = []; $entities = [];
foreach($this->getEntities() as $entity){ foreach($this->getEntities() as $entity){
if(!($entity instanceof Player) and $entity->closed !== true){ if(!($entity instanceof Player) and !$entity->closed){
$entity->saveNBT(); $entity->saveNBT();
$entities[] = $entity->namedtag; $entities[] = $entity->namedtag;
} }
@ -300,8 +300,8 @@ class Chunk extends BaseFullChunk{
$tiles[] = $tile->namedtag; $tiles[] = $tile->namedtag;
} }
$nbt->Entities = new Enum("TileEntities", $tiles); $nbt->TileEntities = new Enum("TileEntities", $tiles);
$nbt->Entities->setTagType(NBT::TAG_Compound); $nbt->TileEntities->setTagType(NBT::TAG_Compound);
$writer = new NBT(NBT::BIG_ENDIAN); $writer = new NBT(NBT::BIG_ENDIAN);
$nbt->setName("Level"); $nbt->setName("Level");
$writer->setData(new Compound("", ["Level" => $nbt])); $writer->setData(new Compound("", ["Level" => $nbt]));