on() — 事件订阅
on() 为命名事件注册处理函数,并返回可用于取消订阅的清理函数。事件名由 Aether 核心定义;对下方记录的内置操作使用 intercept() 进行干预。
intercept() — 操作拦截
intercept() 注册在操作分发链中运行的处理函数。拦截器可观察、修改或取消操作。Native 拦截器先运行,随后是按扩展注册顺序排列的 Script 处理函数。
内置操作
从拦截器返回
拦截器处理函数根据返回值控制操作如何继续:- 返回
undefined或不返回 — 载荷原样传给下一个拦截器。 - 返回带顶层字段的对象 — 这些字段会合并进链式载荷。
- 返回
{ payload: {...} }— 将提供的字段合并进链式载荷。 - 返回
{ cancel: true, reason: "..." }— 完全停止操作并展示原因。
chat.new 示例
通过拦截 chat.new 并返回更新后的 selected_skill_ids,为每个新聊天添加一个 Skill:
skills.selection 示例
锁定某个 Skill,使其无法被取消选择:
通配符拦截(仅 Native Mods)
在 Native Mod 拦截器中,将"*" 作为操作名传入,可观察经注册表分发的每一个操作:
Script 拦截器与 Native 拦截器形成一条共享链。对于同一操作,无论注册顺序如何,Native 拦截器始终在 Script 拦截器之前运行。