public function loadLevel($name)
{
if (trim($name) === "") {
throw new LevelException("Invalid empty level name");
}
if ($this->isLevelLoaded($name)) {
return true;
} elseif (!$this->isLevelGenerated($name)) {
$this->logger->notice($this->getLanguage()->translateString("pocketmine.level.notFound", [$name]));
return false;
}
$path = $this->getDataPath() . "worlds/" . $name . "/";
$provider = LevelProviderManager::getProvider($path);
if ($provider === null) {
$this->logger->error($this->getLanguage()->translateString("pocketmine.level.loadError", [$name, "Unknown provider"]));
return false;
}
try {
$level = new Level($this, $name, $path, $provider);
} catch (\Throwable $e) {
$this->logger->error($this->getLanguage()->translateString("pocketmine.level.loadError", [$name, $e->getMessage()]));
$this->logger->logException($e);
return false;
}
$this->levels[$level->getId()] = $level;
$level->initLevel();
$this->getPluginManager()->callEvent(new LevelLoadEvent($level));
$level->setTickRate($this->baseTickRate);
return true;
}