ServerRedirect works when connected to vanilla

This commit is contained in:
Adrian Bergqvist 2023-10-04 13:54:44 +02:00
parent 6983b7abf1
commit 14c23af7c2
No known key found for this signature in database
GPG Key ID: 3B3DA43224B79417
2 changed files with 15 additions and 1 deletions

View File

@ -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);

View File

@ -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()));
}
}