事件分发
事件分发器是 Monoceros 的事件驱动核心 —— 它监听 Bukkit 事件,并将事件路由到脚本、动作工作流或自定义处理器中执行。
基本信息
- 分发器定义文件放在插件目录下的
dispatcher/文件夹中,YAML 格式,支持子目录 - 每个分发器绑定一个 Bukkit 事件类,当事件触发时自动执行对应的路由目标
- 支持优先级(
listen-priority)和权重(weight)排序,同一事件可注册多个分发器 - 支持
ignore-cancelled跳过已被取消的事件 - 文件修改后自动热重载,无需重启服务器
路由类型
分发器支持三种路由目标:
| 路由类型 | 说明 |
|---|---|
script | 执行 Fluxon 脚本 |
action | 执行动作工作流 |
handler | 执行自定义处理器 |
Pipeline 管道
每个事件分发器的执行都经过一条 Pipeline 管道,管道包含 5 个生命周期阶段:
initPrincipal—— 初始化事件主体(玩家、实体或方块)initVariables—— 初始化上下文变量filter—— 过滤条件判断afterFilter—— 过滤通过后的后处理postprocess—— 最终后处理
同一事件可以注册多条 Pipeline,按优先级从高到低排序执行。
StateProbe 状态探针
部分状态变化在 Bukkit 中没有对应事件(例如玩家更换盔甲),Monoceros 通过 StateProbe 机制来补偿:
- StateProbe 会定期轮询检测状态变化
- 检测到变化后生成虚拟事件(如
PlayerArmorChangeEvent) - 虚拟事件和普通 Bukkit 事件一样,可以被分发器监听和路由
相关页面
- 分发器定义 —— 定义文件的编写格式与字段说明
- Pipeline 管道 —— 管道生命周期与 StateProbe 详解