# 事件管理器

# 监听事件

通常情况下也就能使用到此功能
比如我们要监听玩家进入游戏的事件 应该如何书写?

@SubscribeEvent
fun hello(event: PlayerJoinEvent) {
    event.player.sendMessage("Hello, ${event.player.name}")
}

和原版的监听器相似 都是在方法上 进行标记 但是我们不需要去主类注册

# 注册事件

在一些情况下 我们可以用事件来解决一些复杂问题 我这里仅进行举例 我要设计一个打招呼的事件 在玩家进入游戏时触发 然后传入的内容是打招呼的内容

  1. 声明一个事件对象
data class HelloEvent(
    val player: Player,
    val message: String
) : BukkitProxyEvent()
  1. 事件注册
@SubscribeEvent
fun hello(event: PlayerJoinEvent) {
    val helloEvent = HelloEvent(event.player, "Hello, ${event.player.name}")
    helloEvent.call()
    if (!helloEvent.isCancelled) {
        event.player.sendMessage(helloEvent.message)
    }
}

上述两个东西你可以理解Bukkit当中 Bukkit.callEvent 的处理办法

入门

8分钟

监听事件

注册事件