From 4db63f37f50a360f7e1668ff5307c74d50ac2904 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sat, 13 Nov 2021 16:55:48 +0100 Subject: [PATCH] fix gamemode handling --- .../minosoft/gui/rendering/block/WorldRenderer.kt | 4 ++-- .../gui/hud/elements/other/DebugHUDElement.kt | 12 +++--------- .../protocol/packets/s2c/play/JoinGameS2CP.kt | 1 + .../protocol/packets/s2c/play/TabListDataS2CP.kt | 10 +++++----- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt index 6f829c3f1..59bab79b7 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/block/WorldRenderer.kt @@ -231,7 +231,7 @@ class WorldRenderer( } private fun updateSectionSync(chunkPosition: Vec2i, sectionHeight: Int, chunk: Chunk, meshes: SynchronizedMap) { - if (!chunk.isFullyLoaded || incomplete.contains(chunkPosition)) { + if (!chunk.isFullyLoaded || chunkPosition in incomplete) { // chunk not loaded and/or neighbours also not fully loaded return } @@ -339,7 +339,7 @@ class WorldRenderer( for ((chunkPosition, sectionHeights) in this.queue.toSynchronizedMap()) { val chunk = world[chunkPosition] - if (chunk == null) { + if (chunk == null || !chunk.isFullyLoaded || chunkPosition in incomplete) { this.queue.remove(chunkPosition) continue } 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 0c69fb697..8caaaa85d 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 @@ -17,10 +17,9 @@ import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.config.key.KeyAction 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.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation -import de.bixilon.minosoft.data.registries.other.game.event.handlers.gamemode.GamemodeChangeGameEventHandler +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.ChatColors import de.bixilon.minosoft.data.text.TextComponent @@ -41,7 +40,6 @@ 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.modding.event.events.DifficultyChangeEvent -import de.bixilon.minosoft.modding.event.events.GameEventChangeEvent import de.bixilon.minosoft.modding.event.events.TimeChangeEvent import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker import de.bixilon.minosoft.modding.loading.ModLoader @@ -152,12 +150,8 @@ class DebugHUDElement(hudRenderer: HUDRenderer) : LayoutedHUDElement layout += LineSpacerElement(hudRenderer) layout += TextElement(hudRenderer, BaseComponent("Gamemode ", connection.player.gamemode)).apply { - connection.registerEvent(CallbackEventInvoker.of { - if (it.event.resourceLocation != GamemodeChangeGameEventHandler.RESOURCE_LOCATION) { - return@of - } - // ToDo: Improve game mode change event - text = BaseComponent("Gamemode ", Gamemodes[it.data.toInt()]) + connection.registerEvent(CallbackEventInvoker.of { + text = BaseComponent("Gamemode ", it.gamemode) }) } diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt index 51aec361a..7777c67e4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/JoinGameS2CP.kt @@ -147,6 +147,7 @@ class JoinGameS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { } override fun handle(connection: PlayConnection) { + val gamemode = Gamemodes.SPECTATOR val playerEntity = connection.player val previousGamemode = playerEntity.tabListItem.gamemode diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TabListDataS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TabListDataS2CP.kt index 6c87a48fa..1f6170679 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TabListDataS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/TabListDataS2CP.kt @@ -169,13 +169,13 @@ class TabListDataS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { entity.tabListItem.specialMerge(data) } else { tabListItem.merge(data) - } - - if (entity == null || entity !is PlayerEntity) { - continue + if (entity == null || entity !is PlayerEntity) { + continue + } + + entity.tabListItem = tabListItem } - entity.tabListItem = tabListItem } connection.fireEvent(TabListEntryChangeEvent(connection, this)) }