指令
Chronos 插件的四条管理指令:设置、移除、试进状态、重载
这些指令是做什么的
Chronos 的指令非常简单,其核心是:管理玩家身上的「服务端控制器」。玩家有了生效控制器,才能运行其中的连招、状态和窗口;职业快照与技能装配仍由对应的职业流程管理。
日常你只会用到四条命令:给玩家挂载控制器、把控制器摘掉、手动让玩家进入某个状态(做测试或给其它插件调用)、以及改完配置后热重载。
这四条指令都需要 OP 身份,权限节点为 chronos.admin。普通玩家无法使用。
前缀与别名
根指令是 /arcartx_chronos,同时注册了两个别名,随便用哪个都行:
/arcartx_chronos(完整)/ac(推荐,最短)/chronos
下文示例统一用 /ac。
指令一览
| 指令 | 作用 |
|---|---|
/ac set <控制器ID> <玩家> | 给玩家设置控制器 |
/ac remove <玩家> | 移除玩家的控制器 |
/ac tryState <状态ID> <玩家> [失败提示] | 尝试让玩家进入某个状态 |
/ac reload | 重载全部配置 |
set —— 设置控制器
为一名在线玩家设置基础控制器。玩家正在执行状态时,切换会延迟到当前状态结束;存在临时控制器覆盖时,只更新基础控制器,当前覆盖继续生效。命令的成功提示表示已提交设置,不保证生效控制器当场改变。
参数顺序是「控制器 ID 在前,玩家在后」,和很多插件相反。写反了会因为找不到控制器而失败。
| 参数 | 说明 |
|---|---|
控制器ID | controllers/ 文件夹里的 yml 文件名(不含 .yml)。文件名 sword.yml 的控制器 ID 就是 sword |
玩家 | 在线玩家的游戏名 |
示例:
若控制器 ID 不存在,会提示 控制器 xxx 不存在。若它存在但未列入玩家当前职业的 controllers.allowed,命令会明确拒绝;管理命令不能绕过职业隔离。
remove —— 移除控制器
把玩家的基础控制器设为空。玩家正在执行状态时,移除会延迟到状态结束;存在临时覆盖时,当前覆盖继续生效。之后是否重新获得控制器,取决于当前职业模式、覆盖恢复策略和下一次职业路由。
示例:
如果当前职业为 ROUTED,登录、重载、主手变更或职业触发器重新求值时可能再次选出控制器。默认控制器与选择规则位于 职业配置,不再位于 setting.yml。
tryState —— 尝试让玩家进入状态
让玩家直接进入某个状态,而不是靠玩家自己按键触发。这条指令会走正常的进入校验(状态的 conditions 条件、冷却等),校验不过就不会进入。它不为状态挂载连招节点,因此不会沿该节点的 derive 继续连段;如果状态有取消窗口,输入仍可从默认连招链根节点发起其他动作。
| 参数 | 必填 | 说明 |
|---|---|---|
状态ID | 是 | 控制器里 state.<状态ID> 的键名 |
玩家 | 是 | 在线玩家的游戏名 |
失败提示 | 否 | 单个不含空格的文本参数;仅当进入失败时原样发给目标玩家 |
在线玩家尚未建立 Chronos 运行数据时,也按进入失败处理;填写了失败提示时,仍会发给该玩家。
典型用途:从命令方块、其它插件、脚本里让玩家播放一个指定动作(例如表情、舞蹈),并在条件不满足时给玩家一句提示。
示例:
进入成功与否取决于目标状态自身的 conditions 与冷却。想「无视条件强制进入」,可用 Java API 的 forceEnterStateFromRootChain;目标须存在于当前控制器的默认连招链中,可以是根节点或派生节点——见 Java API。
reload —— 重载配置
改完 setting.yml、keybinding.yml、professions/、controllers/ 或 client/ 里的任意 yml 后,用这个指令重载。
重载正常完成后,会更新以下配置与运行数据:
- 重新读取
setting.yml/keybinding.yml/ 全部控制器与职业 - 重新注册客户端按键
- 重新注册所有控制器 / 状态机
- 取消在线玩家旧定义上的待决选择、技能动作、状态和临时覆盖
- 把在线玩家重新绑定到同 ID 的新职业定义;职业已删除时回退新默认职业
ROUTED职业重新路由,EXTERNAL职业尽量保留仍被允许的 API 基础控制器- 为缺少 Chronos 数据的在线玩家补建数据并下发控制器
重载后留意后台输出,可确认加载结果:
调试习惯:每次改完配置先 reload,查看按键数量、控制器注册和告警。客户端 controller / state_name 等交叉引用错误会告警;schema、默认连招链、职业允许列表、技能 route 等非法配置可能直接使加载失败,不能把所有配置错误都当作可忽略的 WARN。
典型工作流
编辑 controllers/、client/ 和对应职业配置,把控制器加入该职业的 controllers.allowed
/ac reload 重载,并查看后台确认无 WARN
/ac set <控制器ID> <玩家> 把控制器挂到自己身上
进游戏实测;需要调整就回到第一步
也可以用 API
除了指令,插件开发者可以用 Java API 完成同样的事:
完整方法与事件见 API/EVENT。
