事件 API
Forge 事件位于 emaki.jiuwu.craft.forge.api.event,均为玩家 owner thread 上的同步 Bukkit 事件。当前 GUI 锻造与公开 ForgeOperations.forgeAsync 共用事件契约。
| 事件 | 触发时机 | 线程 | Cancellable | 可修改字段 | 取消/结果效果 | runtime 路径 |
|---|---|---|---|---|---|---|
ForgeStartEvent | 验证和 prepared forge 完成后、异步执行与材料提交前 | 玩家 owner thread | 是 | successRate,有限值 clamp 到 0–100,非有限值变 0 | 取消时不排程执行、不消耗材料;API 返回 CANCELLED | GUI 确认与 forgeAsync |
ForgeCompletedEvent | 正常 forge result 已解析后,成功或可解析失败均可触发 | 玩家 owner thread | 否 | 无 | post 通知,不可回滚 | GUI 完成与 forgeAsync 完成 |
ForgeStartEvent 的 player、recipeId、firstCraft 为只读。ForgeCompletedEvent 的 success、resultItem、quality、multiplier 为只读;失败时 resultItem/quality 可为空。
当 owner/generation 验证在 start 前失败时不会发开始事件。完成阶段若玩家 owner 调度已退役,结果仍会映射/结算,但 completed event 可被跳过。取消 start 不会产生 completed event。Catalog 校验、打开 GUI/配方书和刷新物品本身不属于一次 forge attempt。