命令

基本信息

属性 值
命令数 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)。

合成配方

无。命令不是物品。

相关条目