hadesnetwork / commando
PocketMine-MP 的命令框架病毒
Requires
This package is auto-updated.
Last update: 2024-09-23 02:49:31 UTC
README
A PocketMine-MP 病毒,用于更简单地实现动态命令,包括支持面向最终用户和插件开发者的 Minecraft: Bedrock 版本参数列表。
使用方法
安装简单,您可以从这里获取编译后的 phar这里,将病毒本身集成到您的插件中,或者您也可以通过运行以下命令将其用作 composer 库
composer require cortexpe/commando
这个病毒完全面向对象。因此,为了使用它,您必须扩展 BaseCommand
对象,导入 PacketHooker
对象以及用于子命令和参数的可选对象(在必要时)。
对于 PocketMine-MP API 4,您需要将 Muqsit/SimplePacketHandler 包含在您的依赖项中。
为什么这是必要的?
病毒提供了一种简单的方法来验证用户输入,转换用户输入,并确保我们的参数是我们期望的类型。
此外,它还提供了客户端参数列表,使其更容易使用命令,无需记住参数的顺序。
因为不仅 MC: Bedrock 可以使用命令,我还实现了命令使用预生成,以便更容易与控制台一起使用。
这还提供了一个易于使用的 API,可以减少样板代码,同时添加更多功能并提高详尽性(错误代码、错误列表和发送使用消息)。
其结构与旧代码库的 PocketMine 命令类似,以便于迁移。
在撰写此说明文件时,此病毒将在 Hierarchy 上用于命令实现清理
基本使用方法
注意:其他杂项函数可以由您的 IDE 或通过阅读源代码进行索引。这仅是病毒的基本使用方法,并不展示其所有方面,因为这会太长而难以文档化。
创建您的命令类
在我们的命令类中,我们需要扩展 BaseCommand
并实现其必需的方法以使用 Commando 的所有功能。
<?php use CortexPE\Commando\BaseCommand; use pocketmine\command\CommandSender; class MyCommand extends BaseCommand { protected function prepare(): void { // This is where we'll register our arguments and subcommands } public function onRun(CommandSender $sender, string $aliasUsed, array $args): void { // This is where the processing will occur if it's NOT handled by other subcommands } }
注册参数
如果我们注册参数,我们需要导入和使用(如果需要)提供的参数对象。
use CortexPE\Commando\args\RawStringArgument; protected function prepare(): void { // $this->registerArgument(position, argument object (name, isOptional)); $this->registerArgument(0, new RawStringArgument("name", true)); }
处理我们的参数
传递给我们的 onRun
方法的参数将被映射为 name => value
,这使得理解哪个参数是哪个变得容易,而不是使用数字索引。它还保证传递的参数将是我们设置的声明类型。
public function onRun(CommandSender $sender, string $aliasUsed, array $args): void { if(isset($args["name"])){ $sender->sendMessage("Hello, " . $args["name"] . "!"); } else { $this->sendUsage(); } }
注册 PacketHooker
以处理纯命令参数
PacketHooker
监听器是必需的,以便我们能够向服务器发送的 AvailableCommandsPacket
注入数据。
use CortexPE\Commando\PacketHooker; // onEnable: if(!PacketHooker::isRegistered()) { PacketHooker::register($this); }
从插件注册命令
一旦我们用参数和子命令构建了我们的命令,现在我们可以将我们的命令注册到 PocketMine 的命令映射中,以便向我们的用户开放。
// onEnable: $this->getServer()->getCommandMap()->register("myplugin", new MyCommand($this, "greet", "Make the server greet you!"));
使用此框架的唯一区别是,您不需要设置使用消息,因为所有参数注册完成后都会预生成。
子命令
子命令与常规命令的工作方式相同,唯一的区别是它们通过 BaseCommand->registerSubCommand()
在父命令中注册,有自己的参数集和自己的使用消息。
错误消息
病毒体为用户提供默认的错误消息,以处理关于传入参数的用户输入错误。它还提供了一种方式来注册您自己的错误消息格式,以实现定制化。
$cmdCtx->setErrorFormat($errorCode, $format); // Arrays can be passed on `BaseCommand->setErrorFormats()` to bulk-set other error messages
错误消息批量发送给用户,让他们知道输入中哪些部分是错误的,无需反复试验。 当前的限制是,您无法与其他错误代码一起注册您自己的错误消息。
这个框架是由CortexPE用❤️制作的,享受吧!~ :3