--- front: hard: 入门 time: 8分钟 --- # 事件管理器 ## 监听事件 通常情况下也就能使用到此功能 比如我们要监听玩家进入游戏的事件 应该如何书写? ```kotlin @SubscribeEvent fun hello(event: PlayerJoinEvent) { event.player.sendMessage("Hello, ${event.player.name}") } ``` 和原版的监听器相似 都是在方法上 进行标记 但是我们不需要去主类注册 ## 注册事件 在一些情况下 我们可以用事件来解决一些复杂问题 我这里仅进行举例 我要设计一个打招呼的事件 在玩家进入游戏时触发 然后传入的内容是打招呼的内容 1. 声明一个事件对象 ```kotlin data class HelloEvent( val player: Player, val message: String ) : BukkitProxyEvent() ``` 2. 事件注册 ```kotlin @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` 的处理办法