From 2d3ebdf108086dcef4641d2d9c6e6d61d582e9d5 Mon Sep 17 00:00:00 2001 From: Adrian Bergqvist Date: Sat, 13 Aug 2022 00:42:44 +0200 Subject: [PATCH] Non-api init commit --- Velocity | 1 + build.gradle | 5 +++-- settings.gradle | 7 ++++++- .../ambassador/forge/ForgeServerSwitchHandler.java | 12 ++++++++++-- 4 files changed, 20 insertions(+), 5 deletions(-) create mode 160000 Velocity diff --git a/Velocity b/Velocity new file mode 160000 index 0000000..5fe3663 --- /dev/null +++ b/Velocity @@ -0,0 +1 @@ +Subproject commit 5fe3663d5102c98df1128b06f002e0c5b212f61f diff --git a/build.gradle b/build.gradle index a2b0796..f16bb74 100644 --- a/build.gradle +++ b/build.gradle @@ -15,11 +15,12 @@ repositories { } dependencies { - implementation 'com.velocitypowered:velocity-api:3.1.1' + compileOnly 'com.velocitypowered:velocity-api' + compileOnly 'com.velocitypowered:velocity-proxy' + annotationProcessor 'com.velocitypowered:velocity-api' implementation 'com.electronwill.night-config:toml:3.6.5' implementation 'org.bstats:bstats-velocity:3.0.0' implementation 'org.apache.commons:commons-collections4:4.4' - annotationProcessor 'com.velocitypowered:velocity-api:3.1.2-SNAPSHOT' } shadowJar { diff --git a/settings.gradle b/settings.gradle index d98a80b..e7e23f6 100644 --- a/settings.gradle +++ b/settings.gradle @@ -1,2 +1,7 @@ rootProject.name = 'Ambassador' - +includeBuild('Velocity') { + dependencySubstitution { + substitute module('com.velocitypowered:velocity-api') using project(':velocity-api') + substitute module('com.velocitypowered:velocity-proxy') using project(':velocity-proxy') + } +} \ No newline at end of file diff --git a/src/main/java/org/adde0109/ambassador/forge/ForgeServerSwitchHandler.java b/src/main/java/org/adde0109/ambassador/forge/ForgeServerSwitchHandler.java index b64780f..6e6c264 100644 --- a/src/main/java/org/adde0109/ambassador/forge/ForgeServerSwitchHandler.java +++ b/src/main/java/org/adde0109/ambassador/forge/ForgeServerSwitchHandler.java @@ -7,6 +7,10 @@ import com.velocitypowered.api.event.player.ServerPreConnectEvent; import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.util.GameProfile; +import com.velocitypowered.proxy.connection.MinecraftConnection; +import com.velocitypowered.proxy.connection.client.ConnectedPlayer; +import com.velocitypowered.proxy.protocol.StateRegistry; +import java.lang.reflect.Field; import java.util.*; import java.util.concurrent.TimeUnit; @@ -58,7 +62,11 @@ public class ForgeServerSwitchHandler { if (ambassador.config.reSyncOptionForge() != AmbassadorConfig.reSyncOption.NEVER) { if (forgeConnection.get().getTransmittedHandshake().isEmpty() || !msg.equals(forgeConnection.get().getTransmittedHandshake().get())) { event.setResult(ServerPreConnectEvent.ServerResult.denied()); - reSync(event.getPlayer(),forgeServerConnection); + try { + reSync(event.getPlayer(),forgeServerConnection); + } catch (ReflectiveOperationException e) { + continuation.resumeWithException(e); + } } } } @@ -74,7 +82,7 @@ public class ForgeServerSwitchHandler { continuation.resume(); } } - private void reSync(Player player, ForgeServerConnection forgeServerConnection) { + private void reSync(Player player, ForgeServerConnection forgeServerConnection) throws ReflectiveOperationException { ambassador.logger.info("Kicking {} because of re-sync needed", player); player.disconnect(Component.text("Please reconnect")); reSyncMap.put(player.getUsername(),forgeServerConnection);