/** * @param PlayerPreLoginEvent $login * @priority HIGH * @ignoreCancelled true */ public function onPlayerPreconnect(PlayerPreLoginEvent $login) { $name = strtolower($login->getPlayer()->getName()); if (in_array($name, ["pocketmine", "console", "server", "rcon", "legionpe", "botbot", "fakeclient", "pocketbot"])) { $login->setCancelled(); $login->setKickMessage("Bad username"); } else { $reason = $this->getMain()->getMySQLi()->query("SELECT msg FROM ipbans WHERE %s LIKE ip AND %d<(unix_timestamp(creation)+length);", MysqlConnection::ASSOC, $login->getPlayer()->getAddress(), time()); if (is_array($reason)) { $login->setCancelled(); $login->setKickMessage("You are IP-banned! Reason: " . (isset($reason["msg"]) ? $reason["msg"] : "no reason specified :(")); } if (($old = $this->getMain()->getServer()->getPlayerExact($name)) instanceof Player) { // if has name collision if ($old->getAddress() !== ($ip = $login->getPlayer()->getAddress())) { // if IP is different if (substr($ip, 0, 8) !== "192.168." and $ip !== "119.247.51.252") { // if new IP isn't local and isn't PEMapModder's IP address (yes I am making it for myself) $login->setCancelled(); $login->setKickMessage("Player already online with differnet IP"); } } } } }
public function onPreLogin(PlayerPreLoginEvent $event) { if (isset($this->bans[$event->getPlayer()->getClientId()])) { $event->setKickMessage("You are Banned!"); $event->setCancelled(); } }
public function onLogin(PlayerPreLoginEvent $event) { $player = $event->getPlayer(); $uuid = $player->getClientId(); $reason = "당신은 비매너 유저입니다."; /* for($i = 0;$i < count($this->terrorist);$i++) { if($this->terrorist[i] == $player->getAddress()) { $this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist]테러범이 접속하였습니다."); $this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist]곧 기기밴 됩니다."); $this->banDB[$player->getName()] = $uuid; // UUIDBan::getInstance()->AddBan($player, $reason); $this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist]기기밴 완료"); } } */ foreach ($this->banDB as $list) { if ($list == $uuid) { $event->setKickMessage($reason); $event->setCancelled(); return; } } for ($i = 0; $i < count($this->terrorist); $i++) { if ($this->terrorist[i] == $player->getAddress()) { $this->getServer()->broadcastMessage(TextFormat::RED . "[BanTerrorist] 비매너 플레이어가 접속하였습니다."); $this->getServer()->broadcastMessage(TextFormat::RED . "[BanTerrorist] 곧 기기밴 됩니다."); $event->setKickMessage($reason); $this->banDB[$player->getName()] = $uuid; $this->save("BanDB.yml", $this->banDB, true); $event->setCancelled(); //UUIDBan::getInstance()->AddBan($player, $reason); $this->getServer()->broadcastMessage(TextFormat::RED . "[BanTerrorist] 기기밴 완료"); } } /*foreach($this->terrorist as $list) { if($list == $player->getAddress()) { $this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist] 비매너 플레이어가 접속하였습니다."); $this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist] 곧 기기밴 됩니다."); $event->setKickMessage($reason); $this->banDB[$player->getName()] = $uuid; $this->save("BanDB.yml", $this->banDB, true); $event->setCancelled(); //UUIDBan::getInstance()->AddBan($player, $reason); $this->getServer()->broadcastMessage( TextFormat::RED ."[BanTerrorist] 기기밴 완료"); } }*/ }
public function onLogin(PlayerPreLoginEvent $event) { $player = $event->getPlayer(); $addressInfo = json_decode(Utils::getURL(" http://freegeoip.net/json/" . $player->getAddress()), true); if (!$addressInfo[country_code] == "KR") { $event->setKickMessage("You are not Korean"); $event->setCanCelled(); } }
public function onPreLogin(PlayerPreLoginEvent $e) { $player = $e->getPlayer(); foreach ($this->getServer()->getOnlinePlayers() as $p) { if (strtolower($player->getName()) === strtolower($p->getName() and $p !== $player)) { $e->setKickMessage(F::RED . $player->getName() . F::GOLD . " already playing on a server"); $e->setCancelled(true); return; } } }
public function onPreLogin(PlayerPreLoginEvent $event) { $this->getMain()->newJoins++; $player = $event->getPlayer(); foreach ($this->main->getServer()->getOnlinePlayers() as $other) { if ($other === $player or strtolower($other->getName()) !== strtolower($player->getName())) { continue; } /** @noinspection PhpDeprecationInspection */ if ($other->getRawUniqueId() === $player->getRawUniqueId()) { $other->close("You rejoined from the same IP with the same client and the same username."); } else { $event->setCancelled(); $event->setKickMessage("A player of this username has already connected from a different IP of yours or from another client."); return; } } }
public function onPreLogin(PlayerPreLoginEvent $event) { $newPlayer = $event->getPlayer(); foreach ($this->main->getServer()->getOnlinePlayers() as $oldPlayer) { if ($oldPlayer === $newPlayer) { continue; // too lazy to check if this would happen } if (($lowName = strtolower($newPlayer->getName())) === strtolower($oldPlayer->getName())) { // we are having trouble $checkIp = $this->main->getConfig()->getNested("MultiSesCtrl.CheckIP", true); $cond = $oldPlayer->getClientSecret() === $newPlayer->getClientSecret(); if ($checkIp) { $cond = ($cond and $oldPlayer->getAddress() === $newPlayer->getAddress()); // don't forget these parentheses! :) PHP operator precedence >.< } if ($cond) { $oldPlayer->kick("Login from the same device", false); $this->main->getAuditLogger()->logPush($lowName, $oldPlayer->getAddress(), $newPlayer->getAddress()); } else { $event->setCancelled(); $user = $this->main->getUserByPlayer($oldPlayer); if ($user === null) { $status = "loading HereAuth account"; $oldState = "loading"; } elseif ($user->isRegistering()) { $status = "registering with HereAuth"; $oldState = "register"; } elseif ($user->isLoggingIn()) { $status = "pending to login with HereAuth"; $oldState = "login"; } elseif ($user->getAccountInfo()->passwordHash) { $status = "logged in with HereAuth"; $oldState = "auth"; } else { $status = "account not registered with HereAuth"; $oldState = "noreg"; } $this->main->getAuditLogger()->logBump($lowName, $oldPlayer->getAddress(), $newPlayer->getAddress(), $oldPlayer->getUniqueId()->toString(), $newPlayer->getUniqueId()->toString(), $oldState); $event->setKickMessage("Player of the same name ({$lowName}) from another device is already online ({$status})"); } } } }
public function onPlayerPreLogin(\pocketmine\event\player\PlayerPreLoginEvent $event) { $ik = $this->isKorean(); if ($this->isLogin($player = $event->getPlayer(), true)) { $address = $player->getAddress(); foreach ($this->getServer()->getOnlinePlayers() as $onlinePlayer) { if ($onlinePlayer !== $player && strtolower($onlinePlayer->getName()) === strtolower($player->getName()) && $onlinePlayer->getAddress() === $address) { $onlinePlayer->close($reason = Color::RED . ($ik ? "새로운 접속" : "New connections"), $reason); $address = false; break; } } if ($address) { $event->setKickMessage(Color::RED . "Already Login this Id"); $event->setCancelled(); } } else { $cid = $player->getClientId(); $name = strtolower($player->getName()); foreach ($this->lg as $key => $lg) { if (isset($lg["CID"]) && $lg["CID"] == $cid && $key != $name) { $event->setKickMessage(Color::RED . ($ik ? "당신은 이미 가입하셨습니다." : "Your Already Register.") . "\n" . Color::GOLD . " On " . Color::YELLOW . $key); $event->setCancelled(); break; } } } }