private function execWarnOn(CommandSender $issuer, Session $ses)
 {
     $msg = $ses->translate(Phrases::WARNING_RECEIVED_NOTIFICATION, ["issuer" => $issuer->getName(), "message" => $this->msg, "points" => $this->points, "totalpoints" => $ses->getWarningPoints()]);
     $conseq = Settings::getWarnPtsConseq($ses->getWarningPoints());
     if ($conseq->banLength) {
         $msg .= $ses->translate(Phrases::WARNING_BANNED_NOTIFICATION, ["length" => MUtils::time_secsToString($conseq->banLength)]);
         $msg = "\n" . $msg;
         $ses->getPlayer()->kick($msg, false);
     } elseif ($conseq->muteSecs) {
         $msg .= $ses->translate(Phrases::WARNING_MUTED_NOTIFICATION, ["length" => MUtils::time_secsToString($conseq->muteSecs)]);
         $ses->getPlayer()->sendMessage($msg);
         // TODO mute
     }
 }
 protected function run(array $args, Session $sender)
 {
     $lbl = func_get_arg(2);
     if (is_string($lbl) and $lbl !== "cg") {
         $sender->send(Phrases::CMD_GRIND_COIN_ADVICE);
     }
     if (!$sender->canStartGrind()) {
         return $sender->translate(Phrases::CMD_GRIND_COIN_CANNOT_START, ["time" => MUtils::time_secsToString($sender->getGrindWaitTime())]);
     }
     if (!$sender->confirmGrind) {
         $sender->confirmGrind = true;
         return $sender->translate(Phrases::CMD_GRIND_COIN_REQUEST_CONFIRM, ["length" => MUtils::time_secsToString(Settings::getGrindLength($sender->getRank())), "amplitude" => Settings::getGrindFactor($sender->getRank())]);
     }
     $sender->confirmGrind = false;
     $sender->startGrinding();
     return $sender->translate(Phrases::CMD_GRIND_COIN_STARTED);
 }
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     foreach ($server->getOnlinePlayers() as $p) {
         if ($p->getId() === $this->sesId) {
             $player = $p;
             break;
         }
     }
     if (!isset($player)) {
         $main->getLogger()->notice("Player of {$this->sesId} quitted the server before data were fetched.");
         return;
     }
     $consequence = Settings::getWarnPtsConsequence($this->totalWarnPts, $this->lastWarnTime);
     if ($consequence->banLength > 0) {
         $player->kick(TextFormat::RED . "You are banned. You have accumulated " . TextFormat::DARK_PURPLE . $this->totalWarnPts . TextFormat::RED . " warning points, and you still have " . TextFormat::BLUE . MUtils::time_secsToString($consequence->banLength) . TextFormat::RED . " before you are unbanned." . TextFormat::AQUA . "Believe this to be a mistake? Contact us with email at " . TextFormat::DARK_PURPLE . "*****@*****.**");
         return;
     }
     /** @var bool $success */
     /** @var string $query */
     extract($this->getResult());
     if (!$success) {
         $player->kick(TextFormat::RED . "Sorry, our server has encountered an internal error when trying to retrieve your data from the database.", false);
         return;
     }
     /** @var int $resulttype */
     if ($resulttype === AsyncQuery::TYPE_RAW) {
         $main->getLogger()->notice("New account pending to register: {$this->name}");
         $loginData = null;
     } else {
         /** @var mixed[] $result */
         $loginData = $result;
         if (count($main->getSessions()) >= Settings::$SYSTEM_MAX_PLAYERS) {
             $main->getLogger()->notice("Server slots exceeded optimum level!");
             $rank = (int) $loginData["rank"];
             if ($rank & Settings::RANK_PERM_MOD) {
                 $main->getLogger()->notice($player->getName() . " bypassed as mod");
             } elseif ($rank & Settings::RANK_IMPORTANCE_DONATOR) {
                 $main->getLogger()->notice($player->getName() . " bypassed as donator");
             } else {
                 $main->getAltServer($ip, $port);
                 if ($ip !== "0.0.0.0") {
                     $main->getLogger()->notice($player->getName() . " is transferred to {$ip}:{$port}. Feature suppressed in 0.12.1");
                     //						$main->transfer($player, $ip, $port, "This server is full.", false);
                 }
             }
         }
     }
     $main->newSession($player, $loginData);
 }
 public function onCompletion(Server $server)
 {
     $main = BasePlugin::getInstance($server);
     foreach ($server->getOnlinePlayers() as $player) {
         if ($player->getId() === $this->sesId) {
             break;
         }
     }
     if (!isset($player)) {
         return;
     }
     /** @var bool $success */
     /** @var string $query */
     extract($this->getResult());
     if (!$success) {
         $player->kick(TextFormat::RED . "Sorry, our server has encountered an internal error when trying to retrieve your data from the database.", false);
         return;
     }
     /** @var int $resulttype */
     if ($resulttype === AsyncQuery::TYPE_RAW) {
         $main->getLogger()->notice("New account pending to register: {$this->name}");
         $loginData = null;
     } else {
         /** @var mixed[] $result */
         $loginData = $result;
         if (count($main->getSessions()) >= Settings::$SYSTEM_MAX_PLAYERS and isset($loginData["rank"]) and !($loginData["rank"] & Settings::RANK_IMPORTANCE_DONATOR or $loginData["rank"] & Settings::RANK_PERM_MOD)) {
             $main->getAltServer($ip, $port);
             $main->transfer($player, $ip, $port, "This server is full.", false);
         }
         $conseq = Settings::getWarnPtsConseq($this->totalWarnPts, $loginData["lastwarn"]);
         if ($conseq->banLength > 0) {
             $player->kick(TextFormat::RED . "You are banned.\nYou have accumulated " . TextFormat::DARK_PURPLE . $this->totalWarnPts . TextFormat::RED . " warning points,\nand you still have " . TextFormat::BLUE . MUtils::time_secsToString($conseq->banLength) . TextFormat::RED . " before you are unbanned.\n" . TextFormat::AQUA . "Believe this to be a mistake? Contact us with email at " . TextFormat::DARK_PURPLE . "*****@*****.**");
             return;
         }
     }
     $main->newSession($player, $loginData);
 }
        if (($rank & self::RANK_IMPORTANCE_VIP) === self::RANK_IMPORTANCE_VIP) {
            return 129600;
        }
        if (($rank & self::RANK_IMPORTANCE_DONATOR) === self::RANK_IMPORTANCE_DONATOR) {
            return 216000;
        }
        return PHP_INT_MAX;
    }
    /**
     * @param Vector3 $from
     * @param Vector3 $to
     * @return mixed
     */
    public static function isLocalChat($from, $to)
    {
        return $from->distanceSquared($to) <= 1600;
    }
}
$config = new Config("legionpe.yml", Config::YAML, ["localize" => ["id" => 0, "ip" => "pe.legionpvp.eu", "port" => 19132, "class" => "hub"], "system" => ["isTest" => false, "maxPlayers" => 60]]);
Settings::$SYSTEM_MAX_PLAYERS = $config->getNested("system.maxPlayers");
Settings::$SYSTEM_IS_TEST = $config->getNested("system.isTest");
Settings::$PROCESS_ID = getmypid();
Settings::$LOCALIZE_ID = $config->getNested("localize.id");
Settings::$LOCALIZE_IP = $config->getNested("localize.ip");
Settings::$LOCALIZE_PORT = $config->getNested("localize.port");
$array = ["hub" => Settings::CLASS_HUB, "pvp" => Settings::CLASS_KITPVP, "kitpvp" => Settings::CLASS_KITPVP, "parkour" => Settings::CLASS_PARKOUR, "spleef" => Settings::CLASS_SPLEEF, "infected" => Settings::CLASS_INFECTED, "classic" => Settings::CLASS_CLASSICAL, "classical" => Settings::CLASS_CLASSICAL];
if (!isset($array[$config->getNested("localize.class")])) {
    throw new \RuntimeException("Invalid class: " . var_export($config->getNested("localize.class"), true));
}
Settings::$LOCALIZE_CLASS = $array[$config->getNested("localize.class")];
 public function getGrindWaitTime()
 {
     return max(0, $this->getLastGrind() + Settings::getGrindExpiry($this->getRank()) - time());
 }
 public function execWarnOn(CommandSender $issuer, Session $ses)
 {
     $msg = $ses->translate(Phrases::WARNING_RECEIVED_NOTIFICATION, ["issuer" => $issuer->getName(), "message" => $this->msg, "points" => $this->points, "totalpoints" => $ses->getWarningPoints()]);
     $consequence = Settings::getWarnPtsConsequence($ses->getWarningPoints(), $this->creation);
     if ($consequence->banLength) {
         $msg .= $ses->translate(Phrases::WARNING_BANNED_NOTIFICATION, ["length" => MUtils::time_secsToString($consequence->banLength)]);
         $msg = "\n" . $msg;
         $ses->getPlayer()->kick($msg, false);
     } elseif ($consequence->muteSecs) {
         $mute = new MuteIssue();
         $mute->cid = $this->clientId;
         $mute->ip = $ses->getPlayer()->getAddress();
         $mute->uid = $this->uid;
         $mute->length = $consequence->muteSecs;
         $mute->msg = $this->msg;
         $mute->since = $this->creation;
         $mute->src = $issuer->getName();
         $ses->getPlayer()->sendMessage($msg);
         MuteHormone::fromObject($ses->getMain(), $mute)->release();
     }
 }