More Server Switching fixes
This commit is contained in:
parent
ae6e0e8c4c
commit
a47f2f8d1a
|
|
@ -2,7 +2,9 @@ package org.adde0109.ambassador;
|
|||
|
||||
import com.google.inject.Inject;
|
||||
import com.velocitypowered.api.event.Continuation;
|
||||
import com.velocitypowered.api.event.PostOrder;
|
||||
import com.velocitypowered.api.event.Subscribe;
|
||||
import com.velocitypowered.api.event.player.PlayerChooseInitialServerEvent;
|
||||
import com.velocitypowered.api.event.player.ServerPreConnectEvent;
|
||||
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||
import com.velocitypowered.api.plugin.Plugin;
|
||||
|
|
@ -10,6 +12,7 @@ import com.velocitypowered.api.plugin.annotation.DataDirectory;
|
|||
import com.velocitypowered.api.proxy.ProxyServer;
|
||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||
|
||||
import net.kyori.adventure.text.Component;
|
||||
import org.adde0109.ambassador.Forge.ForgeConnection;
|
||||
import org.adde0109.ambassador.Forge.ForgeHandshakeHandler;
|
||||
import org.adde0109.ambassador.Forge.ForgeServerConnection;
|
||||
|
|
@ -75,6 +78,7 @@ public class Ambassador {
|
|||
continuation.resume();
|
||||
}
|
||||
}
|
||||
//Register newly discovered forge server
|
||||
if (forgeServerConnectionOptional.isEmpty()) {
|
||||
forgeServerConnection.setDefaultClientModlist(forgeConnection.get().getRecivedClientModlist());
|
||||
forgeServerConnection.setDefaultClientACK(ForgeConnection.getRecivedClientACK());
|
||||
|
|
@ -82,9 +86,28 @@ public class Ambassador {
|
|||
}
|
||||
|
||||
});
|
||||
//If vanilla tries to connect to forge
|
||||
} else if (forgeServerConnectionOptional.isPresent() && (event.getPreviousServer() != null)){
|
||||
event.setResult(ServerPreConnectEvent.ServerResult.denied());
|
||||
event.getPlayer().sendMessage(Component.text("This server requires Forge!"));
|
||||
continuation.resume();
|
||||
} else {
|
||||
continuation.resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@Subscribe
|
||||
public void onPlayerChooseInitialServerEvent(PlayerChooseInitialServerEvent event, Continuation continuation) {
|
||||
//Only handle Forge connections
|
||||
if((event.getInitialServer().isPresent()) && (forgeHandshakeHandler.getForgeConnection(event.getPlayer()).isPresent())) {
|
||||
//Forge client
|
||||
ForgeConnection forgeConnection = forgeHandshakeHandler.getForgeConnection(event.getPlayer()).get();
|
||||
if (config.getForced(forgeConnection.getConnection().getProtocolVersion().getProtocol())) {
|
||||
event.setInitialServer(config.getServer(forgeConnection.getConnection().getProtocolVersion().getProtocol()));
|
||||
}
|
||||
}
|
||||
continuation.resume();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -35,6 +35,10 @@ public class AmbassadorConfig {
|
|||
return settings.differentiators.get(protocolVersion).handshakeServer;
|
||||
}
|
||||
|
||||
public boolean getForced (int protocolVersion) {
|
||||
return settings.differentiators.get(protocolVersion).forced;
|
||||
}
|
||||
|
||||
public boolean shouldHandle(int protocolVersion) {
|
||||
return settings.differentiators.containsKey(protocolVersion);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -86,7 +86,8 @@ public class ForgeHandshakeHandler {
|
|||
@Subscribe
|
||||
public void onServerLoginPluginMessageEvent(ServerLoginPluginMessageEvent event, Continuation continuation) {
|
||||
//Only respond the servers that we can respond to
|
||||
if(!forgeServerConnectionMap.containsKey(event.getConnection().getServer())) {
|
||||
if((!forgeServerConnectionMap.containsKey(event.getConnection().getServer())
|
||||
|| (getForgeConnection(event.getConnection().getPlayer()).isEmpty()))) {
|
||||
continuation.resume();
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user