Proper chunk unloading in case of generation/loading without players

This commit is contained in:
Shoghi Cervantes 2015-05-16 15:43:34 +02:00
parent d6ebff412c
commit 419abdaad6
No known key found for this signature in database
GPG Key ID: 78464DB0A7837F89

View File

@ -568,6 +568,8 @@ class Level implements ChunkManager, Metadatable{
++$this->loaders[$hash];
}
$this->cancelUnloadChunkRequest($chunkX, $chunkZ);
if($autoLoad){
$this->loadChunk($chunkX, $chunkZ);
}
@ -634,9 +636,6 @@ class Level implements ChunkManager, Metadatable{
$this->unloadChunks();
$X = null;
$Z = null;
//Do block updates
$this->timings->doTickPending->startTiming();
while($this->updateQueue->count() > 0 and $this->updateQueue->current()["priority"] <= $currentTick){
@ -2047,10 +2046,14 @@ class Level implements ChunkManager, Metadatable{
unset($this->chunkCache[$index]);
$chunk->setChanged();
if(!$this->isChunkInUse($chunkX, $chunkZ)){
$this->unloadChunkRequest($chunkX, $chunkZ);
}else{
foreach($this->getChunkLoaders($chunkX, $chunkZ) as $loader){
$loader->onChunkChanged($chunk);
}
}
}
/**
* Gets the highest block Y value at a specific $x and $z
@ -2286,9 +2289,13 @@ class Level implements ChunkManager, Metadatable{
$chunk->setChanged(false);
if($this->isChunkInUse($x, $z)){
foreach($this->getChunkLoaders($x, $z) as $loader){
$loader->onChunkLoaded($chunk);
}
}else{
$this->unloadChunkRequest($x, $z);
}
$this->timings->syncChunkLoadTimer->stopTiming();