From b7d768492443c1490d67598b164e275d0eff10f1 Mon Sep 17 00:00:00 2001 From: bluefireoly Date: Fri, 28 Aug 2020 00:23:22 +0200 Subject: [PATCH] Create KSpigotListeners.kt --- .../axay/kspigot/event/KSpigotListeners.kt | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 src/main/kotlin/net/axay/kspigot/event/KSpigotListeners.kt 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