World::unregisterChunkListenerFromAll(): go through unregisterChunkListener()

this ensures that everything gets cleaned up properly (e.g. player chunk listeners).
This commit is contained in:
Dylan K. Taylor 2021-10-31 14:03:40 +00:00
parent 3dc75644d9
commit fbb91d123d
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -731,14 +731,9 @@ class World implements ChunkManager{
* Unregisters a chunk listener from all chunks it is listening on in this World.
*/
public function unregisterChunkListenerFromAll(ChunkListener $listener) : void{
$id = spl_object_id($listener);
foreach($this->chunkListeners as $hash => $listeners){
if(isset($listeners[$id])){
unset($this->chunkListeners[$hash][$id]);
if(count($this->chunkListeners[$hash]) === 0){
unset($this->chunkListeners[$hash]);
}
}
World::getXZ($hash, $chunkX, $chunkZ);
$this->unregisterChunkListener($listener, $chunkX, $chunkZ);
}
}