From e7fd073652f0621c80edac25346d12f960633db5 Mon Sep 17 00:00:00 2001 From: Adrian Bergqvist Date: Sat, 2 Sep 2023 00:48:24 +0200 Subject: [PATCH] Updated ServerRedirekt mechanism to support newer Velocity --- build.gradle.kts | 2 +- src/main/java/org/adde0109/ambassador/Ambassador.java | 2 +- .../forge/VelocityForgeBackendConnectionPhase.java | 5 +++++ .../ambassador/forge/VelocityForgeClientConnectionPhase.java | 4 +++- 4 files changed, 10 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 74ec5af..e71903a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "org.adde0109" -version = "1.4.0" +version = "1.4.1" repositories { mavenCentral() diff --git a/src/main/java/org/adde0109/ambassador/Ambassador.java b/src/main/java/org/adde0109/ambassador/Ambassador.java index 836263f..bf0e073 100644 --- a/src/main/java/org/adde0109/ambassador/Ambassador.java +++ b/src/main/java/org/adde0109/ambassador/Ambassador.java @@ -39,7 +39,7 @@ import java.util.concurrent.TimeUnit; import static com.velocitypowered.api.network.ProtocolVersion.MINECRAFT_1_19; import static com.velocitypowered.proxy.protocol.packet.brigadier.ArgumentIdentifier.mapSet; -@Plugin(id = "ambassador", name = "Ambassador", version = "1.4.0", authors = {"adde0109"}) +@Plugin(id = "ambassador", name = "Ambassador", version = "1.4.1", authors = {"adde0109"}) public class Ambassador { public ProxyServer server; diff --git a/src/main/java/org/adde0109/ambassador/forge/VelocityForgeBackendConnectionPhase.java b/src/main/java/org/adde0109/ambassador/forge/VelocityForgeBackendConnectionPhase.java index 6e5960d..a47f3de 100644 --- a/src/main/java/org/adde0109/ambassador/forge/VelocityForgeBackendConnectionPhase.java +++ b/src/main/java/org/adde0109/ambassador/forge/VelocityForgeBackendConnectionPhase.java @@ -68,6 +68,11 @@ public enum VelocityForgeBackendConnectionPhase implements BackendConnectionPhas VelocityForgeClientConnectionPhase clientPhase = (VelocityForgeClientConnectionPhase) player.getPhase(); if (clientPhase != VelocityForgeClientConnectionPhase.NOT_STARTED) { clientPhase.resetConnectionPhase(player); + if (clientPhase == VelocityForgeClientConnectionPhase.COMPLETE) + { + //Do not continue if the client can't reset. + return; + } } message.retain(); player.getConnection().write(message); diff --git a/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java b/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java index e5ad3fb..436c8cd 100644 --- a/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java +++ b/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java @@ -127,7 +127,9 @@ public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase Ambassador.getTemporaryForced().put(player.getUsername(), player.getConnectionInFlight().getServer(), Ambassador.getInstance().config.getServerSwitchCancellationTime(), TimeUnit.SECONDS); //Disconnect - Reset - if(player.getKnownChannels().contains("srvredirect:red") && player.getVirtualHost().isPresent()) { + if(player.getModInfo().isPresent() + && player.getModInfo().get().getMods().stream().anyMatch((mod -> mod.getId().equals("serverredirect"))) + && player.getVirtualHost().isPresent()) { ByteBuf buf = Unpooled.buffer(); ProtocolUtils.writeVarInt(buf, 0); buf.writeBytes((player.getVirtualHost().get().getHostName() + ":"