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()){
$this->save();
}
$this->unloadChunks();
$this->provider->close();
}

View File

@ -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]));

View File

@ -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){

View File

@ -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]));