Only provide a register extension function for SingleListener
This commit is contained in:
@@ -7,11 +7,6 @@ import org.bukkit.event.EventPriority
|
|||||||
import org.bukkit.event.HandlerList
|
import org.bukkit.event.HandlerList
|
||||||
import org.bukkit.event.Listener
|
import org.bukkit.event.Listener
|
||||||
|
|
||||||
/**
|
|
||||||
* Shortcut for registering this listener on the given plugin.
|
|
||||||
*/
|
|
||||||
fun Listener.register() = pluginManager.registerEvents(this, KSpigotMainInstance)
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Shortcut for unregistering all events in this listener.
|
* Shortcut for unregistering all events in this listener.
|
||||||
*/
|
*/
|
||||||
@@ -37,8 +32,11 @@ inline fun <reified T : Event> Listener.register(
|
|||||||
* This class represents a [Listener] with
|
* This class represents a [Listener] with
|
||||||
* only one event to listen to.
|
* only one event to listen to.
|
||||||
*/
|
*/
|
||||||
interface SingleListener<T : Event> : Listener {
|
abstract class SingleListener<T : Event>(
|
||||||
fun onEvent(event: T)
|
val priority: EventPriority,
|
||||||
|
val ignoreCancelled: Boolean,
|
||||||
|
) : Listener {
|
||||||
|
abstract fun onEvent(event: T)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -48,13 +46,15 @@ interface SingleListener<T : Event> : Listener {
|
|||||||
* @param priority the priority when multiple listeners handle this event
|
* @param priority the priority when multiple listeners handle this event
|
||||||
* @param ignoreCancelled if manual cancellation should be ignored
|
* @param ignoreCancelled if manual cancellation should be ignored
|
||||||
*/
|
*/
|
||||||
inline fun <reified T : Event> SingleListener<T>.register(
|
inline fun <reified T : Event> SingleListener<T>.register() {
|
||||||
priority: EventPriority = EventPriority.NORMAL,
|
pluginManager.registerEvent(
|
||||||
ignoreCancelled: Boolean = false,
|
T::class.java,
|
||||||
) {
|
this,
|
||||||
register<T>(priority, ignoreCancelled) { _, event ->
|
priority,
|
||||||
(event as? T)?.let { this.onEvent(it) }
|
{ _, event -> (event as? T)?.let { this.onEvent(it) } },
|
||||||
}
|
KSpigotMainInstance,
|
||||||
|
ignoreCancelled
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -70,9 +70,9 @@ inline fun <reified T : Event> listen(
|
|||||||
register: Boolean = true,
|
register: Boolean = true,
|
||||||
crossinline onEvent: (event: T) -> Unit,
|
crossinline onEvent: (event: T) -> Unit,
|
||||||
): SingleListener<T> {
|
): SingleListener<T> {
|
||||||
val listener = object : SingleListener<T> {
|
val listener = object : SingleListener<T>(priority, ignoreCancelled) {
|
||||||
override fun onEvent(event: T) = onEvent.invoke(event)
|
override fun onEvent(event: T) = onEvent.invoke(event)
|
||||||
}
|
}
|
||||||
if (register) listener.register(priority, ignoreCancelled)
|
if (register) listener.register()
|
||||||
return listener
|
return listener
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user