From 5e8aa2ae7f8b62a35b1f7777aae93396e4ebe130 Mon Sep 17 00:00:00 2001 From: alterwain Date: Sat, 22 Mar 2025 00:59:46 +0300 Subject: [PATCH] Bungeecord support added x13 --- .../alterdekim/xcraft/auth/bungee/XCraft.java | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 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 8229797..4955a58 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 @@ -80,25 +80,16 @@ public class XCraft extends Plugin { @SuppressWarnings("unchecked") private void injectListener(int version) throws Exception { - Field protocolsField = Protocol.LOGIN.TO_SERVER.getClass().getDeclaredField("protocols"); - protocolsField.setAccessible(true); - TIntObjectMap protocols = (TIntObjectMap)protocolsField.get(Protocol.LOGIN.TO_SERVER); + Class toServerClass = Protocol.LOGIN.TO_SERVER.getClass(); - Object protocolData = protocols.get(version); - Field packetMapField = protocolData.getClass().getDeclaredField("packetMap"); - Field packetConstructorsField = protocolData.getClass().getDeclaredField("packetConstructors"); - packetMapField.setAccessible(true); - packetConstructorsField.setAccessible(true); - TObjectIntMap packetMap = (TObjectIntMap)packetMapField.get(protocolData); - Constructor[] packetConstructors = (Constructor[]) packetConstructorsField.get(protocolData); + Class protocolMappingClass = Class.forName("net.md_5.bungee.protocol.Protocol$ProtocolMapping"); + Constructor pConstructor = protocolMappingClass.getDeclaredConstructor(int.class, int.class); + pConstructor.setAccessible(true); - packetMap.remove(EncryptionResponse.class); - packetMap.put( EncryptionResponsePacket.class, 1); - packetConstructors[1] = EncryptionResponsePacket.class.getDeclaredConstructor(); + Method registerPacketMethod = toServerClass.getDeclaredMethod("registerPacket", Class.class, protocolMappingClass ); + registerPacketMethod.setAccessible(true); + registerPacketMethod.invoke(toServerClass, EncryptionResponsePacket.class, pConstructor.newInstance(version, 1)); - packetMapField.set(protocolData, packetMap); - packetConstructorsField.set(protocolData, packetConstructors); - protocolsField.set(Protocol.LOGIN.TO_SERVER, protocols); } @Override