private function mwWorldLoadCmd(CommandSender $sender, $wname) { if ($wname == "--all") { $wlst = []; foreach (glob($this->owner->getServer()->getDataPath() . "worlds/*") as $f) { $world = basename($f); if ($this->owner->getServer()->isLevelLoaded($world)) { continue; } if (!$this->owner->getServer()->isLevelGenerated($world)) { continue; } $wlst[] = $world; } if (count($wlst) == 0) { $sender->sendMessage(TextFormat::RED . mc::_("[MW] No levels to load")); return true; } $sender->sendMessage(TextFormat::AQUA . mc::n(mc::_("[MW] Loading one level"), mc::_("[MW] Loading ALL %1% levels", count($wlst)), count($wlst))); } else { if ($this->owner->getServer()->isLevelLoaded($wname)) { $sender->sendMessage(TextFormat::RED . mc::_("[MW] %1% already loaded", $wname)); return true; } if (!$this->owner->getServer()->isLevelGenerated($wname)) { $sender->sendMessage(TextFormat::RED . mc::_("[MW] %1% does not exists", $wname)); return true; } $wlst = [$wname]; } foreach ($wlst as $world) { if (!$this->owner->autoLoad($sender, $world)) { $sender->sendMessage(TextFormat::RED . mc::_("[MW] Unable to load %1%", $world)); } } return true; }
/** * Given some defaults, this will load optional features * * @param str $ns - namespace used to search for classes to load * @param array $mods - optional module definition * @param array $defaults - default options to use for config.yml * @param str $xhlp - optional help format. * @return array */ protected function modConfig($ns, $mods, $defaults, $xhlp = "") { if (!isset($defaults["features"])) { $defaults["features"] = []; } foreach ($mods as $i => $j) { $defaults["features"][$i] = $j[1]; } $cfg = (new Config($this->getDataFolder() . "config.yml", Config::YAML, $defaults))->getAll(); $this->modules = []; foreach ($cfg["features"] as $i => $j) { if (!isset($mods[$i])) { $this->getLogger()->info(mc::_("Unknown feature \"%1%\" ignored.", $i)); continue; } if (!$j) { continue; } $class = $mods[$i][0]; if (is_array($class)) { while (count($class) > 1) { // All classes before the last one are dependencies... $classname = $dep = array_shift($class); if (strpos($classname, "\\") === false) { $classname = $ns . "\\" . $classname; } if (isset($this->modules[$dep])) { continue; } // Dependancy already loaded if (isset($cfg[strtolower($dep)])) { $this->modules[$dep] = new $classname($this, $cfg[strtolower($dep)]); } else { $this->modules[$dep] = new $classname($this); } } // The last class in the array implements the actual feature $class = array_shift($class); } if (strpos($class, "\\") === false) { $class = $ns . "\\" . $class; } if (isset($cfg[$i])) { $this->modules[$i] = new $class($this, $cfg[$i]); } else { $this->modules[$i] = new $class($this); } } $c = count($this->modules); if ($c == 0) { $this->getLogger()->info(mc::_("NO features enabled")); return; } $this->session = null; $this->getLogger()->info(mc::n(mc::_("Enabled one feature"), mc::_("Enabled %1% features", $c), $c)); if ($this->scmdMap !== null && $this->scmdMap->getCommandCount() > 0) { $this->modules[] = new BasicHelp($this, $xhlp); } return $cfg; }