diff --git a/resources/locale b/resources/locale index 6023e8b3b..73fb74ffc 160000 --- a/resources/locale +++ b/resources/locale @@ -1 +1 @@ -Subproject commit 6023e8b3bf089eb7c25a5ddc7b29e9ef81520e7e +Subproject commit 73fb74ffce2b633b87fc82039d1fb3c2cf0d5ac7 diff --git a/src/Server.php b/src/Server.php index 7b22fabf3..def42ef92 100644 --- a/src/Server.php +++ b/src/Server.php @@ -1293,13 +1293,7 @@ class Server{ $commandLine = $ev->getCommand(); } - if($this->commandMap->dispatch($sender, $commandLine)){ - return true; - } - - $sender->sendMessage(KnownTranslationFactory::commands_generic_notFound()->prefix(TextFormat::RED)); - - return false; + return $this->commandMap->dispatch($sender, $commandLine); } /** diff --git a/src/command/SimpleCommandMap.php b/src/command/SimpleCommandMap.php index 638e10740..6b8f392e6 100644 --- a/src/command/SimpleCommandMap.php +++ b/src/command/SimpleCommandMap.php @@ -67,6 +67,7 @@ use pocketmine\command\defaults\WhitelistCommand; use pocketmine\command\utils\InvalidCommandSyntaxException; use pocketmine\lang\KnownTranslationFactory; use pocketmine\Server; +use pocketmine\utils\TextFormat; use function array_shift; use function count; use function explode; @@ -210,26 +211,23 @@ class SimpleCommandMap implements CommandMap{ } } } + $sentCommandLabel = array_shift($args); - if($sentCommandLabel === null){ - return false; - } - $target = $this->getCommand($sentCommandLabel); - if($target === null){ - return false; + if($sentCommandLabel !== null && ($target = $this->getCommand($sentCommandLabel)) !== null){ + $target->timings->startTiming(); + + try{ + $target->execute($sender, $sentCommandLabel, $args); + }catch(InvalidCommandSyntaxException $e){ + $sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::commands_generic_usage($target->getUsage()))); + }finally{ + $target->timings->stopTiming(); + } + return true; } - $target->timings->startTiming(); - - try{ - $target->execute($sender, $sentCommandLabel, $args); - }catch(InvalidCommandSyntaxException $e){ - $sender->sendMessage($sender->getLanguage()->translate(KnownTranslationFactory::commands_generic_usage($target->getUsage()))); - }finally{ - $target->timings->stopTiming(); - } - - return true; + $sender->sendMessage(KnownTranslationFactory::pocketmine_command_notFound($sentCommandLabel ?? "", "/help")->prefix(TextFormat::RED)); + return false; } public function clearCommands() : void{ diff --git a/src/lang/KnownTranslationFactory.php b/src/lang/KnownTranslationFactory.php index 62bc5d289..a36417c81 100644 --- a/src/lang/KnownTranslationFactory.php +++ b/src/lang/KnownTranslationFactory.php @@ -1185,6 +1185,13 @@ final class KnownTranslationFactory{ return new Translatable(KnownTranslationKeys::POCKETMINE_COMMAND_ME_DESCRIPTION, []); } + public static function pocketmine_command_notFound(Translatable|string $commandName, Translatable|string $helpCommand) : Translatable{ + return new Translatable(KnownTranslationKeys::POCKETMINE_COMMAND_NOTFOUND, [ + "commandName" => $commandName, + "helpCommand" => $helpCommand, + ]); + } + public static function pocketmine_command_op_description() : Translatable{ return new Translatable(KnownTranslationKeys::POCKETMINE_COMMAND_OP_DESCRIPTION, []); } diff --git a/src/lang/KnownTranslationKeys.php b/src/lang/KnownTranslationKeys.php index 62ead25d9..65a3c9a76 100644 --- a/src/lang/KnownTranslationKeys.php +++ b/src/lang/KnownTranslationKeys.php @@ -260,6 +260,7 @@ final class KnownTranslationKeys{ public const POCKETMINE_COMMAND_KILL_USAGE = "pocketmine.command.kill.usage"; public const POCKETMINE_COMMAND_LIST_DESCRIPTION = "pocketmine.command.list.description"; public const POCKETMINE_COMMAND_ME_DESCRIPTION = "pocketmine.command.me.description"; + public const POCKETMINE_COMMAND_NOTFOUND = "pocketmine.command.notFound"; public const POCKETMINE_COMMAND_OP_DESCRIPTION = "pocketmine.command.op.description"; public const POCKETMINE_COMMAND_PARTICLE_DESCRIPTION = "pocketmine.command.particle.description"; public const POCKETMINE_COMMAND_PARTICLE_USAGE = "pocketmine.command.particle.usage";