命令
基本信息
| 属性 | 值 |
|---|---|
| 命令数 | 10 |
| 命令前缀 | salisarcana-(由 CommandSettings.getFullName() 拼出,CommandSettings.java:60-62) |
| 注册入口 | CommonProxy.serverStarting(),CommonProxy.java:147-158 |
| 注册机制 | maybeRegister(event, settings, XCommand::new) → event.registerServerCommand(...) |
| 基类 | common/commands/ArcanaCommandBase.java(153 行,泛型 ArcanaCommandBase<T>) |
| 设置来源 | 命令组 的 10 项 CommandSettings |
| 根命令 | 全部为顶级命令,无子命令 |
功能
10 条命令全部由 FMLServerStartingEvent 注册,属于服务端命令。
注册通过方法引用 XxxCommand::new 传给 maybeRegister(...)
(CommonProxy.java:148-157),而不是 new XxxCommand(...) 的直接构造——
因此用 grep 'new CreateNodeCommand(' 检索会一无所获,必须检索 CreateNodeCommand::new。
maybeRegister 的实现是:
private void maybeRegister(FMLServerStartingEvent event, CommandSettings settings,
Supplier<ArcanaCommandBase<?>> init) {
if (settings.isEnabled()) {
event.registerServerCommand(init.get());
}
}
——CommonProxy.java:160-165。开关关闭时该命令根本不会出现在
/help 列表中,也无法被执行。
命令列表
| 命令 | 别名 | 权限等级 | 说明 | 源码 |
|---|---|---|---|---|
/salisarcana-create-node |
create-node |
2 | 在指定坐标创建一个节点,可附带亮度、类型与要素 | ConfigCommands.java:21-24 |
/salisarcana-forget-research |
forget-research |
2 | 从玩家知识中移除一条或多条研究 | ConfigCommands.java:26-29 |
/salisarcana-forget-scanned |
forget-scanned |
2 | 从玩家的扫描记录中移除条目 | ConfigCommands.java:31-34 |
/salisarcana-forget-aspect |
forget-aspect |
2 | 遗忘玩家掌握的一条或多条要素 | ConfigCommands.java:36-39 |
/salisarcana-help |
arcana-help |
0 | 获取 Salis Arcana 各命令的帮助 | ConfigCommands.java:41-43 |
/salisarcana-infusion-symmetry |
infusion-symmetry |
0 | 查询 8 格内最近符文矩阵(或指定坐标)的对称度 | ConfigCommands.java:45-49 |
/salisarcana-list-research |
list-research |
0 | 列出并筛选 TC4 的研究 | ConfigCommands.java:51-58 |
/salisarcana-prereqs |
prereqs |
0 | 列出某项研究的前置研究,或某物品所需的研究 | ConfigCommands.java:60-63 |
/salisarcana-update-node |
update-node |
2 | 修改指定坐标处节点的属性 | ConfigCommands.java:65-67 |
/salisarcana-upgrade-focus |
upgrade-focus |
2 | 升级焦点(源码未设置描述文本) | ConfigCommands.java:69-70 |
权限等级取自 Vanilla Minecraft 的 op 等级约定(0–4)。
upgradeFocus 是唯一没有调用 .setDescription(...) 的命令,
因此其配置分类注释会缺少描述后缀。
数值
权限等级
CommandSettings 有两层权限:命令自身的 permissionLevel(默认 4,
可在 0–4 之间配置,CommandSettings.java:96-102),以及可选的
子权限(addChildPermissionLevel)。
全仓只有一条命令声明了子权限:
| 命令 | 子配置键 | 默认等级 | 含义 |
|---|---|---|---|
/salisarcana-list-research |
listOthersReserach |
2 | 查看他人研究所需的等级 |
listOthersReserach是源码中的字面拼写(少一个e,正确拼法应为Research), 来自ListResearchCommand.listOthersReserach常量,被ConfigCommands.java:56引用。 这是真实的配置键名,不可「纠正」,否则配置会失效。
getChildPermissionLevel 在子权限未声明时返回 Byte.MAX_VALUE(127),
即默认拒绝(CommandSettings.java:112-118)。
参数
ArcanaCommandBase 要求每条命令实现 minimumRequiredArgs(),
实参数量不足时只打印用法而不执行(ArcanaCommandBase.java:63-66)。
参数解析走 ArgumentProcessor<T>,与命令类型绑定
(ArcanaCommandBase.java:31、ArcanaCommandBase.java:34)。
各命令的具体参数定义在 common/commands/arguments/ 下,
共分 positional/ 与 named/(handler)两大类。
交互
所有命令的用法与帮助文本都是本地化键而非硬编码字符串:
- 用法:
salisarcana:command.<命令名>.usage(ArcanaCommandBase.java:48) - 描述:
salisarcana:command.<命令名>.desc(ArcanaCommandBase.java:118-120) - 参数:
salisarcana:command.<命令名>.args.<参数键>(ArcanaCommandBase.java:137-140) - 执行出错:
salisarcana:command.error.execute(红色,ArcanaCommandBase.java:80) - 补全出错:
salisarcana:command.error.tabcomplete(红色,ArcanaCommandBase.java:99)
Tab 补全由 argumentProcessor.getAutocompletionSuggestions(...) 提供
(ArcanaCommandBase.java:90)。
合成配方
无。命令不是物品。
相关条目
- 命令组 — 10 项
CommandSettings的完整设置表 - 配置框架 — 命令开关的依赖机制
- 网络消息 — 多条命令的结果通过数据包同步回客户端
- Salis Arcana — 模组总览