ChunkCache: explicitly check for requesting of unloaded chunk

NetworkSession will never do this, but other things might.
This commit is contained in:
Dylan K. Taylor 2020-11-16 19:45:46 +00:00
parent 1d27225553
commit 37299ab804

View File

@ -94,6 +94,10 @@ class ChunkCache implements ChunkListener{
*/ */
public function request(int $chunkX, int $chunkZ) : CompressBatchPromise{ public function request(int $chunkX, int $chunkZ) : CompressBatchPromise{
$this->world->registerChunkListener($this, $chunkX, $chunkZ); $this->world->registerChunkListener($this, $chunkX, $chunkZ);
$chunk = $this->world->getChunk($chunkX, $chunkZ);
if($chunk === null){
throw new \InvalidArgumentException("Cannot request an unloaded chunk");
}
$chunkHash = World::chunkHash($chunkX, $chunkZ); $chunkHash = World::chunkHash($chunkX, $chunkZ);
if(isset($this->caches[$chunkHash])){ if(isset($this->caches[$chunkHash])){
@ -111,7 +115,7 @@ class ChunkCache implements ChunkListener{
new ChunkRequestTask( new ChunkRequestTask(
$chunkX, $chunkX,
$chunkZ, $chunkZ,
$this->world->getChunk($chunkX, $chunkZ), $chunk,
$this->caches[$chunkHash], $this->caches[$chunkHash],
$this->compressor, $this->compressor,
function() use ($chunkX, $chunkZ) : void{ function() use ($chunkX, $chunkZ) : void{