diff --git a/src/main/java/org/adde0109/ambassador/Ambassador.java b/src/main/java/org/adde0109/ambassador/Ambassador.java index 216fa48..20e9bd2 100644 --- a/src/main/java/org/adde0109/ambassador/Ambassador.java +++ b/src/main/java/org/adde0109/ambassador/Ambassador.java @@ -31,6 +31,7 @@ public class Ambassador { private ForgeHandshakeHandler forgeHandshakeHandler; + @Inject public Ambassador(ProxyServer server, Logger logger, @DataDirectory Path dataDirectory) { this.server = server; @@ -74,6 +75,12 @@ public class Ambassador { continuation.resume(); } } + if (forgeServerConnectionOptional.isEmpty()) { + forgeServerConnection.setDefaultClientModlist(forgeConnection.get().getRecivedClientModlist()); + forgeServerConnection.setDefaultClientACK(ForgeConnection.getRecivedClientACK()); + forgeHandshakeHandler.registerForgeServer(event.getOriginalServer(), forgeServerConnection); + } + }); } else { continuation.resume(); diff --git a/src/main/java/org/adde0109/ambassador/Forge/ForgeConnection.java b/src/main/java/org/adde0109/ambassador/Forge/ForgeConnection.java index 3b6cd95..b19d3fb 100644 --- a/src/main/java/org/adde0109/ambassador/Forge/ForgeConnection.java +++ b/src/main/java/org/adde0109/ambassador/Forge/ForgeConnection.java @@ -11,6 +11,7 @@ public class ForgeConnection { private final LoginPhaseConnection connection; private byte[] recivedClientModlist; + private static byte[] recivedClientACK; private ForgeHandshakeUtils.CachedServerHandshake transmittedHandshake; @@ -65,7 +66,10 @@ public class ForgeConnection { CompletableFuture future = new CompletableFuture(); for (int i = 0;i {} : future::complete); + (i<(otherPackets.size()-1)) ? responseBody -> {} : responseBody -> { + recivedClientACK = responseBody; + future.complete(responseBody); + }); } return future; } @@ -78,4 +82,11 @@ public class ForgeConnection { return transmittedHandshake; } + public byte[] getRecivedClientModlist() { + return recivedClientModlist; + } + + public static byte[] getRecivedClientACK() { + return recivedClientACK; + } } diff --git a/src/main/java/org/adde0109/ambassador/Forge/ForgeHandshakeHandler.java b/src/main/java/org/adde0109/ambassador/Forge/ForgeHandshakeHandler.java index 38f8c45..cdb3695 100644 --- a/src/main/java/org/adde0109/ambassador/Forge/ForgeHandshakeHandler.java +++ b/src/main/java/org/adde0109/ambassador/Forge/ForgeHandshakeHandler.java @@ -79,7 +79,9 @@ public class ForgeHandshakeHandler { return Optional.ofNullable(forgeServerConnectionMap.get(registeredServer)); } - + public void registerForgeServer(RegisteredServer server, ForgeServerConnection forgeServerConnection) { + forgeServerConnectionMap.put(server,forgeServerConnection); + } @Subscribe public void onServerLoginPluginMessageEvent(ServerLoginPluginMessageEvent event, Continuation continuation) {