public function __construct(Server $server, $timeout = 5)
 {
     $this->timeout = $timeout;
     $this->serverName = $server->getServerName();
     $this->listPlugins = $server->getProperty("settings.query-plugins", true);
     $this->plugins = $server->getPluginManager()->getPlugins();
     $this->players = [];
     foreach ($server->getOnlinePlayers() as $player) {
         if ($player->isOnline()) {
             $this->players[] = $player;
         }
     }
     $this->gametype = ($server->getGamemode() & 0x1) === 0 ? "SMP" : "CMP";
     $this->version = $server->getVersion();
     $this->server_engine = $server->getName() . " " . $server->getBukkitPEVersion();
     $this->map = $server->getDefaultLevel() === null ? "unknown" : $server->getDefaultLevel()->getName();
     $this->numPlayers = count($this->players);
     $this->maxPlayers = $server->getMaxPlayers();
     $this->whitelist = $server->hasWhitelist() ? "on" : "off";
     $this->port = $server->getPort();
     $this->ip = $server->getIp();
 }
Beispiel #2
0
 /**
  * Unloads the current level from memory safely
  *
  * @param bool $force default false, force unload of default level
  *
  * @return bool
  */
 public function unload($force = false)
 {
     $ev = new LevelUnloadEvent($this);
     if ($this === $this->server->getDefaultLevel() and $force !== true) {
         $ev->setCancelled(true);
     }
     $this->server->getPluginManager()->callEvent($ev);
     if (!$force and $ev->isCancelled()) {
         return false;
     }
     $this->server->getLogger()->info($this->server->getLanguage()->translateString("BukkitPE.level.unloading", [$this->getName()]));
     $defaultLevel = $this->server->getDefaultLevel();
     foreach ($this->getPlayers() as $player) {
         if ($this === $defaultLevel or $defaultLevel === null) {
             $player->close($player->getLeaveMessage(), "Forced default level unload");
         } elseif ($defaultLevel instanceof Level) {
             $player->teleport($this->server->getDefaultLevel()->getSafeSpawn());
         }
     }
     if ($this === $defaultLevel) {
         $this->server->setDefaultLevel(null);
     }
     $this->close();
     return true;
 }