diff --git a/src/world/generator/PopulationTask.php b/src/world/generator/PopulationTask.php index 12d921d45..87222664e 100644 --- a/src/world/generator/PopulationTask.php +++ b/src/world/generator/PopulationTask.php @@ -106,21 +106,30 @@ class PopulationTask extends AsyncTask{ if($chunk === null){ $generator->generateChunk($manager, $this->chunkX, $this->chunkZ); $chunk = $manager->getChunk($this->chunkX, $this->chunkZ); + if($chunk === null){ + throw new AssumptionFailedError("We just set this chunk, so it must exist"); + } $chunk->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_TERRAIN, true); $chunk->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BIOMES, true); } + $resultChunks = []; //this is just to keep phpstan's type inference happy foreach($chunks as $i => $c){ $cX = (-1 + $i % 3) + $this->chunkX; $cZ = (-1 + intdiv($i, 3)) + $this->chunkZ; $manager->setChunk($cX, $cZ, $c ?? new Chunk()); if($c === null){ $generator->generateChunk($manager, $cX, $cZ); - $chunks[$i] = $manager->getChunk($cX, $cZ); - $chunks[$i]->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_TERRAIN, true); - $chunks[$i]->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BIOMES, true); + $c = $manager->getChunk($cX, $cZ); + if($c === null){ + throw new AssumptionFailedError("We just set this chunk, so it must exist"); + } + $c->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_TERRAIN, true); + $c->setTerrainDirtyFlag(Chunk::DIRTY_FLAG_BIOMES, true); } + $resultChunks[$i] = $c; } + $chunks = $resultChunks; $generator->populateChunk($manager, $this->chunkX, $this->chunkZ); $chunk = $manager->getChunk($this->chunkX, $this->chunkZ);