Create KSpigotListeners.kt

This commit is contained in:
bluefireoly
2020-08-28 00:23:22 +02:00
parent 26a8b9ba29
commit b7d7684924

View File

@@ -0,0 +1,29 @@
package net.axay.kspigot.event
import net.axay.kspigot.extensions.pluginManager
import org.bukkit.event.Event
import org.bukkit.event.EventHandler
import org.bukkit.event.HandlerList
import org.bukkit.event.Listener
import org.bukkit.plugin.Plugin
/**
* Shortcut for registering this listener on the given plugin.
*/
fun Listener.register(plugin: Plugin) = pluginManager.registerEvents(this, plugin)
fun Listener.unregister() = HandlerList.unregisterAll(this)
fun <T : Event> Plugin.listen(onEvent: (T) -> Unit): SingleListener<T> {
val listener = object : SingleListener<T> {
override fun onEvent(event: T) = onEvent.invoke(event)
}
listener.register(this)
return listener
}
interface SingleListener<T : Event> : Listener {
@EventHandler
fun onEvent(event: T)
}