import java.io.ByteArrayInputStream; import java.io.IOException; import java.io.InvalidClassException; import java.io.ObjectInputStream; import java.io.OptionalDataException; import java.io.StreamCorruptedException; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import net.runelite.mapping.Export; import net.runelite.mapping.Implements; import net.runelite.mapping.ObfuscatedGetter; import net.runelite.mapping.ObfuscatedName; import net.runelite.mapping.ObfuscatedSignature; import net.runelite.rs.Reflection; @ObfuscatedName("ed") @Implements("UserComparator10") public class UserComparator10 extends AbstractUserComparator { @ObfuscatedName("ss") @ObfuscatedSignature( signature = "Lbs;" ) @Export("clientPreferences") static ClientPreferences clientPreferences; @ObfuscatedName("st") @ObfuscatedGetter( intValue = -2089079301 ) @Export("foundItemIdCount") static int foundItemIdCount; @ObfuscatedName("u") @Export("reversed") final boolean reversed; public UserComparator10(boolean var1) { this.reversed = var1; } @ObfuscatedName("u") @ObfuscatedSignature( signature = "(Ljt;Ljt;S)I", garbageValue = "-31573" ) @Export("compareBuddy") int compareBuddy(Buddy var1, Buddy var2) { if (Client.worldId == var1.world && var2.world == Client.worldId) { return this.reversed ? var1.int2 - var2.int2 : var2.int2 - var1.int2; } else { return this.compareUser(var1, var2); } } public int compare(Object var1, Object var2) { return this.compareBuddy((Buddy)var1, (Buddy)var2); } @ObfuscatedName("b") @ObfuscatedSignature( signature = "(Lkj;B)V", garbageValue = "-114" ) @Export("performReflectionCheck") public static void performReflectionCheck(PacketBuffer var0) { ReflectionCheck var1 = (ReflectionCheck)class96.reflectionChecks.last(); if (var1 != null) { int var2 = var0.offset; var0.writeInt(var1.id); for (int var3 = 0; var3 < var1.size; ++var3) { if (var1.creationErrors[var3] != 0) { var0.writeByte(var1.creationErrors[var3]); } else { try { int var4 = var1.operations[var3]; Field var5; int var6; if (var4 == 0) { var5 = var1.fields[var3]; var6 = Reflection.getInt(var5, (Object)null); var0.writeByte(0); var0.writeInt(var6); } else if (var4 == 1) { var5 = var1.fields[var3]; Reflection.setInt(var5, (Object)null, var1.intReplaceValues[var3]); var0.writeByte(0); } else if (var4 == 2) { var5 = var1.fields[var3]; var6 = var5.getModifiers(); var0.writeByte(0); var0.writeInt(var6); } Method var25; if (var4 != 3) { if (var4 == 4) { var25 = var1.methods[var3]; var6 = var25.getModifiers(); var0.writeByte(0); var0.writeInt(var6); } } else { var25 = var1.methods[var3]; byte[][] var10 = var1.arguments[var3]; Object[] var7 = new Object[var10.length]; for (int var8 = 0; var8 < var10.length; ++var8) { ObjectInputStream var9 = new ObjectInputStream(new ByteArrayInputStream(var10[var8])); var7[var8] = var9.readObject(); } Object var11 = Reflection.invoke(var25, (Object)null, var7); if (var11 == null) { var0.writeByte(0); } else if (var11 instanceof Number) { var0.writeByte(1); var0.writeLong(((Number)var11).longValue()); } else if (var11 instanceof String) { var0.writeByte(2); var0.writeStringCp1252NullTerminated((String)var11); } else { var0.writeByte(4); } } } catch (ClassNotFoundException var13) { var0.writeByte(-10); } catch (InvalidClassException var14) { var0.writeByte(-11); } catch (StreamCorruptedException var15) { var0.writeByte(-12); } catch (OptionalDataException var16) { var0.writeByte(-13); } catch (IllegalAccessException var17) { var0.writeByte(-14); } catch (IllegalArgumentException var18) { var0.writeByte(-15); } catch (InvocationTargetException var19) { var0.writeByte(-16); } catch (SecurityException var20) { var0.writeByte(-17); } catch (IOException var21) { var0.writeByte(-18); } catch (NullPointerException var22) { var0.writeByte(-19); } catch (Exception var23) { var0.writeByte(-20); } catch (Throwable var24) { var0.writeByte(-21); } } } var0.writeCrc(var2); var1.remove(); } } @ObfuscatedName("h") @ObfuscatedSignature( signature = "(Lbp;Lbp;IZB)I", garbageValue = "12" ) @Export("compareWorlds") static int compareWorlds(World var0, World var1, int var2, boolean var3) { if (var2 == 1) { int var4 = var0.population; int var5 = var1.population; if (!var3) { if (var4 == -1) { var4 = 2001; } if (var5 == -1) { var5 = 2001; } } return var4 - var5; } else if (var2 == 2) { return var0.location - var1.location; } else if (var2 == 3) { if (var0.activity.equals("-")) { if (var1.activity.equals("-")) { return 0; } else { return var3 ? -1 : 1; } } else if (var1.activity.equals("-")) { return var3 ? 1 : -1; } else { return var0.activity.compareTo(var1.activity); } } else if (var2 == 4) { return var0.method1785() ? (var1.method1785() ? 0 : 1) : (var1.method1785() ? -1 : 0); } else if (var2 == 5) { return var0.method1802() ? (var1.method1802() ? 0 : 1) : (var1.method1802() ? -1 : 0); } else if (var2 == 6) { return var0.isPvp() ? (var1.isPvp() ? 0 : 1) : (var1.isPvp() ? -1 : 0); } else if (var2 == 7) { return var0.isMembersOnly() ? (var1.isMembersOnly() ? 0 : 1) : (var1.isMembersOnly() ? -1 : 0); } else { return var0.id - var1.id; } } }