PopulationTask no longer creates chunks if they don't exist

creating a throwaway empty chunk on the main thread is pointless.
This commit is contained in:
Dylan K. Taylor 2020-12-03 22:12:42 +00:00
parent c808095978
commit 05ab44f768
2 changed files with 14 additions and 17 deletions

View File

@ -2507,10 +2507,7 @@ class World implements ChunkManager{
}
$chunk = $this->loadChunk($x, $z);
if($chunk === null){
$chunk = new Chunk();
}
if(!$chunk->isPopulated()){
if($chunk === null || !$chunk->isPopulated()){
Timings::$populationTimer->startTiming();
$this->chunkPopulationQueue[$index] = true;

View File

@ -42,35 +42,35 @@ class PopulationTask extends AsyncTask{
/** @var int */
private $chunkZ;
/** @var string */
/** @var string|null */
public $chunk;
/** @var string */
/** @var string|null */
public $chunk0;
/** @var string */
/** @var string|null */
public $chunk1;
/** @var string */
/** @var string|null */
public $chunk2;
/** @var string */
/** @var string|null */
public $chunk3;
//center chunk
/** @var string */
/** @var string|null */
public $chunk5;
/** @var string */
/** @var string|null */
public $chunk6;
/** @var string */
/** @var string|null */
public $chunk7;
/** @var string */
/** @var string|null */
public $chunk8;
public function __construct(World $world, int $chunkX, int $chunkZ, Chunk $chunk){
public function __construct(World $world, int $chunkX, int $chunkZ, ?Chunk $chunk){
$this->state = true;
$this->worldId = $world->getId();
$this->chunkX = $chunkX;
$this->chunkZ = $chunkZ;
$this->chunk = FastChunkSerializer::serializeWithoutLight($chunk);
$this->chunk = $chunk !== null ? FastChunkSerializer::serializeWithoutLight($chunk) : null;
foreach($world->getAdjacentChunks($chunkX, $chunkZ) as $i => $c){
$this->{"chunk$i"} = $c !== null ? FastChunkSerializer::serializeWithoutLight($c) : null;
@ -91,7 +91,7 @@ class PopulationTask extends AsyncTask{
/** @var Chunk[] $chunks */
$chunks = [];
$chunk = FastChunkSerializer::deserialize($this->chunk);
$chunk = $this->chunk !== null ? FastChunkSerializer::deserialize($this->chunk) : new Chunk();
for($i = 0; $i < 9; ++$i){
if($i === 4){
@ -142,7 +142,7 @@ class PopulationTask extends AsyncTask{
$world->registerGeneratorToWorker($this->worker->getAsyncWorkerId());
}
$chunk = FastChunkSerializer::deserialize($this->chunk);
$chunk = $this->chunk !== null ? FastChunkSerializer::deserialize($this->chunk) : null;
for($i = 0; $i < 9; ++$i){
if($i === 4){