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;
}
public function __construct(array $args, Main $main) { $this->name = $args["name"]; $this->motto = $args["motto"]; $this->id = $args["id"]; $this->founder = $args["founder"]; $this->ranks = $args["ranks"]; $this->defaultRank = $args["default-rank"]; $this->allyRank = $args["ally-rank"]; $this->truceRank = $args["truce-rank"]; $this->stdRank = $args["std-rank"]; $this->members = $args["members"]; $this->lastActive = $args["last-active"]; $this->chunks = $args["chunks"]; $this->homes = $args["homes"]; $this->main = $main; $this->whitelist = $args["whitelist"]; $this->reputation = isset($args["reputation"]) ? $args["reputation"] : 0; $this->server = $this->main->getServer(); $levels = []; foreach ($this->chunks as $chunk) { $level = $chunk->getLevel(); if (!isset($levels[$level])) { $levels[] = $level; if (!$this->server->isLevelLoaded($level)) { if (!$this->server->isLevelGenerated($this->server->loadLevel($level))) { $this->server->generateLevel($level, $this->main->getLevelGenerationSeed()); } $this->server->loadLevel($level); } } } $this->initializeXEconEntity($main->getXEcon($this->server)); }