From 06c4f31db7046f23e26e3a15119d0cd8f2c68fd1 Mon Sep 17 00:00:00 2001 From: "Dylan K. Taylor" Date: Fri, 14 Sep 2018 11:05:51 +0100 Subject: [PATCH] Server: Account for later levels being unloaded by earlier levels' ticking function in checkTickUpdates() should fix #2434 This happens when a plugin causes a level to be unloaded during an event fired on level tick. --- src/pocketmine/Server.php | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index bb9bd2f5eb..0203e1a8e3 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -2352,7 +2352,11 @@ class Server{ } //Do level ticks - foreach($this->getLevels() as $level){ + foreach($this->levels as $k => $level){ + if(!isset($this->levels[$k])){ + // Level unloaded during the tick of a level earlier in this loop, perhaps by plugin + continue; + } if($level->getTickRate() > $this->baseTickRate and --$level->tickRateCounter > 0){ continue; }