Added configurable sending to server after login

- Possibly resolves https://github.com/AuthMe/AuthMeReloaded/issues/2425
This commit is contained in:
4drian3d 2021-10-23 10:49:09 -05:00
parent d267f1c3fa
commit c1b18455d0
3 changed files with 54 additions and 4 deletions

View File

@ -36,11 +36,14 @@ public class AuthMeVelocityPlugin {
proxy.getChannelRegistrar().register( proxy.getChannelRegistrar().register(
new LegacyChannelIdentifier("authmevelocity:main"), new LegacyChannelIdentifier("authmevelocity:main"),
MinecraftChannelIdentifier.create("authmevelocity", "main")); MinecraftChannelIdentifier.create("authmevelocity", "main"));
proxy.getEventManager().register(this, new ProxyListener(proxy)); proxy.getEventManager().register(this, new ProxyListener(proxy, logger));
proxy.getEventManager().register(this, new FastLoginListener(proxy)); proxy.getEventManager().register(this, new FastLoginListener(proxy));
AuthMeConfig.defaultConfig(); AuthMeConfig.defaultConfig();
logger.info("AuthMeVelocity enabled"); logger.info("-- AuthMeVelocity enabled --");
logger.info("AuthServers: " + config.getList("authservers")); logger.info("AuthServers: " + config.getList("authservers"));
if(config.getBoolean("teleport.send-to-server-after-login")){
logger.info("LobbyServers: " + config.getList("teleport.servers"));
}
} }
public static Yaml getConfig(){ public static Yaml getConfig(){

View File

@ -4,8 +4,25 @@ import java.util.List;
import com.glyart.authmevelocity.proxy.AuthMeVelocityPlugin; import com.glyart.authmevelocity.proxy.AuthMeVelocityPlugin;
import de.leonhard.storage.Yaml;
public interface AuthMeConfig { public interface AuthMeConfig {
public static void defaultConfig(){ public static void defaultConfig(){
AuthMeVelocityPlugin.getConfig().setDefault("authservers", List.of("auth1", "auth2")); Yaml config = AuthMeVelocityPlugin.getConfig();
config.setDefault(
"authservers",
List.of(
"auth1",
"auth2"
));
config.setDefault(
"teleport.send-to-server-after-login",
false);
config.setDefault(
"teleport.servers",
List.of(
"lobby1",
"lobby2"
));
} }
} }

View File

@ -17,14 +17,21 @@ import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.ServerConnection; import com.velocitypowered.api.proxy.ServerConnection;
import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.RegisteredServer;
import org.slf4j.Logger;
import java.util.List;
import java.util.Optional; import java.util.Optional;
import java.util.Random;
import java.util.UUID; import java.util.UUID;
import java.util.concurrent.ExecutionException;
public class ProxyListener { public class ProxyListener {
private final ProxyServer server; private final ProxyServer server;
private final Logger logger;
public ProxyListener(ProxyServer server) { public ProxyListener(ProxyServer server, Logger logger) {
this.server = server; this.server = server;
this.logger = logger;
} }
@Subscribe @Subscribe
@ -47,6 +54,29 @@ public class ProxyListener {
RegisteredServer loginServer = loggedPlayer.getCurrentServer().get().getServer(); RegisteredServer loginServer = loggedPlayer.getCurrentServer().get().getServer();
server.getEventManager().fireAndForget(new ProxyLoginEvent(loggedPlayer, loginServer)); server.getEventManager().fireAndForget(new ProxyLoginEvent(loggedPlayer, loginServer));
if(AuthMeVelocityPlugin.getConfig().getBoolean("teleport.send-to-server-after-login")){
Random rm = new Random();
List<String> serverList = AuthMeVelocityPlugin.getConfig().getStringList("teleport.servers");
String randomServer = serverList.get(rm.nextInt(serverList.size()));
Optional<RegisteredServer> optionalServer = server.getServer(randomServer);
if(optionalServer.isPresent()){
RegisteredServer serverToSend = optionalServer.get();
try{
if(!loggedPlayer.createConnectionRequest(serverToSend).connect().get().isSuccessful()){
logger.info("Unable to connect the player {} to the server {}",
loggedPlayer.getUsername(),
serverToSend.getServerInfo().getName());
}
} catch (InterruptedException | ExecutionException exception){
logger.info("Unable to connect the player {} to the server {}. Error: {}",
loggedPlayer.getUsername(),
serverToSend.getServerInfo().getName(),
exception);
}
} else{
logger.info("The server {} does not exist", randomServer);
}
}
} }
} }