getServer(); $server->getWhitelisted()->reload(); if($server->hasWhitelist()){ self::kickNonWhitelistedPlayers($server); } Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_reloaded()); } private static function enableWhitelist(CommandSender $sender) : void{ $server = $sender->getServer(); $server->getConfigGroup()->setConfigBool(ServerProperties::WHITELIST, true); self::kickNonWhitelistedPlayers($server); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_enabled()); } private static function disableWhitelist(CommandSender $sender) : void{ $sender->getServer()->getConfigGroup()->setConfigBool(ServerProperties::WHITELIST, false); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_disabled()); } private static function listWhitelist(CommandSender $sender) : void{ $entries = $sender->getServer()->getWhitelisted()->getAll(true); sort($entries, SORT_STRING); $result = implode(", ", $entries); $count = (string) count($entries); $sender->sendMessage(KnownTranslationFactory::commands_whitelist_list($count, $count)); $sender->sendMessage($result); } private static function addWhitelistedPlayer(CommandSender $sender, string $playerName) : void{ if(!Player::isValidUserName($playerName)){ throw new InvalidCommandSyntaxException(); } $sender->getServer()->addWhitelist($playerName); Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_add_success($playerName)); } private static function removeWhitelistedPlayer(CommandSender $sender, string $playerName) : void{ if(!Player::isValidUserName($playerName)){ throw new InvalidCommandSyntaxException(); } $server = $sender->getServer(); $server->removeWhitelist($playerName); if(!$server->isWhitelisted($playerName)){ $server->getPlayerExact($playerName)?->kick(KnownTranslationFactory::pocketmine_disconnect_kick(KnownTranslationFactory::pocketmine_disconnect_whitelisted())); } Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_remove_success($playerName)); } private static function kickNonWhitelistedPlayers(Server $server) : void{ $message = KnownTranslationFactory::pocketmine_disconnect_kick(KnownTranslationFactory::pocketmine_disconnect_whitelisted()); foreach($server->getOnlinePlayers() as $player){ if(!$server->isWhitelisted($player->getName())){ $player->kick($message); } } } }