From 5ed74f2df49c93ed1617520a935078b59ad7e195 Mon Sep 17 00:00:00 2001 From: Linnea Gräf Date: Sun, 1 Sep 2024 22:21:19 +0200 Subject: Add per compat project event listeners [no changelog] --- src/main/kotlin/events/FirmamentEventBus.kt | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) (limited to 'src/main/kotlin/events/FirmamentEventBus.kt') diff --git a/src/main/kotlin/events/FirmamentEventBus.kt b/src/main/kotlin/events/FirmamentEventBus.kt index ee9e6c8..71331d1 100644 --- a/src/main/kotlin/events/FirmamentEventBus.kt +++ b/src/main/kotlin/events/FirmamentEventBus.kt @@ -1,8 +1,7 @@ - - package moe.nea.firmament.events import java.util.concurrent.CopyOnWriteArrayList +import org.apache.commons.lang3.reflect.TypeUtils import moe.nea.firmament.Firmament import moe.nea.firmament.util.MC @@ -13,18 +12,31 @@ import moe.nea.firmament.util.MC * Subscriptions may not necessarily be delivered in the order of registering. */ open class FirmamentEventBus { + companion object { + val allEventBuses = mutableListOf>() + } + + val eventType = TypeUtils.getTypeArguments(javaClass, FirmamentEventBus::class.java)!!.values.single() + + init { + allEventBuses.add(this) + } + data class Handler( val invocation: (T) -> Unit, val receivesCancelled: Boolean, var knownErrors: MutableSet> = mutableSetOf(), + val label: String, ) private val toHandle: MutableList> = CopyOnWriteArrayList() - fun subscribe(handle: (T) -> Unit) { - subscribe(false, handle) + val handlers: List> get() = toHandle + + fun subscribe(label: String, handle: (T) -> Unit) { + subscribe(false, label, handle) } - fun subscribe(receivesCancelled: Boolean, handle: (T) -> Unit) { - toHandle.add(Handler(handle, receivesCancelled)) + fun subscribe(receivesCancelled: Boolean, label: String, handle: (T) -> Unit) { + toHandle.add(Handler(handle, receivesCancelled, label = label)) } fun publish(event: T): T { -- cgit