From c095c047562aa141827d2d1e472f7e6e36374ada Mon Sep 17 00:00:00 2001 From: Adrian Bergqvist Date: Sun, 5 Jun 2022 21:34:39 +0200 Subject: [PATCH] Caching of handshake data should work --- .../adde0109/ambassador/ForgeConnectionHandler.java | 9 +++++++++ .../adde0109/ambassador/ForgeHandshakeDataHandler.java | 10 ++++++++-- 2 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 src/main/java/org/adde0109/ambassador/ForgeConnectionHandler.java diff --git a/src/main/java/org/adde0109/ambassador/ForgeConnectionHandler.java b/src/main/java/org/adde0109/ambassador/ForgeConnectionHandler.java new file mode 100644 index 0000000..e84ffd7 --- /dev/null +++ b/src/main/java/org/adde0109/ambassador/ForgeConnectionHandler.java @@ -0,0 +1,9 @@ +package org.adde0109.ambassador; + +public class ForgeConnectionHandler { + + + + + +} diff --git a/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java b/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java index def82b2..81c5242 100644 --- a/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java +++ b/src/main/java/org/adde0109/ambassador/ForgeHandshakeDataHandler.java @@ -28,7 +28,7 @@ public class ForgeHandshakeDataHandler { public byte[] recivedClientACK; public byte[] recivedClientModlist; - private static final int PACKET_LENGTH_INDEX = 14; + private static final int PACKET_LENGTH_INDEX = 14; //length of "fml:handshake"+1 private final Logger logger; private RegisteredServer handshakeServer; @@ -40,14 +40,20 @@ public class ForgeHandshakeDataHandler { @Subscribe(order = PostOrder.EARLY) public void onPreLogin(PreLoginEvent event, Continuation continuation) { - if (cachedServerHandshake == null) { + if(handshakeServer.getPlayersConnected().isEmpty()) { handshakeReceiver receiver = new handshakeReceiver(handshakeServer, logger); receiver.downloadHandshake().thenAccept((p) -> { + cachedServerHandshake = p; sendModlist(p.modListPacket,(LoginPhaseConnection) event.getConnection()); sendOther(p.otherPackets,(LoginPhaseConnection) event.getConnection()); continuation.resume(); }); } + else if(cachedServerHandshake != null) { + sendModlist(cachedServerHandshake.modListPacket, (LoginPhaseConnection) event.getConnection()); + sendOther(cachedServerHandshake.otherPackets,(LoginPhaseConnection) event.getConnection()); + continuation.resume(); + } } @Subscribe