From c1b18455d06c746dc186ff3efc4947c600d983e2 Mon Sep 17 00:00:00 2001 From: 4drian3d Date: Sat, 23 Oct 2021 10:49:09 -0500 Subject: [PATCH] Added configurable sending to server after login - Possibly resolves https://github.com/AuthMe/AuthMeReloaded/issues/2425 --- .../proxy/AuthMeVelocityPlugin.java | 7 ++-- .../proxy/config/AuthMeConfig.java | 19 ++++++++++- .../proxy/listener/ProxyListener.java | 32 ++++++++++++++++++- 3 files changed, 54 insertions(+), 4 deletions(-) diff --git a/proxy/src/main/java/com/glyart/authmevelocity/proxy/AuthMeVelocityPlugin.java b/proxy/src/main/java/com/glyart/authmevelocity/proxy/AuthMeVelocityPlugin.java index 9345b3d..8841c20 100644 --- a/proxy/src/main/java/com/glyart/authmevelocity/proxy/AuthMeVelocityPlugin.java +++ b/proxy/src/main/java/com/glyart/authmevelocity/proxy/AuthMeVelocityPlugin.java @@ -36,11 +36,14 @@ public class AuthMeVelocityPlugin { proxy.getChannelRegistrar().register( new LegacyChannelIdentifier("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)); AuthMeConfig.defaultConfig(); - logger.info("AuthMeVelocity enabled"); + logger.info("-- AuthMeVelocity enabled --"); 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(){ diff --git a/proxy/src/main/java/com/glyart/authmevelocity/proxy/config/AuthMeConfig.java b/proxy/src/main/java/com/glyart/authmevelocity/proxy/config/AuthMeConfig.java index a29ce7b..d9a29e9 100644 --- a/proxy/src/main/java/com/glyart/authmevelocity/proxy/config/AuthMeConfig.java +++ b/proxy/src/main/java/com/glyart/authmevelocity/proxy/config/AuthMeConfig.java @@ -4,8 +4,25 @@ import java.util.List; import com.glyart.authmevelocity.proxy.AuthMeVelocityPlugin; +import de.leonhard.storage.Yaml; + public interface AuthMeConfig { 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" + )); } } diff --git a/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java b/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java index 983c785..c411d86 100644 --- a/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java +++ b/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java @@ -17,14 +17,21 @@ import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ServerConnection; import com.velocitypowered.api.proxy.server.RegisteredServer; +import org.slf4j.Logger; + +import java.util.List; import java.util.Optional; +import java.util.Random; import java.util.UUID; +import java.util.concurrent.ExecutionException; public class ProxyListener { private final ProxyServer server; + private final Logger logger; - public ProxyListener(ProxyServer server) { + public ProxyListener(ProxyServer server, Logger logger) { this.server = server; + this.logger = logger; } @Subscribe @@ -47,6 +54,29 @@ public class ProxyListener { RegisteredServer loginServer = loggedPlayer.getCurrentServer().get().getServer(); server.getEventManager().fireAndForget(new ProxyLoginEvent(loggedPlayer, loginServer)); + if(AuthMeVelocityPlugin.getConfig().getBoolean("teleport.send-to-server-after-login")){ + Random rm = new Random(); + List serverList = AuthMeVelocityPlugin.getConfig().getStringList("teleport.servers"); + String randomServer = serverList.get(rm.nextInt(serverList.size())); + Optional 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); + } + } } }