任务
配置延迟、重复间隔与执行内容。
周期刷新
tasks 写在菜单顶层,别名为 task:
# 菜单顶层
tasks:
refresh_display:
delay: 20
period: 20
async: false
run:
- type: KETHER
value: 'icons update'菜单打开 20 tick 后执行,之后每 20 tick 更新现有图标显示,不重建生成器列表。
字段
| 字段 | 类型 | 必填 | 默认行为 | 说明 |
|---|---|---|---|---|
delay | 整数 | 否 | 0 tick | 首次执行前的延迟 |
period | 整数 | 否 | 0,只执行一次 | 重复间隔,单位 tick;正数启用重复执行 |
async | 布尔值 | 否 | 普通 Bukkit/Paper 自动任务使用 true | 执行方式;手动调用与 Folia 的规则见下文 |
run | 节点或节点列表 | 是 | — | 执行内容,使用节点的 type 与 value 字段 |
run 与节点使用同一结构,也支持 throwable(别名 throwError)。执行 Kether 时填写 type: KETHER;直接把语句写成文字会成为 CONST 节点,不会按动作执行。
手动调用
action: 'task refresh_display'立即执行命名任务的 run 内容,不会额外启动周期任务。菜单关闭后,当前会话的周期任务停止。
async 的适用范围
| 调用方式 | async 的作用 |
|---|---|
| 普通 Bukkit / Paper 自动启动的任务 | 按 async 选择执行方式;未填写时为 true |
| Folia 自动启动的任务 | 按玩家所属线程运行,不靠 async 切换到后台 |
| 动作中的 task 名称 | 在玩家所属线程执行 run,不采用周期任务的 async 选择 |
async 不是网络超时设置。手动 task 调用不会因为写了 async: true 就变成后台请求;放在点击动作中的同步网络读取仍会等待结果。包含菜单、物品或玩家操作的节点不整体放到后台执行。
单个图标更新
只更新一个图标的名称或子状态时,可以使用图标 update、relocate 字段;动画配置设置帧列表与间隔。
时间单位
| 配置 | 单位 |
|---|---|
| 任务 delay、period | tick |
| 图标 update、relocate | tick |
| 标题与动画帧间隔 | tick |
| min-interact-interval、shift_f | 毫秒 |
20 TPS 时,20 tick 约一秒。点击后变化的内容可直接在 action 末尾刷新,无需周期任务。
最后更新于