事件 API
事件位于新的 emaki.jiuwu.craft.attribute.api.event 包。所有事件均为同步、可取消 Bukkit 事件,只在 runtime 拥有所需 live target 时发布。
| 事件 | 触发时机 | 线程 | 可修改字段 | 取消效果 | runtime 路径 |
|---|---|---|---|---|---|
EmakiAttributeDamageEvent | 伤害计算后、最终应用前 | target/attacker 共同 owner thread | finalDamage | 取消或最终值 <=0 阻止伤害 | damage application service;纯 calculateDamage 不发 |
PlayerResourceConsumeEvent | 资源扣减前 | 玩家 owner thread | amount | 阻止扣减,公开操作返回取消失败 | consumeResource 与进入同一 service 的 runtime 路径 |
PlayerAttributePointAllocateEvent | 属性点分配提交前 | 玩家 owner thread | amount | 阻止分配 | ParentAttributeService 分配路径 |
PlayerAttributePointResetEvent | 重置提交前 | 玩家 owner thread | 无 | 阻止重置 | ParentAttributeService 重置路径 |
监听器修改值会在返回后重新校验。非 owner/异步路径不能把 Bukkit 事件 off-thread 发出;需要可靠拦截时先用 owner scheduler 调度。第三方 provider/gate 不在 event 包,而在 emaki.jiuwu.craft.attribute.api.extension。