NetworkSession: allow Player to handle its own business in chunk sending

these checks should appear consistently in all of these async callbacks.
This commit is contained in:
Dylan K. Taylor 2021-03-26 22:00:42 +00:00
parent f047ecfd2d
commit a223d1cbf3
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
2 changed files with 5 additions and 6 deletions

View File

@ -916,11 +916,6 @@ class NetworkSession{
if(!$this->isConnected()){
return;
}
$currentWorld = $this->player->getLocation()->getWorld();
if($world !== $currentWorld or !$this->player->isUsingChunk($chunkX, $chunkZ)){
$this->logger->debug("Tried to send no-longer-active chunk $chunkX $chunkZ in world " . $world->getFolderName());
return;
}
$currentWorld->timings->syncChunkSend->startTiming();
try{
$this->queueCompressed($promise);

View File

@ -727,7 +727,11 @@ class Player extends Human implements CommandSender, ChunkListener, IPlayer{
unset($this->loadQueue[$index]);
$this->usedChunks[$index] = UsedChunkStatus::REQUESTED();
$this->getNetworkSession()->startUsingChunk($X, $Z, function(int $chunkX, int $chunkZ) use ($index) : void{
$this->getNetworkSession()->startUsingChunk($X, $Z, function(int $chunkX, int $chunkZ) use ($index, $world) : void{
if(!isset($this->usedChunks[$index]) || $world !== $this->getWorld()){
$this->logger->debug("Tried to send no-longer-active chunk $chunkX $chunkZ in world " . $world->getFolderName());
return;
}
$this->usedChunks[$index] = UsedChunkStatus::SENT();
if($this->spawnChunkLoadCount === -1){
$this->spawnEntitiesOnChunk($chunkX, $chunkZ);