diff --git a/Credits.md b/Credits.md index 72be609f5..5e42f1f49 100644 --- a/Credits.md +++ b/Credits.md @@ -4,7 +4,8 @@ - [Mojang](https://mojang.com) For the original game. Many people (including me) blame mojang for making "bad decisions". imho that is kind of true. I know the protocol is a mess at some point, but also genius on the other side. The thing is, minecraft is more than a protocol. While reversing the game, I saw so much stuff. The original game has around 20 Mib of code. That is immense. Every different particle behaves different and has so much thinking in it. It is incredible, that somebody thought, that the campfire particle has a velocity of 0.81 in y direction, etc (just an example, not quite true). I never thought of it. I learned so much while writing minosoft and want to thank mojang for it. The game is just fascinating, in players view and even more in developer view. -- [PixLyzer](https://gitlab.bixilon.de/bixilon/pixlyzer) -- [Burger](https://github.com/Pokechu22/Burger) -- [wiki.vg](https://wiki.vg) +- [PixLyzer](https://gitlab.bixilon.de/bixilon/pixlyzer) (For providing data) +- [Burger](https://github.com/Pokechu22/Burger) (For generating protocol diffs in old versions) +- [wiki.vg](https://wiki.vg) (For providing a lot of documentation about old versions) +- [yarn](https://github.com/fabricmc/yarn) For providing better mappings than mojang thus letting me easier reverse the protocol - `#mcdevs` for being available when I needed help diff --git a/build.gradle.kts b/build.gradle.kts index 405cf13ce..7dfe28bbb 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -287,9 +287,9 @@ fun DependencyHandler.netty(name: String) { implementation("io.netty", "netty-$name", nettyVersion) } -fun DependencyHandler.lwjgl(name: String) { +fun DependencyHandler.lwjgl(name: String? = null) { var artifactId = "lwjgl" - if (name.isNotEmpty()) { + if (name != null) { artifactId += "-$name" } implementation("org.lwjgl", artifactId, lwjglVersion) @@ -309,7 +309,7 @@ dependencies { implementation("org.kamranzafar", "jtar", "2.3") implementation("org.reflections", "reflections", "0.10.2") implementation("it.unimi.dsi", "fastutil-core", "8.5.9") - implementation("org.xeustechnologies", "jcl-core", version = "2.8") + implementation("org.xeustechnologies", "jcl-core", "2.8") // ikonli @@ -335,7 +335,7 @@ dependencies { // lwjgl implementation(platform("org.lwjgl:lwjgl-bom:$lwjglVersion")) - lwjgl("") + lwjgl() lwjgl("glfw") lwjgl("openal") lwjgl("opengl") diff --git a/doc/Assets.md b/doc/Assets.md index f4245202d..b8847da84 100644 --- a/doc/Assets.md +++ b/doc/Assets.md @@ -36,7 +36,7 @@ Those assets are not modifiable and checked everytime they get loaded (to disabl ## Resource packs -They are pretty bugged, expect that things break. They are still supported. To add a resource pack, add this to `resource_packs` in the `resources.json: +They are pretty bugged, expect that things break. They are still supported. To add a resource pack, add this to `resource_packs` in the `resources.json`: ```json { diff --git a/doc/Modding2.md b/doc/Modding2.md index 178e87e41..1c9b775e9 100644 --- a/doc/Modding2.md +++ b/doc/Modding2.md @@ -24,4 +24,5 @@ - Multiple `mods` folders - pre boot (before loading anything) - boot (while loading everything else) - - post boot (start loading in while, but don't wait for them. Only wait before loading connection) + - post boot (start loading after booting, but don't wait for them. Only wait before loading connection) +- No classic event system, events are stateless. Everything that is stateful should use observables diff --git a/src/main/java/de/bixilon/minosoft/Minosoft.kt b/src/main/java/de/bixilon/minosoft/Minosoft.kt index 59310b38b..1b427ad22 100644 --- a/src/main/java/de/bixilon/minosoft/Minosoft.kt +++ b/src/main/java/de/bixilon/minosoft/Minosoft.kt @@ -120,7 +120,7 @@ object Minosoft { BOOT_LATCH.await() val end = nanos() Log.log(LogMessageType.OTHER, LogLevels.INFO) { "Minosoft boot sequence finished in ${(end - start).formatNanos()}!" } - GlobalEventMaster.fireEvent(FinishInitializingEvent()) + GlobalEventMaster.fire(FinishInitializingEvent()) DefaultThreadPool += { ModLoader.load(LoadingPhases.POST_BOOT, CountUpAndDownLatch(0)) } diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt index 4c0253cf8..70f6f8bac 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/account/AccountProfileManager.kt @@ -42,7 +42,7 @@ object AccountProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(AccountProfileSelectEvent(value)) + GlobalEventMaster.fire(AccountProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): AccountProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt index 31f47c80c..344b5c957 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/audio/AudioProfileManager.kt @@ -43,7 +43,7 @@ object AudioProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(AudioProfileSelectEvent(value)) + GlobalEventMaster.fire(AudioProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): AudioProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt index 522a49bcf..1bcd1fe2b 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/block/BlockProfileManager.kt @@ -42,7 +42,7 @@ object BlockProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(BlockProfileSelectEvent(value)) + GlobalEventMaster.fire(BlockProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): BlockProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt index fba211848..9e7a47252 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/connection/ConnectionProfileManager.kt @@ -42,7 +42,7 @@ object ConnectionProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(ConnectionProfileSelectEvent(value)) + GlobalEventMaster.fire(ConnectionProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): ConnectionProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt index bcd22405f..cf3d3fd2a 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/controls/ControlsProfileManager.kt @@ -42,7 +42,7 @@ object ControlsProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(ControlsProfileSelectEvent(value)) + GlobalEventMaster.fire(ControlsProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): ControlsProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt index 6562b61b6..a20cd4efd 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/entity/EntityProfileManager.kt @@ -42,7 +42,7 @@ object EntityProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(EntityProfileSelectEvent(value)) + GlobalEventMaster.fire(EntityProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): EntityProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt index 7b91b0d49..09966db70 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/eros/ErosProfileManager.kt @@ -53,7 +53,7 @@ object ErosProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(ErosProfileSelectEvent(value)) + GlobalEventMaster.fire(ErosProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): ErosProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfileManager.kt index e5b968ca3..915974b1e 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/gui/GUIProfileManager.kt @@ -42,7 +42,7 @@ object GUIProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(GUIProfileSelectEvent(value)) + GlobalEventMaster.fire(GUIProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): GUIProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt index 8527089ad..a6c979757 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/other/OtherProfileManager.kt @@ -42,7 +42,7 @@ object OtherProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(OtherProfileSelectEvent(value)) + GlobalEventMaster.fire(OtherProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): OtherProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt index c8291e81a..08464c470 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/particle/ParticleProfileManager.kt @@ -42,7 +42,7 @@ object ParticleProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(ParticleProfileSelectEvent(value)) + GlobalEventMaster.fire(ParticleProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): ParticleProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt index a037fbd64..e00c5ccea 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/rendering/RenderingProfileManager.kt @@ -42,7 +42,7 @@ object RenderingProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(RenderingProfileSelectEvent(value)) + GlobalEventMaster.fire(RenderingProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): RenderingProfile { diff --git a/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt b/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt index 15892c9c6..015cf6e64 100644 --- a/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt +++ b/src/main/java/de/bixilon/minosoft/config/profile/profiles/resources/ResourcesProfileManager.kt @@ -42,7 +42,7 @@ object ResourcesProfileManager : ProfileManager { set(value) { field = value GlobalProfileManager.selectProfile(this, value) - GlobalEventMaster.fireEvent(ResourcesProfileSelectEvent(value)) + GlobalEventMaster.fire(ResourcesProfileSelectEvent(value)) } override fun createProfile(name: String, description: String?): ResourcesProfile { diff --git a/src/main/java/de/bixilon/minosoft/data/chat/sender/PlayerEntityMessageSender.kt b/src/main/java/de/bixilon/minosoft/data/chat/sender/PlayerEntityMessageSender.kt index 843be9d8f..984415619 100644 --- a/src/main/java/de/bixilon/minosoft/data/chat/sender/PlayerEntityMessageSender.kt +++ b/src/main/java/de/bixilon/minosoft/data/chat/sender/PlayerEntityMessageSender.kt @@ -22,5 +22,5 @@ class PlayerEntityMessageSender( name: String, val player: PlayerEntity, ) : PlayerMessageSender(uuid, name) { - override val publicKey: PlayerPublicKey? get() = player.tabListItem.publicKey + override val publicKey: PlayerPublicKey? get() = player.additional.publicKey } diff --git a/src/main/java/de/bixilon/minosoft/data/chat/sender/UnspawnedMessageSender.kt b/src/main/java/de/bixilon/minosoft/data/chat/sender/UnspawnedMessageSender.kt index 5246a3c8d..2f27e66f9 100644 --- a/src/main/java/de/bixilon/minosoft/data/chat/sender/UnspawnedMessageSender.kt +++ b/src/main/java/de/bixilon/minosoft/data/chat/sender/UnspawnedMessageSender.kt @@ -13,13 +13,13 @@ package de.bixilon.minosoft.data.chat.sender -import de.bixilon.minosoft.data.entities.entities.player.tab.TabListItem +import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional import de.bixilon.minosoft.protocol.PlayerPublicKey import java.util.* class UnspawnedMessageSender( uuid: UUID, - val tab: TabListItem, + val tab: PlayerAdditional, ) : PlayerMessageSender(uuid, tab.name) { override val publicKey: PlayerPublicKey? get() = tab.publicKey } diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt index c75bfeef1..9708bc5bc 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt @@ -28,8 +28,8 @@ import de.bixilon.minosoft.data.entities.data.EntityData import de.bixilon.minosoft.data.entities.data.EntityDataField import de.bixilon.minosoft.data.entities.entities.LivingEntity import de.bixilon.minosoft.data.entities.entities.SynchronizedEntityData +import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional import de.bixilon.minosoft.data.entities.entities.player.properties.PlayerProperties -import de.bixilon.minosoft.data.entities.entities.player.tab.TabListItem import de.bixilon.minosoft.data.registries.entities.EntityType import de.bixilon.minosoft.data.registries.item.items.armor.DyeableArmorItem import de.bixilon.minosoft.data.text.formatting.color.ChatColors @@ -49,9 +49,9 @@ abstract class PlayerEntity( data: EntityData, position: Vec3d = Vec3d.EMPTY, rotation: EntityRotation = EntityRotation(0.0, 0.0), - name: String = "TBA", + name: String = "", properties: PlayerProperties? = null, - var tabListItem: TabListItem = TabListItem(name = name, gamemode = Gamemodes.SURVIVAL, properties = properties), + val additional: PlayerAdditional = PlayerAdditional(name = name, properties = properties), ) : LivingEntity(connection, entityType, data, position, rotation) { protected var _model: PlayerModel? get() = super.model.nullCast() @@ -64,11 +64,11 @@ abstract class PlayerEntity( @get:SynchronizedEntityData val gamemode: Gamemodes - get() = tabListItem.gamemode + get() = additional.gamemode @get:SynchronizedEntityData val name: String - get() = tabListItem.name + get() = additional.name @get:SynchronizedEntityData val playerAbsorptionHearts: Float @@ -139,7 +139,7 @@ abstract class PlayerEntity( if (chestPlate != null && chestPlate.item.item is DyeableArmorItem) { chestPlate._display?.dyeColor?.let { return it } } - val formattingCode = tabListItem.team?.formattingCode + val formattingCode = additional.team?.formattingCode if (formattingCode is RGBColor) { return formattingCode } diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt index 697685115..aa373bb9d 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt @@ -17,8 +17,8 @@ import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.entities.EntityRotation import de.bixilon.minosoft.data.entities.data.EntityData +import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional import de.bixilon.minosoft.data.entities.entities.player.properties.PlayerProperties -import de.bixilon.minosoft.data.entities.entities.player.tab.TabListItem import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.entities.EntityFactory import de.bixilon.minosoft.data.registries.entities.EntityType @@ -33,7 +33,7 @@ class RemotePlayerEntity( rotation: EntityRotation = EntityRotation(0.0, 0.0), name: String = "TBA", properties: PlayerProperties? = null, - tabListItem: TabListItem = TabListItem(name = name, gamemode = Gamemodes.SURVIVAL, properties = properties), + tabListItem: PlayerAdditional = PlayerAdditional(name = name, gamemode = Gamemodes.SURVIVAL, properties = properties), ) : PlayerEntity(connection, entityType, data, position, rotation, name, properties, tabListItem) { companion object : EntityFactory { diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabListItemData.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/additional/AdditionalDataUpdate.kt similarity index 93% rename from src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabListItemData.kt rename to src/main/java/de/bixilon/minosoft/data/entities/entities/player/additional/AdditionalDataUpdate.kt index e85431568..6d2da6345 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabListItemData.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/additional/AdditionalDataUpdate.kt @@ -11,7 +11,7 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.entities.player.tab +package de.bixilon.minosoft.data.entities.entities.player.additional import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.entities.entities.player.properties.PlayerProperties @@ -19,7 +19,7 @@ import de.bixilon.minosoft.data.scoreboard.Team import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.PlayerPublicKey -data class TabListItemData( +data class AdditionalDataUpdate( val name: String? = null, var ping: Int? = null, var gamemode: Gamemodes? = null, diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabListItem.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/additional/PlayerAdditional.kt similarity index 70% rename from src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabListItem.kt rename to src/main/java/de/bixilon/minosoft/data/entities/entities/player/additional/PlayerAdditional.kt index 7214babab..7214d93a3 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabListItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/additional/PlayerAdditional.kt @@ -11,8 +11,9 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data.entities.entities.player.tab +package de.bixilon.minosoft.data.entities.entities.player.additional +import de.bixilon.kutil.watcher.DataWatcher.Companion.watched import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.entities.entities.player.properties.PlayerProperties import de.bixilon.minosoft.data.scoreboard.Team @@ -20,25 +21,33 @@ import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.protocol.PlayerPublicKey import de.bixilon.minosoft.util.KUtil.nullCompare -data class TabListItem( - var name: String, - var ping: Int = -1, - var gamemode: Gamemodes = Gamemodes.SURVIVAL, - var displayName: ChatComponent = ChatComponent.of(name), - var properties: PlayerProperties? = null, - var team: Team? = null, - var publicKey: PlayerPublicKey? = null, -) : Comparable { - val tabDisplayName: ChatComponent - get() = team?.decorateName(displayName) ?: displayName +class PlayerAdditional( + name: String, + ping: Int = -1, + gamemode: Gamemodes = Gamemodes.SURVIVAL, + displayName: ChatComponent? = null, + properties: PlayerProperties? = null, + team: Team? = null, + publicKey: PlayerPublicKey? = null, +) : Comparable { + var name by watched(name) + var ping by watched(ping) + var gamemode by watched(gamemode) + var displayName by watched(displayName) + var properties by watched(properties) + var team by watched(team) + var publicKey by watched(publicKey) - fun merge(data: TabListItemData) { + val tabDisplayName: ChatComponent + get() = displayName?.let { team?.decorateName(it) ?: it } ?: ChatComponent.of(name) + + fun merge(data: AdditionalDataUpdate) { genericMerge(data) data.gamemode?.let { gamemode = it } data.publicKey?.let { publicKey = it } } - fun genericMerge(data: TabListItemData) { + fun genericMerge(data: AdditionalDataUpdate) { data.name?.let { name = it } data.ping?.let { ping = it } @@ -57,7 +66,7 @@ data class TabListItem( data.team?.let { team = it } } - override fun compareTo(other: TabListItem): Int { + override fun compareTo(other: PlayerAdditional): Int { if (this.gamemode != other.gamemode) { if (this.gamemode == Gamemodes.SPECTATOR) { return -1 diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/ExperienceCondition.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/ExperienceCondition.kt index 3eb02eb00..7f96ace34 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/ExperienceCondition.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/ExperienceCondition.kt @@ -13,8 +13,11 @@ package de.bixilon.minosoft.data.entities.entities.player.local +import de.bixilon.kutil.watcher.DataWatcher.Companion.watched + +@Deprecated("make values final") class ExperienceCondition { - var level = 0 - var totalExperience = 0 - var experienceBarProgress = 0.0f + var level by watched(0) + var total by watched(0) + var bar by watched(0.0f) } diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/HealthCondition.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/HealthCondition.kt index bddb917e3..9e9870cb6 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/HealthCondition.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/HealthCondition.kt @@ -15,6 +15,7 @@ package de.bixilon.minosoft.data.entities.entities.player.local import de.bixilon.kutil.watcher.DataWatcher.Companion.watched +@Deprecated("Make values final") class HealthCondition { var hp by watched(20.0f) var hunger by watched(20) diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/LocalPlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/LocalPlayerEntity.kt index ee36faff8..62d6c258b 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/LocalPlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/local/LocalPlayerEntity.kt @@ -30,6 +30,8 @@ import de.bixilon.kutil.collections.map.bi.SynchronizedBiMap import de.bixilon.kutil.math.interpolation.DoubleInterpolation.interpolateLinear import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.kutil.time.TimeUtil.millis +import de.bixilon.kutil.watcher.DataWatcher.Companion.observe +import de.bixilon.kutil.watcher.DataWatcher.Companion.watched import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.abilities.ItemCooldown @@ -94,15 +96,16 @@ class LocalPlayerEntity( val containers: SynchronizedBiMap = synchronizedBiMapOf( ProtocolDefinition.PLAYER_CONTAINER_ID to inventory, ) - var selectedHotbarSlot: Int = 0 - set(value) { - if (field == value) { - return - } - field = value + + var selectedHotbarSlot: Int by watched(0) + + init { + this::selectedHotbarSlot.observe(this) { equipment.remove(InventorySlots.EquipmentSlots.MAIN_HAND) - equipment[InventorySlots.EquipmentSlots.MAIN_HAND] = inventory.getHotbarSlot(value) ?: return + equipment[InventorySlots.EquipmentSlots.MAIN_HAND] = inventory.getHotbarSlot(it) ?: return@observe } + } + var openedContainer: Container? = null val itemCooldown: MutableMap = synchronizedMapOf() diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabList.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabList.kt index be5c27c26..f21935380 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabList.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/tab/TabList.kt @@ -13,12 +13,13 @@ package de.bixilon.minosoft.data.entities.entities.player.tab +import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional import de.bixilon.minosoft.data.text.ChatComponent import java.util.* class TabList { - val tabListItemsByUUID: MutableMap = mutableMapOf() - val tabListItemsByName: MutableMap = mutableMapOf() + val tabListItemsByUUID: MutableMap = mutableMapOf() + val tabListItemsByName: MutableMap = mutableMapOf() var header = ChatComponent.of("") var footer = ChatComponent.of("") } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/gamemode/GamemodeChangeEvent.kt b/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/gamemode/GamemodeChangeEvent.kt deleted file mode 100644 index c6ad87095..000000000 --- a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/gamemode/GamemodeChangeEvent.kt +++ /dev/null @@ -1,26 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.data.registries.other.game.event.handlers.gamemode - -import de.bixilon.minosoft.data.abilities.Gamemodes -import de.bixilon.minosoft.modding.event.EventInitiators -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection - -class GamemodeChangeEvent( - connection: PlayConnection, - initiator: EventInitiators, - val previousGameMode: Gamemodes, - val gamemode: Gamemodes, -) : PlayConnectionEvent(connection, initiator) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/gamemode/GamemodeChangeGameEventHandler.kt b/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/gamemode/GamemodeChangeGameEventHandler.kt index a251667df..69d7b2201 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/gamemode/GamemodeChangeGameEventHandler.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/gamemode/GamemodeChangeGameEventHandler.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -16,7 +16,6 @@ package de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.other.game.event.handlers.GameEventHandler -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -24,12 +23,11 @@ object GamemodeChangeGameEventHandler : GameEventHandler { override val RESOURCE_LOCATION: ResourceLocation = "minecraft:gamemode_change".toResourceLocation() override fun handle(data: Float, connection: PlayConnection) { - val previous = connection.player.tabListItem.gamemode + val previous = connection.player.additional.gamemode val next = Gamemodes[data.toInt()] if (previous == next) { return } - connection.player.tabListItem.gamemode = next - connection.fireEvent(GamemodeChangeEvent(connection, EventInitiators.SERVER, previous, next)) + connection.player.additional.gamemode = next } } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEvent.kt b/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEvent.kt index 9c00458ec..20144201e 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEvent.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEvent.kt @@ -13,12 +13,10 @@ package de.bixilon.minosoft.data.registries.other.game.event.handlers.win -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection class WinGameEvent( connection: PlayConnection, - initiator: EventInitiators, val showCredits: Boolean, -) : PlayConnectionEvent(connection, initiator) +) : PlayConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEventHandler.kt b/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEventHandler.kt index 327c0b3ec..927c088f2 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEventHandler.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/other/game/event/handlers/win/WinGameEventHandler.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.data.registries.other.game.event.handlers.win import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.other.game.event.handlers.GameEventHandler -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -25,7 +24,7 @@ object WinGameEventHandler : GameEventHandler { override fun handle(data: Float, connection: PlayConnection) { val credits = data.toInt() == 0x01 - connection.fireEvent(WinGameEvent(connection, EventInitiators.SERVER, credits)) + connection.fire(WinGameEvent(connection, credits)) if (!credits) { connection.sendPacket(ClientActionC2SP(ClientActionC2SP.ClientActions.PERFORM_RESPAWN)) } diff --git a/src/main/java/de/bixilon/minosoft/data/registries/versions/MinecraftRegistryFixer.kt b/src/main/java/de/bixilon/minosoft/data/registries/versions/MinecraftRegistryFixer.kt index d4ac316c9..8bbd24314 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/versions/MinecraftRegistryFixer.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/versions/MinecraftRegistryFixer.kt @@ -16,14 +16,14 @@ package de.bixilon.minosoft.data.registries.versions import de.bixilon.minosoft.data.entities.block.FlowerPotBlockEntity import de.bixilon.minosoft.data.registries.blocks.entites.BlockEntityType import de.bixilon.minosoft.modding.event.events.loading.RegistriesLoadEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection object MinecraftRegistryFixer { fun register(connection: PlayConnection) { - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.state != RegistriesLoadEvent.States.POST) { return@of } diff --git a/src/main/java/de/bixilon/minosoft/data/scoreboard/ScoreboardManager.kt b/src/main/java/de/bixilon/minosoft/data/scoreboard/ScoreboardManager.kt index e91dcbc75..93e7b75f7 100644 --- a/src/main/java/de/bixilon/minosoft/data/scoreboard/ScoreboardManager.kt +++ b/src/main/java/de/bixilon/minosoft/data/scoreboard/ScoreboardManager.kt @@ -49,7 +49,7 @@ class ScoreboardManager(private val connection: PlayConnection) { if (!fireEvent) { continue } - connection.fireEvent(ScoreTeamChangeEvent(connection, objective, score, team, remove)) + connection.fire(ScoreTeamChangeEvent(connection, objective, score, team, remove)) } } objective.scores.lock.release() diff --git a/src/main/java/de/bixilon/minosoft/data/world/World.kt b/src/main/java/de/bixilon/minosoft/data/world/World.kt index 12a30332e..f84518ac6 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/World.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/World.kt @@ -20,7 +20,6 @@ import de.bixilon.kutil.concurrent.pool.ThreadPool import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalTask import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalWorker import de.bixilon.kutil.watcher.DataWatcher.Companion.watched -import de.bixilon.minosoft.data.Difficulties import de.bixilon.minosoft.data.entities.block.BlockEntity import de.bixilon.minosoft.data.registries.biomes.Biome import de.bixilon.minosoft.data.registries.blocks.BlockState @@ -35,6 +34,7 @@ import de.bixilon.minosoft.data.world.border.WorldBorder import de.bixilon.minosoft.data.world.chunk.Chunk import de.bixilon.minosoft.data.world.chunk.light.SectionLight import de.bixilon.minosoft.data.world.chunk.neighbours.ChunkNeighbours +import de.bixilon.minosoft.data.world.difficulty.WorldDifficulty import de.bixilon.minosoft.data.world.particle.AbstractParticleRenderer import de.bixilon.minosoft.data.world.particle.WorldParticleRenderer import de.bixilon.minosoft.data.world.positions.BlockPosition @@ -48,7 +48,6 @@ import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.blockPosition import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.chunkPosition import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.inChunkPosition -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.blocks.BlockSetEvent import de.bixilon.minosoft.modding.event.events.blocks.chunk.ChunkDataChangeEvent import de.bixilon.minosoft.modding.event.events.blocks.chunk.ChunkUnloadEvent @@ -70,8 +69,7 @@ class World( val entities = WorldEntities() var hardcore by watched(false) var dimension: DimensionProperties? by watched(null) - var difficulty: Difficulties? by watched(null) - var difficultyLocked by watched(false) + var difficulty: WorldDifficulty? by watched(null) var hashedSeed = 0L val time = WorldTime(this) val weather = WorldWeather() @@ -181,7 +179,7 @@ class World( blockState?.block?.onPlace(connection, blockPosition, blockState) chunk[inChunkPosition] = blockState chunk.getOrPutBlockEntity(inChunkPosition) - connection.fireEvent( + connection.fire( BlockSetEvent( connection = connection, blockPosition = blockPosition, @@ -232,10 +230,10 @@ class World( val offset = ChunkNeighbours.OFFSETS[index] val neighbourPosition = chunkPosition + offset neighbour.neighbours.remove(-offset) - connection.fireEvent(ChunkDataChangeEvent(connection, EventInitiators.UNKNOWN, neighbourPosition, neighbour)) + connection.fire(ChunkDataChangeEvent(connection, neighbourPosition, neighbour)) } // connection.world.view.updateServerViewDistance(chunkPosition, false) - connection.fireEvent(ChunkUnloadEvent(connection, EventInitiators.UNKNOWN, chunkPosition, chunk)) + connection.fire(ChunkUnloadEvent(connection, chunkPosition, chunk)) if (chunkPosition.x <= chunkMin.x || chunkPosition.y <= chunkMin.y || chunkPosition.x >= chunkMax.x || chunkPosition.y >= chunkMax.y) { recalculateChunkExtreme() } @@ -379,7 +377,7 @@ class World( chunk.light.recalculate(false) chunk.light.propagateFromNeighbours() - connection.fireEvent(ChunkDataChangeEvent(connection, EventInitiators.UNKNOWN, chunk.chunkPosition, chunk)) + connection.fire(ChunkDataChangeEvent(connection, chunk.chunkPosition, chunk)) } fun onChunkUpdate(chunkPosition: ChunkPosition, chunk: Chunk, checkNeighbours: Boolean = true) { @@ -410,7 +408,7 @@ class World( } if (chunk.neighbours.complete) { - connection.fireEvent(ChunkDataChangeEvent(connection, EventInitiators.UNKNOWN, chunkPosition, chunk)) + connection.fire(ChunkDataChangeEvent(connection, chunkPosition, chunk)) } } diff --git a/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt b/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt index 1936e13d7..51875ab38 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt @@ -35,7 +35,6 @@ import de.bixilon.minosoft.gui.rendering.util.VecUtil.inSectionHeight import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.chunkPosition import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.inChunkPosition -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.blocks.chunk.ChunkDataChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.chunk.ChunkUtil @@ -178,7 +177,7 @@ class Chunk( } lock.unlock() world.onChunkUpdate(chunkPosition, this) - connection.fireEvent(ChunkDataChangeEvent(connection, EventInitiators.UNKNOWN, chunkPosition, this)) + connection.fire(ChunkDataChangeEvent(connection, chunkPosition, this)) } fun getOrPut(sectionHeight: Int, calculateLight: Boolean = true): ChunkSection? { diff --git a/src/main/java/de/bixilon/minosoft/data/world/chunk/light/ChunkLight.kt b/src/main/java/de/bixilon/minosoft/data/world/chunk/light/ChunkLight.kt index e31820fef..125b13331 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/chunk/light/ChunkLight.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/chunk/light/ChunkLight.kt @@ -23,7 +23,6 @@ import de.bixilon.minosoft.data.world.chunk.ChunkSection import de.bixilon.minosoft.data.world.chunk.neighbours.ChunkNeighbours import de.bixilon.minosoft.gui.rendering.util.VecUtil.inSectionHeight import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.blocks.chunk.LightChangeEvent import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition @@ -55,17 +54,17 @@ class ChunkLight(private val chunk: Chunk) { val chunkPosition = chunk.chunkPosition if (fireSameChunkEvent) { - connection.fireEvent(LightChangeEvent(connection, EventInitiators.CLIENT, chunkPosition, chunk, sectionHeight, true)) + connection.fire(LightChangeEvent(connection, chunkPosition, chunk, sectionHeight, true)) val down = section.neighbours?.get(Directions.O_DOWN)?.light if (down != null && down.update) { down.update = false - connection.fireEvent(LightChangeEvent(connection, EventInitiators.CLIENT, chunkPosition, chunk, sectionHeight - 1, false)) + connection.fire(LightChangeEvent(connection, chunkPosition, chunk, sectionHeight - 1, false)) } val up = section.neighbours?.get(Directions.O_UP)?.light if (up?.update == true) { up.update = false - connection.fireEvent(LightChangeEvent(connection, EventInitiators.CLIENT, chunkPosition, chunk, sectionHeight + 1, false)) + connection.fire(LightChangeEvent(connection, chunkPosition, chunk, sectionHeight + 1, false)) } } @@ -84,7 +83,7 @@ class ChunkLight(private val chunk: Chunk) { continue } neighbourSection.light.update = false - connection.fireEvent(LightChangeEvent(connection, EventInitiators.CLIENT, nextPosition, chunk, sectionHeight + chunkY, false)) + connection.fire(LightChangeEvent(connection, nextPosition, chunk, sectionHeight + chunkY, false)) } } } diff --git a/src/main/java/de/bixilon/minosoft/data/Difficulties.kt b/src/main/java/de/bixilon/minosoft/data/world/difficulty/Difficulties.kt similarity index 92% rename from src/main/java/de/bixilon/minosoft/data/Difficulties.kt rename to src/main/java/de/bixilon/minosoft/data/world/difficulty/Difficulties.kt index 1d28a24ae..ba5744617 100644 --- a/src/main/java/de/bixilon/minosoft/data/Difficulties.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/difficulty/Difficulties.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -10,7 +10,7 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.data +package de.bixilon.minosoft.data.world.difficulty import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/annotations/EventHandler.kt b/src/main/java/de/bixilon/minosoft/data/world/difficulty/WorldDifficulty.kt similarity index 70% rename from src/main/java/de/bixilon/minosoft/modding/event/events/annotations/EventHandler.kt rename to src/main/java/de/bixilon/minosoft/data/world/difficulty/WorldDifficulty.kt index 7b4d3acf7..dc8794181 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/annotations/EventHandler.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/difficulty/WorldDifficulty.kt @@ -10,13 +10,10 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.modding.event.events.annotations -import de.bixilon.minosoft.modding.EventPriorities +package de.bixilon.minosoft.data.world.difficulty -@Target(AnnotationTarget.FUNCTION) -@Retention(AnnotationRetention.RUNTIME) -annotation class EventHandler( - val ignoreCancelled: Boolean = false, - val priority: EventPriorities = EventPriorities.NORMAL, +class WorldDifficulty( + val difficulty: Difficulties, + val locked: Boolean, ) diff --git a/src/main/java/de/bixilon/minosoft/data/world/time/WorldTime.kt b/src/main/java/de/bixilon/minosoft/data/world/time/WorldTime.kt index 6deb09807..97e1b7eb8 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/time/WorldTime.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/time/WorldTime.kt @@ -15,17 +15,19 @@ package de.bixilon.minosoft.data.world.time import de.bixilon.kotlinglm.func.common.clamp import de.bixilon.kutil.math.simple.DoubleMath.fractional +import de.bixilon.kutil.watcher.DataWatcher.Companion.watched import de.bixilon.minosoft.data.world.World import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import kotlin.math.PI import kotlin.math.abs import kotlin.math.cos +@Deprecated("make values final") class WorldTime( private val world: World, ) { - var time = 0L - var age = 0L + var time by watched(0L) + var age by watched(0L) val skyAngle: Float diff --git a/src/main/java/de/bixilon/minosoft/data/world/view/WorldView.kt b/src/main/java/de/bixilon/minosoft/data/world/view/WorldView.kt index 750f99815..d6408d537 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/view/WorldView.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/view/WorldView.kt @@ -34,7 +34,7 @@ class WorldView( return } field = realValue - connection.fireEvent(ViewDistanceChangeEvent(connection, realValue)) + connection.fire(ViewDistanceChangeEvent(connection, realValue)) } var serverSimulationDistance = Int.MAX_VALUE @@ -49,7 +49,7 @@ class WorldView( return } field = realValue - connection.fireEvent(SimulationDistanceChangeEvent(connection, realValue)) + connection.fire(SimulationDistanceChangeEvent(connection, realValue)) particleViewDistance = minOf(realValue, connection.profiles.particle.viewDistance) } @@ -60,7 +60,7 @@ class WorldView( return } field = realValue - connection.fireEvent(ParticleViewDistanceChangeEvent(connection, realValue)) + connection.fire(ParticleViewDistanceChangeEvent(connection, realValue)) } @Synchronized 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 a32af39da..58fa20a84 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/Eros.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/Eros.kt @@ -18,7 +18,7 @@ import de.bixilon.minosoft.config.profile.profiles.eros.ErosProfileSelectEvent 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.listener.CallbackEventListener import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.util.KUtil.toResourceLocation import javafx.stage.Window @@ -58,14 +58,14 @@ object Eros { init { - GlobalEventMaster.registerEvent(CallbackEventInvoker.of { + GlobalEventMaster.register(CallbackEventListener.of { if (skipErosStartup) { return@of } start() }) - GlobalEventMaster.registerEvent(CallbackEventInvoker.of { + GlobalEventMaster.register(CallbackEventListener.of { if (skipErosStartup || !this::mainErosController.isInitialized) { return@of } 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 b25bb8808..305cc37f0 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 @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -41,6 +41,6 @@ abstract class JavaFXController : Initializable { open fun postInit() = Unit open fun terminate() { - GlobalEventMaster.fireEvent(ErosControllerTerminateEvent(this)) + GlobalEventMaster.fire(ErosControllerTerminateEvent(this)) } } 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 41a1443c5..c3e9a58d1 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 @@ -38,7 +38,7 @@ import de.bixilon.minosoft.gui.eros.main.play.server.card.FaviconManager.saveFav import de.bixilon.minosoft.gui.eros.main.play.server.card.ServerCard import de.bixilon.minosoft.gui.eros.main.play.server.card.ServerCardController import de.bixilon.minosoft.gui.eros.main.play.server.type.types.ServerType -import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventInvoker +import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventListener import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext import de.bixilon.minosoft.modding.event.events.KickEvent @@ -163,7 +163,7 @@ class ServerListController : EmbeddedJavaFXController(), Refreshable { JavaFXUtil.runLater { updateServer(server, true) } } - connection.registerEvent(JavaFXEventInvoker.of { event -> + connection.register(JavaFXEventListener.of { event -> KickDialog( title = "minosoft:connection.kick.title".toResourceLocation(), header = "minosoft:connection.kick.header".toResourceLocation(), @@ -171,7 +171,7 @@ class ServerListController : EmbeddedJavaFXController(), Refreshable { reason = event.reason, ).show() }) - connection.registerEvent(JavaFXEventInvoker.of { event -> + connection.register(JavaFXEventListener.of { event -> KickDialog( title = "minosoft:connection.login_kick.title".toResourceLocation(), header = "minosoft:connection.login_kick.header".toResourceLocation(), diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCard.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCard.kt index d985d23a7..fd35fe6f5 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCard.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCard.kt @@ -18,7 +18,7 @@ import de.bixilon.kutil.collections.CollectionUtil.synchronizedSetOf import de.bixilon.kutil.collections.map.SynchronizedMap import de.bixilon.minosoft.config.profile.profiles.eros.server.entries.Server import de.bixilon.minosoft.data.accounts.Account -import de.bixilon.minosoft.modding.event.invoker.EventInvoker +import de.bixilon.minosoft.modding.event.listener.EventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection @@ -29,20 +29,20 @@ class ServerCard( val connections: MutableSet = synchronizedSetOf() private var pinged = false - var statusReceiveInvoker: EventInvoker? = null + var statusReceiveInvoker: EventListener? = null set(value) { field = value - ping.registerEvent(value ?: return) + ping.register(value ?: return) } - var statusErrorInvoker: EventInvoker? = null + var statusErrorInvoker: EventListener? = null set(value) { field = value - ping.registerEvent(value ?: return) + ping.register(value ?: return) } - var pongInvoker: EventInvoker? = null + var pongInvoker: EventListener? = null set(value) { field = value - ping.registerEvent(value ?: return) + ping.register(value ?: return) } init { @@ -51,9 +51,9 @@ class ServerCard( fun unregister() { - statusReceiveInvoker?.let { statusReceiveInvoker = null; ping.unregisterEvent(it) } - statusErrorInvoker?.let { statusErrorInvoker = null; ping.unregisterEvent(it) } - pongInvoker?.let { pongInvoker = null; ping.unregisterEvent(it) } + statusReceiveInvoker?.let { statusReceiveInvoker = null; ping.unregister(it) } + statusErrorInvoker?.let { statusErrorInvoker = null; ping.unregister(it) } + pongInvoker?.let { pongInvoker = null; ping.unregister(it) } } @Synchronized diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCardController.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCardController.kt index 7589a7032..0c4bcce89 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCardController.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/card/ServerCardController.kt @@ -25,7 +25,7 @@ import de.bixilon.minosoft.gui.eros.card.CardFactory import de.bixilon.minosoft.gui.eros.main.play.server.ServerListController import de.bixilon.minosoft.gui.eros.main.play.server.card.FaviconManager.favicon import de.bixilon.minosoft.gui.eros.main.play.server.card.FaviconManager.saveFavicon -import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventInvoker +import de.bixilon.minosoft.gui.eros.modding.invoker.JavaFXEventListener import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.ctext import de.bixilon.minosoft.gui.eros.util.JavaFXUtil.text @@ -84,7 +84,7 @@ class ServerCardController : AbstractCardController(), WatcherRefere item.server.favicon?.let { faviconFX.image = it } - item.statusReceiveInvoker = JavaFXEventInvoker.of { + item.statusReceiveInvoker = JavaFXEventListener.of { if (this.item != item || it.connection.error != null) { // error already occurred, not setting any data return@of @@ -117,7 +117,7 @@ class ServerCardController : AbstractCardController(), WatcherRefere serverList?.onPingUpdate(item) } - item.statusErrorInvoker = JavaFXEventInvoker.of { + item.statusErrorInvoker = JavaFXEventListener.of { if (this.item != item) { return@of } @@ -127,7 +127,7 @@ class ServerCardController : AbstractCardController(), WatcherRefere serverList?.onPingUpdate(item) } - item.pongInvoker = JavaFXEventInvoker.of { + item.pongInvoker = JavaFXEventListener.of { if (this.item != item || it.connection.error != null) { // error already occurred, not setting any data return@of diff --git a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/types/CustomServerType.kt b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/types/CustomServerType.kt index 4e8d928e0..5fa362ac9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/types/CustomServerType.kt +++ b/src/main/java/de/bixilon/minosoft/gui/eros/main/play/server/type/types/CustomServerType.kt @@ -20,7 +20,7 @@ import de.bixilon.minosoft.config.profile.profiles.eros.server.entries.Server import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.gui.eros.main.play.server.card.ServerCard import de.bixilon.minosoft.modding.EventPriorities -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.protocol.network.connection.status.StatusConnectionStates import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -36,7 +36,7 @@ object CustomServerType : ServerType { override val translationKey: ResourceLocation = "minosoft:server_type.custom".toResourceLocation() init { - GlobalEventMaster.registerEvent(CallbackEventInvoker.of(priority = EventPriorities.LOW) { + GlobalEventMaster.register(CallbackEventListener.of(priority = EventPriorities.LOW) { servers = ErosProfileManager.selected.server.entries }) } 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/JavaFXEventListener.kt similarity index 65% rename from src/main/java/de/bixilon/minosoft/gui/eros/modding/invoker/JavaFXEventInvoker.kt rename to src/main/java/de/bixilon/minosoft/gui/eros/modding/invoker/JavaFXEventListener.kt index 8fc14ad84..3c909bff4 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/JavaFXEventListener.kt @@ -13,41 +13,48 @@ package de.bixilon.minosoft.gui.eros.modding.invoker +import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.minosoft.gui.eros.util.JavaFXUtil import de.bixilon.minosoft.modding.EventPriorities 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.event.listener.EventInstantFireable +import de.bixilon.minosoft.modding.event.listener.EventListener +import de.bixilon.minosoft.modding.event.listener.OneShotListener +import de.bixilon.minosoft.modding.event.master.AbstractEventMaster import kotlin.reflect.KClass /** * Basically a CallbackEventInvoker, bt the callback runs on the java fx ui thread */ -class JavaFXEventInvoker private constructor( +class JavaFXEventListener 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, EventPriorities.NORMAL), EventInstantFireable, OneShotInvoker { +) : EventListener(ignoreCancelled, EventPriorities.NORMAL), EventInstantFireable, OneShotListener { override operator fun invoke(event: Event) { - if (!this.isIgnoreCancelled && event is CancelableEvent && event.cancelled) { + if (!this.ignoreCancelled && event is CancelableEvent && event.cancelled) { return } JavaFXUtil.runLater { - callback(event as E) + callback(event.unsafeCast()) } } companion object { - @JvmOverloads - @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") - inline fun of(ignoreCancelled: Boolean = false, instantFire: Boolean = true, oneShot: Boolean = false, noinline callback: (E) -> Unit): JavaFXEventInvoker { - return JavaFXEventInvoker( + + inline fun AbstractEventMaster.javaFX(ignoreCancelled: Boolean = false, instantFire: Boolean = true, oneShot: Boolean = false, noinline callback: (E) -> Unit): JavaFXEventListener { + val listener = of(ignoreCancelled, instantFire, oneShot, callback) + register(listener) + return listener + } + + inline fun of(ignoreCancelled: Boolean = false, instantFire: Boolean = true, oneShot: Boolean = false, noinline callback: (E) -> Unit): JavaFXEventListener { + return JavaFXEventListener( ignoreCancelled = ignoreCancelled, callback = callback, oneShot = oneShot, diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt index 87afb595f..8335a62a6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt @@ -20,6 +20,7 @@ import de.bixilon.kutil.math.simple.DoubleMath.rounded10 import de.bixilon.kutil.primitive.BooleanUtil.decide import de.bixilon.kutil.time.TimeUtil.millis import de.bixilon.kutil.watcher.DataWatcher.Companion.observe +import de.bixilon.kutil.watcher.DataWatcher.Companion.watched import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegateWatcher.Companion.profileWatch import de.bixilon.minosoft.gui.rendering.camera.Camera import de.bixilon.minosoft.gui.rendering.font.Font @@ -28,7 +29,8 @@ import de.bixilon.minosoft.gui.rendering.framebuffer.FramebufferManager import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.input.key.DefaultKeyCombinations import de.bixilon.minosoft.gui.rendering.input.key.RenderWindowInputHandler -import de.bixilon.minosoft.gui.rendering.modding.events.* +import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent +import de.bixilon.minosoft.gui.rendering.modding.events.WindowCloseEvent import de.bixilon.minosoft.gui.rendering.models.ModelLoader import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererManager import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererManager.Companion.registerDefault @@ -42,12 +44,13 @@ import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow import de.bixilon.minosoft.gui.rendering.tint.TintManager import de.bixilon.minosoft.gui.rendering.util.ScreenshotTaker import de.bixilon.minosoft.gui.rendering.world.LightMap -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.terminal.RunConfiguration import de.bixilon.minosoft.util.Stopwatch +import de.bixilon.minosoft.util.delegate.RenderingDelegate.observeRendering import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType @@ -99,18 +102,7 @@ class RenderWindow( lateinit var thread: Thread private set - var renderingState = RenderingStates.RUNNING - private set(value) { - if (field == value) { - return - } - if (field == RenderingStates.PAUSED) { - queue.clear() - } - val previousState = field - field = value - connection.fireEvent(RenderingStateChangeEvent(connection, previousState, value)) - } + var state by watched(RenderingStates.RUNNING) init { connection::state.observe(this) { @@ -127,6 +119,16 @@ class RenderWindow( } profile.performance::slowRendering.profileWatch(this, profile = profile) { this.slowRendering = it } renderer.registerDefault(connection.profiles) + + var paused = false + this::state.observe(this) { + paused = if (paused) { + queue.clear() + false + } else { + it == RenderingStates.PAUSED + } + } } fun init(latch: CountUpAndDownLatch) { @@ -194,26 +196,22 @@ class RenderWindow( Log.log(LogMessageType.RENDERING_LOADING, LogLevels.VERBOSE) { "Registering callbacks (after ${stopwatch.labTime()})..." } - connection.registerEvent(CallbackEventInvoker.of { - renderingState = it.focused.decide(RenderingStates.RUNNING, RenderingStates.SLOW) - }) + window::focused.observeRendering(this) { state = it.decide(RenderingStates.RUNNING, RenderingStates.SLOW) } - connection.registerEvent(CallbackEventInvoker.of { - renderingState = it.iconified.decide(RenderingStates.PAUSED, RenderingStates.RUNNING) - }) + window::iconified.observeRendering(this) { state = it.decide(RenderingStates.PAUSED, RenderingStates.RUNNING) } profile.animations::sprites.profileWatch(this, true, profile = profile) { textureManager.staticTextures.animator.enabled = it } inputHandler.init() DefaultKeyCombinations.registerAll(this) - connection.registerEvent(CallbackEventInvoker.of { - if (it.state != RenderingStates.RUNNING) { + this::state.observe(this) { + if (it != RenderingStates.RUNNING) { pause(true) } - }) + } - connection.fireEvent(ResizeWindowEvent(this, previousSize = Vec2i(0, 0), size = window.size)) + connection.events.fire(ResizeWindowEvent(this, previousSize = Vec2i(0, 0), size = window.size)) textureManager.dynamicTextures.activate() textureManager.staticTextures.activate() @@ -229,18 +227,18 @@ class RenderWindow( fun startLoop() { Log.log(LogMessageType.RENDERING_LOADING) { "Starting loop" } - connection.registerEvent(CallbackEventInvoker.of { renderingState = RenderingStates.QUITTING }) + connection.events.listen { state = RenderingStates.QUITTING } while (true) { - if (renderingState == RenderingStates.PAUSED) { + if (state == RenderingStates.PAUSED) { window.title = "Minosoft | Paused" } - while (renderingState == RenderingStates.PAUSED) { + while (state == RenderingStates.PAUSED) { Thread.sleep(20L) window.pollEvents() } - if (connection.wasConnected || !renderingState.active) { + if (connection.wasConnected || !state.active) { break } @@ -282,11 +280,11 @@ class RenderWindow( // handle opengl context tasks, but limit it per frame queue.timeWork(RenderConstants.MAXIMUM_QUEUE_TIME_PER_FRAME) - if (renderingState == RenderingStates.STOPPED) { + if (state == RenderingStates.STOPPED) { window.close() break } - if (renderingState == RenderingStates.SLOW && slowRendering) { + if (state == RenderingStates.SLOW && slowRendering) { Thread.sleep(100L) } @@ -301,7 +299,7 @@ class RenderWindow( } Log.log(LogMessageType.RENDERING_LOADING) { "Destroying render window..." } - renderingState = RenderingStates.STOPPED + state = RenderingStates.STOPPED renderSystem.destroy() window.destroy() Log.log(LogMessageType.RENDERING_LOADING) { "Render window destroyed!" } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/Rendering.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/Rendering.kt index 9c75b6e48..0c55c3bfb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/Rendering.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/Rendering.kt @@ -72,7 +72,7 @@ class Rendering(private val connection: PlayConnection) { exception.printStackTrace() try { renderWindow.window.destroy() - connection.fireEvent(WindowCloseEvent(renderWindow, window = renderWindow.window)) + connection.fire(WindowCloseEvent(renderWindow, window = renderWindow.window)) } catch (ignored: Throwable) { } connection.network.disconnect() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt index e2cb70c57..adc30d75e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/camera/MatrixHandler.kt @@ -30,7 +30,7 @@ import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.blockPosition import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.chunkPosition import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.sectionHeight -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener class MatrixHandler( private val renderWindow: RenderWindow, @@ -103,7 +103,7 @@ class MatrixHandler( } fun init() { - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { calculateProjectionMatrix(Vec2(it.size)) upToDate = false }) @@ -140,14 +140,16 @@ class MatrixHandler( camera.visibilityGraph.updateCamera(cameraBlockPosition.chunkPosition, cameraBlockPosition.sectionHeight) } - connection.fireEvent(CameraPositionChangeEvent(renderWindow, eyePosition)) + connection.fire(CameraPositionChangeEvent(renderWindow, eyePosition)) - connection.fireEvent(CameraMatrixChangeEvent( - renderWindow = renderWindow, - viewMatrix = viewMatrix, - projectionMatrix = projectionMatrix, - viewProjectionMatrix = viewProjectionMatrix, - )) + connection.fire( + CameraMatrixChangeEvent( + renderWindow = renderWindow, + viewMatrix = viewMatrix, + projectionMatrix = projectionMatrix, + viewProjectionMatrix = viewProjectionMatrix, + ) + ) updateShaders(if (debugView) debugPosition else eyePosition) upToDate = true diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityRenderer.kt index 8510486ab..77b10d36d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entity/EntityRenderer.kt @@ -35,7 +35,8 @@ import de.bixilon.minosoft.gui.rendering.system.base.RenderSystem import de.bixilon.minosoft.gui.rendering.system.base.phases.OpaqueDrawable import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent import de.bixilon.minosoft.modding.event.events.EntitySpawnEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.format import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -59,15 +60,15 @@ class EntityRenderer( private set override fun init(latch: CountUpAndDownLatch) { - connection.registerEvent(CallbackEventInvoker.of { event -> + connection.register(CallbackEventListener.of { event -> DefaultThreadPool += { event.entity.createModel(this)?.let { models[event.entity] = it } } }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { DefaultThreadPool += add@{ toUnload += models.remove(it.entity) ?: return@add } }) - connection.registerEvent(CallbackEventInvoker.of { + connection.events.listen { runAsync { it.updateVisibility(visibilityGraph) } - }) + } profile.hitbox::enabled.profileWatch(this, profile = profile) { this.hitboxes = it } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/entity/models/minecraft/player/PlayerModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/entity/models/minecraft/player/PlayerModel.kt index 5b14eb764..1994dd981 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/entity/models/minecraft/player/PlayerModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/entity/models/minecraft/player/PlayerModel.kt @@ -32,7 +32,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.texture.dynamic.DynamicText import de.bixilon.minosoft.util.KUtil.toResourceLocation open class PlayerModel(renderer: EntityRenderer, player: PlayerEntity) : SkeletalEntityModel(renderer, player), DynamicStateChangeCallback { - private var properties = player.tabListItem.properties + private var properties = player.additional.properties private var skin: DynamicTexture? = null protected var refreshModel = false @@ -87,7 +87,7 @@ open class PlayerModel(renderer: EntityRenderer, player: PlayerEntity) : Skeleta } override fun prepareAsync() { - val properties = entity.tabListItem.properties // ToDo: Check for skin layers + val properties = entity.additional.properties // ToDo: Check for skin layers if (refreshModel || this.properties != properties) { _instance = instance instance = createModel(properties) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt index 517d445d4..1339a34d9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/framebuffer/FramebufferManager.kt @@ -19,7 +19,7 @@ import de.bixilon.minosoft.gui.rendering.framebuffer.world.WorldFramebuffer import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent import de.bixilon.minosoft.gui.rendering.renderer.drawable.Drawable import de.bixilon.minosoft.gui.rendering.system.base.PolygonModes -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener class FramebufferManager( private val renderWindow: RenderWindow, @@ -32,7 +32,7 @@ class FramebufferManager( world.init() gui.init() - renderWindow.connection.registerEvent(CallbackEventInvoker.of { + renderWindow.connection.register(CallbackEventListener.of { world.framebuffer.resize(it.size) gui.framebuffer.resize(it.size) }) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIRenderer.kt index 8bb03cc11..a8af937d9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/GUIRenderer.kt @@ -38,7 +38,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.buffer.frame.Framebuffer import de.bixilon.minosoft.gui.rendering.system.base.phases.OtherDrawable import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -81,7 +81,7 @@ class GUIRenderer( renderWindow.textureManager.staticTextures.animator.use(shader) renderWindow.textureManager.dynamicTextures.use(shader) - connection.registerEvent(CallbackEventInvoker.of { recalculateMatrices(it.size) }) + connection.register(CallbackEventListener.of { recalculateMatrices(it.size) }) profile::scale.profileWatchRendering(this, profile = profile) { recalculateMatrices(scale = it) } gui.postInit() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Pollable.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Pollable.kt index edf25732b..af7af8f0d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Pollable.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Pollable.kt @@ -13,6 +13,7 @@ package de.bixilon.minosoft.gui.rendering.gui.elements +@Deprecated("events") interface Pollable { /** diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt index 0cb732593..69a6f523a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/CreditsScreen.kt @@ -21,7 +21,7 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Compa import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP @Deprecated("ToDo") @@ -52,7 +52,7 @@ class CreditsScreen( companion object { fun register(guiRenderer: GUIRenderer) { - guiRenderer.connection.registerEvent(CallbackEventInvoker.of { + guiRenderer.connection.register(CallbackEventListener.of { if (!it.showCredits) { return@of } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/SignEditorScreen.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/SignEditorScreen.kt index 4b85743cc..e3aaa2262 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/SignEditorScreen.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/SignEditorScreen.kt @@ -46,7 +46,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTex import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes import de.bixilon.minosoft.gui.rendering.world.entities.renderer.sign.SignBlockEntityRenderer import de.bixilon.minosoft.modding.event.events.OpenSignEditorEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.packets.c2s.play.block.SignTextC2SP class SignEditorScreen( @@ -220,7 +220,7 @@ class SignEditorScreen( private val BACKGROUND_SIZE = Vec2i(24, 12) * BACKGROUND_SCALE fun register(guiRenderer: GUIRenderer) { - guiRenderer.connection.registerEvent(CallbackEventInvoker.of { guiRenderer.gui.push(SignEditorScreen(guiRenderer, it.blockPosition)) }) + guiRenderer.connection.register(CallbackEventListener.of { guiRenderer.gui.push(SignEditorScreen(guiRenderer, it.blockPosition)) }) } } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt index 0c9426369..7fec96680 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/container/ContainerGUIManager.kt @@ -22,7 +22,7 @@ import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.screen.container.inventory.LocalInventoryScreen import de.bixilon.minosoft.modding.event.events.container.ContainerCloseEvent import de.bixilon.minosoft.modding.event.events.container.ContainerOpenEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.KUtil.toResourceLocation object ContainerGUIManager { @@ -65,7 +65,7 @@ object ContainerGUIManager { fun register(guiRenderer: GUIRenderer) { registerLocalContainerEvent(guiRenderer) - guiRenderer.connection.registerEvent(CallbackEventInvoker.of { open(guiRenderer, it.container) }) - guiRenderer.connection.registerEvent(CallbackEventInvoker.of { close(guiRenderer, it.container) }) + guiRenderer.connection.register(CallbackEventListener.of { open(guiRenderer, it.container) }) + guiRenderer.connection.register(CallbackEventListener.of { close(guiRenderer, it.container) }) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/debug/DebugMenu.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/debug/DebugMenu.kt index e842efa66..2de1fd287 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/debug/DebugMenu.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/debug/DebugMenu.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.debug import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kotlinglm.vec3.Vec3d -import de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode.GamemodeChangeEvent import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments import de.bixilon.minosoft.gui.rendering.gui.elements.input.button.ButtonElement @@ -24,7 +23,6 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.text.TextElement import de.bixilon.minosoft.gui.rendering.gui.gui.GUIBuilder import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.Menu -import de.bixilon.minosoft.modding.event.EventInitiators class DebugMenu(guiRenderer: GUIRenderer) : Menu(guiRenderer) { private val connection = guiRenderer.connection @@ -34,10 +32,9 @@ class DebugMenu(guiRenderer: GUIRenderer) : Menu(guiRenderer) { add(SpacerElement(guiRenderer, Vec2i(0, 10))) add(ButtonElement(guiRenderer, "Switch to next gamemode") { connection.util.typeChat("/gamemode ${connection.player.gamemode.next().name.lowercase()}") }) add(ButtonElement(guiRenderer, "Hack to next gamemode") { - val previous = connection.player.tabListItem.gamemode + val previous = connection.player.additional.gamemode val next = previous.next() - connection.player.tabListItem.gamemode = next - connection.fireEvent(GamemodeChangeEvent(connection, EventInitiators.SERVER, previous, next)) + connection.player.additional.gamemode = next }) add(ButtonElement(guiRenderer, "Toggle collisions") { connection.player.hasCollisions = !connection.player.hasCollisions diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/pause/RespawnMenu.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/pause/RespawnMenu.kt index eb6e4c2e3..e6e387cae 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/pause/RespawnMenu.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/gui/screen/menu/pause/RespawnMenu.kt @@ -26,7 +26,7 @@ import de.bixilon.minosoft.gui.rendering.gui.gui.GUIBuilder import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.gui.screen.menu.Menu import de.bixilon.minosoft.modding.event.events.RespawnEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP class RespawnMenu(guiRenderer: GUIRenderer) : Menu(guiRenderer) { @@ -72,7 +72,7 @@ class RespawnMenu(guiRenderer: GUIRenderer) : Menu(guiRenderer) { guiRenderer.gui.pop(element) } } - guiRenderer.connection.registerEvent(CallbackEventInvoker.of { + guiRenderer.connection.register(CallbackEventListener.of { val element = guiRenderer.gui[this] if (element.state == ElementStates.CLOSED) { return@of diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/bossbar/BossbarLayout.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/bossbar/BossbarLayout.kt index 1703dacbe..59d4c996e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/bossbar/BossbarLayout.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/bossbar/BossbarLayout.kt @@ -25,7 +25,7 @@ import de.bixilon.minosoft.gui.rendering.gui.gui.LayoutedGUIElement import de.bixilon.minosoft.gui.rendering.gui.hud.Initializable import de.bixilon.minosoft.gui.rendering.gui.hud.elements.HUDBuilder import de.bixilon.minosoft.modding.event.events.bossbar.* -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.KUtil.toResourceLocation class BossbarLayout(guiRenderer: GUIRenderer) : RowLayout(guiRenderer, HorizontalAlignments.CENTER, 2), LayoutedElement, Initializable { @@ -92,25 +92,25 @@ class BossbarLayout(guiRenderer: GUIRenderer) : RowLayout(guiRenderer, Horizonta ) override fun postInit() { - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { val element = BossbarElement(guiRenderer, it.bossbar, atlas) this += element val previous = bossbars.put(it.bossbar, element) ?: return@of this -= previous }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { val element = bossbars.remove(it.bossbar) ?: return@of this -= element }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { bossbars[it.bossbar]?.apply() }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { bossbars[it.bossbar]?.apply() }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { bossbars[it.bossbar]?.apply() }) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/ChatElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/ChatElement.kt index 67a9214b5..c16e8d89e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/ChatElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/ChatElement.kt @@ -35,7 +35,7 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent import de.bixilon.minosoft.modding.event.events.chat.ChatMessageReceiveEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.KUtil.toResourceLocation class ChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRenderer), LayoutedElement { @@ -81,13 +81,13 @@ class ChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRenderer), override fun init() { - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.message.type.position == ChatTextPositions.HOTBAR) { return@of } DefaultThreadPool += { messages += it.message.text } }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (!profile.chat.internal.hidden) { return@of } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/InternalChatElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/InternalChatElement.kt index dd370e7ef..8af260dd9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/InternalChatElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/chat/InternalChatElement.kt @@ -19,7 +19,7 @@ import de.bixilon.minosoft.config.profile.delegate.watcher.SimpleProfileDelegate import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.elements.Element import de.bixilon.minosoft.modding.event.events.InternalMessageReceiveEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener class InternalChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRenderer) { private val chatProfile = profile.chat.internal @@ -47,7 +47,7 @@ class InternalChatElement(guiRenderer: GUIRenderer) : AbstractChatElement(guiRen override fun init() { - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (profile.chat.internal.hidden) { return@of } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt index 5141250a0..321310637 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt @@ -42,7 +42,7 @@ class HotbarCoreElement(guiRenderer: GUIRenderer) : Element(guiRenderer) { private val topRight = RowLayout(guiRenderer, HorizontalAlignments.RIGHT, 1) // contains hunger, air - private var gamemode = guiRenderer.renderWindow.connection.player.tabListItem.gamemode + private var gamemode = guiRenderer.renderWindow.connection.player.additional.gamemode private var renderElements = setOf( base, @@ -99,7 +99,7 @@ class HotbarCoreElement(guiRenderer: GUIRenderer) : Element(guiRenderer) { val size = Vec2i.EMPTY - gamemode = guiRenderer.renderWindow.connection.player.tabListItem.gamemode + gamemode = guiRenderer.renderWindow.connection.player.additional.gamemode if (gamemode != Gamemodes.SPECTATOR) { size += base.size } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt index 021da0a9b..1e41fa781 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt @@ -20,7 +20,6 @@ import de.bixilon.minosoft.data.container.InventorySlots import de.bixilon.minosoft.data.container.stack.ItemStack import de.bixilon.minosoft.data.entities.entities.player.Arms import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode.GamemodeChangeEvent import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer import de.bixilon.minosoft.gui.rendering.gui.elements.Element import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments @@ -35,11 +34,10 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.left import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.right -import de.bixilon.minosoft.modding.event.events.ExperienceChangeEvent -import de.bixilon.minosoft.modding.event.events.SelectHotbarSlotEvent import de.bixilon.minosoft.modding.event.events.chat.ChatMessageReceiveEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.KUtil.toResourceLocation +import de.bixilon.minosoft.util.delegate.RenderingDelegate.observeRendering import java.lang.Integer.max class HotbarElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable { @@ -172,13 +170,18 @@ class HotbarElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedEl prefMaxSize = Vec2i(-1, -1) val connection = renderWindow.connection - connection.registerEvent(CallbackEventInvoker.of { core.experience.apply() }) + val player = connection.player - connection.registerEvent(CallbackEventInvoker.of { forceApply() }) + // ToDo: Don't listen 3 times + player.experienceCondition::level.observeRendering(this) { core.experience.apply() } + player.experienceCondition::total.observeRendering(this) { core.experience.apply() } + player.experienceCondition::bar.observeRendering(this) { core.experience.apply() } - connection.registerEvent(CallbackEventInvoker.of { core.base.apply() }) + player.additional::gamemode.observeRendering(this) { forceApply() } - connection.registerEvent(CallbackEventInvoker.of { + player::selectedHotbarSlot.observeRendering(this) { core.base.apply() } + + connection.register(CallbackEventListener.of { if (it.message.type.position != ChatTextPositions.HOTBAR) { return@of } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt index 3b7754c2a..adecfa4f9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarExperienceBarElement.kt @@ -76,8 +76,8 @@ class HotbarExperienceBarElement(guiRenderer: GUIRenderer) : Element(guiRenderer if (!jumping) { val experienceCondition = guiRenderer.renderWindow.connection.player.experienceCondition - if (this.jumping != jumping || progress != experienceCondition.experienceBarProgress || this.level != experienceCondition.level) { - this.progress = experienceCondition.experienceBarProgress + if (this.jumping != jumping || progress != experienceCondition.bar || this.level != experienceCondition.level) { + this.progress = experienceCondition.bar this.jumping = jumping this.level = experienceCondition.level return true diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt index 46cd2ecff..a6c00d0f6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/other/DebugHUDElement.kt @@ -24,7 +24,6 @@ import de.bixilon.minosoft.config.key.KeyBinding import de.bixilon.minosoft.config.key.KeyCodes import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode.GamemodeChangeEvent import de.bixilon.minosoft.data.text.BaseComponent import de.bixilon.minosoft.data.text.TextComponent import de.bixilon.minosoft.data.text.formatting.color.ChatColors @@ -50,9 +49,7 @@ import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent import de.bixilon.minosoft.gui.rendering.particle.ParticleRenderer import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.gui.rendering.world.WorldRenderer -import de.bixilon.minosoft.modding.event.events.DifficultyChangeEvent -import de.bixilon.minosoft.modding.event.events.TimeChangeEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener.Companion.listen import de.bixilon.minosoft.properties.MinosoftProperties import de.bixilon.minosoft.properties.MinosoftPropertiesLoader import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition @@ -169,21 +166,19 @@ class DebugHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), Layouted layout += LineSpacerElement(guiRenderer) layout += TextElement(guiRenderer, BaseComponent("Gamemode ", connection.player.gamemode)).apply { - connection.registerEvent(CallbackEventInvoker.of { - text = BaseComponent("Gamemode ", it.gamemode) - }) + connection.player.additional::gamemode.observe(this) { text = BaseComponent("Gamemode ", it) } } - layout += TextElement(guiRenderer, BaseComponent("Difficulty ", connection.world.difficulty, ", locked=", connection.world.difficultyLocked)).apply { - connection.registerEvent(CallbackEventInvoker.of { - text = BaseComponent("Difficulty ", it.difficulty, ", locked=", it.locked) - }) + layout += TextElement(guiRenderer, BaseComponent("Difficulty ", connection.world.difficulty?.difficulty, ", locked=", connection.world.difficulty?.locked)).apply { + connection.world::difficulty.observe(this) { text = BaseComponent("Difficulty ", it?.difficulty, ", locked=", it?.locked) } } layout += TextElement(guiRenderer, "Time TBA").apply { - connection.registerEvent(CallbackEventInvoker.of { - text = BaseComponent("Time ", abs(it.time % ProtocolDefinition.TICKS_PER_DAY), ", moving=", it.time >= 0, ", day=", abs(it.age) / ProtocolDefinition.TICKS_PER_DAY) - }) + fun update(time: Long, age: Long) { + text = BaseComponent("Time ", abs(time % ProtocolDefinition.TICKS_PER_DAY), ", moving=", time >= 0, ", day=", abs(age) / ProtocolDefinition.TICKS_PER_DAY) + } + connection.world.time::time.observe(this) { update(it, connection.world.time.age) } + connection.world.time::age.observe(this) { update(connection.world.time.time, it) } } layout += AutoTextElement(guiRenderer, 1) { "Fun effect: " + renderWindow.framebufferManager.world.`fun`.effect?.resourceLocation.format() } @@ -221,9 +216,9 @@ class DebugHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), Layouted layout += LineSpacerElement(guiRenderer) layout += TextElement(guiRenderer, "Display ", HorizontalAlignments.RIGHT).apply { - guiRenderer.renderWindow.connection.registerEvent(CallbackEventInvoker.of { + guiRenderer.renderWindow.connection.events.listen { text = "Display ${it.size.x.format()}x${it.size.y.format()}" - }) + } } renderWindow.renderSystem.apply { @@ -241,7 +236,7 @@ class DebugHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), Layouted layout += LineSpacerElement(guiRenderer) - layout += TextElement(guiRenderer, "${connection.size.format()}x listeners", HorizontalAlignments.RIGHT) + layout += TextElement(guiRenderer, "${connection.events.size.format()}x listeners", HorizontalAlignments.RIGHT) layout += LineSpacerElement(guiRenderer) @@ -294,7 +289,7 @@ class DebugHUDElement(guiRenderer: GUIRenderer) : Element(guiRenderer), Layouted val builder = StringBuilder() if (chunk.blocksInitialized) builder.append('s') // for block states if (chunk.biomesInitialized) builder.append('b') // biomes - if (chunk.neighbours != null) builder.append('n') // neighbours + if (chunk.neighbours.complete) builder.append('n') // neighbours value = builder.toString() } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/scoreboard/ScoreboardSideElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/scoreboard/ScoreboardSideElement.kt index e8b4bc8f1..19b7ee384 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/scoreboard/ScoreboardSideElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/scoreboard/ScoreboardSideElement.kt @@ -39,7 +39,7 @@ import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.modding.event.events.scoreboard.* import de.bixilon.minosoft.modding.event.events.scoreboard.team.TeamUpdateEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.KUtil.toResourceLocation class ScoreboardSideElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedElement, Initializable, AsyncDrawable { @@ -163,38 +163,38 @@ class ScoreboardSideElement(guiRenderer: GUIRenderer) : Element(guiRenderer), La override fun init() { val connection = renderWindow.connection - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.position != ScoreboardPositions.SIDEBAR) { return@of } this.objective = it.objective }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.objective != this.objective) { return@of } this.updateName() }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.score.objective != this.objective) { return@of } this.removeScore(it.score) }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.score.objective != this.objective) { return@of } this.updateScore(it.score) }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.score.objective != this.objective) { return@of } this.updateScore(it.score) }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { val objective = this.objective ?: return@of for ((_, score) in objective.scores) { if (it.team != score.team) { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListElement.kt index b68d82b6e..e3c38845c 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListElement.kt @@ -39,7 +39,7 @@ import de.bixilon.minosoft.gui.rendering.renderer.drawable.AsyncDrawable import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.modding.event.events.TabListEntryChangeEvent import de.bixilon.minosoft.modding.event.events.TabListInfoChangeEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.KUtil.toResourceLocation import java.util.* import java.util.concurrent.locks.ReentrantLock @@ -221,11 +221,11 @@ class TabListElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedE override fun init() { val connection = renderWindow.connection - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { header.text = it.header footer.text = it.footer }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { for ((uuid, entry) in it.items) { if (entry == null) { remove(uuid) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt index 263da48e2..f3d1eb489 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/tab/TabListEntryElement.kt @@ -17,7 +17,7 @@ import de.bixilon.kotlinglm.vec2.Vec2 import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kutil.concurrent.pool.DefaultThreadPool import de.bixilon.minosoft.data.abilities.Gamemodes -import de.bixilon.minosoft.data.entities.entities.player.tab.TabListItem +import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.data.text.formatting.color.RGBColor import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer @@ -40,7 +40,7 @@ class TabListEntryElement( guiRenderer: GUIRenderer, val tabList: TabListElement, uuid: UUID, - val item: TabListItem, + val item: PlayerAdditional, width: Int, ) : Element(guiRenderer), Pollable, Comparable { @@ -56,7 +56,7 @@ class TabListEntryElement( private val nameElement = TextElement(guiRenderer, "", background = false, parent = this) private lateinit var pingElement: AtlasImageElement - private var displayName: ChatComponent = item.displayName + private var displayName: ChatComponent = item.tabDisplayName private var ping = item.ping private var gamemode: Gamemodes = item.gamemode private var name: String = item.name diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/title/TitleElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/title/TitleElement.kt index 410045f7b..f37078970 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/title/TitleElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/title/TitleElement.kt @@ -29,7 +29,7 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.modding.event.events.title.* -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.util.KUtil.toResourceLocation import java.lang.Integer.max @@ -128,21 +128,21 @@ class TitleElement(guiRenderer: GUIRenderer) : Element(guiRenderer), LayoutedEle override fun init() { val connection = renderWindow.connection - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { this.reset() }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { this.hide() }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { this.title.text = it.title this.show() }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { this.subtitle.text = it.subtitle // layout.show() // non vanilla behavior }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { this.fadeInTime = it.fadeInTime * ProtocolDefinition.TICK_TIME.toLong() this.stayTime = it.stayTime * ProtocolDefinition.TICK_TIME.toLong() this.fadeOutTime = it.fadeOutTime * ProtocolDefinition.TICK_TIME.toLong() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/BreakInteractionHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/BreakInteractionHandler.kt index 5c1c89b8d..e10517bd6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/BreakInteractionHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/BreakInteractionHandler.kt @@ -32,7 +32,7 @@ import de.bixilon.minosoft.data.registries.other.world.event.handlers.BlockDestr import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.camera.target.targets.BlockTarget import de.bixilon.minosoft.modding.event.events.LegacyBlockBreakAckEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.move.SwingArmC2SP import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition @@ -253,7 +253,7 @@ class BreakInteractionHandler( KeyActions.CHANGE to setOf(KeyCodes.MOUSE_BUTTON_LEFT), )) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { when (it.actions) { PlayerActionC2SP.Actions.START_DIGGING -> { if (it.successful) { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/HotbarInteractionHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/HotbarInteractionHandler.kt index 4e5e0d87a..f98c9d593 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/HotbarInteractionHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/HotbarInteractionHandler.kt @@ -23,9 +23,7 @@ import de.bixilon.minosoft.data.container.InventorySlots import de.bixilon.minosoft.data.container.types.PlayerInventory import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.modding.events.input.MouseScrollEvent -import de.bixilon.minosoft.modding.event.EventInitiators -import de.bixilon.minosoft.modding.event.events.SelectHotbarSlotEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.packets.c2s.play.HotbarSlotC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.PlayerActionC2SP import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -48,10 +46,9 @@ class HotbarInteractionHandler( if (connection.player.selectedHotbarSlot == slot) { return } - connection.player.selectedHotbarSlot = slot interactionManager.use.stopUsingItem() + connection.player.selectedHotbarSlot = slot slotLimiter += { connection.sendPacket(HotbarSlotC2SP(slot)) } - connection.fireEvent(SelectHotbarSlotEvent(connection, EventInitiators.CLIENT, slot)) } fun swapItems() { @@ -83,7 +80,7 @@ class HotbarInteractionHandler( )) { selectSlot(i - 1) } } - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { currentScrollOffset += it.offset.y val limit = connection.profiles.controls.mouse.scrollSensitivity diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/SpectateInteractionManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/SpectateInteractionManager.kt index 71298e3bd..79a68a107 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/SpectateInteractionManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/interaction/SpectateInteractionManager.kt @@ -14,15 +14,15 @@ package de.bixilon.minosoft.gui.rendering.input.interaction import de.bixilon.kutil.rate.RateLimiter +import de.bixilon.kutil.watcher.DataWatcher.Companion.observe import de.bixilon.minosoft.config.key.KeyActions import de.bixilon.minosoft.config.key.KeyBinding import de.bixilon.minosoft.config.key.KeyCodes import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.entities.entities.Entity -import de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode.GamemodeChangeEvent import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.modding.event.events.CameraSetEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.KUtil.toResourceLocation class SpectateInteractionManager( @@ -32,12 +32,14 @@ class SpectateInteractionManager( private val rateLimiter = RateLimiter() fun init() { - renderWindow.inputHandler.registerKeyCallback(STOP_SPECTATING, KeyBinding( + renderWindow.inputHandler.registerKeyCallback( + STOP_SPECTATING, KeyBinding( KeyActions.PRESS to setOf(KeyCodes.KEY_LEFT_SHIFT), - )) { spectate(null) } + ) + ) { spectate(null) } - renderWindow.connection.registerEvent(CallbackEventInvoker.of { spectate(null) }) - renderWindow.connection.registerEvent(CallbackEventInvoker.of { spectate(it.entity) }) + connection.player.additional::gamemode.observe(this) { spectate(null) } + connection.register(CallbackEventListener.of { spectate(it.entity) }) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt index cf954f27e..f5d6d5859 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/key/RenderWindowInputHandler.kt @@ -36,7 +36,7 @@ import de.bixilon.minosoft.gui.rendering.system.window.CursorModes import de.bixilon.minosoft.gui.rendering.system.window.KeyChangeTypes import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2dUtil.EMPTY import de.bixilon.minosoft.modding.EventPriorities -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.format import de.bixilon.minosoft.util.KUtil.toResourceLocation @@ -94,11 +94,11 @@ class RenderWindowInputHandler( fun init() { interactionManager.init() - connection.registerEvent(CallbackEventInvoker.of { charInput(it.char) }) - connection.registerEvent(CallbackEventInvoker.of { keyInput(it.keyCode, it.keyChangeType) }) - connection.registerEvent(CallbackEventInvoker.of(priority = EventPriorities.LOW) { scroll(it.offset, it) }) + connection.register(CallbackEventListener.of { charInput(it.char) }) + connection.register(CallbackEventListener.of { keyInput(it.keyCode, it.keyChangeType) }) + connection.register(CallbackEventListener.of(priority = EventPriorities.LOW) { scroll(it.offset, it) }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { val inputHandler = inputHandler currentMousePosition = it.position if (inputHandler != null) { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/RenderingStateChangeEvent.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/RenderingStateChangeEvent.kt deleted file mode 100644 index 869a355b4..000000000 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/RenderingStateChangeEvent.kt +++ /dev/null @@ -1,25 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.rendering.modding.events - -import de.bixilon.minosoft.gui.rendering.RenderingStates -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection - -@Deprecated("Delegates") -class RenderingStateChangeEvent( - override val connection: PlayConnection, - val previousState: RenderingStates, - val state: RenderingStates, -) : PlayConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowFocusChangeEvent.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowFocusChangeEvent.kt deleted file mode 100644 index 080b0386a..000000000 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowFocusChangeEvent.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.rendering.modding.events - -import de.bixilon.minosoft.gui.rendering.RenderWindow -import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow - -class WindowFocusChangeEvent( - renderWindow: RenderWindow, - val window: BaseWindow, - val focused: Boolean, -) : RenderEvent(renderWindow) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowIconifyChangeEvent.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowIconifyChangeEvent.kt deleted file mode 100644 index 5005b7250..000000000 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/modding/events/WindowIconifyChangeEvent.kt +++ /dev/null @@ -1,23 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.rendering.modding.events - -import de.bixilon.minosoft.gui.rendering.RenderWindow -import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow - -class WindowIconifyChangeEvent( - renderWindow: RenderWindow, - val window: BaseWindow, - val iconified: Boolean, -) : RenderEvent(renderWindow) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/DefaultParticleBehavior.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/DefaultParticleBehavior.kt index 5a558d88b..ff1503703 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/DefaultParticleBehavior.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/DefaultParticleBehavior.kt @@ -18,10 +18,9 @@ import de.bixilon.kutil.concurrent.pool.DefaultThreadPool import de.bixilon.minosoft.gui.rendering.particle.types.norender.ExplosionEmitterParticle import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.explosion.ExplosionParticle import de.bixilon.minosoft.gui.rendering.util.VecUtil.times -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.ExplosionEvent import de.bixilon.minosoft.modding.event.events.ParticleSpawnEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels @@ -35,7 +34,7 @@ object DefaultParticleBehavior { val explosionEmitterParticleType = connection.registries.particleTypeRegistry[ExplosionEmitterParticle]!! val typesConfig = connection.profiles.particle.types val invokers = listOf( - CallbackEventInvoker.of { + CallbackEventListener.of { if (typesConfig.explosions) { return@of } @@ -45,11 +44,8 @@ object DefaultParticleBehavior { particleRenderer += ExplosionParticle(connection, Vec3d(it.position), explosionParticleType.default()) } }, - CallbackEventInvoker.of { + CallbackEventListener.of { DefaultThreadPool += add@{ - if (it.initiator == EventInitiators.SERVER && !typesConfig.packet) { - return@add - } fun spawn(position: Vec3d, velocity: Vec3d) { val factory = it.data.type.factory if (factory == null) { @@ -75,6 +71,6 @@ object DefaultParticleBehavior { }, ) - connection.registerEvents(*invokers.toTypedArray()) + connection.register(*invokers.toTypedArray()) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt index 96f50e2ef..fc71c6836 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/ParticleRenderer.kt @@ -37,7 +37,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.phases.TransparentDrawable import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader.Companion.loadAnimated import de.bixilon.minosoft.gui.rendering.system.base.shader.ShaderUniforms -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates.Companion.disconnected @@ -109,7 +109,7 @@ class ParticleRenderer( profile::maxAmount.profileWatch(this, true, profile) { maxAmount = minOf(it, RenderConstants.MAXIMUM_PARTICLE_AMOUNT) } profile::enabled.profileWatch(this, true, profile) { enabled = it } - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { renderWindow.queue += { fun applyToShader(shader: Shader) { shader.apply { @@ -144,7 +144,7 @@ class ParticleRenderer( connection.world.particleRenderer = this particleTask = TimeWorkerTask(ProtocolDefinition.TICK_TIME, maxDelayTime = ProtocolDefinition.TICK_TIME / 2) { - if (!renderWindow.renderingState.running || !enabled || connection.state != PlayConnectionStates.PLAYING) { + if (!renderWindow.state.running || !enabled || connection.state != PlayConnectionStates.PLAYING) { return@TimeWorkerTask } val cameraPosition = connection.player.positionInfo.chunkPosition @@ -190,7 +190,7 @@ class ParticleRenderer( } override fun addParticle(particle: Particle) { - if (!renderWindow.renderingState.running || !enabled) { + if (!renderWindow.state.running || !enabled) { return } val particleCount = particles.size + particleQueue.size diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt index aa4f1fd38..77c0aa904 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sky/SkyRenderer.kt @@ -18,6 +18,7 @@ import de.bixilon.kotlinglm.mat4x4.Mat4 import de.bixilon.kotlinglm.vec2.Vec2 import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kutil.latch.CountUpAndDownLatch +import de.bixilon.kutil.watcher.DataWatcher.Companion.observe import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.text.formatting.color.ChatColors import de.bixilon.minosoft.data.text.formatting.color.RGBColor @@ -32,8 +33,7 @@ import de.bixilon.minosoft.gui.rendering.system.base.phases.PreDrawable import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture import de.bixilon.minosoft.gui.rendering.textures.TextureUtil.texture import de.bixilon.minosoft.gui.rendering.util.mesh.SimpleTextureMesh -import de.bixilon.minosoft.modding.event.events.TimeChangeEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.minosoft @@ -62,18 +62,14 @@ class SkyRenderer( skySunMesh.load() - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { val viewProjectionMatrix = it.projectionMatrix * it.viewMatrix.toMat3().toMat4() renderWindow.queue += { skyboxShader.use().setMat4(SKY_MATRIX, Mat4(viewProjectionMatrix)) setSunMatrix(viewProjectionMatrix) } }) - connection.registerEvent(CallbackEventInvoker.of { - if (connection.world.time.time != it.time) { - updateSun = true - } - }) + connection.world.time::time.observe(this) { updateSun = true } sunTexture = renderWindow.textureManager.staticTextures.createTexture(SUN_TEXTURE_RESOURCE_LOCATION) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt index 582e74b37..feb6cc541 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt @@ -26,7 +26,7 @@ import de.bixilon.minosoft.gui.rendering.camera.MatrixHandler import de.bixilon.minosoft.gui.rendering.modding.events.CameraPositionChangeEvent import de.bixilon.minosoft.gui.rendering.sound.sounds.Sound import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels @@ -93,7 +93,7 @@ class AudioPlayer( listener.masterVolume = volumeConfig.masterVolume volumeConfig::masterVolume.profileWatch(this) { queue += { listener.masterVolume = it } } - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { queue += { listener.position = Vec3(it.newPosition) listener.setOrientation(it.renderWindow.camera.matrixHandler.cameraFront, MatrixHandler.CAMERA_UP_VEC3) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/DefaultAudioBehavior.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/DefaultAudioBehavior.kt index 61dd7c67b..90e09adec 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/DefaultAudioBehavior.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/DefaultAudioBehavior.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.sound import de.bixilon.minosoft.modding.event.events.ExplosionEvent import de.bixilon.minosoft.modding.event.events.PlaySoundEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import kotlin.random.Random @@ -26,10 +26,10 @@ object DefaultAudioBehavior { fun register(connection: PlayConnection) { val world = connection.world val invokers = listOf( - CallbackEventInvoker.of { world.playSound(it.soundEvent, it.position, it.volume, it.pitch) }, - CallbackEventInvoker.of { world.playSound(ENTITY_GENERIC_EXPLODE, it.position, 4.0f, (1.0f + (Random.nextFloat() - Random.nextFloat()) * 0.2f) * 0.7f) }, + CallbackEventListener.of { world.playSound(it.soundEvent, it.position, it.volume, it.pitch) }, + CallbackEventListener.of { world.playSound(ENTITY_GENERIC_EXPLODE, it.position, 4.0f, (1.0f + (Random.nextFloat() - Random.nextFloat()) * 0.2f) * 0.7f) }, ) - connection.registerEvents(*invokers.toTypedArray()) + connection.register(*invokers.toTypedArray()) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt index 443e0a016..1556df90a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/base/texture/TextureManager.kt @@ -84,7 +84,7 @@ abstract class TextureManager { return getFallbackTexture(uuid) } - fun getSkin(player: PlayerEntity, properties: PlayerProperties? = player.tabListItem.properties): DynamicTexture { + fun getSkin(player: PlayerEntity, properties: PlayerProperties? = player.additional.properties): DynamicTexture { if (player is LocalPlayerEntity) { return skin } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt index fce36126b..8b06741b7 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/opengl/OpenGLRenderSystem.kt @@ -35,7 +35,7 @@ import de.bixilon.minosoft.gui.rendering.system.opengl.texture.OpenGLTextureMana import de.bixilon.minosoft.gui.rendering.system.opengl.vendor.* import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh import de.bixilon.minosoft.gui.rendering.util.mesh.MeshStruct -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.util.logging.Log import de.bixilon.minosoft.util.logging.LogLevels import de.bixilon.minosoft.util.logging.LogMessageType @@ -131,7 +131,7 @@ class OpenGLRenderSystem( this.version = glGetString(GL_VERSION) ?: "UNKNOWN" this.gpuType = glGetString(GL_RENDERER) ?: "UNKNOWN" - renderWindow.connection.registerEvent(CallbackEventInvoker.of { + renderWindow.connection.register(CallbackEventListener.of { renderWindow.queue += { glViewport(0, 0, it.size.x, it.size.y) } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt index e0c6ca34d..bb68d5e66 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/BaseWindow.kt @@ -48,6 +48,9 @@ interface BaseWindow { val time: Double + val iconified: Boolean + val focused: Boolean + fun init(profile: RenderingProfile) { resizable = true profile.advanced::swapInterval.profileWatchRendering(this, true, profile) { swapInterval = it } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt index c49999eb6..d11eafeca 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/system/window/GLFWWindow.kt @@ -19,11 +19,14 @@ import de.bixilon.kutil.concurrent.pool.DefaultThreadPool import de.bixilon.kutil.latch.CountUpAndDownLatch import de.bixilon.kutil.os.OSTypes import de.bixilon.kutil.os.PlatformInfo +import de.bixilon.kutil.watcher.DataWatcher.Companion.watched import de.bixilon.minosoft.config.key.KeyCodes import de.bixilon.minosoft.config.profile.profiles.rendering.RenderingProfile import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.Rendering -import de.bixilon.minosoft.gui.rendering.modding.events.* +import de.bixilon.minosoft.gui.rendering.modding.events.RenderEvent +import de.bixilon.minosoft.gui.rendering.modding.events.ResizeWindowEvent +import de.bixilon.minosoft.gui.rendering.modding.events.WindowCloseEvent import de.bixilon.minosoft.gui.rendering.modding.events.input.MouseMoveEvent import de.bixilon.minosoft.gui.rendering.modding.events.input.MouseScrollEvent import de.bixilon.minosoft.gui.rendering.modding.events.input.RawCharInputEvent @@ -263,20 +266,22 @@ class GLFWWindow( glfwWindowHint(GLFW_OPENGL_PROFILE, if (coreProfile) GLFW_OPENGL_CORE_PROFILE else GLFW_OPENGL_ANY_PROFILE) } + override var focused by watched(false) + private fun onFocusChange(window: Long, focused: Boolean) { if (window != this.window) { return } - - fireGLFWEvent(WindowFocusChangeEvent(renderWindow, window = this, focused = focused)) + this.focused = focused } + override var iconified by watched(false) + private fun onIconify(window: Long, iconified: Boolean) { if (window != this.window) { return } - - fireGLFWEvent(WindowIconifyChangeEvent(renderWindow, window = this, iconified = iconified)) + this.iconified = iconified } private fun onClose(window: Long) { @@ -370,10 +375,10 @@ class GLFWWindow( private fun fireGLFWEvent(event: RenderEvent): Boolean { // ToDo: It looks like glfwPollEvents is mixing threads. This should not happen. if (Rendering.currentContext != event.renderWindow) { - event.renderWindow.queue += { eventMaster.fireEvent(event) } + event.renderWindow.queue += { eventMaster.fire(event) } return false } - return eventMaster.fireEvent(event) + return eventMaster.fire(event) } companion object { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt index 469f14b68..4ce717d07 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/WorldRenderer.kt @@ -36,7 +36,6 @@ import de.bixilon.minosoft.data.world.chunk.Chunk import de.bixilon.minosoft.data.world.chunk.ChunkSection import de.bixilon.minosoft.gui.rendering.RenderWindow import de.bixilon.minosoft.gui.rendering.RenderingStates -import de.bixilon.minosoft.gui.rendering.modding.events.RenderingStateChangeEvent import de.bixilon.minosoft.gui.rendering.modding.events.VisibilityGraphChangeEvent import de.bixilon.minosoft.gui.rendering.renderer.renderer.Renderer import de.bixilon.minosoft.gui.rendering.renderer.renderer.RendererBuilder @@ -72,7 +71,7 @@ import de.bixilon.minosoft.modding.event.events.blocks.BlocksSetEvent import de.bixilon.minosoft.modding.event.events.blocks.chunk.ChunkDataChangeEvent import de.bixilon.minosoft.modding.event.events.blocks.chunk.ChunkUnloadEvent import de.bixilon.minosoft.modding.event.events.blocks.chunk.LightChangeEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition @@ -165,11 +164,11 @@ class WorldRenderer( loadWorldShader(this.textShader, false) - connection.registerEvent(CallbackEventInvoker.of { onFrustumChange() }) + connection.register(CallbackEventListener.of { onFrustumChange() }) - connection.registerEvent(CallbackEventInvoker.of { unloadWorld() }) - connection.registerEvent(CallbackEventInvoker.of { queueChunk(it.chunkPosition, it.chunk) }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { unloadWorld() }) + connection.register(CallbackEventListener.of { queueChunk(it.chunkPosition, it.chunk) }) + connection.register(CallbackEventListener.of { val chunkPosition = it.blockPosition.chunkPosition val sectionHeight = it.blockPosition.sectionHeight val chunk = world[chunkPosition] ?: return@of @@ -194,7 +193,7 @@ class WorldRenderer( } }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { if (it.blockChange) { // change is already covered return@of @@ -202,7 +201,7 @@ class WorldRenderer( queueSection(it.chunkPosition, it.sectionHeight, it.chunk) }) - connection.registerEvent(CallbackEventInvoker.of { + connection.register(CallbackEventListener.of { val chunk = world[it.chunkPosition] ?: return@of // should not happen if (!chunk.isFullyLoaded) { return@of @@ -252,16 +251,20 @@ class WorldRenderer( } }) - connection.registerEvent(CallbackEventInvoker.of { unloadChunk(it.chunkPosition) }) + connection.register(CallbackEventListener.of { unloadChunk(it.chunkPosition) }) connection::state.observe(this) { if (it == PlayConnectionStates.DISCONNECTED) unloadWorld() } - connection.registerEvent(CallbackEventInvoker.of { - if (it.state == RenderingStates.PAUSED) { + + var paused = false + renderWindow::state.observe(this) { + if (it == RenderingStates.PAUSED) { unloadWorld() - } else if (it.previousState == RenderingStates.PAUSED) { + paused = true + } else if (paused) { prepareWorld() + paused = false } - }) - connection.registerEvent(CallbackEventInvoker.of { queueSection(it.blockPosition.chunkPosition, it.blockPosition.sectionHeight) }) + } + connection.register(CallbackEventListener.of { queueSection(it.blockPosition.chunkPosition, it.blockPosition.sectionHeight) }) renderWindow.inputHandler.registerKeyCallback( "minosoft:clear_chunk_cache".toResourceLocation(), @@ -601,7 +604,7 @@ class WorldRenderer( } private fun queueSection(chunkPosition: Vec2i, sectionHeight: Int, chunk: Chunk? = world.chunks[chunkPosition], section: ChunkSection? = chunk?.get(sectionHeight), ignoreFrustum: Boolean = false, neighbours: Array? = chunk?.neighbours?.get()) { - if (chunk == null || neighbours == null || section == null || renderWindow.renderingState == RenderingStates.PAUSED) { + if (chunk == null || neighbours == null || section == null || renderWindow.state == RenderingStates.PAUSED) { return } val queued = internalQueueSection(chunkPosition, sectionHeight, chunk, section, ignoreFrustum, neighbours) @@ -614,7 +617,7 @@ class WorldRenderer( private fun queueChunk(chunkPosition: Vec2i, chunk: Chunk = world.chunks[chunkPosition]!!) { val neighbours = chunk.neighbours.get() - if (neighbours == null || !chunk.isFullyLoaded || renderWindow.renderingState == RenderingStates.PAUSED) { + if (neighbours == null || !chunk.isFullyLoaded || renderWindow.state == RenderingStates.PAUSED) { return } this.loadedMeshesLock.acquire() diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt index c2d3c3122..6f5fc5ce9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/world/view/WorldVisibilityGraph.kt @@ -309,7 +309,7 @@ class WorldVisibilityGraph( @Synchronized private fun calculateGraph() { if (!RenderConstants.OCCLUSION_CULLING_ENABLED) { - connection.fireEvent(VisibilityGraphChangeEvent(renderWindow)) + connection.fire(VisibilityGraphChangeEvent(renderWindow)) return } connection.world.chunks.lock.acquire() @@ -351,7 +351,7 @@ class WorldVisibilityGraph( connection.world.chunks.lock.release() - connection.fireEvent(VisibilityGraphChangeEvent(renderWindow)) + connection.fire(VisibilityGraphChangeEvent(renderWindow)) } override fun onOcclusionChange() { diff --git a/src/main/java/de/bixilon/minosoft/modding/event/EventInitiators.kt b/src/main/java/de/bixilon/minosoft/modding/event/EventInitiators.kt deleted file mode 100644 index 769391f9e..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/EventInitiators.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * 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 - -import de.bixilon.kutil.enums.EnumUtil -import de.bixilon.kutil.enums.ValuesEnum - -enum class EventInitiators { - CLIENT, - SERVER, - UNKNOWN, - ; - - companion object : ValuesEnum { - override val VALUES: Array = values() - override val NAME_MAP: Map = EnumUtil.getEnumValues(VALUES) - val DEFAULT = UNKNOWN - } -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.kt index f1b2d825e..7b4afa704 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/BlockBreakAnimationEvent.kt @@ -13,18 +13,16 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.kotlinglm.vec3.Vec3i -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.block.BlockBreakAnimationS2CP class BlockBreakAnimationEvent( connection: PlayConnection, - initiator: EventInitiators, val entityId: Int, val blockPosition: Vec3i, val stage: Int, -) : PlayConnectionEvent(connection, initiator), CancelableEvent { +) : PlayConnectionEvent(connection), CancelableEvent { - constructor(connection: PlayConnection, packet: BlockBreakAnimationS2CP) : this(connection, EventInitiators.SERVER, packet.entityId, packet.blockPosition, packet.stage) + constructor(connection: PlayConnection, packet: BlockBreakAnimationS2CP) : this(connection, packet.entityId, packet.blockPosition, packet.stage) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt index 88a1c2cd5..1d5f25fd2 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/CollectItemAnimationEvent.kt @@ -14,18 +14,16 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.minosoft.data.entities.entities.Entity -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.entity.EntityCollectS2CP class CollectItemAnimationEvent( connection: PlayConnection, - initiator: EventInitiators, val collectedEntity: Entity, val collector: Entity, val count: Int, -) : PlayConnectionEvent(connection, initiator), CancelableEvent { +) : PlayConnectionEvent(connection), CancelableEvent { - constructor(connection: PlayConnection, packet: EntityCollectS2CP) : this(connection, EventInitiators.SERVER, connection.world.entities[packet.itemEntityId].unsafeCast(), connection.world.entities[packet.collectorEntityId].unsafeCast(), packet.count) + constructor(connection: PlayConnection, packet: EntityCollectS2CP) : this(connection, connection.world.entities[packet.itemEntityId].unsafeCast(), connection.world.entities[packet.collectorEntityId].unsafeCast(), packet.count) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/CompassPositionChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/CompassPositionChangeEvent.kt index 456e0a82a..f698bd6fe 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/CompassPositionChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/CompassPositionChangeEvent.kt @@ -13,17 +13,15 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.kotlinglm.vec3.Vec3i -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.CompassPositionS2CP class CompassPositionChangeEvent( connection: PlayConnection, - initiator: EventInitiators, val spawnPosition: Vec3i, val angle: Float, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: CompassPositionS2CP) : this(connection, EventInitiators.SERVER, packet.spawnPosition, packet.angle) + constructor(connection: PlayConnection, packet: CompassPositionS2CP) : this(connection, packet.spawnPosition, packet.angle) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/DifficultyChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/DifficultyChangeEvent.kt deleted file mode 100644 index c056bce55..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/DifficultyChangeEvent.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.events - -import de.bixilon.minosoft.data.Difficulties -import de.bixilon.minosoft.modding.event.EventInitiators -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.DifficultyS2CP - -class DifficultyChangeEvent( - connection: PlayConnection, - initiator: EventInitiators = EventInitiators.DEFAULT, - val difficulty: Difficulties, - val locked: Boolean, -) : PlayConnectionEvent(connection, initiator) { - - constructor(connection: PlayConnection, packet: DifficultyS2CP) : this(connection, EventInitiators.SERVER, packet.difficulty, packet.locked) -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDataChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDataChangeEvent.kt index 61f68fa71..f362dd388 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDataChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDataChangeEvent.kt @@ -13,16 +13,14 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.entity.EntityDataS2CP class EntityDataChangeEvent( connection: PlayConnection, - initiator: EventInitiators, val entity: Entity, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: EntityDataS2CP) : this(connection, EventInitiators.SERVER, connection.world.entities[packet.entityId]!!) + constructor(connection: PlayConnection, packet: EntityDataS2CP) : this(connection, connection.world.entities[packet.entityId]!!) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt index 1f80d4095..ff156558e 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityDestroyEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,12 +13,10 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection class EntityDestroyEvent( connection: PlayConnection, - initiator: EventInitiators, val entity: Entity, -) : PlayConnectionEvent(connection, initiator) +) : PlayConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt index 91fedf8ee..2e5764fb6 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntityEquipmentChangeEvent.kt @@ -15,17 +15,15 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.container.InventorySlots.EquipmentSlots import de.bixilon.minosoft.data.container.stack.ItemStack import de.bixilon.minosoft.data.entities.entities.Entity -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.entity.EntityEquipmentS2CP class EntityEquipmentChangeEvent( connection: PlayConnection, - initiator: EventInitiators, val entity: Entity, val equipment: Map, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: EntityEquipmentS2CP) : this(connection, EventInitiators.SERVER, connection.world.entities[packet.entityId]!!, packet.equipment) + constructor(connection: PlayConnection, packet: EntityEquipmentS2CP) : this(connection, connection.world.entities[packet.entityId]!!, packet.equipment) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt index 506b95f83..5cfe77e9c 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpawnEvent.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.entity.EntityPlayerS2CP @@ -21,19 +20,18 @@ import de.bixilon.minosoft.protocol.packets.s2c.play.entity.spawn.* class EntitySpawnEvent( connection: PlayConnection, - initiator: EventInitiators, val entity: Entity, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: EntityMobSpawnS2CP) : this(connection, EventInitiators.SERVER, packet.entity) + constructor(connection: PlayConnection, packet: EntityMobSpawnS2CP) : this(connection, packet.entity) - constructor(connection: PlayConnection, packet: GlobalEntitySpawnS2CP) : this(connection, EventInitiators.SERVER, packet.entity) + constructor(connection: PlayConnection, packet: GlobalEntitySpawnS2CP) : this(connection, packet.entity) - constructor(connection: PlayConnection, packet: EntityPlayerS2CP) : this(connection, EventInitiators.SERVER, packet.entity) + constructor(connection: PlayConnection, packet: EntityPlayerS2CP) : this(connection, packet.entity) - constructor(connection: PlayConnection, packet: EntityExperienceOrbS2CP) : this(connection, EventInitiators.SERVER, packet.entity) + constructor(connection: PlayConnection, packet: EntityExperienceOrbS2CP) : this(connection, packet.entity) - constructor(connection: PlayConnection, packet: EntityObjectSpawnS2CP) : this(connection, EventInitiators.SERVER, packet.entity) + constructor(connection: PlayConnection, packet: EntityObjectSpawnS2CP) : this(connection, packet.entity) - constructor(connection: PlayConnection, packet: EntityPaintingS2CP) : this(connection, EventInitiators.SERVER, packet.entity) + constructor(connection: PlayConnection, packet: EntityPaintingS2CP) : this(connection, packet.entity) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt index 786629dca..5057dbf60 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/EntitySpectateEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,7 +13,6 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.entities.entities.Entity -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.CameraS2CP @@ -23,9 +22,8 @@ import de.bixilon.minosoft.protocol.packets.s2c.play.CameraS2CP */ class EntitySpectateEvent( connection: PlayConnection, - initiator: EventInitiators, val entity: Entity, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: CameraS2CP) : this(connection, EventInitiators.SERVER, connection.world.entities[packet.entityId]!!) + constructor(connection: PlayConnection, packet: CameraS2CP) : this(connection, connection.world.entities[packet.entityId]!!) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ExperienceChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ExperienceChangeEvent.kt deleted file mode 100644 index 2a4816cd8..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ExperienceChangeEvent.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.events - -import de.bixilon.minosoft.modding.event.EventInitiators -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.ExperienceS2CP - -class ExperienceChangeEvent( - connection: PlayConnection, - initiator: EventInitiators, - val bar: Float, - val level: Int, - val total: Int, -) : PlayConnectionEvent(connection, initiator) { - - constructor(connection: PlayConnection, packet: ExperienceS2CP) : this(connection, EventInitiators.SERVER, packet.bar, packet.level, packet.total) -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt index cb23991c1..3c3fe9616 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ExplosionEvent.kt @@ -14,20 +14,18 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kotlinglm.vec3.Vec3i -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.ExplosionS2CP class ExplosionEvent( connection: PlayConnection, - initiator: EventInitiators, val position: Vec3, val power: Float, val explodedBlocks: Array, val velocity: Vec3, ) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: ExplosionS2CP) : this(connection, EventInitiators.SERVER, packet.position, packet.power, packet.explodedBlocks, packet.velocity) + constructor(connection: PlayConnection, packet: ExplosionS2CP) : this(connection, packet.position, packet.power, packet.explodedBlocks, packet.velocity) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/GameEventChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/GameEventChangeEvent.kt index 368b3ff65..93ffb5382 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/GameEventChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/GameEventChangeEvent.kt @@ -13,17 +13,15 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.GameEventS2CP class GameEventChangeEvent( connection: PlayConnection, - initiator: EventInitiators, val event: ResourceLocation?, val data: Float, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: GameEventS2CP) : this(connection, EventInitiators.SERVER, packet.event, packet.data) + constructor(connection: PlayConnection, packet: GameEventS2CP) : this(connection, packet.event, packet.data) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/InternalMessageReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/InternalMessageReceiveEvent.kt index b817449a0..9658c7b76 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/InternalMessageReceiveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/InternalMessageReceiveEvent.kt @@ -13,11 +13,10 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.chat.message.InternalChatMessage -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection class InternalMessageReceiveEvent( connection: PlayConnection, val message: InternalChatMessage, -) : PlayConnectionEvent(connection, EventInitiators.CLIENT), CancelableEvent +) : PlayConnectionEvent(connection), CancelableEvent diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt index 083d431e2..0f1a207aa 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/KickEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,16 +13,14 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.KickS2CP open class KickEvent( connection: PlayConnection, - initiator: EventInitiators, val reason: ChatComponent, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: KickS2CP) : this(connection, EventInitiators.SERVER, packet.reason) + constructor(connection: PlayConnection, packet: KickS2CP) : this(connection, packet.reason) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt index 1b726b03c..bdcfa280b 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/LoginKickEvent.kt @@ -13,16 +13,14 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.login.KickS2CP class LoginKickEvent( connection: PlayConnection, - initiator: EventInitiators, val reason: ChatComponent, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: KickS2CP) : this(connection, EventInitiators.SERVER, packet.reason) + constructor(connection: PlayConnection, packet: KickS2CP) : this(connection, packet.reason) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt index eeb8a2193..b08ca5c40 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/OpenSignEditorEvent.kt @@ -13,16 +13,14 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.kotlinglm.vec3.Vec3i -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.sign.SignEditorS2CP class OpenSignEditorEvent( connection: PlayConnection, - initiator: EventInitiators, val blockPosition: Vec3i, -) : PlayConnectionEvent(connection, initiator), CancelableEvent { +) : PlayConnectionEvent(connection), CancelableEvent { - constructor(connection: PlayConnection, packet: SignEditorS2CP) : this(connection, EventInitiators.SERVER, packet.blockPosition) + constructor(connection: PlayConnection, packet: SignEditorS2CP) : this(connection, packet.blockPosition) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PacketReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PacketReceiveEvent.kt index f4bc0c619..ac50e6a6c 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PacketReceiveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PacketReceiveEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -12,9 +12,8 @@ */ package de.bixilon.minosoft.modding.event.events -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.ConnectionEvent import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.packets.s2c.S2CPacket -class PacketReceiveEvent(connection: Connection, val packet: S2CPacket) : ConnectionEvent(connection, EventInitiators.SERVER) +class PacketReceiveEvent(connection: Connection, val packet: S2CPacket) : ConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PacketSendEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PacketSendEvent.kt index d0bd21f49..78627244c 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PacketSendEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PacketSendEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -12,9 +12,8 @@ */ package de.bixilon.minosoft.modding.event.events -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.ConnectionEvent import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.packets.c2s.C2SPacket -class PacketSendEvent(connection: Connection, val packet: C2SPacket) : ConnectionEvent(connection, EventInitiators.CLIENT) +class PacketSendEvent(connection: Connection, val packet: C2SPacket) : ConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt index b01958602..741bdb2ed 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ParticleSpawnEvent.kt @@ -15,24 +15,22 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.minosoft.data.registries.particle.data.ParticleData -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.ParticleS2CP class ParticleSpawnEvent( connection: PlayConnection, - initiator: EventInitiators, position: Vec3d, offset: Vec3, val speed: Float, val count: Int, val data: ParticleData, -) : PlayConnectionEvent(connection, initiator), CancelableEvent { +) : PlayConnectionEvent(connection), CancelableEvent { val position: Vec3d = position get() = Vec3d(field) val offset: Vec3 = offset get() = Vec3(field) - constructor(connection: PlayConnection, packet: ParticleS2CP) : this(connection, EventInitiators.SERVER, packet.position, packet.offset, packet.speed, packet.count, packet.data) + constructor(connection: PlayConnection, packet: ParticleS2CP) : this(connection, packet.position, packet.offset, packet.speed, packet.count, packet.data) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt index 79456605d..186377e7b 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PlaySoundEvent.kt @@ -16,7 +16,6 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.minosoft.data.SoundCategories import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.sound.NamedSoundS2CP @@ -24,17 +23,16 @@ import de.bixilon.minosoft.protocol.packets.s2c.play.sound.SoundEventS2CP class PlaySoundEvent( connection: PlayConnection, - initiator: EventInitiators, val category: SoundCategories?, position: Vec3, val soundEvent: ResourceLocation, val volume: Float, val pitch: Float, -) : PlayConnectionEvent(connection, initiator), CancelableEvent { +) : PlayConnectionEvent(connection), CancelableEvent { val position: Vec3 = position get() = Vec3(field) - constructor(connection: PlayConnection, packet: SoundEventS2CP) : this(connection, EventInitiators.SERVER, packet.category, Vec3(packet.position), packet.soundEvent, packet.volume, packet.pitch) + constructor(connection: PlayConnection, packet: SoundEventS2CP) : this(connection, packet.category, Vec3(packet.position), packet.soundEvent, packet.volume, packet.pitch) - constructor(connection: PlayConnection, packet: NamedSoundS2CP) : this(connection, EventInitiators.SERVER, packet.category, packet.position, packet.soundEvent!!, packet.volume, packet.pitch) + constructor(connection: PlayConnection, packet: NamedSoundS2CP) : this(connection, packet.category, packet.position, packet.soundEvent!!, packet.volume, packet.pitch) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt index e733ac661..f07c131a9 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/PluginMessageReceiveEvent.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.PluginS2CP @@ -21,12 +20,11 @@ import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer class PluginMessageReceiveEvent( connection: PlayConnection, - initiator: EventInitiators, val channel: ResourceLocation, data: PlayInByteBuffer, -) : PlayConnectionEvent(connection, initiator), CancelableEvent { +) : PlayConnectionEvent(connection), CancelableEvent { val data: PlayInByteBuffer = data get() = PlayInByteBuffer(field) - constructor(connection: PlayConnection, packet: PluginS2CP) : this(connection, EventInitiators.SERVER, packet.channel, packet.data) + constructor(connection: PlayConnection, packet: PluginS2CP) : this(connection, packet.channel, packet.data) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt index d495325a5..63946c79e 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/ResourcePackRequestEvent.kt @@ -13,19 +13,17 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.ResourcepackS2CP class ResourcePackRequestEvent( connection: PlayConnection, - initiator: EventInitiators, val url: String, val hash: String, val promptText: ChatComponent?, -) : PlayConnectionEvent(connection, initiator), CancelableEvent { +) : PlayConnectionEvent(connection), CancelableEvent { - constructor(connection: PlayConnection, packet: ResourcepackS2CP) : this(connection, EventInitiators.SERVER, packet.url, packet.hash, packet.promptText) + constructor(connection: PlayConnection, packet: ResourcepackS2CP) : this(connection, packet.url, packet.hash, packet.promptText) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.kt index aa56d3f79..cee937c93 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/RespawnEvent.kt @@ -12,15 +12,13 @@ */ package de.bixilon.minosoft.modding.event.events -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.RespawnS2CP class RespawnEvent( connection: PlayConnection, - initiator: EventInitiators, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: RespawnS2CP) : this(connection, EventInitiators.SERVER) + constructor(connection: PlayConnection, packet: RespawnS2CP) : this(connection) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/SelectHotbarSlotEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/SelectHotbarSlotEvent.kt deleted file mode 100644 index 3a008ae82..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/SelectHotbarSlotEvent.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.events - -import de.bixilon.minosoft.modding.event.EventInitiators -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.c2s.play.HotbarSlotC2SP -import de.bixilon.minosoft.protocol.packets.s2c.play.HotbarSlotS2CP - -class SelectHotbarSlotEvent( - connection: PlayConnection, - initiator: EventInitiators, - val slot: Int, -) : PlayConnectionEvent(connection, initiator) { - - constructor(connection: PlayConnection, packet: HotbarSlotC2SP) : this(connection, EventInitiators.CLIENT, packet.slot) - - constructor(connection: PlayConnection, packet: HotbarSlotS2CP) : this(connection, EventInitiators.SERVER, packet.slot) -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/TabListEntryChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/TabListEntryChangeEvent.kt index aceeb73f5..ea55294bd 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/TabListEntryChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/TabListEntryChangeEvent.kt @@ -12,8 +12,7 @@ */ package de.bixilon.minosoft.modding.event.events -import de.bixilon.minosoft.data.entities.entities.player.tab.TabListItemData -import de.bixilon.minosoft.modding.event.EventInitiators +import de.bixilon.minosoft.data.entities.entities.player.additional.AdditionalDataUpdate import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.tab.TabListS2CP @@ -21,9 +20,8 @@ import java.util.* class TabListEntryChangeEvent( connection: PlayConnection, - initiator: EventInitiators, - val items: Map, -) : PlayConnectionEvent(connection, initiator) { + val items: Map, +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: TabListS2CP) : this(connection, EventInitiators.SERVER, packet.items) + constructor(connection: PlayConnection, packet: TabListS2CP) : this(connection, packet.items) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/TabListInfoChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/TabListInfoChangeEvent.kt index 2ef96592d..eb92d7f4e 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/TabListInfoChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/TabListInfoChangeEvent.kt @@ -13,17 +13,15 @@ package de.bixilon.minosoft.modding.event.events import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.tab.TabListTextS2CP class TabListInfoChangeEvent( connection: PlayConnection, - initiator: EventInitiators, val header: ChatComponent, val footer: ChatComponent, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: TabListTextS2CP) : this(connection, EventInitiators.SERVER, packet.header, packet.footer) + constructor(connection: PlayConnection, packet: TabListTextS2CP) : this(connection, packet.header, packet.footer) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/TimeChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/TimeChangeEvent.kt deleted file mode 100644 index 2cabe8326..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/TimeChangeEvent.kt +++ /dev/null @@ -1,30 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.events - -import de.bixilon.minosoft.modding.event.EventInitiators -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.TimeS2CP -import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition - -class TimeChangeEvent( - connection: PlayConnection, - initiator: EventInitiators, - val age: Long, - val time: Long, -) : PlayConnectionEvent(connection, initiator) { - - - constructor(connection: PlayConnection, packet: TimeS2CP) : this(connection, EventInitiators.SERVER, packet.age, packet.time % ProtocolDefinition.TICKS_PER_DAY) -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/UpdateHealthEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/UpdateHealthEvent.kt deleted file mode 100644 index 813d0721e..000000000 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/UpdateHealthEvent.kt +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Minosoft - * Copyright (C) 2020-2022 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.events - -import de.bixilon.minosoft.modding.event.EventInitiators -import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent -import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.HealthS2CP - -class UpdateHealthEvent( - connection: PlayConnection, - initiator: EventInitiators, - val hp: Float, - val hunger: Int, - val saturation: Float, -) : PlayConnectionEvent(connection, initiator) { - - constructor(connection: PlayConnection, packet: HealthS2CP) : this(connection, EventInitiators.SERVER, packet.hp, packet.hunger, packet.saturation) -} diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlockSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlockSetEvent.kt index 7eedb1188..b10c92815 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlockSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlockSetEvent.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.modding.event.events.blocks import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.data.registries.blocks.BlockState -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.block.BlockS2CP @@ -24,10 +23,9 @@ import de.bixilon.minosoft.protocol.packets.s2c.play.block.BlockS2CP */ class BlockSetEvent( connection: PlayConnection, - initiator: EventInitiators = EventInitiators.DEFAULT, val blockPosition: Vec3i, val blockState: BlockState?, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: BlockS2CP) : this(connection, EventInitiators.SERVER, packet.blockPosition, packet.blockState) + constructor(connection: PlayConnection, packet: BlockS2CP) : this(connection, packet.blockPosition, packet.blockState) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlocksSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlocksSetEvent.kt index f3c831f0b..61e11fbec 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlocksSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/BlocksSetEvent.kt @@ -15,17 +15,15 @@ package de.bixilon.minosoft.modding.event.events.blocks import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.minosoft.data.registries.blocks.BlockState -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.block.BlocksS2CP class BlocksSetEvent( connection: PlayConnection, - initiator: EventInitiators, val blocks: Map, val chunkPosition: Vec2i, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: BlocksS2CP) : this(connection, EventInitiators.SERVER, packet.blocks, packet.chunkPosition) + constructor(connection: PlayConnection, packet: BlocksS2CP) : this(connection, packet.blocks, packet.chunkPosition) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkDataChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkDataChangeEvent.kt index 189558bce..9295315cf 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkDataChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkDataChangeEvent.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.modding.event.events.blocks.chunk import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.minosoft.data.world.chunk.Chunk -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.chunk.ChunkS2CP @@ -24,10 +23,9 @@ import de.bixilon.minosoft.protocol.packets.s2c.play.chunk.ChunkS2CP */ class ChunkDataChangeEvent( connection: PlayConnection, - initiator: EventInitiators, val chunkPosition: Vec2i, val chunk: Chunk, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: ChunkS2CP) : this(connection, EventInitiators.SERVER, packet.chunkPosition, connection.world[packet.chunkPosition]!!) + constructor(connection: PlayConnection, packet: ChunkS2CP) : this(connection, packet.chunkPosition, connection.world[packet.chunkPosition]!!) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkUnloadEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkUnloadEvent.kt index 43b9b65bf..c5999a277 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkUnloadEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/ChunkUnloadEvent.kt @@ -14,13 +14,11 @@ package de.bixilon.minosoft.modding.event.events.blocks.chunk import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.minosoft.data.world.chunk.Chunk -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection class ChunkUnloadEvent( connection: PlayConnection, - initiator: EventInitiators, val chunkPosition: Vec2i, val chunk: Chunk, -) : PlayConnectionEvent(connection, initiator) +) : PlayConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/LightChangeEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/LightChangeEvent.kt index dd977ceac..1910f58e2 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/LightChangeEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/blocks/chunk/LightChangeEvent.kt @@ -14,7 +14,6 @@ package de.bixilon.minosoft.modding.event.events.blocks.chunk import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.minosoft.data.world.chunk.Chunk -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection @@ -24,9 +23,8 @@ import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection */ class LightChangeEvent( connection: PlayConnection, - initiator: EventInitiators, val chunkPosition: Vec2i, val chunk: Chunk, val sectionHeight: Int, val blockChange: Boolean, -) : PlayConnectionEvent(connection, initiator) +) : PlayConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarAddEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarAddEvent.kt index 4b4170020..a98b079ae 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarAddEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarAddEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,13 +13,11 @@ package de.bixilon.minosoft.modding.event.events.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import java.util.* class BossbarAddEvent( connection: PlayConnection, - initiator: EventInitiators, uuid: UUID, bossbar: Bossbar, -) : BossbarEvent(connection, initiator, uuid, bossbar) +) : BossbarEvent(connection, uuid, bossbar) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarEvent.kt index 7e0ad4e9e..2a6bc7db4 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -14,14 +14,12 @@ package de.bixilon.minosoft.modding.event.events.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import java.util.* abstract class BossbarEvent( connection: PlayConnection, - initiator: EventInitiators, val uuid: UUID, val bossbar: Bossbar, -) : PlayConnectionEvent(connection, initiator) +) : PlayConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarFlagsSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarFlagsSetEvent.kt index 471702d0f..56048f7e4 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarFlagsSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarFlagsSetEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,13 +13,11 @@ package de.bixilon.minosoft.modding.event.events.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import java.util.* class BossbarFlagsSetEvent( connection: PlayConnection, - initiator: EventInitiators, uuid: UUID, bossbar: Bossbar, -) : BossbarEvent(connection, initiator, uuid, bossbar) +) : BossbarEvent(connection, uuid, bossbar) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarRemoveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarRemoveEvent.kt index 913d9b303..02842b8fb 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarRemoveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarRemoveEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,13 +13,11 @@ package de.bixilon.minosoft.modding.event.events.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import java.util.* class BossbarRemoveEvent( connection: PlayConnection, - initiator: EventInitiators, uuid: UUID, bossbar: Bossbar, -) : BossbarEvent(connection, initiator, uuid, bossbar) +) : BossbarEvent(connection, uuid, bossbar) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarStyleSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarStyleSetEvent.kt index ed199256b..6a71e1810 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarStyleSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarStyleSetEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,13 +13,11 @@ package de.bixilon.minosoft.modding.event.events.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import java.util.* class BossbarStyleSetEvent( connection: PlayConnection, - initiator: EventInitiators, uuid: UUID, bossbar: Bossbar, -) : BossbarEvent(connection, initiator, uuid, bossbar) +) : BossbarEvent(connection, uuid, bossbar) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarTitleSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarTitleSetEvent.kt index 8b67a5dce..8dffc63b2 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarTitleSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarTitleSetEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,13 +13,11 @@ package de.bixilon.minosoft.modding.event.events.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import java.util.* class BossbarTitleSetEvent( connection: PlayConnection, - initiator: EventInitiators, uuid: UUID, bossbar: Bossbar, -) : BossbarEvent(connection, initiator, uuid, bossbar) +) : BossbarEvent(connection, uuid, bossbar) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarValueSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarValueSetEvent.kt index c09828a9d..97108fece 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarValueSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/bossbar/BossbarValueSetEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2020 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,13 +13,11 @@ package de.bixilon.minosoft.modding.event.events.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import java.util.* class BossbarValueSetEvent( connection: PlayConnection, - initiator: EventInitiators, uuid: UUID, bossbar: Bossbar, -) : BossbarEvent(connection, initiator, uuid, bossbar) +) : BossbarEvent(connection, uuid, bossbar) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageReceiveEvent.kt index c731b4867..26af0601d 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageReceiveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageReceiveEvent.kt @@ -13,13 +13,11 @@ package de.bixilon.minosoft.modding.event.events.chat import de.bixilon.minosoft.data.chat.message.ChatMessage -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.CancelableEvent import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection class ChatMessageReceiveEvent( connection: PlayConnection, - initiator: EventInitiators, val message: ChatMessage, -) : PlayConnectionEvent(connection, initiator), CancelableEvent +) : PlayConnectionEvent(connection), CancelableEvent diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageSendEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageSendEvent.kt index 611ce2f0f..790e5c7e5 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageSendEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/chat/ChatMessageSendEvent.kt @@ -12,9 +12,8 @@ */ package de.bixilon.minosoft.modding.event.events.chat -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.CancelableEvent import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -class ChatMessageSendEvent(connection: PlayConnection, val message: String) : PlayConnectionEvent(connection, EventInitiators.CLIENT), CancelableEvent +class ChatMessageSendEvent(connection: PlayConnection, val message: String) : PlayConnectionEvent(connection), CancelableEvent diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionErrorEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionErrorEvent.kt index 89d5a85bd..786702a54 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionErrorEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/ConnectionErrorEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,11 +13,9 @@ package de.bixilon.minosoft.modding.event.events.connection -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.Connection class ConnectionErrorEvent( connection: Connection, - initiator: EventInitiators, val exception: Throwable, -) : ConnectionEvent(connection, initiator) +) : ConnectionEvent(connection) 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 9297edfd5..e4985c2d6 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 @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -12,11 +12,9 @@ */ package de.bixilon.minosoft.modding.event.events.connection -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.Event import de.bixilon.minosoft.protocol.network.connection.Connection -abstract class ConnectionEvent @JvmOverloads constructor( +abstract class ConnectionEvent( open val connection: Connection, - val initiator: EventInitiators = EventInitiators.DEFAULT, ) : Event diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/play/PlayConnectionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/play/PlayConnectionEvent.kt index 201040b9e..0714e483c 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/play/PlayConnectionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/play/PlayConnectionEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -12,11 +12,9 @@ */ package de.bixilon.minosoft.modding.event.events.connection.play -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.ConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -abstract class PlayConnectionEvent @JvmOverloads constructor( +abstract class PlayConnectionEvent( override val connection: PlayConnection, - initiator: EventInitiators = EventInitiators.DEFAULT, -) : ConnectionEvent(connection, initiator) +) : ConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/ServerStatusReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/ServerStatusReceiveEvent.kt index 4870b5412..646baf047 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/ServerStatusReceiveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/ServerStatusReceiveEvent.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.modding.event.events.connection.status -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection import de.bixilon.minosoft.protocol.packets.s2c.status.StatusS2CP import de.bixilon.minosoft.protocol.status.ServerStatus @@ -22,9 +21,8 @@ import de.bixilon.minosoft.protocol.status.ServerStatus */ class ServerStatusReceiveEvent( connection: StatusConnection, - initiator: EventInitiators, val status: ServerStatus, -) : StatusConnectionEvent(connection, initiator) { +) : StatusConnectionEvent(connection) { - constructor(connection: StatusConnection, packet: StatusS2CP) : this(connection, EventInitiators.SERVER, packet.status) + constructor(connection: StatusConnection, packet: StatusS2CP) : this(connection, packet.status) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusConnectionEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusConnectionEvent.kt index 5e41379f2..6b94787a3 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusConnectionEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusConnectionEvent.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -13,12 +13,10 @@ package de.bixilon.minosoft.modding.event.events.connection.status -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.ConnectionEvent import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection abstract class StatusConnectionEvent( override val connection: StatusConnection, - initiator: EventInitiators = EventInitiators.DEFAULT, -) : ConnectionEvent(connection, initiator) +) : ConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusPongReceiveEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusPongReceiveEvent.kt index 4e635c170..26cde81a0 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusPongReceiveEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/connection/status/StatusPongReceiveEvent.kt @@ -1,18 +1,17 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger - * + * Copyright (C) 2020-2022 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.events.connection.status -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection /** @@ -20,7 +19,6 @@ import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection */ class StatusPongReceiveEvent( connection: StatusConnection, - initiator: EventInitiators, val pingId: Long, val latency: Long, -) : StatusConnectionEvent(connection, initiator) +) : StatusConnectionEvent(connection) diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/loading/RegistriesLoadEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/loading/RegistriesLoadEvent.kt index c3c2cc0bb..522c13207 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/loading/RegistriesLoadEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/loading/RegistriesLoadEvent.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.modding.event.events.loading import de.bixilon.minosoft.data.registries.registries.Registries -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection @@ -21,7 +20,7 @@ class RegistriesLoadEvent( connection: PlayConnection, val registries: Registries, val state: States, -) : PlayConnectionEvent(connection, EventInitiators.CLIENT) { +) : PlayConnectionEvent(connection) { enum class States { PRE, diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleHideEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleHideEvent.kt index 01ee26dc3..bdacd19d0 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleHideEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleHideEvent.kt @@ -12,15 +12,13 @@ */ package de.bixilon.minosoft.modding.event.events.title -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.title.HideTitleS2CP class TitleHideEvent( connection: PlayConnection, - initiator: EventInitiators, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: HideTitleS2CP) : this(connection, EventInitiators.SERVER) + constructor(connection: PlayConnection, packet: HideTitleS2CP) : this(connection) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleResetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleResetEvent.kt index fe12e98dc..57ab47089 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleResetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleResetEvent.kt @@ -12,16 +12,14 @@ */ package de.bixilon.minosoft.modding.event.events.title -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.title.ResetTitleS2CP class TitleResetEvent( connection: PlayConnection, - initiator: EventInitiators, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: ResetTitleS2CP) : this(connection, EventInitiators.SERVER) + constructor(connection: PlayConnection, packet: ResetTitleS2CP) : this(connection) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSetEvent.kt index 6a0fac91f..b60c0465c 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSetEvent.kt @@ -13,17 +13,15 @@ package de.bixilon.minosoft.modding.event.events.title import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleTextS2CP class TitleSetEvent( connection: PlayConnection, - initiator: EventInitiators, val title: ChatComponent, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: TitleTextS2CP) : this(connection, EventInitiators.SERVER, packet.text) + constructor(connection: PlayConnection, packet: TitleTextS2CP) : this(connection, packet.text) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSubtitleSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSubtitleSetEvent.kt index a3b2cc392..637675697 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSubtitleSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleSubtitleSetEvent.kt @@ -13,17 +13,15 @@ package de.bixilon.minosoft.modding.event.events.title import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.title.SubtitleS2CP class TitleSubtitleSetEvent( connection: PlayConnection, - initiator: EventInitiators, val subtitle: ChatComponent, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: SubtitleS2CP) : this(connection, EventInitiators.SERVER, packet.text) + constructor(connection: PlayConnection, packet: SubtitleS2CP) : this(connection, packet.text) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleTimesSetEvent.kt b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleTimesSetEvent.kt index e66fc359c..f302b2fbe 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleTimesSetEvent.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/events/title/TitleTimesSetEvent.kt @@ -12,19 +12,17 @@ */ package de.bixilon.minosoft.modding.event.events.title -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.play.title.TitleTimesS2CP class TitleTimesSetEvent( connection: PlayConnection, - initiator: EventInitiators, val fadeInTime: Int, val stayTime: Int, val fadeOutTime: Int, -) : PlayConnectionEvent(connection, initiator) { +) : PlayConnectionEvent(connection) { - constructor(connection: PlayConnection, packet: TitleTimesS2CP) : this(connection, EventInitiators.SERVER, packet.fadeInTime, packet.stayTime, packet.fadeOutTime) + constructor(connection: PlayConnection, packet: TitleTimesS2CP) : this(connection, packet.fadeInTime, packet.stayTime, packet.fadeOutTime) } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/invoker/CallbackEventInvoker.kt b/src/main/java/de/bixilon/minosoft/modding/event/listener/CallbackEventListener.kt similarity index 66% rename from src/main/java/de/bixilon/minosoft/modding/event/invoker/CallbackEventInvoker.kt rename to src/main/java/de/bixilon/minosoft/modding/event/listener/CallbackEventListener.kt index 7894b1675..e38fcb5a6 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/invoker/CallbackEventInvoker.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/listener/CallbackEventListener.kt @@ -10,35 +10,45 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.modding.event.invoker +package de.bixilon.minosoft.modding.event.listener import de.bixilon.kutil.cast.CastUtil.unsafeCast import de.bixilon.minosoft.modding.EventPriorities import de.bixilon.minosoft.modding.event.events.CancelableEvent import de.bixilon.minosoft.modding.event.events.Event +import de.bixilon.minosoft.modding.event.master.AbstractEventMaster import kotlin.reflect.KClass -class CallbackEventInvoker private constructor( +class CallbackEventListener constructor( ignoreCancelled: Boolean, private val callback: (E) -> Unit, override val kEventType: KClass, override val eventType: Class, override val instantFire: Boolean, priority: EventPriorities, -) : EventInvoker(ignoreCancelled, priority), EventInstantFireable { +) : EventListener(ignoreCancelled, priority), EventInstantFireable { override operator fun invoke(event: Event) { - if (!this.isIgnoreCancelled && event is CancelableEvent && event.cancelled) { + if (!this.ignoreCancelled && event is CancelableEvent && event.cancelled) { return } callback(event.unsafeCast()) } companion object { - @JvmOverloads - @Suppress("NON_PUBLIC_CALL_FROM_PUBLIC_INLINE") - inline fun of(ignoreCancelled: Boolean = false, instantFire: Boolean = true, priority: EventPriorities = EventPriorities.NORMAL, noinline callback: (E) -> Unit): CallbackEventInvoker { - return CallbackEventInvoker( + + inline operator fun AbstractEventMaster.plusAssign(noinline callback: (E) -> Unit) { + listen(callback = callback) + } + + inline fun AbstractEventMaster.listen(ignoreCancelled: Boolean = false, instantFire: Boolean = true, priority: EventPriorities = EventPriorities.NORMAL, noinline callback: (E) -> Unit): CallbackEventListener { + val listener = of(ignoreCancelled, instantFire, priority, callback) + register(listener) + return listener + } + + inline fun of(ignoreCancelled: Boolean = false, instantFire: Boolean = true, priority: EventPriorities = EventPriorities.NORMAL, noinline callback: (E) -> Unit): CallbackEventListener { + return CallbackEventListener( ignoreCancelled = ignoreCancelled, callback = callback, kEventType = E::class, diff --git a/src/main/java/de/bixilon/minosoft/modding/event/invoker/EventInstantFireable.kt b/src/main/java/de/bixilon/minosoft/modding/event/listener/EventInstantFireable.kt similarity index 89% rename from src/main/java/de/bixilon/minosoft/modding/event/invoker/EventInstantFireable.kt rename to src/main/java/de/bixilon/minosoft/modding/event/listener/EventInstantFireable.kt index d72fd6e89..27f398f06 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/invoker/EventInstantFireable.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/listener/EventInstantFireable.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -11,7 +11,7 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.modding.event.invoker +package de.bixilon.minosoft.modding.event.listener interface EventInstantFireable { val instantFire: Boolean diff --git a/src/main/java/de/bixilon/minosoft/modding/event/invoker/EventInvoker.kt b/src/main/java/de/bixilon/minosoft/modding/event/listener/EventListener.kt similarity index 85% rename from src/main/java/de/bixilon/minosoft/modding/event/invoker/EventInvoker.kt rename to src/main/java/de/bixilon/minosoft/modding/event/listener/EventListener.kt index 0665c0d20..f5e14eac7 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/invoker/EventInvoker.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/listener/EventListener.kt @@ -10,22 +10,22 @@ * * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.modding.event.invoker +package de.bixilon.minosoft.modding.event.listener import de.bixilon.minosoft.modding.EventPriorities import de.bixilon.minosoft.modding.event.events.Event import kotlin.reflect.KClass -abstract class EventInvoker( - val isIgnoreCancelled: Boolean, +abstract class EventListener( + val ignoreCancelled: Boolean, val priority: EventPriorities, -) : Comparable { +) : Comparable { abstract val kEventType: KClass? abstract val eventType: Class abstract operator fun invoke(event: Event) - override fun compareTo(other: EventInvoker): Int { + override fun compareTo(other: EventListener): Int { return -(other.priority.ordinal - this.priority.ordinal) } } diff --git a/src/main/java/de/bixilon/minosoft/modding/event/invoker/OneShotInvoker.kt b/src/main/java/de/bixilon/minosoft/modding/event/listener/OneShotListener.kt similarity index 87% rename from src/main/java/de/bixilon/minosoft/modding/event/invoker/OneShotInvoker.kt rename to src/main/java/de/bixilon/minosoft/modding/event/listener/OneShotListener.kt index a59c53c8a..8de99d0a4 100644 --- a/src/main/java/de/bixilon/minosoft/modding/event/invoker/OneShotInvoker.kt +++ b/src/main/java/de/bixilon/minosoft/modding/event/listener/OneShotListener.kt @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -11,11 +11,11 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.modding.event.invoker +package de.bixilon.minosoft.modding.event.listener /** * Automatically unregisters the event invoker once it was first (and last) fired */ -interface OneShotInvoker { +interface OneShotListener { 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 281e9d5be..524560314 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 @@ -1,6 +1,6 @@ /* * Minosoft - * Copyright (C) 2021 Moritz Zwerger + * Copyright (C) 2020-2022 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. * @@ -14,26 +14,26 @@ package de.bixilon.minosoft.modding.event.master import de.bixilon.minosoft.modding.event.events.Event -import de.bixilon.minosoft.modding.event.invoker.EventInvoker +import de.bixilon.minosoft.modding.event.listener.EventListener -interface AbstractEventMaster : Iterable { +interface AbstractEventMaster : Iterable { val size: Int - fun fireEvent(event: Event): Boolean + fun fire(event: Event): Boolean - fun registerEvent(invoker: T): T + fun register(invoker: T): T - fun registerEvents(vararg invokers: EventInvoker) { + fun register(vararg invokers: EventListener) { for (invoker in invokers) { - registerEvent(invoker) + register(invoker) } } - fun unregisterEvent(invoker: EventInvoker?) = Unit + fun unregister(invoker: EventListener?) = Unit - fun unregisterEvents(vararg invokers: EventInvoker?) { + fun unregister(vararg invokers: EventListener?) { for (invoker in invokers) { - unregisterEvent(invoker) + unregister(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 54cb80303..c86379b4e 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 @@ -21,21 +21,21 @@ import de.bixilon.minosoft.modding.event.EventInstantFire import de.bixilon.minosoft.modding.event.events.AsyncEvent 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.event.listener.EventInstantFireable +import de.bixilon.minosoft.modding.event.listener.EventListener +import de.bixilon.minosoft.modding.event.listener.OneShotListener import java.util.* import kotlin.reflect.full.companionObjectInstance open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaster { private val parents: MutableSet = mutableSetOf(*parents) private val parentLock = SimpleLock() - private val eventInvokers: PriorityQueue = PriorityQueue() + private val eventListeners: PriorityQueue = PriorityQueue() private val eventInvokerLock = SimpleLock() override val size: Int get() { - var size = eventInvokers.size + var size = eventListeners.size parentLock.acquire() for (parent in parents) { size += parent.size @@ -44,30 +44,30 @@ open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaste return size } - private fun runEvent(invoker: EventInvoker, event: Event, toRemove: MutableSet) { + private fun runEvent(invoker: EventListener, event: Event, toRemove: MutableSet) { try { invoker(event) } catch (exception: Throwable) { exception.printStackTrace() } - if (invoker is OneShotInvoker && invoker.oneShot) { + if (invoker is OneShotListener && invoker.oneShot) { toRemove += invoker } } - override fun fireEvent(event: Event): Boolean { + override fun fire(event: Event): Boolean { parentLock.acquire() for (parent in parents) { - parent.fireEvent(event) + parent.fire(event) } parentLock.release() - val toRemove: MutableSet = mutableSetOf() + val toRemove: MutableSet = mutableSetOf() eventInvokerLock.acquire() val worker = UnconditionalWorker() - for (invoker in eventInvokers) { + for (invoker in eventListeners) { if (!invoker.eventType.isAssignableFrom(event::class.java)) { continue } @@ -83,7 +83,7 @@ open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaste } if (toRemove.isNotEmpty()) { eventInvokerLock.lock() - this.eventInvokers -= toRemove + this.eventListeners -= toRemove eventInvokerLock.unlock() } @@ -96,18 +96,18 @@ open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaste return false } - override fun unregisterEvent(invoker: EventInvoker?) { + override fun unregister(invoker: EventListener?) { eventInvokerLock.lock() try { - eventInvokers -= invoker ?: return + eventListeners -= invoker ?: return } finally { eventInvokerLock.unlock() } } - override fun registerEvent(invoker: T): T { + override fun register(invoker: T): T { eventInvokerLock.lock() - eventInvokers += invoker + eventListeners += invoker eventInvokerLock.unlock() if (invoker is EventInstantFireable && invoker.instantFire) { @@ -121,7 +121,7 @@ open class EventMaster(vararg parents: AbstractEventMaster) : AbstractEventMaste } - override fun iterator(): Iterator { - return eventInvokers.toSynchronizedList().iterator() + override fun iterator(): Iterator { + return eventListeners.toSynchronizedList().iterator() } } diff --git a/src/main/java/de/bixilon/minosoft/modding/loader/ModLoader.kt b/src/main/java/de/bixilon/minosoft/modding/loader/ModLoader.kt index 31d90bd56..c1b4081ec 100644 --- a/src/main/java/de/bixilon/minosoft/modding/loader/ModLoader.kt +++ b/src/main/java/de/bixilon/minosoft/modding/loader/ModLoader.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.modding.loader -import de.bixilon.kutil.collections.CollectionUtil.synchronizedMapOf import de.bixilon.kutil.concurrent.pool.DefaultThreadPool import de.bixilon.kutil.concurrent.worker.unconditional.UnconditionalWorker import de.bixilon.kutil.latch.CountUpAndDownLatch @@ -192,7 +191,7 @@ object ModLoader { state = PhaseStates.COMPLETE return } - val list = ModList(synchronizedMapOf(), synchronizedMapOf()) + val list = ModList() state = PhaseStates.INJECTING var worker = UnconditionalWorker() 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 0edf4dd47..85ef8bf9c 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 @@ -14,11 +14,10 @@ package de.bixilon.minosoft.protocol.network.connection import de.bixilon.minosoft.data.registries.versions.Version -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.Event import de.bixilon.minosoft.modding.event.events.PacketSendEvent import de.bixilon.minosoft.modding.event.events.connection.ConnectionErrorEvent -import de.bixilon.minosoft.modding.event.invoker.EventInvoker +import de.bixilon.minosoft.modding.event.listener.EventListener import de.bixilon.minosoft.modding.event.master.AbstractEventMaster import de.bixilon.minosoft.modding.event.master.EventMaster import de.bixilon.minosoft.modding.event.master.GlobalEventMaster @@ -35,12 +34,12 @@ abstract class Connection : AbstractEventMaster { open var error: Throwable? = null set(value) { field = value - value?.let { events.fireEvent(ConnectionErrorEvent(this, EventInitiators.UNKNOWN, it)) } + value?.let { events.fire(ConnectionErrorEvent(this, it)) } } open fun sendPacket(packet: C2SPacket) { val event = PacketSendEvent(this, packet) - if (events.fireEvent(event)) { + if (events.fire(event)) { return } network.send(packet) @@ -52,27 +51,27 @@ abstract class Connection : AbstractEventMaster { * @return if the event has been cancelled or not */ @Deprecated("events", ReplaceWith("events.fireEvent(event)")) - override fun fireEvent(event: Event): Boolean { - return events.fireEvent(event) + override fun fire(event: Event): Boolean { + return events.fire(event) } @Deprecated("events", ReplaceWith("events.unregisterEvent(invoker)")) - override fun unregisterEvent(invoker: EventInvoker?) { - events.unregisterEvent(invoker) + override fun unregister(invoker: EventListener?) { + events.unregister(invoker) } @Deprecated("events", ReplaceWith("events.registerEvent(invoker)")) - override fun registerEvent(invoker: T): T { - return events.registerEvent(invoker) + override fun register(invoker: T): T { + return events.register(invoker) } @Deprecated("events", ReplaceWith("events.registerEvents(*invokers)")) - override fun registerEvents(vararg invokers: EventInvoker) { - events.registerEvents(*invokers) + override fun register(vararg invokers: EventListener) { + events.register(*invokers) } @Deprecated("events", ReplaceWith("events.iterator()")) - override fun iterator(): Iterator { + override fun iterator(): Iterator { return events.iterator() } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt index 863b79a73..346779326 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/ConnectionUtil.kt @@ -50,14 +50,14 @@ class ConnectionUtil( fun sendDebugMessage(message: Any) { val component = BaseComponent(RenderConstants.DEBUG_MESSAGES_PREFIX, ChatComponent.of(message).apply { this.setFallbackColor(ChatColors.BLUE) }) - connection.fireEvent(InternalMessageReceiveEvent(connection, InternalChatMessage(component))) + connection.fire(InternalMessageReceiveEvent(connection, InternalChatMessage(component))) Log.log(LogMessageType.CHAT_IN, LogLevels.INFO) { component } } fun sendInternal(message: Any) { val component = ChatComponent.of(message) val prefixed = BaseComponent(RenderConstants.INTERNAL_MESSAGES_PREFIX, component) - connection.fireEvent(InternalMessageReceiveEvent(connection, InternalChatMessage(if (connection.profiles.gui.chat.internal.hidden) prefixed else component))) + connection.fire(InternalMessageReceiveEvent(connection, InternalChatMessage(if (connection.profiles.gui.chat.internal.hidden) prefixed else component))) Log.log(LogMessageType.CHAT_IN, LogLevels.INFO) { prefixed } } @@ -76,7 +76,7 @@ class ConnectionUtil( if (message.length > connection.version.maxChatMessageSize) { throw IllegalArgumentException("Message length (${message.length} can not exceed ${connection.version.maxChatMessageSize})") } - if (connection.fireEvent(ChatMessageSendEvent(connection, message))) { + if (connection.fire(ChatMessageSendEvent(connection, message))) { return } Log.log(LogMessageType.CHAT_OUT) { message } @@ -124,7 +124,7 @@ class ConnectionUtil( connection.world.particleRenderer?.removeAllParticles() connection.player.openedContainer?.let { connection.player.openedContainer = null - connection.fireEvent(ContainerCloseEvent(connection, it.id ?: -1, it)) + connection.fire(ContainerCloseEvent(connection, it.id ?: -1, it)) } connection.player.healthCondition.hp = 20.0f } 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 438565e2d..a7860ea21 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 @@ -48,7 +48,7 @@ import de.bixilon.minosoft.gui.eros.dialog.ErosErrorReport.Companion.report import de.bixilon.minosoft.gui.rendering.Rendering import de.bixilon.minosoft.modding.event.events.chat.ChatMessageReceiveEvent import de.bixilon.minosoft.modding.event.events.loading.RegistriesLoadEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.modding.loader.LoadingPhases import de.bixilon.minosoft.modding.loader.ModLoader import de.bixilon.minosoft.protocol.network.connection.Connection @@ -153,7 +153,7 @@ class PlayConnection( CLI.connection = this } - registerEvent(CallbackEventInvoker.of { + register(CallbackEventListener.of { val additionalPrefix = when (it.message.type.position) { ChatTextPositions.SYSTEM -> "[SYSTEM] " ChatTextPositions.HOTBAR -> "[HOTBAR] " @@ -178,10 +178,10 @@ class PlayConnection( var error: Throwable? = null val taskWorker = TaskWorker(errorHandler = { _, exception -> if (error == null) error = exception }, criticalErrorHandler = { _, exception -> if (error == null) error = exception }) taskWorker += { - fireEvent(RegistriesLoadEvent(this, registries, RegistriesLoadEvent.States.PRE)) + fire(RegistriesLoadEvent(this, registries, RegistriesLoadEvent.States.PRE)) version.load(profiles.resources, latch) registries.parentRegistries = version.registries - fireEvent(RegistriesLoadEvent(this, registries, RegistriesLoadEvent.States.POST)) + fire(RegistriesLoadEvent(this, registries, RegistriesLoadEvent.States.POST)) } taskWorker += { diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/PluginManager.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/PluginManager.kt index 3218633a6..f1abb7a35 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/PluginManager.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/play/plugin/PluginManager.kt @@ -19,7 +19,7 @@ import de.bixilon.kutil.collections.CollectionUtil.toSynchronizedList import de.bixilon.kutil.collections.map.SynchronizedMap import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.modding.event.events.PluginMessageReceiveEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer @@ -28,7 +28,7 @@ class PluginManager(val connection: PlayConnection) { init { - connection.registerEvent(CallbackEventInvoker.of { handleMessage(it.channel, it.data.readRest()) }) + connection.register(CallbackEventListener.of { handleMessage(it.channel, it.data.readRest()) }) } private fun handleMessage(channel: ResourceLocation, data: ByteArray) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/connection/status/StatusConnection.kt b/src/main/java/de/bixilon/minosoft/protocol/network/connection/status/StatusConnection.kt index a20b51bb4..8999e9638 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/connection/status/StatusConnection.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/connection/status/StatusConnection.kt @@ -20,12 +20,11 @@ import de.bixilon.kutil.watcher.DataWatcher.Companion.observe import de.bixilon.kutil.watcher.DataWatcher.Companion.watched import de.bixilon.minosoft.data.registries.versions.Version import de.bixilon.minosoft.data.registries.versions.Versions -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.ConnectionErrorEvent import de.bixilon.minosoft.modding.event.events.connection.status.ServerStatusReceiveEvent import de.bixilon.minosoft.modding.event.events.connection.status.StatusPongReceiveEvent -import de.bixilon.minosoft.modding.event.invoker.EventInstantFireable -import de.bixilon.minosoft.modding.event.invoker.EventInvoker +import de.bixilon.minosoft.modding.event.listener.EventInstantFireable +import de.bixilon.minosoft.modding.event.listener.EventListener import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.packets.c2s.handshaking.HandshakeC2SP import de.bixilon.minosoft.protocol.packets.c2s.status.StatusRequestC2SP @@ -171,20 +170,20 @@ class StatusConnection( } } - override fun registerEvent(invoker: T): T { + override fun register(invoker: T): T { if (invoker is EventInstantFireable && !invoker.instantFire) { - return super.registerEvent(invoker) + return super.register(invoker) } - super.registerEvent(invoker) + super.register(invoker) when { invoker.eventType.isAssignableFrom(ConnectionErrorEvent::class.java) -> { - error?.let { invoker.invoke(ConnectionErrorEvent(this, EventInitiators.UNKNOWN, it)) } + error?.let { invoker.invoke(ConnectionErrorEvent(this, it)) } } invoker.eventType.isAssignableFrom(ServerStatusReceiveEvent::class.java) -> { - lastServerStatus?.let { invoker.invoke(ServerStatusReceiveEvent(this, EventInitiators.UNKNOWN, it)) } + lastServerStatus?.let { invoker.invoke(ServerStatusReceiveEvent(this, it)) } } invoker.eventType.isAssignableFrom(StatusPongReceiveEvent::class.java) -> { lastPongEvent?.let { invoker.invoke(it) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt index 9eeef9f51..c729b9295 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/network/network/client/pipeline/ClientPacketHandler.kt @@ -80,7 +80,7 @@ class ClientPacketHandler( private fun handle(packet: S2CPacket) { val event = PacketReceiveEvent(connection, packet) - if (connection.fireEvent(event)) { + if (connection.fire(event)) { return } when (packet) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt index f3d8ab544..e7f48a730 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/SettingsC2SP.kt @@ -14,9 +14,9 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum -import de.bixilon.minosoft.data.Difficulties import de.bixilon.minosoft.data.entities.entities.player.Arms import de.bixilon.minosoft.data.entities.entities.player.SkinParts +import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.PlayOutByteBuffer diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt index 531e088a9..e21f7ccd6 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/difficulty/DifficultyC2SP.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.protocol.packets.c2s.play.difficulty -import de.bixilon.minosoft.data.Difficulties +import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.protocol.PlayOutByteBuffer diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt index b4e36546d..37f7c4adf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/KickS2CP.kt @@ -29,7 +29,7 @@ class KickS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val reason: ChatComponent = buffer.readChatComponent() override fun handle(connection: PlayConnection) { - connection.fireEvent(LoginKickEvent(connection, this)) + connection.fire(LoginKickEvent(connection, this)) Log.log(LogMessageType.NETWORK_STATUS, level = LogLevels.WARN) { "Kicked from ${connection.address}: $reason" } connection.network.disconnect() connection.state = PlayConnectionStates.ERROR diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt index 9966aad67..678211bcd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/login/SuccessS2CP.kt @@ -36,8 +36,8 @@ class SuccessS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { connection.network.state = ProtocolStates.PLAY val playerEntity = connection.player - playerEntity.tabListItem.name = name - playerEntity.tabListItem.displayName = ChatComponent.of(name) + playerEntity.additional.name = name + playerEntity.additional.displayName = ChatComponent.of(name) connection.world.entities.add(null, uuid, playerEntity) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CameraS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CameraS2CP.kt index e7b2af7f4..fffe981ac 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CameraS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CameraS2CP.kt @@ -27,7 +27,7 @@ class CameraS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { val entity = connection.world.entities[entityId] ?: return - connection.fireEvent(CameraSetEvent(connection, entity)) + connection.fire(CameraSetEvent(connection, entity)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompassPositionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompassPositionS2CP.kt index c66905009..c23ff63e4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompassPositionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/CompassPositionS2CP.kt @@ -39,7 +39,7 @@ class CompassPositionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.player.spawnPosition = spawnPosition - connection.fireEvent(CompassPositionChangeEvent(connection, this)) + connection.fire(CompassPositionChangeEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DifficultyS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DifficultyS2CP.kt index d63451a83..a62da5922 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DifficultyS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/DifficultyS2CP.kt @@ -12,8 +12,8 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play -import de.bixilon.minosoft.data.Difficulties -import de.bixilon.minosoft.modding.event.events.DifficultyChangeEvent +import de.bixilon.minosoft.data.world.difficulty.Difficulties +import de.bixilon.minosoft.data.world.difficulty.WorldDifficulty import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket @@ -36,9 +36,7 @@ class DifficultyS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } override fun handle(connection: PlayConnection) { - connection.world.difficulty = difficulty - connection.world.difficultyLocked = locked - connection.fireEvent(DifficultyChangeEvent(connection, this)) + connection.world.difficulty = WorldDifficulty(difficulty, locked) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExperienceS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExperienceS2CP.kt index 3b59cf15f..b7346a71e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExperienceS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExperienceS2CP.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play -import de.bixilon.minosoft.modding.event.events.ExperienceChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket @@ -46,10 +45,8 @@ class ExperienceS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.player.experienceCondition.level = level - connection.player.experienceCondition.experienceBarProgress = bar - connection.player.experienceCondition.totalExperience = total - - connection.fireEvent(ExperienceChangeEvent(connection, this)) + connection.player.experienceCondition.bar = bar + connection.player.experienceCondition.total = total } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExplosionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExplosionS2CP.kt index 4fc732795..aa30ad31d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExplosionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ExplosionS2CP.kt @@ -49,7 +49,7 @@ class ExplosionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } connection.player.velocity = connection.player.velocity + velocity - connection.fireEvent(ExplosionEvent(connection, this)) + connection.fire(ExplosionEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt index 176f70098..28a427e20 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/GameEventS2CP.kt @@ -32,7 +32,7 @@ class GameEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { return } val event = GameEventChangeEvent(connection, this) - if (connection.fireEvent(event)) { + if (connection.fire(event)) { return } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HealthS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HealthS2CP.kt index 56f345d31..a750d37fd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HealthS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HealthS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.kotlinglm.func.common.clamp -import de.bixilon.minosoft.modding.event.events.UpdateHealthEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates import de.bixilon.minosoft.protocol.packets.c2s.play.ClientActionC2SP @@ -41,8 +40,6 @@ class HealthS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { connection.player.healthCondition.saturation = saturation - connection.fireEvent(UpdateHealthEvent(connection, this)) - if (hp == 0.0f) { if (connection.state == PlayConnectionStates.PLAYING) { connection.state = PlayConnectionStates.DEAD diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotS2CP.kt index 2dd38d6b1..dd317137d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/HotbarSlotS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.minosoft.data.container.types.PlayerInventory -import de.bixilon.minosoft.modding.event.events.SelectHotbarSlotEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket @@ -32,7 +31,6 @@ class HotbarSlotS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.player.selectedHotbarSlot = slot - connection.fireEvent(SelectHotbarSlotEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt index a4e047689..86279995c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/InitializeS2CP.kt @@ -14,15 +14,13 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.kutil.json.JsonObject import de.bixilon.kutil.json.JsonUtil.asJsonObject -import de.bixilon.minosoft.data.Difficulties import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.entities.GlobalPosition import de.bixilon.minosoft.data.entities.data.types.GlobalPositionEntityDataType import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.dimension.DimensionProperties -import de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode.GamemodeChangeEvent import de.bixilon.minosoft.data.world.biome.accessor.NoiseBiomeAccessor -import de.bixilon.minosoft.modding.event.EventInitiators +import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.protocol.PacketErrorHandler import de.bixilon.minosoft.protocol.network.connection.Connection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection @@ -148,12 +146,10 @@ class InitializeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.util.prepareSpawn() val playerEntity = connection.player - val previousGamemode = playerEntity.tabListItem.gamemode + val previousGamemode = playerEntity.additional.gamemode if (previousGamemode != gamemode) { - playerEntity.tabListItem.gamemode = gamemode - - connection.fireEvent(GamemodeChangeEvent(connection, EventInitiators.SERVER, previousGamemode, gamemode)) + playerEntity.additional.gamemode = gamemode } connection.world.hardcore = isHardcore diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/KickS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/KickS2CP.kt index ee7e95bb0..9558bab56 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/KickS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/KickS2CP.kt @@ -31,7 +31,7 @@ class KickS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { if (!connection.network.connected) { return // already disconnected, maybe timed out? } - connection.fireEvent(KickEvent(connection, this)) + connection.fire(KickEvent(connection, this)) // got kicked connection.network.disconnect() connection.state = PlayConnectionStates.KICKED diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ParticleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ParticleS2CP.kt index 2b6792a55..6262de135 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ParticleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ParticleS2CP.kt @@ -52,7 +52,10 @@ class ParticleS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { - if (connection.fireEvent(ParticleSpawnEvent(connection, this))) { + if (!connection.profiles.particle.types.packet) { + return + } + if (connection.fire(ParticleSpawnEvent(connection, this))) { return } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PluginS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PluginS2CP.kt index 10bb261d7..94afbfbff 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PluginS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PluginS2CP.kt @@ -40,7 +40,7 @@ class PluginS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { get() = PlayInByteBuffer(field) override fun handle(connection: PlayConnection) { - connection.fireEvent(PluginMessageReceiveEvent(connection, this)) + connection.fire(PluginMessageReceiveEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt index 9ec78f1fa..85daf22c7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/ResourcepackS2CP.kt @@ -47,7 +47,7 @@ class ResourcepackS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { val event = ResourcePackRequestEvent(connection, this) - if (connection.fireEvent(event)) { + if (connection.fire(event)) { return } connection.sendPacket(ResourcepackC2SP(hash, ResourcepackC2SP.ResourcePackStates.SUCCESSFULLY)) // ToDo: This fakes it, to not get kicked on most servers diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt index a51d31e1f..c514dda2c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt @@ -13,12 +13,12 @@ package de.bixilon.minosoft.protocol.packets.s2c.play import de.bixilon.kutil.json.JsonUtil.asJsonObject -import de.bixilon.minosoft.data.Difficulties import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.entities.GlobalPosition import de.bixilon.minosoft.data.entities.data.types.GlobalPositionEntityDataType import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.dimension.DimensionProperties +import de.bixilon.minosoft.data.world.difficulty.Difficulties import de.bixilon.minosoft.modding.event.events.RespawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates @@ -98,10 +98,10 @@ class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.util.prepareSpawn() - connection.player.tabListItem.gamemode = gamemode + connection.player.additional.gamemode = gamemode connection.world.dimension = dimension connection.state = PlayConnectionStates.SPAWNING - connection.fireEvent(RespawnEvent(connection, this)) + connection.fire(RespawnEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TimeS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TimeS2CP.kt index 7453d125f..a0c4680cd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TimeS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TimeS2CP.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play -import de.bixilon.minosoft.modding.event.events.TimeChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket @@ -30,8 +29,6 @@ class TimeS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.world.time.age = age connection.world.time.time = time % ProtocolDefinition.TICKS_PER_DAY - - connection.fireEvent(TimeChangeEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt index 123272325..e4d7b4771 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakAnimationS2CP.kt @@ -45,7 +45,7 @@ class BlockBreakAnimationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { val event = BlockBreakAnimationEvent(connection, this) - if (connection.fireEvent(event)) { + if (connection.fire(event)) { return } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt index 6097f983c..d8fe1ca72 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockBreakS2CP.kt @@ -26,7 +26,7 @@ class BlockBreakS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val sequence = buffer.readVarInt() override fun handle(connection: PlayConnection) { - connection.fireEvent(BlockBreakAckEvent(connection, this)) + connection.fire(BlockBreakAckEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt index eb7a67288..df6a9e518 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlockDataS2CP.kt @@ -45,7 +45,7 @@ class BlockDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } val blockEntity = connection.world.getOrPutBlockEntity(position) blockEntity?.updateNBT(nbt) ?: return - connection.fireEvent(BlockDataChangeEvent(connection, position, blockEntity)) + connection.fire(BlockDataChangeEvent(connection, position, blockEntity)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt index 859131a88..dad292ad7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/BlocksS2CP.kt @@ -88,7 +88,7 @@ class BlocksS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } chunk.setBlocks(blocks) - connection.fireEvent(BlocksSetEvent(connection, this)) + connection.fire(BlocksSetEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt index 7f834cc94..b8e4bd2c7 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/block/LegacyBlockBreakS2CP.kt @@ -36,7 +36,7 @@ class LegacyBlockBreakS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { // never happens? connection.world[blockPosition] = blockState } - connection.fireEvent(LegacyBlockBreakAckEvent(connection, this)) + connection.fire(LegacyBlockBreakAckEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/AddBossbarS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/AddBossbarS2CP.kt index cfbe6ebc6..94d1296c0 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/AddBossbarS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/AddBossbarS2CP.kt @@ -16,7 +16,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar import de.bixilon.minosoft.data.bossbar.Bossbar import de.bixilon.minosoft.data.bossbar.BossbarColors import de.bixilon.minosoft.data.bossbar.BossbarNotches -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.bossbar.BossbarAddEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.InByteBuffer @@ -63,7 +62,7 @@ class AddBossbarS2CP( // ToDo: Check if bossbar is already present connection.bossbarManager.bossbars[uuid] = bossbar - connection.fireEvent(BossbarAddEvent(connection, EventInitiators.SERVER, uuid, bossbar)) + connection.fire(BossbarAddEvent(connection, uuid, bossbar)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/FlagsBossbarS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/FlagsBossbarS2CP.kt index 54062af39..211570dcc 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/FlagsBossbarS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/FlagsBossbarS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.bossbar.BossbarFlagsSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.InByteBuffer @@ -59,7 +58,7 @@ class FlagsBossbarS2CP( return } - connection.fireEvent(BossbarFlagsSetEvent(connection, EventInitiators.SERVER, uuid, bossbar)) + connection.fire(BossbarFlagsSetEvent(connection, uuid, bossbar)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/RemoveBossbarS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/RemoveBossbarS2CP.kt index e54761ed2..298fe4adf 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/RemoveBossbarS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/RemoveBossbarS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.bossbar.BossbarRemoveEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.logging.Log @@ -27,7 +26,7 @@ class RemoveBossbarS2CP( override fun handle(connection: PlayConnection) { val bossbar = connection.bossbarManager.bossbars.remove(uuid) ?: return - connection.fireEvent(BossbarRemoveEvent(connection, EventInitiators.SERVER, uuid, bossbar)) + connection.fire(BossbarRemoveEvent(connection, uuid, bossbar)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/StyleBossbarS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/StyleBossbarS2CP.kt index 58b9b680a..92f3e516e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/StyleBossbarS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/StyleBossbarS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar import de.bixilon.minosoft.data.bossbar.BossbarColors import de.bixilon.minosoft.data.bossbar.BossbarNotches -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.bossbar.BossbarStyleSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.InByteBuffer @@ -48,7 +47,7 @@ class StyleBossbarS2CP( return } - connection.fireEvent(BossbarStyleSetEvent(connection, EventInitiators.SERVER, uuid, bossbar)) + connection.fire(BossbarStyleSetEvent(connection, uuid, bossbar)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/TitleBossbarS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/TitleBossbarS2CP.kt index 620216a74..5fd989b41 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/TitleBossbarS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/TitleBossbarS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.bossbar.BossbarTitleSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.InByteBuffer @@ -36,7 +35,7 @@ class TitleBossbarS2CP( } bossbar.title = title - connection.fireEvent(BossbarTitleSetEvent(connection, EventInitiators.SERVER, uuid, bossbar)) + connection.fire(BossbarTitleSetEvent(connection, uuid, bossbar)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/ValueBossbarS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/ValueBossbarS2CP.kt index 22accec41..495872786 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/ValueBossbarS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/bossbar/ValueBossbarS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.bossbar -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.bossbar.BossbarValueSetEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.InByteBuffer @@ -36,7 +35,7 @@ class ValueBossbarS2CP( } bossbar.value = value - connection.fireEvent(BossbarValueSetEvent(connection, EventInitiators.SERVER, uuid, bossbar)) + connection.fire(BossbarValueSetEvent(connection, uuid, bossbar)) } override fun check(connection: PlayConnection) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt index e8f2eda6c..3f26fe437 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/ChatMessageS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.minosoft.data.chat.message.SimpleChatMessage import de.bixilon.minosoft.data.chat.type.DefaultMessageTypes import de.bixilon.minosoft.data.registries.chat.ChatMessageType import de.bixilon.minosoft.data.text.ChatComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.chat.ChatMessageReceiveEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket @@ -64,7 +63,7 @@ class ChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } else { PlayerChatMessage(text, type, connection.getMessageSender(sender)) } - connection.fireEvent(ChatMessageReceiveEvent(connection, EventInitiators.SERVER, message)) + connection.fire(ChatMessageReceiveEvent(connection, message)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt index a57b4aeca..a1e52cb51 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/chat/SignedChatMessageS2CP.kt @@ -22,7 +22,6 @@ import de.bixilon.minosoft.data.chat.signature.errors.MessageExpiredError import de.bixilon.minosoft.data.registries.chat.ChatParameter import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.data.text.TextComponent -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.chat.ChatMessageReceiveEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket @@ -118,7 +117,7 @@ class SignedChatMessageS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { return } } - connection.fireEvent(ChatMessageReceiveEvent(connection, EventInitiators.SERVER, message)) + connection.fire(ChatMessageReceiveEvent(connection, message)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt index c2e0ab45d..c3a8cc5e2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/CloseContainerS2CP.kt @@ -28,7 +28,7 @@ class CloseContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { val container = connection.player.containers[containerId] ?: return container.onClose() - connection.fireEvent(ContainerCloseEvent(connection, containerId, container)) + connection.fire(ContainerCloseEvent(connection, containerId, container)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt index 317a426b3..23826aab5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/container/OpenContainerS2CP.kt @@ -80,7 +80,7 @@ class OpenContainerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { connection.player.containers[containerId] = container connection.player.openedContainer = container - connection.fireEvent(ContainerOpenEvent(connection, containerId, container)) + connection.fire(ContainerOpenEvent(connection, containerId, container)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt index 9d69242ad..116b77838 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityCollectS2CP.kt @@ -37,7 +37,7 @@ class EntityCollectS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } override fun handle(connection: PlayConnection) { - if (connection.fireEvent(CollectItemAnimationEvent(connection, this))) { + if (connection.fire(CollectItemAnimationEvent(connection, this))) { return } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt index e1d17329f..30c7cad31 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityDataS2CP.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.entity -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.EntityDataChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket @@ -32,7 +31,7 @@ class EntityDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val entity = connection.world.entities[entityId] ?: return entity.data.merge(data) - connection.fireEvent(EntityDataChangeEvent(connection, EventInitiators.SERVER, entity)) + connection.fire(EntityDataChangeEvent(connection, entity)) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt index 96eb39c7b..775078ac9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityEquipmentS2CP.kt @@ -55,7 +55,7 @@ class EntityEquipmentS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { val entity = connection.world.entities[entityId] ?: return - connection.fireEvent(EntityEquipmentChangeEvent(connection, this)) + connection.fire(EntityEquipmentChangeEvent(connection, this)) for ((slot, itemStack) in equipment) { if (itemStack == null) { entity.equipment.remove(slot) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityPlayerS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityPlayerS2CP.kt index fd60cea9b..cfe2d797e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityPlayerS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/EntityPlayerS2CP.kt @@ -80,7 +80,7 @@ class EntityPlayerS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { // connection.tabList.tabListItemsByUUID[entityUUID]?.let { entity.tabListItem = it } connection.world.entities.add(entityId, entityUUID, entity) - connection.fireEvent(EntitySpawnEvent(connection, this)) + connection.fire(EntitySpawnEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt index a8a79b09d..9cf588431 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityDestroyS2CP.kt @@ -12,7 +12,6 @@ */ package de.bixilon.minosoft.protocol.packets.s2c.play.entity.spawn -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.EntityDestroyEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket @@ -45,7 +44,7 @@ class EntityDestroyS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { entity.vehicle?.passengers?.remove(entity) connection.world.entities.remove(entityId) - connection.fireEvent(EntityDestroyEvent(connection, EventInitiators.SERVER, entity)) + connection.fire(EntityDestroyEvent(connection, entity)) } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt index 349aae1ff..ab27b19f5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityExperienceOrbS2CP.kt @@ -43,7 +43,7 @@ class EntityExperienceOrbS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.world.entities.add(entityId, null, entity) - connection.fireEvent(EntitySpawnEvent(connection, this)) + connection.fire(EntitySpawnEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt index 75600ec22..6a8830828 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityMobSpawnS2CP.kt @@ -71,7 +71,7 @@ class EntityMobSpawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.world.entities.add(entityId, entityUUID, entity) - connection.fireEvent(EntitySpawnEvent(connection, this)) + connection.fire(EntitySpawnEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt index eff0485ce..ce9ca97d1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityObjectSpawnS2CP.kt @@ -72,7 +72,7 @@ class EntityObjectSpawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { connection.world.entities.add(entityId, entityUUID, entity) velocity?.let { entity.velocity = it } - connection.fireEvent(EntitySpawnEvent(connection, this)) + connection.fire(EntitySpawnEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt index cd93495a7..1077ea4c4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/EntityPaintingS2CP.kt @@ -61,7 +61,7 @@ class EntityPaintingS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.world.entities.add(entityId, entityUUID, entity) - connection.fireEvent(EntitySpawnEvent(connection, this)) + connection.fire(EntitySpawnEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt index b119a770b..986e5b4cc 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/entity/spawn/GlobalEntitySpawnS2CP.kt @@ -44,7 +44,7 @@ class GlobalEntitySpawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { override fun handle(connection: PlayConnection) { connection.world.entities.add(entityId, null, entity) - connection.fireEvent(EntitySpawnEvent(connection, this)) + connection.fire(EntitySpawnEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt index d1f470063..7d35b7c60 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/ObjectivePositionS2CP.kt @@ -31,13 +31,13 @@ class ObjectivePositionS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { val scoreboardManager = connection.scoreboardManager if (name == null) { scoreboardManager.positions -= position - connection.fireEvent(ObjectivePositionSetEvent(connection, position, null)) + connection.fire(ObjectivePositionSetEvent(connection, position, null)) return } val objective = scoreboardManager.objectives[name] ?: return scoreboardManager.positions[position] = objective - connection.fireEvent(ObjectivePositionSetEvent(connection, position, objective)) + connection.fire(ObjectivePositionSetEvent(connection, position, objective)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/CreateObjectiveS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/CreateObjectiveS2CP.kt index 8f5711ce4..b7aa67158 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/CreateObjectiveS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/CreateObjectiveS2CP.kt @@ -62,7 +62,7 @@ class CreateObjectiveS2CP( connection.scoreboardManager.objectives[name] = objective - connection.fireEvent(ScoreboardObjectiveCreateEvent(connection, objective)) + connection.fire(ScoreboardObjectiveCreateEvent(connection, objective)) } enum class ObjectiveUnits { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/RemoveObjectiveS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/RemoveObjectiveS2CP.kt index 0ada2ca30..2b493b19c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/RemoveObjectiveS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/RemoveObjectiveS2CP.kt @@ -38,7 +38,7 @@ class RemoveObjectiveS2CP( continue } connection.scoreboardManager.positions -= position - connection.fireEvent(ObjectivePositionSetEvent(connection, position, null)) + connection.fire(ObjectivePositionSetEvent(connection, position, null)) } } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/UpdateObjectiveS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/UpdateObjectiveS2CP.kt index 7cdedde46..f52bfc33a 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/UpdateObjectiveS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/objective/UpdateObjectiveS2CP.kt @@ -63,6 +63,6 @@ class UpdateObjectiveS2CP( objective.displayName = displayName objective.unit = unit - connection.fireEvent(ScoreboardObjectiveUpdateEvent(connection, objective)) + connection.fire(ScoreboardObjectiveUpdateEvent(connection, objective)) } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/PutScoreboardScoreS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/PutScoreboardScoreS2CP.kt index 6cf9131d9..65dee0e95 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/PutScoreboardScoreS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/PutScoreboardScoreS2CP.kt @@ -39,7 +39,7 @@ class PutScoreboardScoreS2CP( val score = ScoreboardScore(entity, objective, connection.scoreboardManager.getTeam(entity), value) objective.scores[entity] = score - connection.fireEvent(ScoreboardScorePutEvent(connection, score)) + connection.fire(ScoreboardScorePutEvent(connection, score)) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/RemoveScoreboardScoreS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/RemoveScoreboardScoreS2CP.kt index 56435a333..c03c268b9 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/RemoveScoreboardScoreS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/score/RemoveScoreboardScoreS2CP.kt @@ -32,13 +32,13 @@ class RemoveScoreboardScoreS2CP( for ((_, objective) in connection.scoreboardManager.objectives.toSynchronizedMap()) { val score = objective.scores.remove(entity) ?: continue - connection.fireEvent(ScoreboardScoreRemoveEvent(connection, score)) + connection.fire(ScoreboardScoreRemoveEvent(connection, score)) } return } val score = objective.scores.remove(entity) ?: return - connection.fireEvent(ScoreboardScoreRemoveEvent(connection, score)) + connection.fire(ScoreboardScoreRemoveEvent(connection, score)) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/AddTeamMemberS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/AddTeamMemberS2CP.kt index 88b48bbdc..377d22ee1 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/AddTeamMemberS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/AddTeamMemberS2CP.kt @@ -43,7 +43,7 @@ class AddTeamMemberS2CP( } connection.scoreboardManager.updateScoreTeams(team, members) - connection.fireEvent(TeamMemberAddEvent(connection, team, members)) + connection.fire(TeamMemberAddEvent(connection, team, members)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/CreateTeamS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/CreateTeamS2CP.kt index 1bc36d5cb..5557c72f5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/CreateTeamS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/CreateTeamS2CP.kt @@ -125,7 +125,7 @@ class CreateTeamS2CP( connection.scoreboardManager.updateScoreTeams(team, members) - connection.fireEvent(TeamCreateEvent(connection, team)) + connection.fire(TeamCreateEvent(connection, team)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamMemberS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamMemberS2CP.kt index aa15a7ae4..02b8a4d20 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamMemberS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamMemberS2CP.kt @@ -47,7 +47,7 @@ class RemoveTeamMemberS2CP( } connection.scoreboardManager.updateScoreTeams(team, members, true) - connection.fireEvent(TeamMemberRemoveEvent(connection, team, members)) + connection.fire(TeamMemberRemoveEvent(connection, team, members)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamS2CP.kt index 2108932a0..c45085721 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/RemoveTeamS2CP.kt @@ -26,7 +26,7 @@ class RemoveTeamS2CP(val name: String) : TeamsS2CP { connection.scoreboardManager.updateScoreTeams(team, team.members, true) - connection.fireEvent(ScoreboardTeamRemoveEvent(connection, team)) + connection.fire(ScoreboardTeamRemoveEvent(connection, team)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/UpdateTeamS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/UpdateTeamS2CP.kt index 4aac8254c..06a71f45c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/UpdateTeamS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/scoreboard/teams/UpdateTeamS2CP.kt @@ -104,7 +104,7 @@ class UpdateTeamS2CP( team.nameTagVisibility = nameTagVisibility team.formattingCode = formattingCode - connection.fireEvent(TeamUpdateEvent(connection, team)) + connection.fire(TeamUpdateEvent(connection, team)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt index 2be4b31fc..3ef039e37 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sign/SignEditorS2CP.kt @@ -32,7 +32,7 @@ class SignEditorS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } override fun handle(connection: PlayConnection) { - if (connection.fireEvent(OpenSignEditorEvent(connection, this))) { + if (connection.fire(OpenSignEditorEvent(connection, this))) { return } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt index 61587501c..d1e1d424d 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/NamedSoundS2CP.kt @@ -72,7 +72,7 @@ class NamedSoundS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { if (!connection.profiles.audio.types.packet) { return } - connection.fireEvent(PlaySoundEvent(connection, this)) + connection.fire(PlaySoundEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt index a2050f8a7..69226a26f 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/sound/SoundEventS2CP.kt @@ -66,7 +66,7 @@ class SoundEventS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { if (!connection.profiles.audio.types.packet) { return } - connection.fireEvent(PlaySoundEvent(connection, this)) + connection.fire(PlaySoundEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt index a9402e805..f897fcdea 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListS2CP.kt @@ -17,8 +17,8 @@ import de.bixilon.kutil.enums.EnumUtil import de.bixilon.kutil.enums.ValuesEnum import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity -import de.bixilon.minosoft.data.entities.entities.player.tab.TabListItem -import de.bixilon.minosoft.data.entities.entities.player.tab.TabListItemData +import de.bixilon.minosoft.data.entities.entities.player.additional.AdditionalDataUpdate +import de.bixilon.minosoft.data.entities.entities.player.additional.PlayerAdditional import de.bixilon.minosoft.modding.event.events.TabListEntryChangeEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket @@ -32,14 +32,14 @@ import java.util.* @LoadPacket(threadSafe = false) class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { - val items: MutableMap = mutableMapOf() + val items: MutableMap = mutableMapOf() init { val action = TabListItemActions[buffer.readVarInt()] val count: Int = buffer.readVarInt() for (i in 0 until count) { val uuid: UUID = buffer.readUUID() - val data: TabListItemData? + val data: AdditionalDataUpdate? when (action) { TabListItemActions.ADD -> { val name = buffer.readString() @@ -54,7 +54,7 @@ class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } val publicKey = if (buffer.versionId >= ProtocolVersions.V_22W18A) buffer.readOptional { buffer.readPlayerPublicKey() } else null publicKey?.requireSignature(buffer.versionId, uuid) - data = TabListItemData( + data = AdditionalDataUpdate( name = name, properties = properties, gamemode = gamemode, @@ -65,11 +65,11 @@ class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } TabListItemActions.UPDATE_GAMEMODE -> { - data = TabListItemData(gamemode = Gamemodes[buffer.readVarInt()]) + data = AdditionalDataUpdate(gamemode = Gamemodes[buffer.readVarInt()]) } TabListItemActions.UPDATE_LATENCY -> { - data = TabListItemData(ping = buffer.readVarInt()) + data = AdditionalDataUpdate(ping = buffer.readVarInt()) } TabListItemActions.UPDATE_DISPLAY_NAME -> { @@ -79,7 +79,7 @@ class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } else { null } - data = TabListItemData( + data = AdditionalDataUpdate( hasDisplayName = hasDisplayName, displayName = displayName, ) @@ -110,9 +110,9 @@ class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { return@run null } val item = if (entity === connection.player) { - connection.player.tabListItem + connection.player.additional } else { - TabListItem(name = data.name) + PlayerAdditional(name = data.name) } connection.tabList.tabListItemsByUUID[uuid] = item connection.tabList.tabListItemsByName[data.name] = item @@ -129,18 +129,18 @@ class TabListS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { } ?: continue if (entity === connection.player) { - entity.tabListItem.genericMerge(data) + entity.additional.genericMerge(data) } else { tabListItem.merge(data) if (entity == null || entity !is PlayerEntity) { continue } - entity.tabListItem = tabListItem + // ToDO entity.additional = tabListItem } } - connection.fireEvent(TabListEntryChangeEvent(connection, this)) + connection.fire(TabListEntryChangeEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt index 49dda93aa..622bb0abd 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/tab/TabListTextS2CP.kt @@ -31,7 +31,7 @@ class TabListTextS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket { connection.tabList.header = header connection.tabList.footer = footer - connection.fireEvent(TabListInfoChangeEvent(connection, this)) + connection.fire(TabListInfoChangeEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt index 63434946a..8c4e8d6b4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HideTitleS2CP.kt @@ -25,7 +25,7 @@ import de.bixilon.minosoft.util.logging.LogMessageType class HideTitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP { override fun handle(connection: PlayConnection) { - connection.fireEvent(TitleHideEvent(connection, this)) + connection.fire(TitleHideEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt index e85d283cd..5396fb378 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/HotbarTextS2CP.kt @@ -15,7 +15,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.play.title import de.bixilon.minosoft.data.chat.message.SimpleChatMessage import de.bixilon.minosoft.data.chat.type.DefaultMessageTypes -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.chat.ChatMessageReceiveEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.factory.LoadPacket @@ -35,6 +34,6 @@ class HotbarTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP { override fun handle(connection: PlayConnection) { Log.log(LogMessageType.CHAT_IN) { "[HOTBAR] $text" } val message = SimpleChatMessage(text, connection.registries.messageTypeRegistry[DefaultMessageTypes.GAME]!!) - connection.fireEvent(ChatMessageReceiveEvent(connection, EventInitiators.SERVER, message)) + connection.fire(ChatMessageReceiveEvent(connection, message)) } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt index d65449bb7..51822897c 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/ResetTitleS2CP.kt @@ -25,7 +25,7 @@ import de.bixilon.minosoft.util.logging.LogMessageType class ResetTitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP { override fun handle(connection: PlayConnection) { - connection.fireEvent(TitleResetEvent(connection, this)) + connection.fire(TitleResetEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt index 7d57ba1aa..f7b5c25e2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/SubtitleS2CP.kt @@ -26,7 +26,7 @@ class SubtitleS2CP(buffer: PlayInByteBuffer) : TitleS2CP { val text = buffer.readChatComponent() override fun handle(connection: PlayConnection) { - connection.fireEvent(TitleSubtitleSetEvent(connection, this)) + connection.fire(TitleSubtitleSetEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt index 4551682a0..85f32a659 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTextS2CP.kt @@ -26,7 +26,7 @@ class TitleTextS2CP(buffer: PlayInByteBuffer) : TitleS2CP { val text = buffer.readChatComponent() override fun handle(connection: PlayConnection) { - connection.fireEvent(TitleSetEvent(connection, this)) + connection.fire(TitleSetEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt index 3654a947a..8571ddc01 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/title/TitleTimesS2CP.kt @@ -28,7 +28,7 @@ class TitleTimesS2CP(buffer: PlayInByteBuffer) : TitleS2CP { val fadeOutTime = buffer.readInt() override fun handle(connection: PlayConnection) { - connection.fireEvent(TitleTimesSetEvent(connection, this)) + connection.fire(TitleTimesSetEvent(connection, this)) } override fun log(reducedLog: Boolean) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt index b77bf7dfc..d0ed89aa5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/PongS2CP.kt @@ -13,7 +13,6 @@ package de.bixilon.minosoft.protocol.packets.s2c.status import de.bixilon.kutil.time.TimeUtil -import de.bixilon.minosoft.modding.event.EventInitiators import de.bixilon.minosoft.modding.event.events.connection.status.StatusPongReceiveEvent import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection import de.bixilon.minosoft.protocol.network.connection.status.StatusConnectionStates @@ -37,9 +36,9 @@ class PongS2CP(buffer: InByteBuffer) : StatusS2CPacket { } val latency = TimeUtil.nanos - pingQuery.nanos connection.network.disconnect() - val pongEvent = StatusPongReceiveEvent(connection, EventInitiators.SERVER, pingId, latency) + val pongEvent = StatusPongReceiveEvent(connection, pingId, latency) connection.lastPongEvent = pongEvent - connection.fireEvent(pongEvent) + connection.fire(pongEvent) connection.state = StatusConnectionStates.PING_DONE } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt index f84cfdf85..05ba4bfb8 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/status/StatusS2CP.kt @@ -41,7 +41,7 @@ class StatusS2CP(buffer: InByteBuffer) : StatusS2CPacket { connection.serverVersion = version } - connection.fireEvent(ServerStatusReceiveEvent(connection, this)) + connection.fire(ServerStatusReceiveEvent(connection, this)) val pingQuery = PingQuery() connection.pingQuery = pingQuery 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 cdc831ac4..8c1e4b90e 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/LANServerListener.kt @@ -91,7 +91,7 @@ object LANServerListener { if (SERVERS.size > ProtocolDefinition.LAN_SERVER_MAXIMUM_SERVERS) { continue } - if (GlobalEventMaster.fireEvent(LANServerDiscoverEvent(packet.address, server))) { + if (GlobalEventMaster.fire(LANServerDiscoverEvent(packet.address, server))) { continue } Log.log(LogMessageType.NETWORK_STATUS, LogLevels.INFO) { "Discovered LAN servers: ${server.address}" } diff --git a/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt b/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt index 3137a1a2b..a89eb1f1a 100644 --- a/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt +++ b/src/main/java/de/bixilon/minosoft/terminal/AutoConnect.kt @@ -22,7 +22,7 @@ import de.bixilon.minosoft.data.registries.versions.Version import de.bixilon.minosoft.data.registries.versions.Versions import de.bixilon.minosoft.modding.event.events.connection.ConnectionErrorEvent import de.bixilon.minosoft.modding.event.events.connection.status.ServerStatusReceiveEvent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates.Companion.disconnected import de.bixilon.minosoft.protocol.network.connection.status.StatusConnection @@ -50,7 +50,7 @@ object AutoConnect { } } } - connection.registerEvent(CallbackEventInvoker.of { ShutdownManager.shutdown(reason = AbstractShutdownReason.CRASH) }) + connection.register(CallbackEventListener.of { ShutdownManager.shutdown(reason = AbstractShutdownReason.CRASH) }) Log.log(LogMessageType.AUTO_CONNECT, LogLevels.INFO) { "Connecting to $address, with version $version using account $account..." } connection.connect() } @@ -66,10 +66,10 @@ object AutoConnect { if (version == Versions.AUTOMATIC) { Log.log(LogMessageType.AUTO_CONNECT, LogLevels.INFO) { "Pinging server to get version..." } val ping = StatusConnection(address) - ping.registerEvent(CallbackEventInvoker.of { + ping.register(CallbackEventListener.of { autoConnect(ping.tryAddress!!, ping.serverVersion ?: throw IllegalArgumentException("Could not determinate server's version!"), account) }) - ping.registerEvent(CallbackEventInvoker.of { exitProcess(1) }) + ping.register(CallbackEventListener.of { exitProcess(1) }) ping.ping() return } diff --git a/src/main/java/de/bixilon/minosoft/util/logging/Log.kt b/src/main/java/de/bixilon/minosoft/util/logging/Log.kt index 2c1585d5f..505dcb97e 100644 --- a/src/main/java/de/bixilon/minosoft/util/logging/Log.kt +++ b/src/main/java/de/bixilon/minosoft/util/logging/Log.kt @@ -19,7 +19,7 @@ import de.bixilon.minosoft.config.profile.profiles.other.OtherProfileSelectEvent import de.bixilon.minosoft.data.text.BaseComponent import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.data.text.TextComponent -import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker +import de.bixilon.minosoft.modding.event.listener.CallbackEventListener import de.bixilon.minosoft.modding.event.master.GlobalEventMaster import de.bixilon.minosoft.terminal.RunConfiguration import java.io.PrintStream @@ -97,7 +97,7 @@ object Log { } }, "Log").start() - GlobalEventMaster.registerEvent(CallbackEventInvoker.of { this.levels = it.profile.log.levels }) + GlobalEventMaster.register(CallbackEventListener.of { this.levels = it.profile.log.levels }) }