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.google.inject.Inject;
|
||||||
import com.velocitypowered.api.event.Continuation;
|
import com.velocitypowered.api.event.Continuation;
|
||||||
|
import com.velocitypowered.api.event.PostOrder;
|
||||||
import com.velocitypowered.api.event.Subscribe;
|
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.player.ServerPreConnectEvent;
|
||||||
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
import com.velocitypowered.api.event.proxy.ProxyInitializeEvent;
|
||||||
import com.velocitypowered.api.plugin.Plugin;
|
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.ProxyServer;
|
||||||
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
import com.velocitypowered.api.proxy.server.RegisteredServer;
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
import org.adde0109.ambassador.Forge.ForgeConnection;
|
import org.adde0109.ambassador.Forge.ForgeConnection;
|
||||||
import org.adde0109.ambassador.Forge.ForgeHandshakeHandler;
|
import org.adde0109.ambassador.Forge.ForgeHandshakeHandler;
|
||||||
import org.adde0109.ambassador.Forge.ForgeServerConnection;
|
import org.adde0109.ambassador.Forge.ForgeServerConnection;
|
||||||
|
|
@ -75,6 +78,7 @@ public class Ambassador {
|
||||||
continuation.resume();
|
continuation.resume();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
//Register newly discovered forge server
|
||||||
if (forgeServerConnectionOptional.isEmpty()) {
|
if (forgeServerConnectionOptional.isEmpty()) {
|
||||||
forgeServerConnection.setDefaultClientModlist(forgeConnection.get().getRecivedClientModlist());
|
forgeServerConnection.setDefaultClientModlist(forgeConnection.get().getRecivedClientModlist());
|
||||||
forgeServerConnection.setDefaultClientACK(ForgeConnection.getRecivedClientACK());
|
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 {
|
} else {
|
||||||
continuation.resume();
|
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;
|
return settings.differentiators.get(protocolVersion).handshakeServer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean getForced (int protocolVersion) {
|
||||||
|
return settings.differentiators.get(protocolVersion).forced;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean shouldHandle(int protocolVersion) {
|
public boolean shouldHandle(int protocolVersion) {
|
||||||
return settings.differentiators.containsKey(protocolVersion);
|
return settings.differentiators.containsKey(protocolVersion);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,8 @@ public class ForgeHandshakeHandler {
|
||||||
@Subscribe
|
@Subscribe
|
||||||
public void onServerLoginPluginMessageEvent(ServerLoginPluginMessageEvent event, Continuation continuation) {
|
public void onServerLoginPluginMessageEvent(ServerLoginPluginMessageEvent event, Continuation continuation) {
|
||||||
//Only respond the servers that we can respond to
|
//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();
|
continuation.resume();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user