From fd4a441f3a49ebb21beac51211432234c61cf7f6 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Thu, 21 Feb 2019 14:51:16 +0000 Subject: [PATCH] Level: add unregisterChunkListenerFromAll() it's not expected for chunk listeners to have to track all the chunks they are listening to under normal circumstances. --- src/pocketmine/level/Level.php | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/pocketmine/level/Level.php b/src/pocketmine/level/Level.php index 824b037a3..cb465faef 100644 --- a/src/pocketmine/level/Level.php +++ b/src/pocketmine/level/Level.php @@ -713,6 +713,23 @@ class Level implements ChunkManager, Metadatable{ } } + /** + * Unregisters a chunk listener from all chunks it is listening on in this Level. + * + * @param ChunkListener $listener + */ + 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(empty($this->chunkListeners[$hash])){ + unset($this->chunkListeners[$hash]); + } + } + } + } + /** * Returns all the listeners attached to this chunk. *