diff --git a/src/pocketmine/Server.php b/src/pocketmine/Server.php index c290b7bde..fa436a59b 100644 --- a/src/pocketmine/Server.php +++ b/src/pocketmine/Server.php @@ -840,11 +840,16 @@ class Server{ /** * @param Level $level * @param bool $forceUnload + * + * @return bool */ public function unloadLevel(Level $level, $forceUnload = false){ if($level->unload($forceUnload) === true and $this->isLevelLoaded($level->getFolderName())){ unset($this->levels[$level->getID()]); + return true; } + + return false; } /** diff --git a/src/pocketmine/event/level/LevelUnloadEvent.php b/src/pocketmine/event/level/LevelUnloadEvent.php new file mode 100644 index 000000000..3f93b6aca --- /dev/null +++ b/src/pocketmine/event/level/LevelUnloadEvent.php @@ -0,0 +1,30 @@ +server->getDefaultLevel() and $force !== true){ + $ev->setCancelled(true); + } + + $this->server->getPluginManager()->callEvent($ev); + + if($ev->isCancelled()){ return false; } + $this->server->getLogger()->info("Unloading level \"" . $this->getName() . "\""); $this->nextSave = PHP_INT_MAX; $defaultLevel = $this->server->getDefaultLevel();