64 if(count($args) === 0){
67 }elseif(is_numeric($args[count($args) - 1])){
68 $pageNumber = (int) array_pop($args);
72 $commandName = implode(
" ", $args);
74 $commandName = implode(
" ", $args);
81 $commandMap = $sender->getServer()->getCommandMap();
83 if($commandName ===
""){
85 foreach($commandMap->getUniqueCommands() as $command){
86 if($command->testPermissionSilent($sender)){
87 $userAliases = $userAliasMap->getMergedAliases($command->getId(), $commandMap->getAliasMap());
88 $preferredAlias = $userAliases[array_key_first($userAliases)];
89 if(isset($commands[$preferredAlias])){
92 $commands[$preferredAlias] = $command;
95 ksort($commands, SORT_NATURAL | SORT_FLAG_CASE);
96 $commands = array_chunk($commands, $pageHeight, preserve_keys:
true);
97 $pageNumber = min(count($commands), $pageNumber);
101 $sender->sendMessage(KnownTranslationFactory::commands_help_header((
string) $pageNumber, (
string) count($commands)));
102 $lang = $sender->getLanguage();
103 if(isset($commands[$pageNumber - 1])){
104 foreach(Utils::promoteKeys($commands[$pageNumber - 1]) as $preferredAlias => $command){
105 $description = $command->getDescription();
106 $descriptionString = $description instanceof
Translatable ? $lang->translate($description) : $description;
107 $sender->sendMessage(TextFormat::DARK_GREEN .
"/$preferredAlias: " . TextFormat::RESET . $descriptionString);
113 if(($command = $commandMap->getCommand(strtolower($commandName), $userAliasMap)) !==
null){
114 if(is_array($command)){
118 if($command->testPermissionSilent($sender)){
119 $lang = $sender->getLanguage();
120 $description = $command->getDescription();
121 $descriptionString = $description instanceof
Translatable ? $lang->translate($description) : $description;
122 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_help_specificCommand_header($commandName)
123 ->format(TextFormat::YELLOW .
"--------- " . TextFormat::RESET, TextFormat::YELLOW .
" ---------"));
124 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_help_specificCommand_description(TextFormat::RESET . $descriptionString)
125 ->prefix(TextFormat::GOLD));
127 $usage = $command->getUsage() ??
"/$commandName";
128 $usageString = $usage instanceof
Translatable ? $lang->translate($usage) : $usage;
129 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_help_specificCommand_usage(TextFormat::RESET . implode(
"\n" . TextFormat::RESET, explode(
"\n", $usageString, limit: PHP_INT_MAX)))
130 ->prefix(TextFormat::GOLD));
132 $aliases = $userAliasMap->getMergedAliases($command->getId(), $commandMap->getAliasMap());
133 sort($aliases, SORT_NATURAL);
134 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_help_specificCommand_aliases(TextFormat::RESET . implode(
", ", $aliases))
135 ->prefix(TextFormat::GOLD));
140 $sender->sendMessage(KnownTranslationFactory::pocketmine_command_notFound($commandName,
"/" . $userAliasMap->getPreferredAlias(
"pocketmine:help", $commandMap->getAliasMap()))->prefix(TextFormat::RED));