From b5c97995e982ac2607a58973ba873881f2903811 Mon Sep 17 00:00:00 2001 From: alterwain Date: Fri, 21 Mar 2025 02:07:36 +0300 Subject: [PATCH] Bungeecord support added x3 --- .../alterdekim/xcraft/auth/bungee/XCraft.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) 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(); }