mirror of
				https://e.coding.net/circlecloud/YumCore.git
				synced 2025-11-03 23:06:02 +00:00 
			
		
		
		
	@@ -37,6 +37,7 @@ public class C {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    private static Method chatSerializer;
 | 
					    private static Method chatSerializer;
 | 
				
			||||||
    private static Method getHandle;
 | 
					    private static Method getHandle;
 | 
				
			||||||
 | 
					    private static Method nmsChatMessageTypeClassValueOf;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static String version;
 | 
					    private static String version;
 | 
				
			||||||
    private static boolean newversion;
 | 
					    private static boolean newversion;
 | 
				
			||||||
@@ -44,7 +45,7 @@ public class C {
 | 
				
			|||||||
    private static Field playerConnection;
 | 
					    private static Field playerConnection;
 | 
				
			||||||
    private static Method sendPacket;
 | 
					    private static Method sendPacket;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    private static Object[] ChatMessageTypes;
 | 
					    private static Object[] chatMessageTypes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public static boolean init;
 | 
					    public static boolean init;
 | 
				
			||||||
    static {
 | 
					    static {
 | 
				
			||||||
@@ -55,12 +56,22 @@ public class C {
 | 
				
			|||||||
            chatSerializer = nmsChatSerializer.getMethod("a", String.class);
 | 
					            chatSerializer = nmsChatSerializer.getMethod("a", String.class);
 | 
				
			||||||
            nmsIChatBaseComponent = Class.forName(a("IChatBaseComponent"));
 | 
					            nmsIChatBaseComponent = Class.forName(a("IChatBaseComponent"));
 | 
				
			||||||
            packetType = Class.forName(a("PacketPlayOutChat"));
 | 
					            packetType = Class.forName(a("PacketPlayOutChat"));
 | 
				
			||||||
            try {
 | 
					            Arrays.stream(packetType.getConstructors()).forEach(c -> {
 | 
				
			||||||
                nmsChatMessageTypeClass = Class.forName(a("ChatMessageType"));
 | 
					                if (c.getParameterTypes().length == 2) {
 | 
				
			||||||
                ChatMessageTypes = nmsChatMessageTypeClass.getEnumConstants();
 | 
					                    packetTypeConstructor = c;
 | 
				
			||||||
                packetTypeConstructor = packetType.getConstructor(nmsIChatBaseComponent, nmsChatMessageTypeClass);
 | 
					                }
 | 
				
			||||||
            } catch (ClassNotFoundException ex) {
 | 
					            });
 | 
				
			||||||
                packetTypeConstructor = packetType.getConstructor(nmsIChatBaseComponent, newversion ? int.class : byte.class);
 | 
					            nmsChatMessageTypeClass = packetTypeConstructor.getParameterTypes()[1];
 | 
				
			||||||
 | 
					            if (nmsChatMessageTypeClass.isEnum()) {
 | 
				
			||||||
 | 
					                chatMessageTypes = nmsChatMessageTypeClass.getEnumConstants();
 | 
				
			||||||
 | 
					            } else {
 | 
				
			||||||
 | 
					                switch (nmsChatMessageTypeClass.getName()) {
 | 
				
			||||||
 | 
					                case "int":
 | 
				
			||||||
 | 
					                    nmsChatMessageTypeClass = Integer.class;
 | 
				
			||||||
 | 
					                case "byte":
 | 
				
			||||||
 | 
					                    nmsChatMessageTypeClass = Byte.class;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                nmsChatMessageTypeClassValueOf = nmsChatMessageTypeClass.getDeclaredMethod("valueOf", String.class);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            Class<?> typeCraftPlayer = Class.forName(b("entity.CraftPlayer"));
 | 
					            Class<?> typeCraftPlayer = Class.forName(b("entity.CraftPlayer"));
 | 
				
			||||||
            Class<?> typeNMSPlayer = Class.forName(a("EntityPlayer"));
 | 
					            Class<?> typeNMSPlayer = Class.forName(a("EntityPlayer"));
 | 
				
			||||||
@@ -112,11 +123,8 @@ public class C {
 | 
				
			|||||||
            Object serialized = chatSerializer.invoke(null, json);
 | 
					            Object serialized = chatSerializer.invoke(null, json);
 | 
				
			||||||
            Object player = getHandle.invoke(receivingPacket);
 | 
					            Object player = getHandle.invoke(receivingPacket);
 | 
				
			||||||
            Object connection = playerConnection.get(player);
 | 
					            Object connection = playerConnection.get(player);
 | 
				
			||||||
            if (nmsChatMessageTypeClass != null) {
 | 
					            Object typeObj = chatMessageTypes == null ? nmsChatMessageTypeClassValueOf.invoke(null, String.valueOf(type)) : chatMessageTypes[type];
 | 
				
			||||||
                sendPacket.invoke(connection, packetTypeConstructor.newInstance(serialized, ChatMessageTypes[type]));
 | 
					            sendPacket.invoke(connection, packetTypeConstructor.newInstance(serialized, typeObj));
 | 
				
			||||||
            } else {
 | 
					 | 
				
			||||||
                sendPacket.invoke(connection, packetTypeConstructor.newInstance(serialized, newversion ? type : (byte) type));
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        } catch (Exception ex) {
 | 
					        } catch (Exception ex) {
 | 
				
			||||||
            Log.d("Json发包错误 " + version, ex);
 | 
					            Log.d("Json发包错误 " + version, ex);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user