From a4d5b9502ddce7e017d0853535ecc9b15a14ebd2 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Tue, 4 Jan 2022 02:28:57 +0100 Subject: [PATCH] render window: remove initialPosition check, check for connection state --- .../minosoft/gui/rendering/RenderWindow.kt | 15 ++++----------- .../packets/s2c/play/PositionAndRotationS2CP.kt | 3 +-- .../protocol/packets/s2c/play/RespawnS2CP.kt | 2 ++ .../minosoft/util/delegate/DelegateManager.kt | 1 + 4 files changed, 8 insertions(+), 13 deletions(-) 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 60283afff..757ea3efa 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/RenderWindow.kt @@ -41,10 +41,10 @@ import de.bixilon.minosoft.gui.rendering.system.window.BaseWindow import de.bixilon.minosoft.gui.rendering.system.window.GLFWWindow import de.bixilon.minosoft.gui.rendering.tint.TintManager import de.bixilon.minosoft.gui.rendering.util.ScreenshotTaker -import de.bixilon.minosoft.modding.event.events.PacketReceiveEvent +import de.bixilon.minosoft.modding.event.events.connection.play.PlayConnectionStateChangeEvent import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection -import de.bixilon.minosoft.protocol.packets.s2c.play.PositionAndRotationS2CP +import de.bixilon.minosoft.protocol.network.connection.play.PlayConnectionStates import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.util.Stopwatch import de.bixilon.minosoft.util.logging.Log @@ -92,8 +92,6 @@ class RenderWindow( var tickCount = 0L var lastTickTimer = TimeUtil.time - private var initialPositionReceived = false - var renderingState = RenderingStates.RUNNING private set(value) { @@ -109,14 +107,9 @@ class RenderWindow( } init { - connection.registerEvent(CallbackEventInvoker.of { - val packet = it.packet - if (packet !is PositionAndRotationS2CP) { - return@of - } - if (!initialPositionReceived) { + connection.registerEvent(CallbackEventInvoker.of { + if (it.state == PlayConnectionStates.PLAYING && latch.count > 0) { latch.dec() - initialPositionReceived = true } }) profile.experimental::fps.profileWatch(this, true, profile) { diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt index 370d793ff..e665553b2 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/PositionAndRotationS2CP.kt @@ -19,7 +19,6 @@ import de.bixilon.minosoft.protocol.packets.c2s.play.PositionAndRotationC2SP import de.bixilon.minosoft.protocol.packets.c2s.play.TeleportConfirmC2SP import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer -import de.bixilon.minosoft.protocol.protocol.ProtocolStates import de.bixilon.minosoft.protocol.protocol.ProtocolVersions import de.bixilon.minosoft.util.BitByte import de.bixilon.minosoft.util.logging.Log @@ -87,7 +86,7 @@ class PositionAndRotationS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { } connection.sendPacket(PositionAndRotationC2SP(position, rotation, isOnGround)) - if (connection.state != PlayConnectionStates.PLAYING && connection.protocolState != ProtocolStates.DISCONNECTED) { + if (connection.state == PlayConnectionStates.SPAWNING) { connection.state = PlayConnectionStates.PLAYING } } 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 de9fc7a8d..436d9ad46 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 @@ -20,6 +20,7 @@ import de.bixilon.minosoft.data.registries.dimension.DimensionProperties import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY 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 import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket import de.bixilon.minosoft.protocol.protocol.PlayInByteBuffer import de.bixilon.minosoft.protocol.protocol.ProtocolVersions @@ -90,6 +91,7 @@ class RespawnS2CP(buffer: PlayInByteBuffer) : PlayS2CPacket() { override fun handle(connection: PlayConnection) { // clear all chunks + connection.state = PlayConnectionStates.SPAWNING connection.world.chunks.clear() connection.world.dimension = dimension connection.player.isSpawnConfirmed = false diff --git a/src/main/java/de/bixilon/minosoft/util/delegate/DelegateManager.kt b/src/main/java/de/bixilon/minosoft/util/delegate/DelegateManager.kt index a7cd74dbb..53fdab111 100644 --- a/src/main/java/de/bixilon/minosoft/util/delegate/DelegateManager.kt +++ b/src/main/java/de/bixilon/minosoft/util/delegate/DelegateManager.kt @@ -18,6 +18,7 @@ import kotlin.reflect.KProperty import kotlin.reflect.KProperty0 import kotlin.reflect.KProperty1 +@Deprecated("Will be integrated in KUtil") object DelegateManager { // [field][][reference][listener] private val listeners: SynchronizedMap, MutableSet, DelegateListener>>>> = synchronizedMapOf()