Skip to content

Event Mapping

Noogear edited this page Mar 11, 2026 · 3 revisions

event-mapping/*.yml — 事件映射脚本

GloomLib 脚本引擎驱动的事件→动作映射。每个 YAML 文件定义一个事件监听脚本,将 Bukkit 事件映射到指示器显示等动作。

完整的脚本引擎语法参考 → 脚本引擎

数学表达式语法参考 → 数学表达式

顶层字段

字段 类型 说明
id String 唯一标识(省略时使用文件名)
event String 监听的 Bukkit 事件全限定类名
priority int 事件优先级(见下表)
ignore-cancelled boolean 默认 true;为 true 时已被其他插件取消的事件不会触发脚本
variables Map 变量映射:变量名: 事件属性路径
flow List 条件与动作列表(顺序执行)

priority 值

值 对应 Bukkit 优先级
-2 LOWEST
-1 LOW
0 NORMAL(默认)
1 HIGH
2 HIGHEST
3 MONITOR

flow 条目

条件检查

- check: <变量名>
  op: <操作符>
  value: <期望值>
  on_fail:             # 可选,条件不满足时执行
    - action: [args...]
    - return

常用操作符:==、!=、>、<、>=、<=、instanceof、!instanceof

完整操作符列表 → 脚本引擎 - 操作符参考

内置动作

动作 参数 说明
showIndicator [target, source, value, tag] 触发指示器显示
return 无 提前结束流程

参数中可使用 {变量名} 引用 variables 中声明的变量,支持 {cause.name} 嵌套属性访问。

示例:伤害指示器

id: damage-indicator
event: org.bukkit.event.entity.EntityDamageByEntityEvent
priority: 3
ignore-cancelled: true

variables:
  target: entity
  source: damager
  value: finalDamage
  cause: cause
  critical: critical

flow:
  - check: target
    op: instanceof
    value: org/bukkit/entity/LivingEntity

  - check: value
    op: ">"
    value: "0"

  - check: critical
    op: "!="
    value: true
    on_fail:
      - showIndicator: ["{target}", "{source}", "{value}", "CRITICAL"]
      - return

  - showIndicator: ["{target}", "{source}", "{value}", "{cause.name}"]

示例:生命恢复指示器

id: regain-indicator
event: org.bukkit.event.entity.EntityRegainHealthEvent
priority: 3
ignore-cancelled: true

variables:
  target: entity
  amount: amount
  reason: regainReason

flow:
  - check: target
    op: instanceof
    value: org/bukkit/entity/Player

  - check: amount
    op: ">"
    value: "0"

  - showIndicator: ["{target}", "{target}", "{amount}", "{reason.name}"]

Clone this wiki locally