From 7ec75b2721f5281f1a4ebb33a84c1056e7c3eddf Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sat, 17 Aug 2024 13:53:29 +0300 Subject: [PATCH 01/11] Implemented /xp command --- src/command/SimpleCommandMap.php | 2 + src/command/defaults/ExperienceCommand.php | 84 ++++++++++++++++++++++ src/permission/DefaultPermissionNames.php | 2 + src/permission/DefaultPermissions.php | 2 + 4 files changed, 90 insertions(+) create mode 100644 src/command/defaults/ExperienceCommand.php diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 1268e715b7f..6fb0e705727 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -33,6 +33,7 @@ use pocketmine\command\defaults\DumpMemoryCommand; use pocketmine\command\defaults\EffectCommand; use pocketmine\command\defaults\EnchantCommand; +use pocketmine\command\defaults\ExperienceCommand; use pocketmine\command\defaults\GamemodeCommand; use pocketmine\command\defaults\GarbageCollectorCommand; use pocketmine\command\defaults\GiveCommand; @@ -99,6 +100,7 @@ private function setDefaultCommands() : void{ new DumpMemoryCommand(), new EffectCommand(), new EnchantCommand(), + new ExperienceCommand(), new GamemodeCommand(), new GarbageCollectorCommand(), new GiveCommand(), diff --git a/src/command/defaults/ExperienceCommand.php b/src/command/defaults/ExperienceCommand.php new file mode 100644 index 00000000000..ff28dc88ad0 --- /dev/null +++ b/src/command/defaults/ExperienceCommand.php @@ -0,0 +1,84 @@ + [player]" + ); + $this->setPermissions([ + DefaultPermissionNames::COMMAND_EXPERIENCE_SELF, + DefaultPermissionNames::COMMAND_EXPERIENCE_OTHER + ]); + } + + public function execute(CommandSender $sender, string $commandLabel, array $args){ + if(count($args) < 1){ + throw new InvalidCommandSyntaxException(); + } + $player = $this->fetchPermittedPlayerTarget($sender, $args[1] ?? null, DefaultPermissionNames::COMMAND_EXPERIENCE_SELF, DefaultPermissionNames::COMMAND_EXPERIENCE_OTHER); + if($player === null){ + return true; + } + $xpManager = $player->getXpManager(); + if(str_ends_with($args[0], "L")){ + $xpAttr = $player->getAttributeMap()->get(Attribute::EXPERIENCE_LEVEL) ?? throw new AssumptionFailedError(); + $maxXp = (int) $xpAttr->getMaxValue(); + $xp = $this->getInteger($sender, substr($args[0], 0, -1), -$maxXp, $maxXp); + if($xp >= 0){ + $xpManager->setXpLevel(min($xpManager->getXpLevel() + $xp, $maxXp)); + $sender->sendMessage("Gave $xp experience levels to " . $player->getName()); + }else{ + $xp = abs($xp); + $xpManager->setXpLevel(max($xpManager->getXpLevel() - $xp, 0)); + $sender->sendMessage("Taken $xp levels from " . $sender->getName()); + } + return true; + } + $xp = $this->getInteger($sender, $args[0], Limits::INT32_MIN, Limits::INT32_MAX); + if($xp < 0){ + $sender->sendMessage(TextFormat::RED . "Cannot give player negative experience points"); + }else{ + $xpManager->addXp($xp, false); + $sender->sendMessage("Gave $xp experience to " . $player->getName()); + } + return true; + } +} diff --git a/src/permission/DefaultPermissionNames.php b/src/permission/DefaultPermissionNames.php index fab532e2869..a9752098b87 100644 --- a/src/permission/DefaultPermissionNames.php +++ b/src/permission/DefaultPermissionNames.php @@ -38,6 +38,8 @@ final class DefaultPermissionNames{ public const COMMAND_EFFECT_SELF = "pocketmine.command.effect.self"; public const COMMAND_ENCHANT_OTHER = "pocketmine.command.enchant.other"; public const COMMAND_ENCHANT_SELF = "pocketmine.command.enchant.self"; + public const COMMAND_EXPERIENCE_OTHER = "pocketmine.command.experience.other"; + public const COMMAND_EXPERIENCE_SELF = "pocketmine.command.experience.self"; public const COMMAND_GAMEMODE_OTHER = "pocketmine.command.gamemode.other"; public const COMMAND_GAMEMODE_SELF = "pocketmine.command.gamemode.self"; public const COMMAND_GC = "pocketmine.command.gc"; diff --git a/src/permission/DefaultPermissions.php b/src/permission/DefaultPermissions.php index c72765af6bc..5f1cc9194af 100644 --- a/src/permission/DefaultPermissions.php +++ b/src/permission/DefaultPermissions.php @@ -66,6 +66,8 @@ public static function registerCorePermissions() : void{ self::registerPermission(new Permission(Names::COMMAND_EFFECT_SELF, l10n::pocketmine_permission_command_effect_self()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_ENCHANT_OTHER, l10n::pocketmine_permission_command_enchant_other()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_ENCHANT_SELF, l10n::pocketmine_permission_command_enchant_self()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_OTHER, "Allows the user to give experience to other players"), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_SELF, "Allows the user to give himself experience"), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_OTHER, l10n::pocketmine_permission_command_gamemode_other()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_SELF, l10n::pocketmine_permission_command_gamemode_self()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GC, l10n::pocketmine_permission_command_gc()), [$operatorRoot]); From 7a0a6147dbaef75f3a8cef4e5124c0b5d59974aa Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sat, 17 Aug 2024 14:00:22 +0300 Subject: [PATCH 02/11] More correct permission descriptions --- src/permission/DefaultPermissions.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/permission/DefaultPermissions.php b/src/permission/DefaultPermissions.php index 5f1cc9194af..c0a2d9286cc 100644 --- a/src/permission/DefaultPermissions.php +++ b/src/permission/DefaultPermissions.php @@ -66,8 +66,8 @@ public static function registerCorePermissions() : void{ self::registerPermission(new Permission(Names::COMMAND_EFFECT_SELF, l10n::pocketmine_permission_command_effect_self()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_ENCHANT_OTHER, l10n::pocketmine_permission_command_enchant_other()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_ENCHANT_SELF, l10n::pocketmine_permission_command_enchant_self()), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_OTHER, "Allows the user to give experience to other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_SELF, "Allows the user to give himself experience"), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_OTHER, "Allows the user to add or remove experience of other players"), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_SELF, "Allows the user to add or remove their experience"), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_OTHER, l10n::pocketmine_permission_command_gamemode_other()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_SELF, l10n::pocketmine_permission_command_gamemode_self()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GC, l10n::pocketmine_permission_command_gc()), [$operatorRoot]); From 76b661aba6ab9737d58e87d6768f39f57e10d586 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sat, 17 Aug 2024 14:01:36 +0300 Subject: [PATCH 03/11] Fix CS --- src/command/defaults/ExperienceCommand.php | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/command/defaults/ExperienceCommand.php b/src/command/defaults/ExperienceCommand.php index ff28dc88ad0..8b8f97e5f31 100644 --- a/src/command/defaults/ExperienceCommand.php +++ b/src/command/defaults/ExperienceCommand.php @@ -31,7 +31,9 @@ use pocketmine\utils\Limits; use pocketmine\utils\TextFormat; use function abs; +use function count; use function max; +use function min; use function str_ends_with; use function substr; From 6df5453540b6b24452619550bf9299be6ed0980a Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sat, 17 Aug 2024 18:54:53 +0300 Subject: [PATCH 04/11] Rename experience to xp permissions for consistency with translations --- src/command/defaults/ExperienceCommand.php | 6 +++--- src/permission/DefaultPermissionNames.php | 4 ++-- src/permission/DefaultPermissions.php | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/command/defaults/ExperienceCommand.php b/src/command/defaults/ExperienceCommand.php index 8b8f97e5f31..4a883549daf 100644 --- a/src/command/defaults/ExperienceCommand.php +++ b/src/command/defaults/ExperienceCommand.php @@ -46,8 +46,8 @@ public function __construct(){ "/xp [player]" ); $this->setPermissions([ - DefaultPermissionNames::COMMAND_EXPERIENCE_SELF, - DefaultPermissionNames::COMMAND_EXPERIENCE_OTHER + DefaultPermissionNames::COMMAND_XP_SELF, + DefaultPermissionNames::COMMAND_XP_OTHER ]); } @@ -55,7 +55,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args if(count($args) < 1){ throw new InvalidCommandSyntaxException(); } - $player = $this->fetchPermittedPlayerTarget($sender, $args[1] ?? null, DefaultPermissionNames::COMMAND_EXPERIENCE_SELF, DefaultPermissionNames::COMMAND_EXPERIENCE_OTHER); + $player = $this->fetchPermittedPlayerTarget($sender, $args[1] ?? null, DefaultPermissionNames::COMMAND_XP_SELF, DefaultPermissionNames::COMMAND_XP_OTHER); if($player === null){ return true; } diff --git a/src/permission/DefaultPermissionNames.php b/src/permission/DefaultPermissionNames.php index a9752098b87..a916e813c05 100644 --- a/src/permission/DefaultPermissionNames.php +++ b/src/permission/DefaultPermissionNames.php @@ -38,8 +38,6 @@ final class DefaultPermissionNames{ public const COMMAND_EFFECT_SELF = "pocketmine.command.effect.self"; public const COMMAND_ENCHANT_OTHER = "pocketmine.command.enchant.other"; public const COMMAND_ENCHANT_SELF = "pocketmine.command.enchant.self"; - public const COMMAND_EXPERIENCE_OTHER = "pocketmine.command.experience.other"; - public const COMMAND_EXPERIENCE_SELF = "pocketmine.command.experience.self"; public const COMMAND_GAMEMODE_OTHER = "pocketmine.command.gamemode.other"; public const COMMAND_GAMEMODE_SELF = "pocketmine.command.gamemode.self"; public const COMMAND_GC = "pocketmine.command.gc"; @@ -86,6 +84,8 @@ final class DefaultPermissionNames{ public const COMMAND_WHITELIST_LIST = "pocketmine.command.whitelist.list"; public const COMMAND_WHITELIST_RELOAD = "pocketmine.command.whitelist.reload"; public const COMMAND_WHITELIST_REMOVE = "pocketmine.command.whitelist.remove"; + public const COMMAND_XP_OTHER = "pocketmine.command.xp.other"; + public const COMMAND_XP_SELF = "pocketmine.command.xp.self"; public const GROUP_CONSOLE = "pocketmine.group.console"; public const GROUP_OPERATOR = "pocketmine.group.operator"; public const GROUP_USER = "pocketmine.group.user"; diff --git a/src/permission/DefaultPermissions.php b/src/permission/DefaultPermissions.php index c0a2d9286cc..27177d283cf 100644 --- a/src/permission/DefaultPermissions.php +++ b/src/permission/DefaultPermissions.php @@ -66,8 +66,6 @@ public static function registerCorePermissions() : void{ self::registerPermission(new Permission(Names::COMMAND_EFFECT_SELF, l10n::pocketmine_permission_command_effect_self()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_ENCHANT_OTHER, l10n::pocketmine_permission_command_enchant_other()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_ENCHANT_SELF, l10n::pocketmine_permission_command_enchant_self()), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_OTHER, "Allows the user to add or remove experience of other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_EXPERIENCE_SELF, "Allows the user to add or remove their experience"), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_OTHER, l10n::pocketmine_permission_command_gamemode_other()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GAMEMODE_SELF, l10n::pocketmine_permission_command_gamemode_self()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_GC, l10n::pocketmine_permission_command_gc()), [$operatorRoot]); @@ -114,5 +112,7 @@ public static function registerCorePermissions() : void{ self::registerPermission(new Permission(Names::COMMAND_WHITELIST_LIST, l10n::pocketmine_permission_command_whitelist_list()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_WHITELIST_RELOAD, l10n::pocketmine_permission_command_whitelist_reload()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_WHITELIST_REMOVE, l10n::pocketmine_permission_command_whitelist_remove()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_XP_OTHER, "Allows the user to add or remove experience of other players"), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_XP_SELF, "Allows the user to add or remove their experience"), [$operatorRoot]); } } From 3a4aa7c0ee8c1f5e79a3606a9106b0579ce70e81 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sat, 17 Aug 2024 19:05:35 +0300 Subject: [PATCH 05/11] Added optional [L] parameter to usage --- src/command/defaults/ExperienceCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/defaults/ExperienceCommand.php b/src/command/defaults/ExperienceCommand.php index 4a883549daf..6067b21cb7a 100644 --- a/src/command/defaults/ExperienceCommand.php +++ b/src/command/defaults/ExperienceCommand.php @@ -43,7 +43,7 @@ public function __construct(){ parent::__construct( "xp", "Adds or removes player experience", - "/xp [player]" + "/xp [player]" ); $this->setPermissions([ DefaultPermissionNames::COMMAND_XP_SELF, From 0011ede4277dac3792c64deb1375bf817510b981 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Fri, 23 Aug 2024 21:16:12 +0300 Subject: [PATCH 06/11] Changes from review --- src/command/defaults/ExperienceCommand.php | 35 +++++++++++----------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/src/command/defaults/ExperienceCommand.php b/src/command/defaults/ExperienceCommand.php index 6067b21cb7a..81721c95caa 100644 --- a/src/command/defaults/ExperienceCommand.php +++ b/src/command/defaults/ExperienceCommand.php @@ -32,8 +32,6 @@ use pocketmine\utils\TextFormat; use function abs; use function count; -use function max; -use function min; use function str_ends_with; use function substr; @@ -61,25 +59,26 @@ public function execute(CommandSender $sender, string $commandLabel, array $args } $xpManager = $player->getXpManager(); if(str_ends_with($args[0], "L")){ - $xpAttr = $player->getAttributeMap()->get(Attribute::EXPERIENCE_LEVEL) ?? throw new AssumptionFailedError(); - $maxXp = (int) $xpAttr->getMaxValue(); - $xp = $this->getInteger($sender, substr($args[0], 0, -1), -$maxXp, $maxXp); - if($xp >= 0){ - $xpManager->setXpLevel(min($xpManager->getXpLevel() + $xp, $maxXp)); - $sender->sendMessage("Gave $xp experience levels to " . $player->getName()); + $xpLevelAttr = $player->getAttributeMap()->get(Attribute::EXPERIENCE_LEVEL) ?? throw new AssumptionFailedError(); + $maxXpLevel = (int) $xpLevelAttr->getMaxValue(); + $currentXpLevel = $xpManager->getXpLevel(); + $xpLevels = $this->getInteger($sender, substr($args[0], 0, -1), -$currentXpLevel, $maxXpLevel - $currentXpLevel); + if($xpLevels >= 0){ + $xpManager->addXpLevels($xpLevels, false); + $sender->sendMessage("Gave $xpLevels experience levels to " . $player->getName()); }else{ - $xp = abs($xp); - $xpManager->setXpLevel(max($xpManager->getXpLevel() - $xp, 0)); - $sender->sendMessage("Taken $xp levels from " . $sender->getName()); + $xpLevels = abs($xpLevels); + $xpManager->subtractXpLevels($xpLevels); + $sender->sendMessage("Taken $xpLevels levels from " . $sender->getName()); } - return true; - } - $xp = $this->getInteger($sender, $args[0], Limits::INT32_MIN, Limits::INT32_MAX); - if($xp < 0){ - $sender->sendMessage(TextFormat::RED . "Cannot give player negative experience points"); }else{ - $xpManager->addXp($xp, false); - $sender->sendMessage("Gave $xp experience to " . $player->getName()); + $xp = $this->getInteger($sender, $args[0], Limits::INT32_MIN, Limits::INT32_MAX); + if($xp < 0){ + $sender->sendMessage(TextFormat::RED . "Cannot give player negative experience points"); + }else{ + $xpManager->addXp($xp, false); + $sender->sendMessage("Gave $xp experience to " . $player->getName()); + } } return true; } From 45741c76b4f61cf8998bc2bd5c87907449be3e1f Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Fri, 23 Aug 2024 21:19:08 +0300 Subject: [PATCH 07/11] Remove min parameter in xp points since it's not used --- src/command/defaults/ExperienceCommand.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/defaults/ExperienceCommand.php b/src/command/defaults/ExperienceCommand.php index 81721c95caa..e22a29161b5 100644 --- a/src/command/defaults/ExperienceCommand.php +++ b/src/command/defaults/ExperienceCommand.php @@ -72,7 +72,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args $sender->sendMessage("Taken $xpLevels levels from " . $sender->getName()); } }else{ - $xp = $this->getInteger($sender, $args[0], Limits::INT32_MIN, Limits::INT32_MAX); + $xp = $this->getInteger($sender, $args[0], max: Limits::INT32_MAX); if($xp < 0){ $sender->sendMessage(TextFormat::RED . "Cannot give player negative experience points"); }else{ From ab56a096ca977bb951a52bde9e63d4b11beb7726 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sun, 10 Nov 2024 21:14:00 +0300 Subject: [PATCH 08/11] Rename ExperienceCommand to XpCommand --- src/command/SimpleCommandMap.php | 6 +++--- .../defaults/{ExperienceCommand.php => XpCommand.php} | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) rename src/command/defaults/{ExperienceCommand.php => XpCommand.php} (98%) diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 6fb0e705727..4c9d117be6c 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -33,7 +33,7 @@ use pocketmine\command\defaults\DumpMemoryCommand; use pocketmine\command\defaults\EffectCommand; use pocketmine\command\defaults\EnchantCommand; -use pocketmine\command\defaults\ExperienceCommand; +use pocketmine\command\defaults\XpCommand; use pocketmine\command\defaults\GamemodeCommand; use pocketmine\command\defaults\GarbageCollectorCommand; use pocketmine\command\defaults\GiveCommand; @@ -100,7 +100,6 @@ private function setDefaultCommands() : void{ new DumpMemoryCommand(), new EffectCommand(), new EnchantCommand(), - new ExperienceCommand(), new GamemodeCommand(), new GarbageCollectorCommand(), new GiveCommand(), @@ -130,7 +129,8 @@ private function setDefaultCommands() : void{ new TitleCommand(), new TransferServerCommand(), new VersionCommand(), - new WhitelistCommand() + new WhitelistCommand(), + new XpCommand(), ]); } diff --git a/src/command/defaults/ExperienceCommand.php b/src/command/defaults/XpCommand.php similarity index 98% rename from src/command/defaults/ExperienceCommand.php rename to src/command/defaults/XpCommand.php index e22a29161b5..97f8bf77907 100644 --- a/src/command/defaults/ExperienceCommand.php +++ b/src/command/defaults/XpCommand.php @@ -35,7 +35,7 @@ use function str_ends_with; use function substr; -class ExperienceCommand extends VanillaCommand{ +class XpCommand extends VanillaCommand{ public function __construct(){ parent::__construct( From a2a49f245ef7e7e4d11c606ac6d20aacec526e88 Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Sun, 10 Nov 2024 21:16:19 +0300 Subject: [PATCH 09/11] Fix CS --- src/command/SimpleCommandMap.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 4c9d117be6c..a6a7e303bbf 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -33,7 +33,6 @@ use pocketmine\command\defaults\DumpMemoryCommand; use pocketmine\command\defaults\EffectCommand; use pocketmine\command\defaults\EnchantCommand; -use pocketmine\command\defaults\XpCommand; use pocketmine\command\defaults\GamemodeCommand; use pocketmine\command\defaults\GarbageCollectorCommand; use pocketmine\command\defaults\GiveCommand; @@ -65,6 +64,7 @@ use pocketmine\command\defaults\VanillaCommand; use pocketmine\command\defaults\VersionCommand; use pocketmine\command\defaults\WhitelistCommand; +use pocketmine\command\defaults\XpCommand; use pocketmine\command\utils\CommandStringHelper; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; From b6331d30b2f1a3f247ee36eb5cb05655db5d073e Mon Sep 17 00:00:00 2001 From: ipad54 <63200545+ipad54@users.noreply.github.com> Date: Fri, 15 Nov 2024 13:48:39 +0300 Subject: [PATCH 10/11] Added translations --- src/command/defaults/XpCommand.php | 13 +++++++------ src/permission/DefaultPermissions.php | 4 ++-- 2 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/command/defaults/XpCommand.php b/src/command/defaults/XpCommand.php index 97f8bf77907..a76406fa416 100644 --- a/src/command/defaults/XpCommand.php +++ b/src/command/defaults/XpCommand.php @@ -26,6 +26,7 @@ use pocketmine\command\CommandSender; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\entity\Attribute; +use pocketmine\lang\KnownTranslationFactory; use pocketmine\permission\DefaultPermissionNames; use pocketmine\utils\AssumptionFailedError; use pocketmine\utils\Limits; @@ -40,8 +41,8 @@ class XpCommand extends VanillaCommand{ public function __construct(){ parent::__construct( "xp", - "Adds or removes player experience", - "/xp [player]" + KnownTranslationFactory::pocketmine_command_xp_description(), + KnownTranslationFactory::pocketmine_command_xp_usage() ); $this->setPermissions([ DefaultPermissionNames::COMMAND_XP_SELF, @@ -65,19 +66,19 @@ public function execute(CommandSender $sender, string $commandLabel, array $args $xpLevels = $this->getInteger($sender, substr($args[0], 0, -1), -$currentXpLevel, $maxXpLevel - $currentXpLevel); if($xpLevels >= 0){ $xpManager->addXpLevels($xpLevels, false); - $sender->sendMessage("Gave $xpLevels experience levels to " . $player->getName()); + $sender->sendMessage(KnownTranslationFactory::commands_xp_success_levels((string) $xpLevels, $player->getName())); }else{ $xpLevels = abs($xpLevels); $xpManager->subtractXpLevels($xpLevels); - $sender->sendMessage("Taken $xpLevels levels from " . $sender->getName()); + $sender->sendMessage(KnownTranslationFactory::commands_xp_success_negative_levels((string) $xpLevels, $player->getName())); } }else{ $xp = $this->getInteger($sender, $args[0], max: Limits::INT32_MAX); if($xp < 0){ - $sender->sendMessage(TextFormat::RED . "Cannot give player negative experience points"); + $sender->sendMessage(KnownTranslationFactory::commands_xp_failure_widthdrawXp()->prefix(TextFormat::RED)); }else{ $xpManager->addXp($xp, false); - $sender->sendMessage("Gave $xp experience to " . $player->getName()); + $sender->sendMessage(KnownTranslationFactory::commands_xp_success((string) $xp, $player->getName())); } } return true; diff --git a/src/permission/DefaultPermissions.php b/src/permission/DefaultPermissions.php index 27177d283cf..1030e9ff8cc 100644 --- a/src/permission/DefaultPermissions.php +++ b/src/permission/DefaultPermissions.php @@ -112,7 +112,7 @@ public static function registerCorePermissions() : void{ self::registerPermission(new Permission(Names::COMMAND_WHITELIST_LIST, l10n::pocketmine_permission_command_whitelist_list()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_WHITELIST_RELOAD, l10n::pocketmine_permission_command_whitelist_reload()), [$operatorRoot]); self::registerPermission(new Permission(Names::COMMAND_WHITELIST_REMOVE, l10n::pocketmine_permission_command_whitelist_remove()), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_XP_OTHER, "Allows the user to add or remove experience of other players"), [$operatorRoot]); - self::registerPermission(new Permission(Names::COMMAND_XP_SELF, "Allows the user to add or remove their experience"), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_XP_OTHER, l10n::pocketmine_permission_command_xp_other()), [$operatorRoot]); + self::registerPermission(new Permission(Names::COMMAND_XP_SELF, l10n::pocketmine_permission_command_xp_self()), [$operatorRoot]); } } From 5e9700ab4532af81783be7133dae045d211a26fa Mon Sep 17 00:00:00 2001 From: "Dylan T." Date: Fri, 15 Nov 2024 15:54:24 +0000 Subject: [PATCH 11/11] formatting --- src/command/defaults/XpCommand.php | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/command/defaults/XpCommand.php b/src/command/defaults/XpCommand.php index a76406fa416..cb035236574 100644 --- a/src/command/defaults/XpCommand.php +++ b/src/command/defaults/XpCommand.php @@ -54,10 +54,12 @@ public function execute(CommandSender $sender, string $commandLabel, array $args if(count($args) < 1){ throw new InvalidCommandSyntaxException(); } + $player = $this->fetchPermittedPlayerTarget($sender, $args[1] ?? null, DefaultPermissionNames::COMMAND_XP_SELF, DefaultPermissionNames::COMMAND_XP_OTHER); if($player === null){ return true; } + $xpManager = $player->getXpManager(); if(str_ends_with($args[0], "L")){ $xpLevelAttr = $player->getAttributeMap()->get(Attribute::EXPERIENCE_LEVEL) ?? throw new AssumptionFailedError(); @@ -81,6 +83,7 @@ public function execute(CommandSender $sender, string $commandLabel, array $args $sender->sendMessage(KnownTranslationFactory::commands_xp_success((string) $xp, $player->getName())); } } + return true; } }