diff --git a/src/command/defaults/WhitelistCommand.php b/src/command/defaults/WhitelistCommand.php index d6f51185a..8144459b7 100644 --- a/src/command/defaults/WhitelistCommand.php +++ b/src/command/defaults/WhitelistCommand.php @@ -30,7 +30,6 @@ use pocketmine\lang\KnownTranslationKeys; use pocketmine\lang\TranslationContainer; use pocketmine\permission\DefaultPermissionNames; use pocketmine\player\Player; -use pocketmine\utils\AssumptionFailedError; use function count; use function implode; use function sort; @@ -61,33 +60,38 @@ class WhitelistCommand extends VanillaCommand{ } if(count($args) === 1){ - if($this->badPerm($sender, strtolower($args[0]))){ - return false; - } switch(strtolower($args[0])){ case "reload": - $sender->getServer()->getWhitelisted()->reload(); - Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_RELOADED)); + if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_RELOAD)){ + $sender->getServer()->getWhitelisted()->reload(); + Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_RELOADED)); + } return true; case "on": - $sender->getServer()->getConfigGroup()->setConfigBool("white-list", true); - Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_ENABLED)); + if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_ENABLE)){ + $sender->getServer()->getConfigGroup()->setConfigBool("white-list", true); + Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_ENABLED)); + } return true; case "off": - $sender->getServer()->getConfigGroup()->setConfigBool("white-list", false); - Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_DISABLED)); + if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_DISABLE)){ + $sender->getServer()->getConfigGroup()->setConfigBool("white-list", false); + Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_DISABLED)); + } return true; case "list": - $entries = $sender->getServer()->getWhitelisted()->getAll(true); - sort($entries, SORT_STRING); - $result = implode(", ", $entries); - $count = count($entries); + if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_LIST)){ + $entries = $sender->getServer()->getWhitelisted()->getAll(true); + sort($entries, SORT_STRING); + $result = implode(", ", $entries); + $count = count($entries); - $sender->sendMessage(new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_LIST, [$count, $count])); - $sender->sendMessage($result); + $sender->sendMessage(new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_LIST, [$count, $count])); + $sender->sendMessage($result); + } return true; @@ -100,21 +104,22 @@ class WhitelistCommand extends VanillaCommand{ return true; } }elseif(count($args) === 2){ - if($this->badPerm($sender, strtolower($args[0]))){ - return false; - } if(!Player::isValidUserName($args[1])){ throw new InvalidCommandSyntaxException(); } switch(strtolower($args[0])){ case "add": - $sender->getServer()->addWhitelist($args[1]); - Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_ADD_SUCCESS, [$args[1]])); + if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_ADD)){ + $sender->getServer()->addWhitelist($args[1]); + Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_ADD_SUCCESS, [$args[1]])); + } return true; case "remove": - $sender->getServer()->removeWhitelist($args[1]); - Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_REMOVE_SUCCESS, [$args[1]])); + if($this->testPermission($sender, DefaultPermissionNames::COMMAND_WHITELIST_REMOVE)){ + $sender->getServer()->removeWhitelist($args[1]); + Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_WHITELIST_REMOVE_SUCCESS, [$args[1]])); + } return true; } @@ -122,19 +127,4 @@ class WhitelistCommand extends VanillaCommand{ throw new InvalidCommandSyntaxException(); } - - private function badPerm(CommandSender $sender, string $subcommand) : bool{ - $permission = [ - "reload" => DefaultPermissionNames::COMMAND_WHITELIST_RELOAD, - "on" => DefaultPermissionNames::COMMAND_WHITELIST_ENABLE, - "off" => DefaultPermissionNames::COMMAND_WHITELIST_DISABLE, - "list" => DefaultPermissionNames::COMMAND_WHITELIST_LIST, - "add" => DefaultPermissionNames::COMMAND_WHITELIST_ADD, - "remove" => DefaultPermissionNames::COMMAND_WHITELIST_REMOVE - ][$subcommand] ?? null; - if($permission === null){ - throw new AssumptionFailedError("Unknown subcommand $subcommand"); - } - return !$this->testPermission($sender, $permission); - } }