hadesnetwork/commando

PocketMine-MP 的命令框架病毒

dev-pm5 2024-02-23 01:26 UTC

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