diff --git a/src/world/World.php b/src/world/World.php index 3e1131272..7ebcbfdd1 100644 --- a/src/world/World.php +++ b/src/world/World.php @@ -1016,8 +1016,12 @@ class World implements ChunkManager{ continue; } World::getXZ($index, $chunkX, $chunkZ); + if(!$this->isChunkLoaded($chunkX, $chunkZ)){ + //a previous chunk may have caused this one to be unloaded by a ChunkListener + continue; + } if(count($blocks) > 512){ - $chunk = $this->getChunk($chunkX, $chunkZ); + $chunk = $this->getChunk($chunkX, $chunkZ) ?? throw new AssumptionFailedError("We already checked that the chunk is loaded"); foreach($this->getChunkPlayers($chunkX, $chunkZ) as $p){ $p->onChunkChanged($chunkX, $chunkZ, $chunk); } diff --git a/tests/phpstan/configs/actual-problems.neon b/tests/phpstan/configs/actual-problems.neon index cf7e9b02f..aaf4c0ab1 100644 --- a/tests/phpstan/configs/actual-problems.neon +++ b/tests/phpstan/configs/actual-problems.neon @@ -960,11 +960,6 @@ parameters: count: 2 path: ../../../src/world/World.php - - - message: "#^Parameter \\#3 \\$chunk of method pocketmine\\\\player\\\\Player\\:\\:onChunkChanged\\(\\) expects pocketmine\\\\world\\\\format\\\\Chunk, pocketmine\\\\world\\\\format\\\\Chunk\\|null given\\.$#" - count: 1 - path: ../../../src/world/World.php - - message: "#^Parameter \\#3 \\$y of method pocketmine\\\\block\\\\Block\\:\\:position\\(\\) expects int, float\\|int given\\.$#" count: 2