mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-04-22 00:33:59 +00:00
Whitelist command now kicks non-whitelisted online players (#4774)
closes #3868
This commit is contained in:
parent
70f923714c
commit
ba05b4f024
@ -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.");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user