From 71e4cd62729ce6a98e36ef3cc5b37b5c81db95fd Mon Sep 17 00:00:00 2001 From: s809 <43530948+s809@users.noreply.github.com> Date: Tue, 6 Aug 2024 23:12:13 +0500 Subject: [PATCH] Fix real-time updates --- .../core/multiplayer/client/ClientNetworkState.java | 6 ++++++ .../core/network/event/NetworkEventSource.java | 2 +- .../core/network/event/ScopedNetworkEventSource.java | 10 +++++++++- .../core/network/messages/NetworkMessage.java | 2 -- .../core/network/messages/TrackableMessage.java | 3 ++- .../messages/fullData/FullDataChunkMessage.java | 3 --- .../fullData/FullDataPartialUpdateMessage.java | 2 -- 7 files changed, 18 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java index 850920e7e..130a5ca73 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/multiplayer/client/ClientNetworkState.java @@ -10,6 +10,7 @@ import com.seibel.distanthorizons.core.network.event.ScopedNetworkEventSource; import com.seibel.distanthorizons.core.network.event.CloseEvent; import com.seibel.distanthorizons.core.network.messages.base.RemotePlayerConfigMessage; import com.seibel.distanthorizons.core.network.messages.fullData.FullDataChunkMessage; +import com.seibel.distanthorizons.core.network.messages.fullData.FullDataPartialUpdateMessage; import com.seibel.distanthorizons.core.network.messages.fullData.FullDataPayload; import com.seibel.distanthorizons.core.network.session.Session; import com.seibel.distanthorizons.core.sql.dto.FullDataSourceV2DTO; @@ -84,6 +85,11 @@ public class ClientNetworkState implements Closeable composite.addComponent(true, msg.buffer); LOGGER.debug("Full data buffer {}: {}", msg.bufferId, composite); }); + + this.session.registerHandler(FullDataPartialUpdateMessage.class, msg -> + { + // Dummy handler to prevent unhandled message warnings + }); } public FullDataSourceV2DTO decodeDataSourceAndReleaseBuffer(FullDataPayload msg) diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/event/NetworkEventSource.java b/core/src/main/java/com/seibel/distanthorizons/core/network/event/NetworkEventSource.java index f1c0f3dd5..16a07eeff 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/event/NetworkEventSource.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/event/NetworkEventSource.java @@ -102,7 +102,7 @@ public abstract class NetworkEventSource } } - if (!handled && ModInfo.IS_DEV_BUILD && message.warnWhenUnhandled()) + if (!handled && ModInfo.IS_DEV_BUILD) { LOGGER.warn("Unhandled message: " + message); } diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/event/ScopedNetworkEventSource.java b/core/src/main/java/com/seibel/distanthorizons/core/network/event/ScopedNetworkEventSource.java index cf690aeb0..3d9ff50a8 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/event/ScopedNetworkEventSource.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/event/ScopedNetworkEventSource.java @@ -29,11 +29,15 @@ public final class ScopedNetworkEventSource extends NetworkEventSource public final NetworkEventSource parent; private boolean isClosed = false; + private final Consumer actualHandleMessageStable = this::handleMessage; + + public ScopedNetworkEventSource(NetworkEventSource parent) { this.parent = parent; } + @Override public void registerHandler(Class handlerClass, Consumer handlerImplementation) { @@ -42,9 +46,13 @@ public final class ScopedNetworkEventSource extends NetworkEventSource return; } - this.parent.registerHandler(this, handlerClass, this::handleMessage); + //noinspection unchecked + this.parent.registerHandler(this, handlerClass, (Consumer) this.actualHandleMessageStable); + + super.registerHandler(this, handlerClass, handlerImplementation); } + @Override public void close() { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/NetworkMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/NetworkMessage.java index 64e684075..b71a298cf 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/NetworkMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/NetworkMessage.java @@ -10,8 +10,6 @@ public abstract class NetworkMessage implements INetworkObject public Session session = null; public IServerPlayerWrapper serverPlayer() { return this.session.serverPlayer; } - public boolean warnWhenUnhandled() { return true; } - public Session getConnection() { return this.session; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/TrackableMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/TrackableMessage.java index dc0d76bf2..5cc6166d1 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/TrackableMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/TrackableMessage.java @@ -39,7 +39,8 @@ public abstract class TrackableMessage extends NetworkMessage public long futureId = lastId.getAndIncrement() | ((Objects.requireNonNull(SharedApi.getEnvironment()) == EWorldEnvironment.Server_Only ? 1 : 0) << 31); - public void setSession(Session session) + @Override + public void setSession(Session session) { super.setSession(session); this.futureId |= (long) session.id << 32; diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataChunkMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataChunkMessage.java index 000715c74..fb9ff4c03 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataChunkMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataChunkMessage.java @@ -39,9 +39,6 @@ public class FullDataChunkMessage extends NetworkMessage } - @Override - public boolean warnWhenUnhandled() { return false; } - @Override public void encode(ByteBuf out) { diff --git a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataPartialUpdateMessage.java b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataPartialUpdateMessage.java index 29bd25403..9612d222b 100644 --- a/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataPartialUpdateMessage.java +++ b/core/src/main/java/com/seibel/distanthorizons/core/network/messages/fullData/FullDataPartialUpdateMessage.java @@ -42,8 +42,6 @@ public class FullDataPartialUpdateMessage extends NetworkMessage implements ILev this.payload = payload; } - @Override - public boolean warnWhenUnhandled() { return false; } @Override public void encode(ByteBuf out)