事件
监听 Popup、Screen 和 Compass 生命周期
Xerr 事件继承 TabooLib BukkitProxyEvent。在使用 TabooLib 的插件中通过 @SubscribeEvent 监听。
Popup
import com.hiusers.xerr.api.event.popup.PopupStartEvent
import com.hiusers.xerr.api.event.popup.PopupEndEvent
import taboolib.common.platform.event.SubscribeEvent
object XerrPopupListener {
@SubscribeEvent
fun onStart(event: PopupStartEvent) {
val playerId = event.playerId
val popupId = event.popupId
val variables = event.variables
}
@SubscribeEvent
fun onEnd(event: PopupEndEvent) {
val reason = event.reason
}
}PopupStartEvent: 实例真正开始入场或显示时触发,排队时不触发。PopupEndEvent: 实例进入最终结束状态后触发。
Screen
import com.hiusers.xerr.api.event.screen.ScreenStartEvent
import com.hiusers.xerr.api.event.screen.ScreenMarkerEvent
import com.hiusers.xerr.api.event.screen.ScreenEndEvent
import taboolib.common.platform.event.SubscribeEvent
object XerrScreenListener {
@SubscribeEvent
fun onStart(event: ScreenStartEvent) {
val handle = event.handle
}
@SubscribeEvent
fun onMarker(event: ScreenMarkerEvent) {
if (event.marker == "covered") {
// 切换场景或传送玩家
}
}
@SubscribeEvent
fun onEnd(event: ScreenEndEvent) {
val reason = event.reason
}
}ScreenStartEvent: 创建实例后触发。ScreenMarkerEvent: Scene 到达配置 Marker 时触发。ScreenEndEvent: 效果完全结束后触发。
Compass
import com.hiusers.xerr.api.event.compass.CompassTargetAddEvent
import com.hiusers.xerr.api.event.compass.CompassTargetRemoveEvent
import taboolib.common.platform.event.SubscribeEvent
object XerrCompassListener {
@SubscribeEvent
fun onAdd(event: CompassTargetAddEvent) {
val target = event.target
val cause = event.cause
}
@SubscribeEvent
fun onRemove(event: CompassTargetRemoveEvent) {
val target = event.target
val cause = event.cause
}
}事件原因:
API: 普通 API 或命令修改。STORAGE_LOAD: 从 Compass Storage 读取。STORAGE_UNLOAD: Storage 注销或卸载。
同一目标 ID 的更新不会重复触发 Add。Provider 每次刷新的快照也不会产生逐目标 Add/Remove 事件。
事件不可取消
这些事件用于观察已经发生的生命周期,不支持取消。要阻止显示,应在调用 Xerr 前完成自己的权限和业务条件判断。