Possible fix for #1661

This commit is contained in:
Shoghi Cervantes
2014-09-24 16:47:53 +02:00
parent 6cb7e36f8a
commit ef3674a296
5 changed files with 29 additions and 46 deletions

View File

@ -1519,14 +1519,19 @@ class Level implements ChunkManager, Metadatable{
}
}
public function setChunk($x, $z, FullChunk $chunk){
public function setChunk($x, $z, FullChunk $chunk, $unload = true){
$index = Level::chunkHash($x, $z);
foreach($this->getUsingChunk($x, $z) as $player){
$player->unloadChunk($x, $z);
if($unload){
foreach($this->getUsingChunk($x, $z) as $player){
$player->unloadChunk($x, $z);
}
unset($this->chunks[$index]);
$this->provider->setChunk($x, $z, $chunk);
$this->loadChunk($x, $z);
}else{
$this->provider->setChunk($x, $z, $chunk);
$this->chunks[$index] = $chunk;
}
unset($this->chunks[$index]);
$this->provider->setChunk($x, $z, $chunk);
$this->loadChunk($x, $z);
}
/**
@ -1800,10 +1805,8 @@ class Level implements ChunkManager, Metadatable{
$this->timings->doChunkUnload->startTiming();
if($this->getAutoSave()){
if(isset($this->chunks[$index])){
$this->provider->setChunk($x, $z, $this->chunks[$index]);
}
if($chunk instanceof FullChunk and $this->getAutoSave()){
$this->provider->setChunk($x, $z, $chunk);
$this->provider->saveChunk($x, $z);
}