Whitelist command now kicks non-whitelisted online players (#4774)

closes #3868
This commit is contained in:
Covered123 2022-03-03 15:15:21 -03:00 committed by GitHub
parent 70f923714c
commit ba05b4f024
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -29,6 +29,7 @@ use pocketmine\command\utils\InvalidCommandSyntaxException;
use pocketmine\lang\KnownTranslationFactory;
use pocketmine\permission\DefaultPermissionNames;
use pocketmine\player\Player;
use pocketmine\Server;
use function count;
use function implode;
use function sort;
@ -62,14 +63,20 @@ class WhitelistCommand extends VanillaCommand{
switch(strtolower($args[0])){
case "reload":
if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_RELOAD)){
$sender->getServer()->getWhitelisted()->reload();
$server = $sender->getServer();
$server->getWhitelisted()->reload();
if($server->hasWhitelist()){
$this->kickNonWhitelistedPlayers($server);
}
Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_reloaded());
}
return true;
case "on":
if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_ENABLE)){
$sender->getServer()->getConfigGroup()->setConfigBool("white-list", true);
$server = $sender->getServer();
$server->getConfigGroup()->setConfigBool("white-list", true);
$this->kickNonWhitelistedPlayers($server);
Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_enabled());
}
@ -116,7 +123,11 @@ class WhitelistCommand extends VanillaCommand{
return true;
case "remove":
if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_REMOVE)){
$sender->getServer()->removeWhitelist($args[1]);
$server = $sender->getServer();
$server->removeWhitelist($args[1]);
if(!$server->isWhitelisted($args[1])){
$server->getPlayerExact($args[1])?->kick("Server whitelisted.");
}
Command::broadcastCommandMessage($sender, KnownTranslationFactory::commands_whitelist_remove_success($args[1]));
}
@ -126,4 +137,12 @@ class WhitelistCommand extends VanillaCommand{
throw new InvalidCommandSyntaxException();
}
private function kickNonWhitelistedPlayers(Server $server) : void{
foreach($server->getOnlinePlayers() as $player){
if(!$server->isWhitelisted($player->getName())){
$player->kick("Server whitelisted.");
}
}
}
}