57 if(count($args) === 0){
61 $commandMap = $sender->getServer()->getCommandMap();
62 if($parsedArgs[0] ===
"global"){
63 $editPermission = self::GLOBAL_PERM;
64 $permissionCtx = $commandLabel .
" global";
65 array_shift($parsedArgs);
66 $aliasMap = $commandMap->getAliasMap();
67 $messageScope = fn(
Translatable $t) => KnownTranslationFactory::pocketmine_command_cmdalias_template($t, KnownTranslationFactory::pocketmine_command_cmdalias_scope_global());
70 $editPermission = self::SELF_PERM;
71 $permissionCtx = $commandLabel;
73 $messageScope = fn(
Translatable $t) => KnownTranslationFactory::pocketmine_command_cmdalias_template($t, KnownTranslationFactory::pocketmine_command_cmdalias_scope_userSpecific());
76 $operation = array_shift($parsedArgs);
78 if($operation ===
"create"){
79 if(count($parsedArgs) !== 2){
82 if(!$this->
testPermission($permissionCtx, $sender, $editPermission)){
86 [$alias, $target] = $parsedArgs;
88 if($command ===
null){
89 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_notFound(
91 "/" . $sender->
getCommandAliasMap()->getPreferredAlias(
"pocketmine:help", $sender->getServer()->getCommandMap()->getAliasMap())
92 )->prefix(TextFormat::RED));
95 if(is_array($command)){
96 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_error_aliasConflict(
"/$target", implode(
", ", array_map(fn(
Command $c) =>
"/" . $c->
getId(), $command)))->prefix(TextFormat::RED));
99 $aliasMap->bindAlias($command->getId(), $alias,
override:
true);
100 $message = $messageScope(KnownTranslationFactory::pocketmine_command_cmdalias_create_success(
"/$alias",
"/" . $command->getId()));
102 Command::broadcastCommandMessage($sender, $message);
104 $sender->sendMessage($message);
108 if($operation ===
"delete"){
109 if(count($parsedArgs) !== 1){
112 if(!$this->
testPermission($permissionCtx, $sender, $editPermission)){
116 $alias = $parsedArgs[0];
118 if($aliasMap->unbindAlias($alias)){
119 $message = $messageScope(KnownTranslationFactory::pocketmine_command_cmdalias_delete_success(
"/$alias"));
121 Command::broadcastCommandMessage($sender, $message);
123 $sender->sendMessage($message);
126 $sender->sendMessage($messageScope(KnownTranslationFactory::pocketmine_command_cmdalias_delete_notFound(
"/$alias"))->prefix(TextFormat::RED));
130 if($operation ===
"list"){
131 if(count($parsedArgs) !== 0){
134 if(!$this->
testPermission($permissionCtx, $sender, self::LIST_PERM)){
137 $allAliases = $aliasMap->getAllAliases();
138 if(count($allAliases) === 0){
139 $sender->sendMessage($messageScope(KnownTranslationFactory::pocketmine_command_cmdalias_list_noneSet())->prefix(TextFormat::RED));
143 foreach(Utils::promoteKeys($allAliases) as $alias => $commandIds){
144 if(is_array($commandIds)){
145 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_cmdalias_list_conflicted(
146 TextFormat::RED .
"/$alias" . TextFormat::RESET,
147 implode(
", ", array_map(fn(
string $c) => TextFormat::RED .
"/$c" . TextFormat::RESET, $commandIds))
150 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_cmdalias_list_normal(
151 TextFormat::DARK_GREEN .
"/$alias" . TextFormat::RESET,
152 TextFormat::DARK_GREEN .
"/$commandIds" . TextFormat::RESET