public class VelocityNexAuth { private final ProxyServer server; private final AuthProvider authProvider; private final SessionManager sessionManager; @Subscribe public void onPlayerJoin(PostLoginEvent event) { Player player = event.getPlayer(); // Authenticate before server transfer AuthResult result = authProvider.authenticate(player); if (result.isSuccess()) { // Create session for backend servers Session session = sessionManager.createSession(player); // Transfer to backend server player.createConnectionRequest(server.getServer("lobby")) .fireAndForget(); } else { // Handle authentication failure player.disconnect(Component.text("Authentication failed")); } }}
# velocity.toml[server-config]# Forward player info to backend serversplayer-info-forwarding = "modern"[servers]# Configure backend serverslobby = "127.0.0.1:25566"survival = "127.0.0.1:25567"creative = "127.0.0.1:25568"[plugins]# NexAuth handles authentication# Backend servers should NOT have auth plugins
# NexAuth config (Velocity)# Premium authentication is automatically detectedonline-mode=false# Backend server settingsbackend-auth-required=truesession-timeout=604800
// Access Velocity-specific featuresProxyServer server = NexAuthVelocity.getProxy();// Player managementPlayer player = server.getPlayer(username);// Server transferplayer.createConnectionRequest(server.getServer("lobby")) .connect() .thenAccept(result -> { // Handle transfer result });// Messagingserver.sendMessage(Component.text("Authentication successful"));