Esempio n. 1
0
 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;
 }