Skip to content

事件系统

Overture 通过 Bukkit 事件系统暴露物品生命周期的各个阶段。

ItemBuildEvent

Pre — 物品构建前

kotlin
@AutoListener
fun onBuildPre(event: ItemBuildEvent.Pre) {
    event.player       // Player? — 当前玩家
    event.itemId       // String — 物品 ID
    event.stream       // ItemStreamGenerated — 可修改 nameVars/loreVars
    event.isCancelled  // 可取消
}

Post — 物品构建后

kotlin
@AutoListener
fun onBuildPost(event: ItemBuildEvent.Post) {
    event.player       // Player?
    event.itemId       // String
    event.stream       // ItemStreamGenerated
    // 不可取消。Meta build/drop 在此阶段执行。
}

ItemReleaseEvent

Release — 物品释放为 ItemStack

kotlin
@AutoListener
fun onRelease(event: ItemReleaseEvent.Release) {
    event.player       // Player?
    event.stream       // ItemStream
    event.itemMeta     // ItemMeta — 可修改
}

SelectDisplay — 展示方案选择

kotlin
@AutoListener
fun onSelectDisplay(event: ItemReleaseEvent.SelectDisplay) {
    event.player       // Player?
    event.stream       // ItemStream
    event.displayId    // String? — 可修改,替换展示方案
}

Display — 展示变量生成

kotlin
@AutoListener
fun onDisplay(event: ItemReleaseEvent.Display) {
    event.player       // Player?
    event.stream       // ItemStream
    event.nameVars     // MutableMap<String, String> — 可注入变量
    event.loreVars     // MutableMap<String, MutableList<String>>
}

Final — 最终修改

kotlin
@AutoListener
fun onFinal(event: ItemReleaseEvent.Final) {
    event.player       // Player?
    event.stream       // ItemStream
    event.itemStack    // ItemStack — 可替换
}

ItemUpdateEvent

物品更新检查时触发,可取消以阻止更新。

kotlin
@AutoListener
fun onUpdate(event: ItemUpdateEvent) {
    event.player       // Player
    event.itemStack    // ItemStack
    event.item         // OvertureItem — 物品定义
    event.isCancelled  // 可取消
}

ItemGiveEvent

物品发放时触发,可取消或修改物品。

kotlin
@AutoListener
fun onGive(event: ItemGiveEvent) {
    event.player       // Player
    event.itemId       // String
    event.itemStack    // ItemStack — 可修改
    event.isCancelled  // 可取消
}

PluginReloadEvent

配置重载完成后触发。

kotlin
@AutoListener
fun onReload(event: PluginReloadEvent) {
    // 重新加载依赖 Overture 数据的缓存
}

Released under the Apache 2.0 License.