前言
上次介绍了如何在 Kotlin 语言中使用 DSL 构造注册命令,这篇来写一下注册事件监听器。
注册监听器通常情况下都是用 @EventHandler
标注一个方法,写在一个实现空接口 Listener
的类中,像这样:
1 2 3 4 5 6
| object DemoListener : Listener { @EventHandler fun onPlayJoin(event: PlayerJoinEvent) { event.player.sendMessage(ChatColor.AQUA + "Hi!") } }
|
在插件启动时写上:
1
| pluginManager.registerEvents(DemoListener, plugin)
|
就可以正常食用了。如果不通过注解反射实现呢?我们需要翻一下源码,看看他的底层是怎么实现的。
Bukkit 源码部分
可以在 Bukkit 这里找到它的源码。拿到源码后我们从 registerEvents
这里入手,看看它帮我们干了什么不可描述的事情。PluginManager
是个接口,需要到它的实现类 SimplePluginManager
中找。