事件
监听并取消 Rondo 的存取、转账与兑换操作
Rondo 在资金操作前触发 Bukkit 事件。三个事件都可以取消。
事件回调不会持有 Rondo 的内部玩家顺序锁,监听器可以安全调用其他 RondoAPI。事件结束后 Rondo 才进入最终原子事务,因此事件字段表示本次操作的提交提案:oldBalance / newBalance 是触发前观察值,并发写入可能使最终提交失败。取消事件可保证本次 Rondo 操作不提交;未取消不等于提交必然成功,调用方仍应检查 API 返回值。
EconomyTransactionEvent
存入、扣除或直接设置余额前触发:
EconomyTransactionEvent.source 可用于区分操作来源。
取消大额存入示例:
EconomyTransferEvent
玩家间转账提交前触发:
EconomyExchangeEvent
兑换事务提交前触发:
线程语义
事件在调用 RondoAPI 的同一线程上触发:
- 主线程发起操作时,事件是同步 Bukkit 事件。
- 异步任务发起操作时,事件构造为异步 Bukkit 事件。
异步事件中访问世界、实体或背包前,需要切回服务端主线程。
