diff --git a/bungee/src/main/java/com/alterdekim/xcraft/auth/bungee/XCraft.java b/bungee/src/main/java/com/alterdekim/xcraft/auth/bungee/XCraft.java index 2321e66..27ee25c 100644 --- a/bungee/src/main/java/com/alterdekim/xcraft/auth/bungee/XCraft.java +++ b/bungee/src/main/java/com/alterdekim/xcraft/auth/bungee/XCraft.java @@ -2,8 +2,7 @@ package com.alterdekim.xcraft.auth.bungee; import com.alterdekim.xcraft.auth.SaltNic; import net.md_5.bungee.api.connection.PendingConnection; -import net.md_5.bungee.api.event.LoginEvent; -import net.md_5.bungee.api.event.PlayerHandshakeEvent; +import net.md_5.bungee.api.event.PreLoginEvent; import net.md_5.bungee.api.plugin.Listener; import net.md_5.bungee.api.plugin.Plugin; import net.md_5.bungee.config.Configuration; @@ -55,15 +54,22 @@ public class XCraft extends Plugin implements Listener { } @EventHandler - public void onLogin(LoginEvent event) { + public void onPreLogin(PreLoginEvent event) { try { - if( server.getSessionValue(event.getConnection().getUniqueId().toString()) ) { - server.deleteSessionRequest(event.getConnection().getUniqueId().toString()); - UUID customUUID = UUID.nameUUIDFromBytes(("xcraft-" + event.getConnection().getName()).getBytes()); - event.setCancelled(false); - event.getConnection().setUniqueId(customUUID); - getLogger().info("Player " + event.getConnection().getName() + " is now using UUID: " + customUUID); + PendingConnection connection = event.getConnection(); + + // Ensure we are dealing with InitialHandler + if (!connection.getClass().getName().equals("net.md_5.bungee.connection.InitialHandler")) { + return; } + + Class<?> initialHandlerClass = connection.getClass(); + + Field onlineModeField = initialHandlerClass.getDeclaredField("onlineMode"); + onlineModeField.setAccessible(true); + onlineModeField.set(connection, false); // Disable Mojang auth + + getLogger().info("Bypassed Mojang authentication for " + connection.getName()); } catch (Exception e) { e.printStackTrace(); }