diff --git a/src/main/kotlin/net/axay/kspigot/event/KSpigotListeners.kt b/src/main/kotlin/net/axay/kspigot/event/KSpigotListeners.kt new file mode 100644 index 00000000..e708ef8e --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/event/KSpigotListeners.kt @@ -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 Plugin.listen(onEvent: (T) -> Unit): SingleListener { + val listener = object : SingleListener { + override fun onEvent(event: T) = onEvent.invoke(event) + } + listener.register(this) + return listener +} + +interface SingleListener : Listener { + @EventHandler + fun onEvent(event: T) +} \ No newline at end of file