Player: extract some entity spawning logic into a separate function

This commit is contained in:
Dylan K. Taylor 2021-03-26 22:51:56 +00:00
parent de49a361c0
commit cdeedbad8b
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -682,6 +682,15 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
unset($this->loadQueue[$index]);
}
protected function spawnEntitiesOnAllChunks() : void{
foreach($this->usedChunks as $chunkHash => $status){
if($status->equals(UsedChunkStatus::SENT())){
World::getXZ($chunkHash, $chunkX, $chunkZ);
$this->spawnEntitiesOnChunk($chunkX, $chunkZ);
}
}
}
protected function spawnEntitiesOnChunk(int $chunkX, int $chunkZ) : void{
foreach($this->getWorld()->getChunk($chunkX, $chunkZ)->getEntities() as $entity){
if($entity !== $this and !$entity->isFlaggedForDespawn()){
@ -738,12 +747,7 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
}elseif($this->spawnChunkLoadCount++ === $this->spawnThreshold){
$this->spawnChunkLoadCount = -1;
foreach($this->usedChunks as $chunkHash => $status){
if($status->equals(UsedChunkStatus::SENT())){
World::getXZ($chunkHash, $_x, $_z);
$this->spawnEntitiesOnChunk($_x, $_z);
}
}
$this->spawnEntitiesOnAllChunks();
$this->getNetworkSession()->notifyTerrainReady();
}