efe3a22a06115a4405b2abc63d9a2d7240d9124d
Publish UPM package / publish (push) Failing after 1s
ShrinkCommand
独立于 ShrinkNetwork 的命令系统,目标是提供类似 Minecraft/Brigadier 风格的命令路径、权限、帮助输出和属性式自动注册。
当前版本已把静态命令发现切到编译期注册表:运行时默认服务不再通过 AppDomain.GetAssemblies() + GetTypes() 全域扫描静态命令类型,而是直接消费编译期注入的清单。实例命令注册路径保持不变,仍适合模组实例和运行时对象。
特性
- 路径式命令定义:
whitelist add <player>、say <message...> - 支持字面量段和贪婪参数段
- 内建
help/? - 支持命令来源限制:控制台专用 / 非控制台专用 / 任意来源
- 支持权限校验
- 支持属性式自动注册,也支持手工注册
- 可在 Unity 和纯 .NET 宿主中复用
快速开始
using ShrinkCommand;
[ShrinkCommandSubscriber]
public static class DemoCommands
{
[ShrinkCommand("say <message...>", Description = "广播一段文本")]
private static string Say(string message)
{
return "[say] " + message;
}
}
var service = new ShrinkCommandService();
service.AutoRegisterAll();
手工执行:
var result = await service.ExecuteAsync(source, "say hello world");
方法签名
支持的参数:
ShrinkCommandContextIShrinkCommandSource或其派生类型- 路径中声明的普通参数,按顺序绑定到方法参数
支持的返回类型:
voidstringShrinkCommandExecutionResultUniTaskUniTask<string>UniTask<ShrinkCommandExecutionResult>TaskTask<string>Task<ShrinkCommandExecutionResult>
内建命令
helphelp <path...>?? <path...>
自动注册说明
静态命令
默认运行时会直接读取编译期生成的 ShrinkCommandGeneratedRegistry,注册所有静态 [ShrinkCommandSubscriber] + [ShrinkCommand]。
实例命令
service.RegisterCommands(myCommandInstance);
实例注册仍然会扫描对象本身的方法签名,不依赖编译期清单,适合:
- 运行时创建的对象
- 模组实例
- 需要带状态的命令宿主
Languages
C#
100%