LogoArcartX Doc

指令

Chronos 插件的四条管理指令:设置、移除、试进状态、重载

这些指令是做什么的

Chronos 的指令非常简单,其核心是:管理玩家身上的「服务端控制器」。玩家有了控制器,才会拥有一整套连招、状态、窗口的动作逻辑;没有控制器,Chronos 对这名玩家就是完全静默的。

日常你只会用到四条命令:给玩家挂载控制器、把控制器摘掉、手动让玩家进入某个状态(做测试或给其它插件调用)、以及改完配置后热重载。

这四条指令都需要 OP 身份,权限节点为 chronos.admin。普通玩家无法使用。

前缀与别名

根指令是 /arcartx_chronos,同时注册了两个别名,随便用哪个都行:

  • /arcartx_chronos(完整)
  • /ac(推荐,最短)
  • /chronos

下文示例统一用 /ac


指令一览

指令作用
/ac set <控制器ID> <玩家>给玩家设置控制器
/ac remove <玩家>移除玩家的控制器
/ac tryState <状态ID> <玩家> [失败提示]尝试让玩家进入某个状态
/ac reload重载全部配置

set —— 设置控制器

给一名在线玩家挂上指定的控制器。

/ac set <控制器ID> <>

参数顺序是「控制器 ID 在前,玩家在后」,和很多插件相反。写反了会因为找不到控制器而失败。

参数说明
控制器IDcontrollers/ 文件夹里的 yml 文件名(不含 .yml)。文件名 sword.yml 的控制器 ID 就是 sword
玩家在线玩家的游戏名

示例:

# 给玩家 Steve 设置剑士控制器(controllers/sword.yml)
/ac set sword Steve
 
# 给玩家 Alex 挂上弓箭手控制器
/ac set bow Alex

若控制器 ID 不存在,会提示 控制器 xxx 不存在——先确认文件名,并执行过一次 /ac reload


remove —— 移除控制器

把玩家身上的控制器移除。之后这名玩家不再受 Chronos 动作系统管理,直到重新 set 或触发自动切换。

/ac remove <>

示例:

/ac remove Steve

如果 setting.yml 里配置了默认控制器或自动切换(见 基本设置),玩家重新登录或切换手持物品时可能又会被自动挂上控制器。remove 只影响当下这一次。


tryState —— 尝试让玩家进入状态

让玩家直接进入某个状态,而不是靠玩家自己按键触发。这条指令会走正常的进入校验(状态的 conditions 条件、冷却等),校验不过就不会进入。这里需要注意,这种方式设置的状态是不进链的,也就是就算设置了对应连招链,该状态下玩家就算进行任何输入,都不会进行连段。

/ac tryState <状态ID> <> [失败提示]
参数必填说明
状态ID控制器里 state.<状态ID> 的键名
玩家在线玩家的游戏名
失败提示一段文本;仅当进入失败时发给该玩家,用于提示原因(如「冷却中」)

典型用途:从命令方块、其它插件、脚本里让玩家播放一个指定动作(例如表情、舞蹈),并在条件不满足时给玩家一句提示。

示例:

# 让 Steve 进入「处决」状态;若条件不满足,给他发一句提示
/ac tryState execute Steve "&c目标尚未进入可处决状态"

进入成功与否取决于目标状态自身的 conditions 与冷却。想「无视条件强制进入」,需要用 Java API 的 forceEnterStateFromRootChain,且该状态必须在连招链根节点声明——见 API/EVENT


reload —— 重载配置

改完 setting.ymlkeybinding.ymlcontrollers/client/ 里的任意 yml 后,用这个指令重载。

/ac reload

重载会依次完成:

  • 重新读取 setting.yml / keybinding.yml / 全部控制器
  • 重新注册客户端按键
  • 重新注册所有控制器 / 状态机
  • 为当前在线玩家补建数据并重新下发控制器

重载后留意后台输出,可确认加载结果:

[信息] 开始加载
[信息] 按键分类: 克洛诺斯
[信息] 加载2个按键配置
[信息] 注册动作客户端按键-> 战技1
[信息] 注册动作客户端按键-> 战技2
[信息] 注册动作控制器-> sword
[信息] 注册动作控制器-> bow
[信息] 加载完成

调试习惯:每次改完配置先 reload,扫一眼后台——按键数量对不对、控制器有没有全部注册、有没有 WARN(拼错的 controller / state_name / 连招引用会在这里告警但不阻断加载)。


典型工作流

编辑 controllers/ client/ 下的 yml 配置

/ac reload 重载,并查看后台确认无 WARN

/ac set <控制器ID> <玩家> 把控制器挂到自己身上

进游戏实测;需要调整就回到第一步


也可以用 API

除了指令,插件开发者可以用 Java API 完成同样的事:

ChronosAPI api = ChronosAPI.getInstanceAPI();
 
// 设置控制器(等价于 /ac set)
api.setPlayerController(player, "sword");
 
// 查询玩家当前控制器 ID(可能为 null)
String controllerId = api.getPlayerControllerId(player);
 
// 尝试进入状态(等价于 /ac tryState,走条件校验)
boolean ok = api.tryEnterState(player, "execute");
 
// 移除控制器(等价于 /ac remove)
api.removePlayerController(player);

完整方法与事件见 API/EVENT

On this page