Appearance
自定义事件
AreaModule 提供了三个 Bukkit 事件,供其他插件监听关卡的生命周期变化。所有事件继承自 TabooLib 的 BukkitProxyEvent。
LevelStartEvent
关卡启动时触发。
kotlin
import me.kzheart.areamodule.event.LevelStartEvent
@SubscribeEvent
fun onLevelStart(event: LevelStartEvent) {
val level = event.gameLevel
val cause = event.cause // API 或 TRIGGER
val triggerPlayers = event.triggerPlayerIds // 触发玩家 UUID 列表
println("关卡 ${level.id} 启动,原因: $cause")
}| 属性 | 类型 | 说明 |
|---|---|---|
| gameLevel | GameLevel | 启动的关卡实例 |
| cause | Cause | 启动原因:API(命令/API 调用)或 TRIGGER(触发器自动触发) |
| triggerPlayerIds | List<UUID> | 触发玩家的 UUID 列表(仅 TRIGGER 时有值) |
LevelFinishEvent
关卡所有子关卡完成后触发。
kotlin
import me.kzheart.areamodule.event.LevelFinishEvent
@SubscribeEvent
fun onLevelFinish(event: LevelFinishEvent) {
val level = event.gameLevel
println("关卡 ${level.id} 完成!")
}| 属性 | 类型 | 说明 |
|---|---|---|
| gameLevel | GameLevel | 完成的关卡实例 |
LevelFailEvent
关卡失败时触发。此时分数和进度数据还未重置,监听者可以读取。
kotlin
import me.kzheart.areamodule.event.LevelFailEvent
@SubscribeEvent
fun onLevelFail(event: LevelFailEvent) {
val level = event.gameLevel
val reason = event.reason // TIMEOUT 或 MANUAL
when (reason) {
LevelFailEvent.FailReason.TIMEOUT -> println("关卡 ${level.id} 超时失败")
LevelFailEvent.FailReason.MANUAL -> println("关卡 ${level.id} 手动失败")
}
}| 属性 | 类型 | 说明 |
|---|---|---|
| gameLevel | GameLevel | 失败的关卡实例 |
| reason | FailReason | 失败原因:TIMEOUT(限时超时)或 MANUAL(命令/API 手动触发) |
TIP
LevelFailEvent 触发时,关卡的分数、子关卡进度等信息仍然可读。事件触发之后才会重置。