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
     }
 }
 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);
 }
 public function getEffectiveConseq()
 {
     return Settings::getWarnPtsConseq($this->getWarningPoints(), $this->getLastWarnTime());
 }