diff --git a/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java b/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java index 436c8cd..89607dd 100644 --- a/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java +++ b/src/main/java/org/adde0109/ambassador/forge/VelocityForgeClientConnectionPhase.java @@ -128,7 +128,8 @@ public enum VelocityForgeClientConnectionPhase implements ClientConnectionPhase Ambassador.getInstance().config.getServerSwitchCancellationTime(), TimeUnit.SECONDS); //Disconnect - Reset if(player.getModInfo().isPresent() - && player.getModInfo().get().getMods().stream().anyMatch((mod -> mod.getId().equals("serverredirect"))) + && player.getModInfo().get().getMods().stream().anyMatch((mod -> mod.getId().equals("serverredirect") + || mod.getId().equals("srvredirect:red"))) && player.getVirtualHost().isPresent()) { ByteBuf buf = Unpooled.buffer(); ProtocolUtils.writeVarInt(buf, 0); diff --git a/src/main/java/org/adde0109/ambassador/velocity/VelocityEventHandler.java b/src/main/java/org/adde0109/ambassador/velocity/VelocityEventHandler.java index 354b8db..1f5ac58 100644 --- a/src/main/java/org/adde0109/ambassador/velocity/VelocityEventHandler.java +++ b/src/main/java/org/adde0109/ambassador/velocity/VelocityEventHandler.java @@ -7,6 +7,7 @@ import com.velocitypowered.api.event.connection.LoginEvent; import com.velocitypowered.api.event.connection.PostLoginEvent; import com.velocitypowered.api.event.player.*; import com.velocitypowered.api.proxy.server.RegisteredServer; +import com.velocitypowered.api.util.ModInfo; import com.velocitypowered.proxy.VelocityServer; import com.velocitypowered.proxy.connection.client.ConnectedPlayer; import com.velocitypowered.proxy.network.Connections; @@ -14,6 +15,7 @@ import com.velocitypowered.proxy.protocol.StateRegistry; import net.kyori.adventure.text.Component; import org.adde0109.ambassador.Ambassador; import org.adde0109.ambassador.forge.ForgeConstants; +import org.adde0109.ambassador.forge.ForgeFMLConnectionType; import org.adde0109.ambassador.forge.VelocityForgeClientConnectionPhase; import org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperDecoder; import org.adde0109.ambassador.forge.pipeline.ForgeLoginWrapperHandler; @@ -67,4 +69,15 @@ public class VelocityEventHandler { continuation.resume(); } + @Subscribe + public void onPlayerChannelRegisterEvent(PlayerChannelRegisterEvent event) { + ConnectedPlayer player = (ConnectedPlayer) event.getPlayer(); + if (!(player.getConnection().getType() instanceof ForgeFMLConnectionType)) { + return; + } + player.setModInfo(new ModInfo("Channels", event.getChannels().stream().map((id) -> { + return new ModInfo.Mod(id.getId(), ""); + }).toList())); + } + }