import java.lang.reflect.Field; 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("cs") @Implements("ChatChannel") public class ChatChannel { @ObfuscatedName("gr") @ObfuscatedGetter( intValue = 1055466439 ) static int field1306; @ObfuscatedName("w") @ObfuscatedSignature( signature = "[Lbj;" ) @Export("messages") Message[] messages; @ObfuscatedName("e") @ObfuscatedGetter( intValue = 754027225 ) @Export("count") int count; ChatChannel() { this.messages = new Message[100]; } @ObfuscatedName("q") @ObfuscatedSignature( signature = "(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;B)Lbj;", garbageValue = "0" ) @Export("addMessage") Message addMessage(int var1, String var2, String var3, String var4) { Message var5 = this.messages[99]; for (int var6 = this.count; var6 > 0; --var6) { if (var6 != 100) { this.messages[var6] = this.messages[var6 - 1]; } } if (var5 == null) { var5 = new Message(var1, var2, var4, var3); } else { var5.remove(); var5.removeDual(); var5.set(var1, var2, var4, var3); } this.messages[0] = var5; if (this.count < 100) { ++this.count; } return var5; } @ObfuscatedName("w") @ObfuscatedSignature( signature = "(II)Lbj;", garbageValue = "-55997964" ) @Export("getMessage") Message getMessage(int var1) { return var1 >= 0 && var1 < this.count ? this.messages[var1] : null; } @ObfuscatedName("e") @ObfuscatedSignature( signature = "(I)I", garbageValue = "-410884165" ) @Export("size") int size() { return this.count; } @ObfuscatedName("p") @ObfuscatedSignature( signature = "(Lkf;IB)V", garbageValue = "67" ) public static void method2213(Buffer var0, int var1) { ReflectionCheck var2 = new ReflectionCheck(); var2.size = var0.readUnsignedByte(); var2.id = var0.readInt(); var2.operations = new int[var2.size]; var2.creationErrors = new int[var2.size]; var2.fields = new Field[var2.size]; var2.intReplaceValues = new int[var2.size]; var2.methods = new Method[var2.size]; var2.arguments = new byte[var2.size][][]; for (int var3 = 0; var3 < var2.size; ++var3) { try { int var4 = var0.readUnsignedByte(); String var5; String var6; int var7; if (var4 != 0 && var4 != 1 && var4 != 2) { if (var4 == 3 || var4 == 4) { var5 = var0.readStringCp1252NullTerminated(); var6 = var0.readStringCp1252NullTerminated(); var7 = var0.readUnsignedByte(); String[] var8 = new String[var7]; for (int var9 = 0; var9 < var7; ++var9) { var8[var9] = var0.readStringCp1252NullTerminated(); } String var20 = var0.readStringCp1252NullTerminated(); byte[][] var10 = new byte[var7][]; int var12; if (var4 == 3) { for (int var11 = 0; var11 < var7; ++var11) { var12 = var0.readInt(); var10[var11] = new byte[var12]; var0.readBytes(var10[var11], 0, var12); } } var2.operations[var3] = var4; Class[] var21 = new Class[var7]; for (var12 = 0; var12 < var7; ++var12) { var21[var12] = User.loadClassFromDescriptor(var8[var12]); } Class var22 = User.loadClassFromDescriptor(var20); if (User.loadClassFromDescriptor(var5).getClassLoader() == null) { throw new SecurityException(); } Method[] var13 = User.loadClassFromDescriptor(var5).getDeclaredMethods(); Method[] var14 = var13; for (int var15 = 0; var15 < var14.length; ++var15) { Method var16 = var14[var15]; if (Reflection.getMethodName(var16).equals(var6)) { Class[] var17 = Reflection.getParameterTypes(var16); if (var17.length == var21.length) { boolean var18 = true; for (int var19 = 0; var19 < var21.length; ++var19) { if (var17[var19] != var21[var19]) { var18 = false; break; } } if (var18 && var22 == var16.getReturnType()) { var2.methods[var3] = var16; } } } } var2.arguments[var3] = var10; } } else { var5 = var0.readStringCp1252NullTerminated(); var6 = var0.readStringCp1252NullTerminated(); var7 = 0; if (var4 == 1) { var7 = var0.readInt(); } var2.operations[var3] = var4; var2.intReplaceValues[var3] = var7; if (User.loadClassFromDescriptor(var5).getClassLoader() == null) { throw new SecurityException(); } var2.fields[var3] = Reflection.findField(User.loadClassFromDescriptor(var5), var6); } } catch (ClassNotFoundException var24) { var2.creationErrors[var3] = -1; } catch (SecurityException var25) { var2.creationErrors[var3] = -2; } catch (NullPointerException var26) { var2.creationErrors[var3] = -3; } catch (Exception var27) { var2.creationErrors[var3] = -4; } catch (Throwable var28) { var2.creationErrors[var3] = -5; } } class96.reflectionChecks.addFirst(var2); } @ObfuscatedName("r") @ObfuscatedSignature( signature = "(B)V", garbageValue = "-4" ) static void method2214() { if (UserComparator3.loadWorlds()) { Login.worldSelectOpen = true; Login.worldSelectPage = 0; Login.worldSelectPagesCount = 0; } } @ObfuscatedName("hh") @ObfuscatedSignature( signature = "(IIIII)V", garbageValue = "-2069013220" ) static final void method2215(int var0, int var1, int var2, int var3) { for (int var4 = 0; var4 < Client.rootWidgetCount; ++var4) { if (Client.rootWidgetXs[var4] + Client.rootWidgetWidths[var4] > var0 && Client.rootWidgetXs[var4] < var0 + var2 && Client.rootWidgetHeights[var4] + Client.rootWidgetYs[var4] > var1 && Client.rootWidgetYs[var4] < var3 + var1) { Client.field843[var4] = true; } } } @ObfuscatedName("ie") @ObfuscatedSignature( signature = "(Lhj;I)Z", garbageValue = "-1045685499" ) @Export("runCs1") static final boolean runCs1(Widget var0) { if (var0.cs1Comparisons == null) { return false; } for (int var1 = 0; var1 < var0.cs1Comparisons.length; ++var1) { int var2 = Varps.method3969(var0, var1); int var3 = var0.cs1ComparisonValues[var1]; if (var0.cs1Comparisons[var1] == 2) { if (var2 >= var3) { return false; } } else if (var0.cs1Comparisons[var1] == 3) { if (var2 <= var3) { return false; } } else if (var0.cs1Comparisons[var1] == 4) { if (var2 == var3) { return false; } } else if (var2 != var3) { return false; } } return true; } }