Fixed some issues with chunks being generated on a loop

This commit is contained in:
Shoghi Cervantes
2014-12-16 02:57:44 +01:00
parent c175485cd8
commit 8e47c93fbc
4 changed files with 7 additions and 5 deletions

View File

@ -2220,8 +2220,8 @@ class Level implements ChunkManager, Metadatable{
public function generateChunk($x, $z){ public function generateChunk($x, $z){
if(!isset($this->chunkGenerationQueue[Level::chunkHash($x, $z)])){ if(!isset($this->chunkGenerationQueue[$index = Level::chunkHash($x, $z)])){
$this->chunkGenerationQueue[Level::chunkHash($x, $z)] = true; $this->chunkGenerationQueue[$index] = true;
$this->server->getGenerationManager()->requestChunk($this, $x, $z); $this->server->getGenerationManager()->requestChunk($this, $x, $z);
} }
} }

View File

@ -179,7 +179,7 @@ class GenerationChunkManager implements ChunkManager{
protected function requestChunk($chunkX, $chunkZ){ protected function requestChunk($chunkX, $chunkZ){
$chunk = $this->manager->requestChunk($this->levelID, $chunkX, $chunkZ); $chunk = $this->manager->requestChunk($this->levelID, $chunkX, $chunkZ);
$this->chunks[$index = Level::chunkHash($chunkX, $chunkZ)] = $chunk; $this->chunks[Level::chunkHash($chunkX, $chunkZ)] = $chunk;
return $chunk; return $chunk;
} }

View File

@ -83,7 +83,8 @@ class GenerationLevelManager extends GenerationManager{
if(count($chunks) === 0){ if(count($chunks) === 0){
unset($this->requestQueue[$levelID]); unset($this->requestQueue[$levelID]);
}else{ }else{
Level::getXZ($key = key($chunks), $chunkX, $chunkZ); $key = key($chunks);
Level::getXZ($key, $chunkX, $chunkZ);
unset($this->requestQueue[$levelID][$key]); unset($this->requestQueue[$levelID][$key]);
$this->generateChunk($levelID, $chunkX, $chunkZ); $this->generateChunk($levelID, $chunkX, $chunkZ);
++$count; ++$count;

View File

@ -126,7 +126,8 @@ class GenerationManager{
if(count($chunks) === 0){ if(count($chunks) === 0){
unset($this->requestQueue[$levelID]); unset($this->requestQueue[$levelID]);
}else{ }else{
Level::getXZ($key = key($chunks), $chunkX, $chunkZ); $key = key($chunks);
Level::getXZ($key, $chunkX, $chunkZ);
unset($this->requestQueue[$levelID][$key]); unset($this->requestQueue[$levelID][$key]);
$this->generateChunk($levelID, $chunkX, $chunkZ); $this->generateChunk($levelID, $chunkX, $chunkZ);
} }