Bungeecord support added x13

This commit is contained in:
Michael Wain 2025-03-22 00:59:46 +03:00
parent ec2339fd19
commit 5e8aa2ae7f

View File

@ -80,25 +80,16 @@ public class XCraft extends Plugin {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
private void injectListener(int version) throws Exception { private void injectListener(int version) throws Exception {
Field protocolsField = Protocol.LOGIN.TO_SERVER.getClass().getDeclaredField("protocols"); Class<?> toServerClass = Protocol.LOGIN.TO_SERVER.getClass();
protocolsField.setAccessible(true);
TIntObjectMap<?> protocols = (TIntObjectMap)protocolsField.get(Protocol.LOGIN.TO_SERVER);
Object protocolData = protocols.get(version); Class<?> protocolMappingClass = Class.forName("net.md_5.bungee.protocol.Protocol$ProtocolMapping");
Field packetMapField = protocolData.getClass().getDeclaredField("packetMap"); Constructor<?> pConstructor = protocolMappingClass.getDeclaredConstructor(int.class, int.class);
Field packetConstructorsField = protocolData.getClass().getDeclaredField("packetConstructors"); pConstructor.setAccessible(true);
packetMapField.setAccessible(true);
packetConstructorsField.setAccessible(true);
TObjectIntMap packetMap = (TObjectIntMap)packetMapField.get(protocolData);
Constructor<? extends DefinedPacket>[] packetConstructors = (Constructor<? extends DefinedPacket>[]) packetConstructorsField.get(protocolData);
packetMap.remove(EncryptionResponse.class); Method registerPacketMethod = toServerClass.getDeclaredMethod("registerPacket", Class.class, protocolMappingClass );
packetMap.put( EncryptionResponsePacket.class, 1); registerPacketMethod.setAccessible(true);
packetConstructors[1] = EncryptionResponsePacket.class.getDeclaredConstructor(); 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 @Override