[reason...]" ); $this->setPermission("pocketmine.command.ban.ip"); } public function execute(CommandSender $sender, $currentAlias, array $args){ if(!$this->testPermission($sender)){ return true; } if(count($args) === 0){ $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return false; } $value = array_shift($args); $reason = implode(" ", $args); if(preg_match("/^([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])\\.([01]?\\d\\d?|2[0-4]\\d|25[0-5])$/", $value)){ $this->processIPBan($value, $sender, $reason); }else{ if(($player = $sender->getServer()->getPlayer($value)) instanceof Player){ $this->processIPBan($player->getAddress(), $sender, $reason); }else{ $sender->sendMessage(new TranslationContainer("commands.generic.usage", [$this->usageMessage])); return false; } } return true; } private function processIPBan($ip, CommandSender $sender, $reason){ $sender->getServer()->getIPBans()->addBan($ip, $reason, null, $sender->getName()); foreach($sender->getServer()->getOnlinePlayers() as $player){ if($player->getAddress() === $ip){ $player->kick("You have been IP banned."); } } $sender->getServer()->getNetwork()->blockAddress($ip, -1); Command::broadcastCommandMessage($sender, "Banned IP Address " . $ip); } }