public function __construct(Server $server, $timeout = 5) { $this->timeout = $timeout; $this->serverName = $server->getMotd(); $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; } } if ($server->isDServerEnabled() and $server->dserverConfig["queryMaxPlayers"]) { $pc = $server->dserverConfig["queryMaxPlayers"]; } elseif ($server->isDServerEnabled() and $server->dserverConfig["queryAllPlayers"]) { $pc = $server->getDServerMaxPlayers(); } else { $pc = $server->getMaxPlayers(); } if ($server->isDServerEnabled() and $server->dserverConfig["queryPlayers"]) { $poc = $server->getDServerOnlinePlayers(); } else { $poc = count($this->players); } $this->gametype = ($server->getGamemode() & 0x1) === 0 ? "SMP" : "CMP"; $this->version = $server->getVersion(); $this->server_engine = $server->getName() . " " . $server->getPocketMineVersion(); $this->map = $server->getDefaultLevel() === null ? "unknown" : $server->getDefaultLevel()->getName(); $this->numPlayers = $poc; $this->maxPlayers = $pc; $this->whitelist = $server->hasWhitelist() ? "on" : "off"; $this->port = $server->getPort(); $this->ip = $server->getIp(); }
public function check() { $d = Utils::getRealMemoryUsage(); $u = Utils::getMemoryUsage(true); $usage = round($u[0] / 1024 / 1024, 2) . "/" . round($d[0] / 1024 / 1024, 2) . "/" . round($u[1] / 1024 / 1024, 2) . "/" . round($u[2] / 1024 / 1024, 2) . " MB @ " . Utils::getThreadCount() . " threads"; $serverStatus = serialize(["online" => count($this->server->getOnlinePlayers()), "max" => $this->server->getMaxPlayers(), "upload" => round($this->server->getNetwork()->getUpload() / 1024, 2), "download" => round($this->server->getNetwork()->getDownload() / 1024, 2), "tps" => $this->server->getTicksPerSecondAverage(), "load" => $this->server->getTickUsageAverage(), "usage" => $usage]); for ($n = 0; $n < $this->threads; ++$n) { if (!$this->workers[$n]->isTerminated()) { $this->workers[$n]->serverStatus = $serverStatus; } if ($this->workers[$n]->isTerminated() === true) { $this->workers[$n] = new RCONInstance($this->socket, $this->password, $this->clientsPerThread); } elseif ($this->workers[$n]->isWaiting()) { if ($this->workers[$n]->response !== "") { $this->server->getLogger()->info($this->workers[$n]->response); $this->workers[$n]->synchronized(function (RCONInstance $thread) { $thread->notify(); }, $this->workers[$n]); } else { $response = new RemoteConsoleCommandSender(); $command = $this->workers[$n]->cmd; $this->server->getPluginManager()->callEvent($ev = new RemoteServerCommandEvent($response, $command)); if (!$ev->isCancelled()) { $this->server->dispatchCommand($ev->getSender(), $ev->getCommand()); } $this->workers[$n]->response = $response->getMessage(); $this->workers[$n]->synchronized(function (RCONInstance $thread) { $thread->notify(); }, $this->workers[$n]); } } } }
public function __construct(Server $server) { $this->server = $server; $this->identifiers = new \SplObjectStorage(); $this->rakLib = new RakLibServer($this->server->getLogger(), $this->server->getLoader(), $this->server->getPort(), $this->server->getIp() === "" ? "0.0.0.0" : $this->server->getIp()); $this->interface = new ServerHandler($this->rakLib, $this); for ($i = 0; $i < 256; ++$i) { $this->channelCounts[$i] = 0; } $this->setCount(count($this->server->getOnlinePlayers()), $this->server->getMaxPlayers()); }
public function __construct(Server $server) { $this->server = $server; $this->identifiers = new \SplObjectStorage(); $this->rakLib = new RakLibServer($this->server->getLogger(), $this->server->getLoader(), $this->server->getPort(), $this->server->getIp() === "" ? "0.0.0.0" : $this->server->getIp()); $this->interface = new ServerHandler($this->rakLib, $this); for ($i = 0; $i < 256; ++$i) { $this->channelCounts[$i] = 0; } $this->count = count($this->server->getOnlinePlayers()); $this->name = $this->server->getMotd(); $this->interface->sendOption("name", "MCPE;" . addcslashes($this->name, ";") . ";" . Info::CURRENT_PROTOCOL . ";" . \pocketmine\MINECRAFT_VERSION_NETWORK . ";" . $this->count . ";" . $this->server->getMaxPlayers()); }
private function generalData() { $version = new VersionString(); $this->data["general"] = []; $this->data["general"]["version"] = $version->get(false); $this->data["general"]["build"] = $version->getBuild(); $this->data["general"]["protocol"] = Info::CURRENT_PROTOCOL; $this->data["general"]["api"] = \pocketmine\API_VERSION; $this->data["general"]["git"] = \pocketmine\GIT_COMMIT; $this->data["general"]["raklib"] = RakLib::VERSION; $this->data["general"]["uname"] = php_uname("a"); $this->data["general"]["php"] = phpversion(); $this->data["general"]["zend"] = zend_version(); $this->data["general"]["php_os"] = PHP_OS; $this->data["general"]["os"] = Utils::getOS(); $this->addLine("Genisys version: " . $version->get(false) . " #" . $version->getBuild() . " [Protocol " . Info::CURRENT_PROTOCOL . "; API " . API_VERSION . "]"); $this->addLine("uname -a: " . php_uname("a")); $this->addLine("PHP version: " . phpversion()); $this->addLine("Zend version: " . zend_version()); $this->addLine("OS : " . PHP_OS . ", " . Utils::getOS()); $this->addLine(); $this->addLine("Server uptime: " . $this->server->getUptime()); $this->addLine("Number of loaded worlds: " . count($this->server->getLevels())); $this->addLine("Players online: " . count($this->server->getOnlinePlayers()) . "/" . $this->server->getMaxPlayers()); }
public function __construct(Server $server, $type, $playerList = []) { $endpoint = "http://" . $server->getProperty("anonymous-statistics.host", "stats.pocketmine.net") . "/"; $data = []; $data["uniqueServerId"] = $server->getServerUniqueId()->toString(); $data["uniqueMachineId"] = Utils::getMachineUniqueId()->toString(); $data["uniqueRequestId"] = UUID::fromData($server->getServerUniqueId(), microtime(true))->toString(); switch ($type) { case self::TYPE_OPEN: $data["event"] = "open"; $version = new VersionString(); $data["server"] = ["port" => $server->getPort(), "software" => $server->getName(), "fullVersion" => $version->get(true), "version" => $version->get(), "build" => $version->getBuild(), "api" => $server->getApiVersion(), "minecraftVersion" => $server->getVersion(), "protocol" => Info::CURRENT_PROTOCOL]; $data["system"] = ["operatingSystem" => Utils::getOS(), "cores" => Utils::getCoreCount(), "phpVersion" => PHP_VERSION, "machine" => php_uname("a"), "release" => php_uname("r"), "platform" => php_uname("i")]; $data["players"] = ["count" => 0, "limit" => $server->getMaxPlayers()]; $plugins = []; foreach ($server->getPluginManager()->getPlugins() as $p) { $d = $p->getDescription(); $plugins[$d->getName()] = ["name" => $d->getName(), "version" => $d->getVersion(), "enabled" => $p->isEnabled()]; } $data["plugins"] = $plugins; break; case self::TYPE_STATUS: $data["event"] = "status"; $data["server"] = ["ticksPerSecond" => $server->getTicksPerSecondAverage(), "tickUsage" => $server->getTickUsageAverage(), "ticks" => $server->getTick()]; //This anonymizes the user ids so they cannot be reversed to the original foreach ($playerList as $k => $v) { $playerList[$k] = md5($v); } $players = []; foreach ($server->getOnlinePlayers() as $p) { if ($p->isOnline()) { $players[] = md5($p->getUniqueId()->toBinary()); } } $data["players"] = ["count" => count($players), "limit" => $server->getMaxPlayers(), "currentList" => $players, "historyList" => array_values($playerList)]; $info = Utils::getMemoryUsage(true); $data["system"] = ["mainMemory" => $info[0], "totalMemory" => $info[1], "availableMemory" => $info[2], "threadCount" => Utils::getThreadCount()]; break; case self::TYPE_CLOSE: $data["event"] = "close"; $data["crashing"] = $server->isRunning(); break; } $this->endpoint = $endpoint . "api/post"; $this->data = json_encode($data); }
public function connect() { $this->verified = false; $pk = new ConnectPacket(); $pk->encodedPassword = base64_encode(Utils::aes_encode($this->password, $this->password)); $pk->isMainServer = $this->isMainServer(); $pk->description = $this->description; $pk->maxPlayers = $this->server->getMaxPlayers(); $pk->protocol = Info::CURRENT_PROTOCOL; $this->sendDataPacket($pk); }
public function connect() { $this->verified = false; $pk = new ConnectPacket(); $pk->password = $this->password; $pk->isMainServer = $this->isMainServer(); $pk->description = $this->description; $pk->maxPlayers = $this->server->getMaxPlayers(); $pk->protocol = Info::CURRENT_PROTOCOL; $this->sendDataPacket($pk); $this->connectionTime = microtime(true); }
public function __construct(Server $server, $timeout = 5) { $this->timeout = $timeout; $this->serverName = $server->getMotd(); $this->listPlugins = $server->getProperty("settings.query-plugins", true); $this->plugins = str_replace(" ", "_", $server->getPluginManager()->getPlugins()); $this->players = []; foreach ($server->getOnlinePlayers() as $player) { if ($player->isOnline()) { $this->players[] = $player; } } if ($server->isDServerEnabled() and $server->dserverConfig["queryMaxPlayers"]) { $pc = $server->dserverConfig["queryMaxPlayers"]; } elseif ($server->isDServerEnabled() and $server->dserverConfig["queryAllPlayers"]) { $pc = $server->getDServerMaxPlayers(); } else { $pc = $server->getMaxPlayers(); } if ($server->isDServerEnabled() and $server->dserverConfig["queryPlayers"]) { $poc = $server->getDServerOnlinePlayers(); } else { $poc = count($this->players); } switch ($server->getGamemode()) { case 0: $this->gametype = "Survival"; break; case 1: $this->gametype = "Creative"; break; case 2: $this->gametype = "Adventure"; break; case 3: $this->gametype = "Spectator"; break; } $this->version = $server->getVersion(); $this->server_engine = $server->getName() . " " . $server->getPocketMineVersion(); $this->map = $server->getDefaultLevel() === null ? "unknown" : $server->getDefaultLevel()->getName(); $this->numPlayers = $poc; $this->maxPlayers = $pc; $this->whitelist = $server->hasWhitelist() ? "on" : "off"; $this->port = $server->getPort(); $this->ip = $server->getIp(); $this->motd_version = $server->getMPVersion(); }
public function setName($name) { //$info = $this->server->getQueryInformation(); if ($this->server->isDServerEnabled() and $this->server->dserverConfig["motdMaxPlayers"] > 0) { $pc = $this->server->dserverConfig["motdMaxPlayers"]; } elseif ($this->server->isDServerEnabled() and $this->server->dserverConfig["motdAllPlayers"]) { $pc = $this->server->getDServerMaxPlayers(); } else { $pc = $this->server->getMaxPlayers(); } if ($this->server->isDServerEnabled() and $this->server->dserverConfig["motdPlayers"]) { $poc = $this->server->getDServerOnlinePlayers(); } else { $poc = count($this->server->getOnlinePlayers()); } $this->interface->sendOption("name", "MCPE;" . addcslashes($name, ";") . ";" . ProtocolInfo::CURRENT_PROTOCOL . ";" . \pocketmine\MINECRAFT_VERSION_NETWORK . ";" . $poc . ";" . $pc); }
public function onCompletion(Server $server) { $this->info = str_ireplace(["{PLAYERS}", "{MAXPLAYERS}"], [count($server->getOnlinePlayers()), $server->getMaxPlayers()], $this->info); foreach ($server->getOnlinePlayers() as $player) { $name = $player->getName(); $iname = strtolower($name); $item = $player->getInventory()->getItemInHand(); $message = str_ireplace(["{PLAYER}", "{DISPLAYNAME}", "{MONEY}", "{RANK}", "{HEALTH}", "{MAXHEALTH}", "{X}", "{Y}", "{Z}", "{WORLD}", "{ITEMID}", "{ITEMDAMAGE}", "{ITEMNAME}"], [$name, $player->getDisplayName(), isset($this->moneys[$iname]) ? $this->moneys[$iname] : "-", isset($this->rank[$iname]) ? $this->rank[$iname] : "-", $player->getHealth(), $player->getMaxHealth(), floor(round($player->x, 1) * 10) * 0.1, floor(round($player->y, 1) * 10) * 0.1, floor(round($player->z, 1) * 10) * 0.1, $player->level->getFolderName(), $item->getID(), $item->getDamage(), $item->getName()], $this->info); switch (true) { case stripos($this->data["DisplayType"], "popup") !== false: $player->sendPopup($message); case stripos($this->data["DisplayType"], "tip") !== false: $player->sendTip($message); break; } } }
/** * @param Server $server */ public function onCompletion(Server $server) { //var_dump($this->result); $numPlayers = count($server->getOnlinePlayers()); $maxPlayers = $server->getMaxPlayers(); foreach ($this->result as $result) { if (is_array($result)) { $numPlayers += $result["info"]["numplayers"]; $maxPlayers += $result["info"]["maxplayers"]; } else { $server->getLogger()->critical($result); } } if (($plugin = $server->getPluginManager()->getPlugin("QueryFacade")) instanceof QueryFacade) { $plugin->getModifier()->setPlayerCount($numPlayers); $plugin->getModifier()->setMaxPlayerCount($maxPlayers); } }
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->getPocketMineVersion(); $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(); }
/** * @param CommandSender $sender * @param Server $server */ public function sendServerInfo(CommandSender $sender, Server $server) { $sender->sendMessage("Name: " . $server->getServerName()); $sender->sendMessage("Motd: " . $server->getMotd()); $sender->sendMessage("Network-motd: " . $server->getNetwork()->getMotd()); $sender->sendMessage("Address: " . $server->getIp() . ":" . $server->getPort()); $sender->sendMessage("Players: " . count($server->getOnlinePlayers()) . "/" . $server->getMaxPlayers()); $sender->sendMessage("Difficulty: " . $server->getDifficulty()); $sender->sendMessage("Default-gamemode: " . $server->getDefaultGamemode()); $sender->sendMessage("Unique-id: " . $server->getServerUniqueId()); $sender->sendMessage("TPS: " . $server->getTicksPerSecond()); $sender->sendMessage("Average-TPS: " . $server->getTicksPerSecondAverage()); $sender->sendMessage("Codename: " . $server->getCodename()); $sender->sendMessage("API-version: " . $server->getApiVersion()); $sender->sendMessage("MCPE-version: " . $server->getVersion()); $sender->sendMessage("Is-hardcore: " . ($server->isHardcore() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); $sender->sendMessage("Is-running: " . ($server->isRunning() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); $sender->sendMessage("Is-whitelisted: " . ($server->hasWhitelist() ? TextFormat::GREEN . "yes" : TextFormat::RED . "no")); }
public function setCount($count, $maxcount = 0) { if ($maxcount === 0) { $maxcount = $this->server->getMaxPlayers(); } $this->server->mainInterface->setCount($count, $maxcount); }
public function setName($name) { $info = $this->server->getQueryInformation(); $this->interface->sendOption("name", "MCPE;" . addcslashes($name, ";") . ";" . Info::CURRENT_PROTOCOL . ";" . \pocketmine\MINECRAFT_VERSION_NETWORK . ";" . count($this->server->getOnlinePlayers()) . ";" . $this->server->getMaxPlayers()); }