diff --git a/src/main/java/de/bixilon/minosoft/Minosoft.kt b/src/main/java/de/bixilon/minosoft/Minosoft.kt index c7d791a57..39906fb80 100644 --- a/src/main/java/de/bixilon/minosoft/Minosoft.kt +++ b/src/main/java/de/bixilon/minosoft/Minosoft.kt @@ -47,10 +47,12 @@ import de.bixilon.minosoft.util.task.worker.tasks.Task object Minosoft { val MINOSOFT_ASSETS_MANAGER = JarAssetsManager(Minosoft::class.java, mutableSetOf("minosoft")) val MINECRAFT_FALLBACK_ASSETS_MANAGER = JarAssetsManager(Minosoft::class.java, mutableSetOf("minecraft")) - val GLOBAL_EVENT_MASTER = GlobalEventMaster() val LANGUAGE_MANAGER = MultiLanguageManager() val START_UP_LATCH = CountUpAndDownLatch(1) + @Deprecated("Use singleton interface!") + val GLOBAL_EVENT_MASTER = GlobalEventMaster + @Deprecated("Will be singleton interface") lateinit var config: Configuration diff --git a/src/main/java/de/bixilon/minosoft/config/config/account/AccountConfig.kt b/src/main/java/de/bixilon/minosoft/config/config/account/AccountConfig.kt index c9cb56b4e..a4b99ba62 100644 --- a/src/main/java/de/bixilon/minosoft/config/config/account/AccountConfig.kt +++ b/src/main/java/de/bixilon/minosoft/config/config/account/AccountConfig.kt @@ -14,9 +14,9 @@ package de.bixilon.minosoft.config.config.account import com.squareup.moshi.Json -import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.data.accounts.Account import de.bixilon.minosoft.modding.event.events.account.AccountSelectEvent +import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import java.util.* data class AccountConfig( @@ -28,7 +28,7 @@ data class AccountConfig( var selected: Account? = null get() = entries[selectedAccountId] set(value) { - Minosoft.GLOBAL_EVENT_MASTER.fireEvent(AccountSelectEvent(selected, value)) + GlobalEventMaster.fireEvent(AccountSelectEvent(selected, value)) field // To allow transient for moshi selectedAccountId = value?.id } diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/Eros.kt b/src/main/java/de/bixilon/minosoft/gui/eros/Eros.kt index 8ed2bdd12..422ee855d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/Eros.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/Eros.kt @@ -13,11 +13,11 @@ package de.bixilon.minosoft.gui.eros -import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.gui.eros.main.MainErosController import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.modding.event.events.FinishInitializingEvent import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.util.KUtil.asResourceLocation import javafx.application.Platform @@ -29,7 +29,7 @@ object Eros { init { - Minosoft.GLOBAL_EVENT_MASTER.registerEvent(CallbackEventInvoker.of { + GlobalEventMaster.registerEvent(CallbackEventInvoker.of { Platform.runLater { mainErosController = JavaFXUtil.openModal(TITLE, LAYOUT) mainErosController.stage.show() diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/controller/JavaFXController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/controller/JavaFXController.kt index 896c0f082..31711c9e3 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/controller/JavaFXController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/controller/JavaFXController.kt @@ -13,7 +13,9 @@ package de.bixilon.minosoft.gui.eros.controller +import de.bixilon.minosoft.gui.eros.modding.events.ErosControllerTerminateEvent import de.bixilon.minosoft.gui.eros.util.JavaFXUtil +import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.util.KUtil.nullCast import javafx.event.ActionEvent import javafx.fxml.Initializable @@ -38,5 +40,7 @@ abstract class JavaFXController : Initializable { open fun postInit() {} - open fun terminate() {} + open fun terminate() { + GlobalEventMaster.fireEvent(ErosControllerTerminateEvent(this)) + } } diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt index 215a81294..1bd1d0c0e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/MainErosController.kt @@ -22,6 +22,7 @@ import de.bixilon.minosoft.gui.eros.main.play.PlayMainController import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventInvoker import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.modding.event.events.account.AccountSelectEvent +import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.util.GitInfo import de.bixilon.minosoft.util.KUtil.asResourceLocation import de.bixilon.minosoft.util.KUtil.decide @@ -95,7 +96,7 @@ class MainErosController : JavaFXWindowController() { contentFX.children.setAll(JavaFXUtil.loadEmbeddedController("minosoft:eros/main/play/play.fxml".asResourceLocation()).root) - Minosoft.GLOBAL_EVENT_MASTER.registerEvent(JavaFXEventInvoker.of { + GlobalEventMaster.registerEvent(JavaFXEventInvoker.of { accountImageFX.image = JavaFXUtil.MINOSOFT_LOGO // ToDo accountNameFX.text = it.account?.username }) diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayMainController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayMainController.kt index 74cf237f8..f3541188a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayMainController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/PlayMainController.kt @@ -19,10 +19,13 @@ import de.bixilon.minosoft.gui.eros.main.play.server.Refreshable import de.bixilon.minosoft.gui.eros.main.play.server.ServerListController import de.bixilon.minosoft.gui.eros.main.play.server.type.ServerType import de.bixilon.minosoft.gui.eros.main.play.server.type.ServerTypeCardController +import de.bixilon.minosoft.gui.eros.modding.events.ErosControllerTerminateEvent import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventInvoker import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.text import de.bixilon.minosoft.modding.event.events.LANServerDiscoverEvent +import de.bixilon.minosoft.modding.event.invoker.EventInvoker +import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.protocol.protocol.LANServerListener import de.bixilon.minosoft.util.KUtil.asResourceLocation import javafx.fxml.FXML @@ -46,27 +49,33 @@ class PlayMainController : EmbeddedJavaFXController() { override fun init() { playTypeListViewFX.setCellFactory { ServerTypeCardController.build() } - playTypeListViewFX.items += ServerType(FontAwesomeSolid.SERVER, "Custom", "0 Servers", "") { + playTypeListViewFX.items += ServerType(FontAwesomeSolid.SERVER, CUSTOM_SERVER_TYPE, "0 Servers", "") { return@ServerType JavaFXUtil.loadEmbeddedController(ServerListController.LAYOUT).apply { servers = Minosoft.config.config.server.entries.values refreshList() } } - playTypeListViewFX.items += ServerType(FontAwesomeSolid.NETWORK_WIRED, "LAN", "12 Servers", "") { + playTypeListViewFX.items += ServerType(FontAwesomeSolid.NETWORK_WIRED, LAN_SERVER_TYPE, "12 Servers", "") { return@ServerType JavaFXUtil.loadEmbeddedController(ServerListController.LAYOUT).apply { - val invoker = Minosoft.GLOBAL_EVENT_MASTER.registerEvent(JavaFXEventInvoker.of { refreshList() }) + val events: MutableList = mutableListOf() + events += GlobalEventMaster.registerEvent(JavaFXEventInvoker.of { refreshList() }) readOnly = true customRefresh = { LANServerListener.clear() refreshList() } - customTerminate = { - Minosoft.GLOBAL_EVENT_MASTER.unregisterEvent(invoker) + + GlobalEventMaster.registerEvent(JavaFXEventInvoker.of(oneShot = true) { + if (it.controller != this) { + return@of + } + + GlobalEventMaster.unregisterEvents(*events.toTypedArray()) LANServerListener.clear() - } + }) + LANServerListener.clear() servers = LANServerListener.SERVERS.values - Minosoft.GLOBAL_EVENT_MASTER.registerEvent(JavaFXEventInvoker.of { refreshList() }) refreshList() } } @@ -75,7 +84,7 @@ class PlayMainController : EmbeddedJavaFXController() { if (this::currentController.isInitialized) { currentController.terminate() } - currentController = new.content() + currentController = new.content(new) playTypeContentFX.children.setAll(currentController.root) } @@ -100,6 +109,8 @@ class PlayMainController : EmbeddedJavaFXController() { } companion object { + private val CUSTOM_SERVER_TYPE = "minosoft:server_type.custom".asResourceLocation() + private val LAN_SERVER_TYPE = "minosoft:server_type.lan".asResourceLocation() private val REFRESH_HEADER = "minosoft:server_list.refresh.header".asResourceLocation() private val REFRESH_TEXT1 = "minosoft:server_list.refresh.text1".asResourceLocation() private val REFRESH_TEXT2 = "minosoft:server_list.refresh.text2".asResourceLocation() diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt index ed3a26149..6ae51fe1c 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/ServerListController.kt @@ -68,8 +68,6 @@ class ServerListController : EmbeddedJavaFXController(), Refreshable { var customRefresh: (() -> Unit)? = null - var customTerminate: (() -> Unit)? = null - var servers: MutableCollection = mutableListOf() var readOnly: Boolean = false @@ -294,11 +292,6 @@ class ServerListController : EmbeddedJavaFXController(), Refreshable { } } - override fun terminate() { - super.terminate() - customTerminate?.invoke() - } - companion object { val LAYOUT = "minosoft:eros/main/play/server/server_list.fxml".asResourceLocation() diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/ServerType.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/ServerType.kt index 230e88d47..585ebbe68 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/ServerType.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/ServerType.kt @@ -21,5 +21,5 @@ data class ServerType( val header: Any?, val text1: Any?, val text2: Any?, - val content: () -> EmbeddedJavaFXController<*>, + val content: (ServerType) -> EmbeddedJavaFXController<*>, ) diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/modding/events/ErosControllerTerminateEvent.kt b/src/main/java/de/bixilon/minosoft/gui/eros/modding/events/ErosControllerTerminateEvent.kt new file mode 100644 index 000000000..d1f7492ba --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/eros/modding/events/ErosControllerTerminateEvent.kt @@ -0,0 +1,21 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.gui.eros.modding.events + +import de.bixilon.minosoft.gui.eros.controller.JavaFXController +import de.bixilon.minosoft.modding.event.events.Event + +class ErosControllerTerminateEvent( + val controller: JavaFXController, +) : Event diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/modding/invoker/JavaFXEventInvoker.kt b/src/main/java/de/bixilon/minosoft/gui/eros/modding/invoker/JavaFXEventInvoker.kt index 3c84a7f9a..b435c0d33 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/modding/invoker/JavaFXEventInvoker.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/modding/invoker/JavaFXEventInvoker.kt @@ -17,6 +17,7 @@ import de.bixilon.minosoft.modding.event.events.CancelableEvent import de.bixilon.minosoft.modding.event.events.Event import de.bixilon.minosoft.modding.event.invoker.EventInstantFireable import de.bixilon.minosoft.modding.event.invoker.EventInvoker +import de.bixilon.minosoft.modding.event.invoker.OneShotInvoker import de.bixilon.minosoft.modding.loading.Priorities import javafx.application.Platform import kotlin.reflect.KClass @@ -27,10 +28,11 @@ import kotlin.reflect.KClass class JavaFXEventInvoker private constructor( ignoreCancelled: Boolean, private val callback: (E) -> Unit, + override val oneShot: Boolean, override val kEventType: KClass, override val eventType: Class, override val instantFire: Boolean, -) : EventInvoker(ignoreCancelled, Priorities.NORMAL, null), EventInstantFireable { +) : EventInvoker(ignoreCancelled, Priorities.NORMAL, null), EventInstantFireable, OneShotInvoker { override operator fun invoke(event: Event) { if (!this.isIgnoreCancelled && event is CancelableEvent && event.cancelled) { @@ -44,10 +46,11 @@ class JavaFXEventInvoker private constructor( companion object { @JvmOverloads @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") - inline fun of(ignoreCancelled: Boolean = false, instantFire: Boolean = true, noinline callback: (E) -> Unit): JavaFXEventInvoker { + inline fun of(ignoreCancelled: Boolean = false, instantFire: Boolean = true, oneShot: Boolean = false, noinline callback: (E) -> Unit): JavaFXEventInvoker { return JavaFXEventInvoker( ignoreCancelled = ignoreCancelled, callback = callback, + oneShot = oneShot, kEventType = E::class, eventType = E::class.java, instantFire = instantFire, diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt index 95757a2fa..2d017d8d7 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/Event.kt @@ -13,4 +13,4 @@ package de.bixilon.minosoft.modding.event.events -abstract class Event +interface Event diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/FinishInitializingEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/FinishInitializingEvent.kt index c44a8477b..02c6df1b9 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/FinishInitializingEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/FinishInitializingEvent.kt @@ -12,4 +12,4 @@ */ package de.bixilon.minosoft.modding.event.events -class FinishInitializingEvent : Event() +class FinishInitializingEvent : Event diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/LANServerDiscoverEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/LANServerDiscoverEvent.kt index 353776e59..c0129483f 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/LANServerDiscoverEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/LANServerDiscoverEvent.kt @@ -19,4 +19,4 @@ import java.net.InetAddress class LANServerDiscoverEvent( val remoteAddress: InetAddress, val serer: Server, -) : Event(), CancelableEvent +) : Event, CancelableEvent diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/account/AccountSelectEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/account/AccountSelectEvent.kt index 0c97f11bb..1ce14ad02 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/account/AccountSelectEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/account/AccountSelectEvent.kt @@ -20,7 +20,7 @@ import de.bixilon.minosoft.modding.event.events.Event class AccountSelectEvent( val previous: Account?, val account: Account?, -) : Event() { +) : Event { companion object : EventInstantFire { diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionEvent.kt index 3535cca2e..9297edfd5 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionEvent.kt @@ -19,4 +19,4 @@ import de.bixilon.minosoft.protocol.network.connection.Connection abstract class ConnectionEvent @JvmOverloads constructor( open val connection: Connection, val initiator: EventInitiators = EventInitiators.DEFAULT, -) : Event() +) : Event diff --git a/src/main/java/de/bixilon/minosoft/modding/event/invoker/OneShotInvoker.kt b/src/main/java/de/bixilon/minosoft/modding/event/invoker/OneShotInvoker.kt new file mode 100644 index 000000000..a59c53c8a --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/modding/event/invoker/OneShotInvoker.kt @@ -0,0 +1,21 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.modding.event.invoker + +/** + * Automatically unregisters the event invoker once it was first (and last) fired + */ +interface OneShotInvoker { + val oneShot: Boolean +} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/master/AbstractEventMaster.kt b/src/main/java/de/bixilon/minosoft/modding/event/master/AbstractEventMaster.kt index 7c46b5f90..f67c396b3 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/master/AbstractEventMaster.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/master/AbstractEventMaster.kt @@ -22,5 +22,18 @@ interface AbstractEventMaster : Iterable { fun fireEvent(event: Event): Boolean fun registerEvent(invoker: T): T - fun registerEvents(vararg invoker: EventInvoker) + + fun registerEvents(vararg invokers: EventInvoker) { + for (invoker in invokers) { + registerEvent(invoker) + } + } + + fun unregisterEvent(invoker: EventInvoker?) {} + + fun unregisterEvents(vararg invokers: EventInvoker?) { + for (invoker in invokers) { + unregisterEvent(invoker) + } + } } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/master/EventMaster.kt b/src/main/java/de/bixilon/minosoft/modding/event/master/EventMaster.kt index 8a02e8315..e25014a90 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/master/EventMaster.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/master/EventMaster.kt @@ -18,6 +18,7 @@ import de.bixilon.minosoft.modding.event.events.CancelableEvent import de.bixilon.minosoft.modding.event.events.Event import de.bixilon.minosoft.modding.event.invoker.EventInstantFireable import de.bixilon.minosoft.modding.event.invoker.EventInvoker +import de.bixilon.minosoft.modding.event.invoker.OneShotInvoker import de.bixilon.minosoft.util.KUtil.synchronizedSetOf import de.bixilon.minosoft.util.KUtil.toSynchronizedList import de.bixilon.minosoft.util.KUtil.toSynchronizedSet @@ -44,13 +45,18 @@ open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaste parent.fireEvent(event) } - for (eventInvoker in eventInvokers.toSynchronizedList()) { - if (!eventInvoker.eventType.isAssignableFrom(event::class.java)) { + for (invoker in eventInvokers.toSynchronizedList()) { + if (!invoker.eventType.isAssignableFrom(event::class.java)) { continue } - eventInvoker(event) + invoker(event) + + if (invoker is OneShotInvoker && invoker.oneShot) { + eventInvokers -= invoker + } } + if (event is CancelableEvent) { val cancelled = event.cancelled event.cancelled = false // Cleanup memory @@ -59,8 +65,8 @@ open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaste return false } - fun unregisterEvent(method: EventInvoker?) { - eventInvokers -= method ?: return + override fun unregisterEvent(invoker: EventInvoker?) { + eventInvokers -= invoker ?: return } override fun registerEvent(invoker: T): T { @@ -76,11 +82,6 @@ open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaste return invoker } - override fun registerEvents(vararg invokers: EventInvoker) { - for (invoker in invokers) { - registerEvent(invoker) - } - } override fun iterator(): Iterator { return eventInvokers.toSynchronizedList().iterator() diff --git a/src/main/java/de/bixilon/minosoft/modding/event/master/GlobalEventMaster.kt b/src/main/java/de/bixilon/minosoft/modding/event/master/GlobalEventMaster.kt index d7a315c65..58adb2f6e 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/master/GlobalEventMaster.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/master/GlobalEventMaster.kt @@ -17,6 +17,6 @@ import de.bixilon.minosoft.modding.event.address.ServerAddressValidator import de.bixilon.minosoft.modding.event.invoker.EventInvoker import de.bixilon.minosoft.util.KUtil.synchronizedMapOf -class GlobalEventMaster : EventMaster() { +object GlobalEventMaster : EventMaster() { val specificEventInvokers: MutableMap, MutableSet> = synchronizedMapOf() } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt index 3e2a2d0b9..f188a92ae 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/Connection.kt @@ -73,7 +73,7 @@ abstract class Connection : AbstractEventMaster { abstract fun handlePacket(packet: S2CPacket) - open fun unregisterEvent(invoker: EventInvoker?) { + override fun unregisterEvent(invoker: EventInvoker?) { eventMaster.unregisterEvent(invoker) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt index c0ada1ba0..c93d78390 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/PlayConnection.kt @@ -40,6 +40,7 @@ import de.bixilon.minosoft.modding.event.events.ProtocolStateChangeEvent import de.bixilon.minosoft.modding.event.events.RegistriesLoadEvent import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionStateChangeEvent import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.packets.c2s.handshaking.HandshakeC2SP import de.bixilon.minosoft.protocol.packets.c2s.login.LoginStartC2SP @@ -114,7 +115,7 @@ class PlayConnection( when (value) { ProtocolStates.HANDSHAKING -> { state = PlayConnectionStates.HANDSHAKING - for ((validators, invokers) in Minosoft.GLOBAL_EVENT_MASTER.specificEventInvokers) { + for ((validators, invokers) in GlobalEventMaster.specificEventInvokers) { var valid = false for (serverAddress in validators) { if (serverAddress.check(address)) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.kt b/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.kt index 9f0dd0ec1..484d0cb2c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.kt @@ -13,11 +13,11 @@ package de.bixilon.minosoft.protocol.protocol import com.google.common.collect.HashBiMap -import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.config.server.Server import de.bixilon.minosoft.data.text.BaseComponent import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.modding.event.events.LANServerDiscoverEvent +import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.util.KUtil.toSynchronizedMap import de.bixilon.minosoft.util.Util import de.bixilon.minosoft.util.logging.Log @@ -49,7 +49,7 @@ object LANServerListener { val packet = DatagramPacket(buffer, buffer.size) socket.receive(packet) val broadcast = String(buffer, 0, packet.length, StandardCharsets.UTF_8) - Log.log(LogMessageType.NETWORK_PACKETS_IN, LogLevels.INFO) { "Received LAN servers broadcast (${packet.address.hostAddress}:${packet.port}): $broadcast" } + Log.log(LogMessageType.NETWORK_PACKETS_IN, LogLevels.INFO) { "LAN servers broadcast (${packet.address.hostAddress}:${packet.port}): $broadcast" } val sender = packet.address if (SERVERS.containsKey(sender)) { // This guy sent us already a server, maybe just the regular 1.5 second interval, a duplicate or a DOS attack...We don't care @@ -62,7 +62,7 @@ object LANServerListener { if (SERVERS.size > ProtocolDefinition.LAN_SERVER_MAXIMUM_SERVERS) { continue } - if (Minosoft.GLOBAL_EVENT_MASTER.fireEvent(LANServerDiscoverEvent(packet.address, server))) { + if (GlobalEventMaster.fireEvent(LANServerDiscoverEvent(packet.address, server))) { continue } SERVERS[sender] = server diff --git a/src/main/resources/assets/minosoft/language/en_us.lang b/src/main/resources/assets/minosoft/language/en_us.lang index 170abdc98..2b28ddd99 100644 --- a/src/main/resources/assets/minosoft/language/en_us.lang +++ b/src/main/resources/assets/minosoft/language/en_us.lang @@ -5,6 +5,8 @@ minosoft:general.delete=Delete minosoft:eros_window_title=Minosoft +minosoft:server_type.custom=Custom +minosoft:server_type.lan=LAN minosoft:server_info.server_name=Server name minosoft:server_info.server_address=Server address