mirror of
https://github.com/pmmp/PocketMine-MP.git
synced 2025-07-24 20:04:28 +00:00
Command: standardise permission checking
if subcommands had different permissions, the permissionMessage would not be used.
This commit is contained in:
parent
efb677d5d5
commit
71c6f69fd3
@ -111,27 +111,28 @@ abstract class Command{
|
|||||||
$this->permission = $permission;
|
$this->permission = $permission;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPermission(CommandSender $target) : bool{
|
public function testPermission(CommandSender $target, ?string $permission = null) : bool{
|
||||||
if($this->testPermissionSilent($target)){
|
if($this->testPermissionSilent($target, $permission)){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if($this->permissionMessage === null){
|
if($this->permissionMessage === null){
|
||||||
$target->sendMessage($target->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
$target->sendMessage($target->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
||||||
}elseif($this->permissionMessage !== ""){
|
}elseif($this->permissionMessage !== ""){
|
||||||
$target->sendMessage(str_replace("<permission>", $this->permission, $this->permissionMessage));
|
$target->sendMessage(str_replace("<permission>", $permission ?? $this->permission, $this->permissionMessage));
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public function testPermissionSilent(CommandSender $target) : bool{
|
public function testPermissionSilent(CommandSender $target, ?string $permission = null) : bool{
|
||||||
if($this->permission === null or $this->permission === ""){
|
$permission ??= $this->permission;
|
||||||
|
if($permission === null or $permission === ""){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach(explode(";", $this->permission) as $permission){
|
foreach(explode(";", $permission) as $p){
|
||||||
if($target->hasPermission($permission)){
|
if($target->hasPermission($p)){
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -64,13 +64,11 @@ class ClearCommand extends VanillaCommand{
|
|||||||
$sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND));
|
$sender->sendMessage(new TranslationContainer(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PLAYER_NOTFOUND));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if($target !== $sender && !$sender->hasPermission(DefaultPermissionNames::COMMAND_CLEAR_OTHER)){
|
if($target !== $sender && !$this->testPermission($sender, DefaultPermissionNames::COMMAND_CLEAR_OTHER)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}elseif($sender instanceof Player){
|
}elseif($sender instanceof Player){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_CLEAR_SELF)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_CLEAR_SELF)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -57,9 +57,7 @@ class KillCommand extends VanillaCommand{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if(count($args) === 1){
|
if(count($args) === 1){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_KILL_OTHER)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_KILL_OTHER)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,9 +74,7 @@ class KillCommand extends VanillaCommand{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($sender instanceof Player){
|
if($sender instanceof Player){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_KILL_SELF)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_KILL_SELF)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -30,7 +30,6 @@ use pocketmine\lang\KnownTranslationKeys;
|
|||||||
use pocketmine\lang\TranslationContainer;
|
use pocketmine\lang\TranslationContainer;
|
||||||
use pocketmine\permission\DefaultPermissionNames;
|
use pocketmine\permission\DefaultPermissionNames;
|
||||||
use pocketmine\player\Player;
|
use pocketmine\player\Player;
|
||||||
use pocketmine\utils\TextFormat;
|
|
||||||
use pocketmine\world\World;
|
use pocketmine\world\World;
|
||||||
use function count;
|
use function count;
|
||||||
use function implode;
|
use function implode;
|
||||||
@ -61,9 +60,7 @@ class TimeCommand extends VanillaCommand{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($args[0] === "start"){
|
if($args[0] === "start"){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_TIME_START)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_TIME_START)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
foreach($sender->getServer()->getWorldManager()->getWorlds() as $world){
|
foreach($sender->getServer()->getWorldManager()->getWorlds() as $world){
|
||||||
@ -72,9 +69,7 @@ class TimeCommand extends VanillaCommand{
|
|||||||
Command::broadcastCommandMessage($sender, "Restarted the time");
|
Command::broadcastCommandMessage($sender, "Restarted the time");
|
||||||
return true;
|
return true;
|
||||||
}elseif($args[0] === "stop"){
|
}elseif($args[0] === "stop"){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_TIME_STOP)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_TIME_STOP)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
foreach($sender->getServer()->getWorldManager()->getWorlds() as $world){
|
foreach($sender->getServer()->getWorldManager()->getWorlds() as $world){
|
||||||
@ -83,9 +78,7 @@ class TimeCommand extends VanillaCommand{
|
|||||||
Command::broadcastCommandMessage($sender, "Stopped the time");
|
Command::broadcastCommandMessage($sender, "Stopped the time");
|
||||||
return true;
|
return true;
|
||||||
}elseif($args[0] === "query"){
|
}elseif($args[0] === "query"){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_TIME_QUERY)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_TIME_QUERY)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
if($sender instanceof Player){
|
if($sender instanceof Player){
|
||||||
@ -102,9 +95,7 @@ class TimeCommand extends VanillaCommand{
|
|||||||
}
|
}
|
||||||
|
|
||||||
if($args[0] === "set"){
|
if($args[0] === "set"){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_TIME_SET)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_TIME_SET)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -137,9 +128,7 @@ class TimeCommand extends VanillaCommand{
|
|||||||
}
|
}
|
||||||
Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_TIME_SET, [$value]));
|
Command::broadcastCommandMessage($sender, new TranslationContainer(KnownTranslationKeys::COMMANDS_TIME_SET, [$value]));
|
||||||
}elseif($args[0] === "add"){
|
}elseif($args[0] === "add"){
|
||||||
if(!$sender->hasPermission(DefaultPermissionNames::COMMAND_TIME_ADD)){
|
if(!$this->testPermission($sender, DefaultPermissionNames::COMMAND_TIME_ADD)){
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -31,7 +31,6 @@ use pocketmine\lang\TranslationContainer;
|
|||||||
use pocketmine\permission\DefaultPermissionNames;
|
use pocketmine\permission\DefaultPermissionNames;
|
||||||
use pocketmine\player\Player;
|
use pocketmine\player\Player;
|
||||||
use pocketmine\utils\AssumptionFailedError;
|
use pocketmine\utils\AssumptionFailedError;
|
||||||
use pocketmine\utils\TextFormat;
|
|
||||||
use function count;
|
use function count;
|
||||||
use function implode;
|
use function implode;
|
||||||
use function sort;
|
use function sort;
|
||||||
@ -136,12 +135,6 @@ class WhitelistCommand extends VanillaCommand{
|
|||||||
if($permission === null){
|
if($permission === null){
|
||||||
throw new AssumptionFailedError("Unknown subcommand $subcommand");
|
throw new AssumptionFailedError("Unknown subcommand $subcommand");
|
||||||
}
|
}
|
||||||
if(!$sender->hasPermission($permission)){
|
return !$this->testPermission($sender, $permission);
|
||||||
$sender->sendMessage($sender->getLanguage()->translateString(TextFormat::RED . "%" . KnownTranslationKeys::COMMANDS_GENERIC_PERMISSION));
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user