RECENT NEWS
📢 𝟑𝟎% Discount for all ads only this month ❄️

Updating Kronos data to 203

Johny
power_settings_new
Seen 2 years ago
Steel Warrior (11/15)
Steel Warrior
0
0
0
11 Posts
Posts
0
Warning level
0
Likes
0
Dislikes
Joined: 2022-04-24
HYPE 200 IQ

DONT DO THIS. IT WILL BREAK YOUR MAGIC TAB, PEOPLE ARE OFFERING TO DO THIS FOR MONEY DONT FALL FOR THE SCAM.

[IMG]

Click here to view the original image of 1233x772px.

[/IMG]

https://www.dropbox.com/s/9qoe2b25vl...20203.rar?dl=0

https://github.com/jessewhitley/ValkyrCacheSuite updated with a javafx libary to load easyer

add this to the buffer class inside the standalone client inside runelite-client

Code:
   public int method7383() {
      int var1 = 0; // L: 302

      int var2;
      for (var2 = this.readUShortSmart(); var2 == 32767; var2 = this.readUShortSmart()) { // L: 303 304 306
         var1 += 32767; // L: 305
      }

      var1 += var2; // L: 308
      return var1; // L: 309
   }
   public int readUShortSmart() {
      int var1 = this.array[this.offset] & 255; // L: 296
      return var1 < 128 ? this.readUnsignedByte() : this.readUnsignedShort() - 32768; // L: 297 298
   }
   public void writeShort(int var1) {
      this.array[++this.offset - 1] = (byte)(var1 >> 8); // L: 75
      this.array[++this.offset - 1] = (byte)var1; // L: 76
   }
   public int readShortSmart() {
      int var1 = this.array[this.offset] & 255; // L: 290
      return var1 < 128 ? this.readUnsignedByte() - 64 : this.readUnsignedShort() - 49152; // L: 291 292
   }

fine method2209 inside class92 and make sure it match's

Code:
      while(true) {
         int var12 = var10.method7383();
         if(var12 == 0) {
            return;
         }

         var11 += var12;
         int var13 = 0;

         while(true) {
            int var14 = var10.readUnsignedSmart();
            if(var14 == 0) {
               break;
            }

replace you itemdef npcdef and object def

Code:
package net.runelite.standalone;

import java.io.IOException;
import java.util.Arrays;

import net.runelite.api.events.PostItemDefinition;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.api.RSItemDefinition;
import net.runelite.rs.api.RSModel;

@ObfuscatedName("it")
public class ItemDefinition extends DualNode implements RSItemDefinition {
   @ObfuscatedName("p")
   @ObfuscatedSignature(
           signature = "Lhp;"
   )
   static AbstractArchive ItemDefinition_archive;
   @ObfuscatedName("q")
   @ObfuscatedSignature(
           signature = "Lhp;"
   )
   static AbstractArchive ItemDefinition_modelArchive;
   @ObfuscatedName("b")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   public static EvictingDualNodeHashTable ItemDefinition_cachedSprites;
   @ObfuscatedName("c")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   static EvictingDualNodeHashTable ItemDefinition_cachedModels;
   @ObfuscatedName("i")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   static EvictingDualNodeHashTable ItemDefinition_cached;
   @ObfuscatedName("s")
   @ObfuscatedGetter(
           intValue = -1552364581
   )
   public int zoom2d;
   @ObfuscatedName("t")
   short[] recolorFrom;
   @ObfuscatedName("w")
   public String name;
   @ObfuscatedName("x")
   short[] retextureFrom;
   @ObfuscatedName("a")
   @ObfuscatedGetter(
           intValue = 1164476445
   )
   public int id;
   @ObfuscatedName("aa")
   public String[] groundActions;
   @ObfuscatedName("ab")
   @ObfuscatedGetter(
           intValue = -281574303
   )
   int shiftClickIndex;
   @ObfuscatedName("ac")
   @ObfuscatedGetter(
           intValue = -1898122861
   )
   public int isStackable;
   @ObfuscatedName("ad")
   @ObfuscatedGetter(
           intValue = -774987533
   )
   int femaleModel1;
   @ObfuscatedName("ae")
   @ObfuscatedGetter(
           intValue = -622073101
   )
   int femaleHeadModel;
   @ObfuscatedName("af")
   @ObfuscatedGetter(
           intValue = 1043908831
   )
   int resizeY;
   @ObfuscatedName("ag")
   int[] countco;
   @ObfuscatedName("ah")
   int[] countobj;
   @ObfuscatedName("ai")
   @ObfuscatedGetter(
           intValue = -629230839
   )
   int maleModel2;
   @ObfuscatedName("aj")
   @ObfuscatedGetter(
           intValue = 2003146835
   )
   public int note;
   @ObfuscatedName("ak")
   @ObfuscatedGetter(
           intValue = -1320032129
   )
   int femaleModel2;
   @ObfuscatedName("al")
   @ObfuscatedGetter(
           intValue = -472240431
   )
   int femaleModel;
   @ObfuscatedName("am")
   @ObfuscatedGetter(
           intValue = 1142570821
   )
   int maleHeadModel2;
   @ObfuscatedName("an")
   @ObfuscatedGetter(
           intValue = 839022773
   )
   int femaleOffset;
   @ObfuscatedName("ao")
   @ObfuscatedGetter(
           intValue = 708775895
   )
   int maleOffset;
   @ObfuscatedName("ap")
   public String[] inventoryActions;
   @ObfuscatedName("aq")
   @ObfuscatedGetter(
           intValue = 2070739727
   )
   int maleHeadModel;
   @ObfuscatedName("as")
   @ObfuscatedGetter(
           intValue = -1653428101
   )
   int maleModel1;
   @ObfuscatedName("at")
   @ObfuscatedGetter(
           intValue = -251593053
   )
   int resizeZ;
   @ObfuscatedName("au")
   @ObfuscatedGetter(
           intValue = 146352651
   )
   int resizeX;
   @ObfuscatedName("av")
   @ObfuscatedGetter(
           intValue = -1870487091
   )
   int femaleHeadModel2;
   @ObfuscatedName("aw")
   public boolean isMembersOnly;
   @ObfuscatedName("ax")
   @ObfuscatedGetter(
           intValue = -1611629547
   )
   int maleModel;
   @ObfuscatedName("ay")
   @ObfuscatedGetter(
           intValue = -922094347
   )
   public int noteTemplate;
   @ObfuscatedName("az")
   @ObfuscatedGetter(
           intValue = -187431889
   )
   public int price;
   @ObfuscatedName("bc")
   @ObfuscatedGetter(
           intValue = -1887741169
   )
   public int placeholderTemplate;
   @ObfuscatedName("bd")
   @ObfuscatedGetter(
           intValue = 850095651
   )
   public int team;
   @ObfuscatedName("bh")
   @ObfuscatedGetter(
           intValue = 807356389
   )
   public int contrast;
   @ObfuscatedName("bj")
   @ObfuscatedGetter(
           intValue = 1578768163
   )
   int unnotedId;
   @ObfuscatedName("bm")
   @ObfuscatedSignature(
           signature = "Llb;"
   )
   IterableNodeHashTable params;
   @ObfuscatedName("bs")
   @ObfuscatedGetter(
           intValue = -407908075
   )
   int notedId;
   @ObfuscatedName("bv")
   public boolean isTradable;
   @ObfuscatedName("bx")
   @ObfuscatedGetter(
           intValue = 427704773
   )
   public int ambient;
   @ObfuscatedName("bz")
   @ObfuscatedGetter(
           intValue = -1594376835
   )
   public int placeholder;
   public int shiftClickActionIndex;
   public int modelOverride;
   @ObfuscatedName("d")
   @ObfuscatedGetter(
           intValue = -1211123861
   )
   public int zan2d;
   @ObfuscatedName("e")
   @ObfuscatedGetter(
           intValue = -512556695
   )
   int model;
   @ObfuscatedName("f")
   @ObfuscatedGetter(
           intValue = 850273909
   )
   public int xan2d;
   @ObfuscatedName("g")
   short[] recolorTo;
   @ObfuscatedName("h")
   short[] retextureTo;
   @ObfuscatedName("j")
   @ObfuscatedGetter(
           intValue = 1701459647
   )
   public int yan2d;
   @ObfuscatedName("k")
   @ObfuscatedGetter(
           intValue = 992637627
   )
   public int offsetY2d;
   @ObfuscatedName("l")
   @ObfuscatedGetter(
           intValue = -973833067
   )
   public int offsetX2d;

   static {
      ItemDefinition_cached = new EvictingDualNodeHashTable(64);
      ItemDefinition_cachedModels = new EvictingDualNodeHashTable(50);
      ItemDefinition_cachedSprites = new EvictingDualNodeHashTable(200);
   }

   ItemDefinition() {
      this.name = "null";
      this.zoom2d = 2000;
      this.xan2d = 0;
      this.yan2d = 0;
      this.zan2d = 0;
      this.offsetX2d = 0;
      this.offsetY2d = 0;
      this.isStackable = 0;
      this.price = 1;
      this.isMembersOnly = false;
      this.groundActions = new String[]{null, null, "Take", null, null};
      this.inventoryActions = new String[]{null, null, null, null, "Drop"};
      this.shiftClickIndex = -2;
      this.maleModel = -1;
      this.maleModel1 = -1;
      this.maleOffset = 0;
      this.femaleModel = -1;
      this.femaleModel1 = -1;
      this.femaleOffset = 0;
      this.maleModel2 = -1;
      this.femaleModel2 = -1;
      this.maleHeadModel = -1;
      this.maleHeadModel2 = -1;
      this.femaleHeadModel = -1;
      this.femaleHeadModel2 = -1;
      this.note = -1;
      this.noteTemplate = -1;
      this.resizeX = 128;
      this.resizeY = 128;
      this.resizeZ = 128;
      this.ambient = 0;
      this.contrast = 0;
      this.team = 0;
      this.isTradable = false;
      this.unnotedId = -1;
      this.notedId = -1;
      this.placeholder = -1;
      this.placeholderTemplate = -1;
      this.rl$$init();
   }

   @ObfuscatedName("p")
   @ObfuscatedSignature(
           signature = "(Lit;Lit;B)V",
           garbageValue = "126"
   )
   void method4552(ItemDefinition var1, ItemDefinition var2) {
      this.model = var1.model;
      this.zoom2d = var1.zoom2d;
      this.xan2d = var1.xan2d;
      this.yan2d = var1.yan2d;
      this.zan2d = var1.zan2d;
      this.offsetX2d = var1.offsetX2d;
      this.offsetY2d = var1.offsetY2d;
      this.recolorFrom = var1.recolorFrom;
      this.recolorTo = var1.recolorTo;
      this.retextureFrom = var1.retextureFrom;
      this.retextureTo = var1.retextureTo;
      this.name = var2.name;
      this.isMembersOnly = var2.isMembersOnly;
      this.price = var2.price;
      this.isStackable = 1;
   }

   @ObfuscatedName("q")
   @ObfuscatedSignature(
           signature = "(Lit;Lit;S)V",
           garbageValue = "-15779"
   )
   void method4532(ItemDefinition var1, ItemDefinition var2) {
      this.model = var1.model;
      this.zoom2d = var1.zoom2d;
      this.xan2d = var1.xan2d;
      this.yan2d = var1.yan2d;
      this.zan2d = var1.zan2d;
      this.offsetX2d = var1.offsetX2d;
      this.offsetY2d = var1.offsetY2d;
      this.recolorFrom = var2.recolorFrom;
      this.recolorTo = var2.recolorTo;
      this.retextureFrom = var2.retextureFrom;
      this.retextureTo = var2.retextureTo;
      this.name = var2.name;
      this.isMembersOnly = var2.isMembersOnly;
      this.isStackable = var2.isStackable;
      this.maleModel = var2.maleModel;
      this.maleModel1 = var2.maleModel1;
      this.maleModel2 = var2.maleModel2;
      this.femaleModel = var2.femaleModel;
      this.femaleModel1 = var2.femaleModel1;
      this.femaleModel2 = var2.femaleModel2;
      this.maleHeadModel = var2.maleHeadModel;
      this.maleHeadModel2 = var2.maleHeadModel2;
      this.femaleHeadModel = var2.femaleHeadModel;
      this.femaleHeadModel2 = var2.femaleHeadModel2;
      this.team = var2.team;
      this.groundActions = var2.groundActions;
      this.inventoryActions = new String[5];
      if(var2.inventoryActions != null) {
         for(int var3 = 0; var3 < 4; ++var3) {
            this.inventoryActions[var3] = var2.inventoryActions[var3];
         }
      }

      this.inventoryActions[4] = "Discard";
      this.price = 0;
   }

   @ObfuscatedName("r")
   @ObfuscatedSignature(
           signature = "(Lkl;IB)V",
           garbageValue = "7"
   )
   void method4579(Buffer var1, int var2) {
      if(var2 == 1) {
         this.model = var1.readUnsignedShort();
      } else if(var2 == 2) {
         this.name = var1.readString();
      } else if(var2 == 4) {
         this.zoom2d = var1.readUnsignedShort();
      } else if(var2 == 5) {
         this.xan2d = var1.readUnsignedShort();
      } else if(var2 == 6) {
         this.yan2d = var1.readUnsignedShort();
      } else if(var2 == 7) {
         this.offsetX2d = var1.readUnsignedShort();
         if(this.offsetX2d > 32767) {
            this.offsetX2d -= 65536;
         }
      } else if(var2 == 8) {
         this.offsetY2d = var1.readUnsignedShort();
         if(this.offsetY2d > 32767) {
            this.offsetY2d -= 65536;
         }
      } else if (var2 == 9) {
         var1.readString();
      } else if(var2 == 11) {
         this.isStackable = 1;
      } else if(var2 == 12) {
         this.price = var1.readInt();
      } else if(var2 == 16) {
         this.isMembersOnly = true;
      } else if(var2 == 23) {
         this.maleModel = var1.readUnsignedShort();
         this.maleOffset = var1.readUnsignedByte();
      } else if(var2 == 24) {
         this.maleModel1 = var1.readUnsignedShort();
      } else if(var2 == 25) {
         this.femaleModel = var1.readUnsignedShort();
         this.femaleOffset = var1.readUnsignedByte();
      } else if(var2 == 26) {
         this.femaleModel1 = var1.readUnsignedShort();
      } else if(var2 >= 30 && var2 < 35) {
         this.groundActions[var2 - 30] = var1.readString();
         if(this.groundActions[var2 - 30].equalsIgnoreCase("Hidden")) {
            this.groundActions[var2 - 30] = null;
         }
      } else if(var2 >= 35 && var2 < 40) {
         this.inventoryActions[var2 - 35] = var1.readString();
      } else {
         int var3;
         int var4;
         if(var2 == 40) {
            var3 = var1.readUnsignedByte();
            this.recolorFrom = new short[var3];
            this.recolorTo = new short[var3];

            for(var4 = 0; var4 < var3; ++var4) {
               this.recolorFrom[var4] = (short)var1.readUnsignedShort();
               this.recolorTo[var4] = (short)var1.readUnsignedShort();
            }
         } else if(var2 == 41) {
            var3 = var1.readUnsignedByte();
            this.retextureFrom = new short[var3];
            this.retextureTo = new short[var3];

            for(var4 = 0; var4 < var3; ++var4) {
               this.retextureFrom[var4] = (short)var1.readUnsignedShort();
               this.retextureTo[var4] = (short)var1.readUnsignedShort();
            }
         } else if(var2 == 42) {
            this.shiftClickIndex = var1.readByte();
         } else if(var2 == 65) {
            this.isTradable = true;
         } else if(var2 == 78) {
            this.maleModel2 = var1.readUnsignedShort();
         } else if(var2 == 79) {
            this.femaleModel2 = var1.readUnsignedShort();
         } else if(var2 == 90) {
            this.maleHeadModel = var1.readUnsignedShort();
         } else if(var2 == 91) {
            this.femaleHeadModel = var1.readUnsignedShort();
         } else if(var2 == 92) {
            this.maleHeadModel2 = var1.readUnsignedShort();
         } else if(var2 == 93) {
            this.femaleHeadModel2 = var1.readUnsignedShort();
         } else if (var2 == 94) {
            var1.readUnsignedShort();
         } else if(var2 == 95) {
            this.zan2d = var1.readUnsignedShort();
         } else if(var2 == 97) {
            this.note = var1.readUnsignedShort();
         } else if(var2 == 98) {
            this.noteTemplate = var1.readUnsignedShort();
         } else if(var2 >= 100 && var2 < 110) {
            if(this.countobj == null) {
               this.countobj = new int[10];
               this.countco = new int[10];
            }

            this.countobj[var2 - 100] = var1.readUnsignedShort();
            this.countco[var2 - 100] = var1.readUnsignedShort();
         } else if(var2 == 110) {
            this.resizeX = var1.readUnsignedShort();
         } else if(var2 == 111) {
            this.resizeY = var1.readUnsignedShort();
         } else if(var2 == 112) {
            this.resizeZ = var1.readUnsignedShort();
         } else if(var2 == 113) {
            this.ambient = var1.readByte();
         } else if(var2 == 114) {
            this.contrast = var1.readByte() * 5;
         } else if(var2 == 115) {
            this.team = var1.readUnsignedByte();
         } else if(var2 == 139) {
            this.unnotedId = var1.readUnsignedShort();
         } else if(var2 == 140) {
            this.notedId = var1.readUnsignedShort();
         } else if(var2 == 148) {
            this.placeholder = var1.readUnsignedShort();
         } else if(var2 == 149) {
            this.placeholderTemplate = var1.readUnsignedShort();
         } else if(var2 == 249) {
            this.params = UserComparator5.method3374(var1, this.params);
         }
      }

   }

   @ObfuscatedName("s")
   @ObfuscatedSignature(
           signature = "(IIB)I",
           garbageValue = "59"
   )
   public int getParam(int index, int defaultInt) {
      return HealthBar.getParam(this.params, index, defaultInt);
   }

   @ObfuscatedName("u")
   @ObfuscatedSignature(
           signature = "(Lkl;B)V",
           garbageValue = "32"
   )
   void method4527(Buffer var1) {
      while(true) {
         int var2 = var1.readUnsignedByte();
         if(var2 == 0) {
            return;
         }

         this.method4579(var1, var2);
      }
   }

   @ObfuscatedName("v")
   @ObfuscatedSignature(
           signature = "(B)V",
           garbageValue = "1"
   )
   void method4528() {
      this.post();
   }

   @ObfuscatedName("x")
   @ObfuscatedSignature(
           signature = "(ZB)Z",
           garbageValue = "100"
   )
   public final boolean method4556(boolean var1) {
      int var2 = this.maleHeadModel;
      int var3 = this.maleHeadModel2;
      if(var1) {
         var2 = this.femaleHeadModel;
         var3 = this.femaleHeadModel2;
      }

      if(var2 == -1) {
         return true;
      } else {
         boolean var4 = true;
         if(!ItemDefinition_modelArchive.method4024(var2, 0)) {
            var4 = false;
         }

         if(var3 != -1 && !ItemDefinition_modelArchive.method4024(var3, 0)) {
            var4 = false;
         }

         return var4;
      }
   }

   @ObfuscatedName("y")
   @ObfuscatedSignature(
           signature = "(IB)Ldw;",
           garbageValue = "-102"
   )
   public final ModelData method4534(int var1) {
      int var3;
      if(this.countobj != null && var1 > 1) {
         int var2 = -1;

         for(var3 = 0; var3 < 10; ++var3) {
            if(var1 >= this.countco[var3] && this.countco[var3] != 0) {
               var2 = this.countobj[var3];
            }
         }

         if(var2 != -1) {
            return Occluder.getItemDefinition(var2).method4534(1);
         }
      }

      ModelData var4 = ModelData.method2823(ItemDefinition_modelArchive, this.model, 0);
      if(var4 == null) {
         return null;
      } else {
         if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) {
            var4.method2773(this.resizeX, this.resizeY, this.resizeZ);
         }

         if(this.recolorFrom != null) {
            for(var3 = 0; var3 < this.recolorFrom.length; ++var3) {
               var4.method2770(this.recolorFrom[var3], this.recolorTo[var3]);
            }
         }

         if(this.retextureFrom != null) {
            for(var3 = 0; var3 < this.retextureFrom.length; ++var3) {
               var4.method2831(this.retextureFrom[var3], this.retextureTo[var3]);
            }
         }

         return var4;
      }
   }

   @ObfuscatedName("a")
   @ObfuscatedSignature(
           signature = "(ZI)Z",
           garbageValue = "-94789059"
   )
   public final boolean method4537(boolean var1) {
      int var2 = this.maleModel;
      int var3 = this.maleModel1;
      int var4 = this.maleModel2;
      if(var1) {
         var2 = this.femaleModel;
         var3 = this.femaleModel1;
         var4 = this.femaleModel2;
      }

      if(var2 == -1) {
         return true;
      } else {
         boolean var5 = true;
         if(!ItemDefinition_modelArchive.method4024(var2, 0)) {
            var5 = false;
         }

         if(var3 != -1 && !ItemDefinition_modelArchive.method4024(var3, 0)) {
            var5 = false;
         }

         if(var4 != -1 && !ItemDefinition_modelArchive.method4024(var4, 0)) {
            var5 = false;
         }

         return var5;
      }
   }

   @ObfuscatedName("c")
   @ObfuscatedSignature(
           signature = "(IB)Lit;",
           garbageValue = "23"
   )
   public ItemDefinition method4559(int var1) {
      if(this.countobj != null && var1 > 1) {
         int var2 = -1;

         for(int var3 = 0; var3 < 10; ++var3) {
            if(var1 >= this.countco[var3] && this.countco[var3] != 0) {
               var2 = this.countobj[var3];
            }
         }

         if(var2 != -1) {
            return Occluder.getItemDefinition(var2);
         }
      }

      return this;
   }

   public int getIsStackable() {
      return this.isStackable;
   }

   public void post() {
      PostItemDefinition var1 = new PostItemDefinition();
      var1.setItemDefinition(this);
      ViewportMouse.client.getCallbacks().post(PostItemDefinition.class, var1);
   }

   public int copy$getShiftClickIndex(int var1) {
      return this.shiftClickIndex != -1 && this.inventoryActions != null?(this.shiftClickIndex >= 0?(this.inventoryActions[this.shiftClickIndex] != null?this.shiftClickIndex:-1):("Drop".equalsIgnoreCase(this.inventoryActions[4])?4:-1)):-1;
   }

   @ObfuscatedSignature(
           signature = "(II)Ldh;"
   )
   public final Model copy$getModel(int var1, int var2) {
      if(this.countobj != null && var1 > 1) {
         int var3 = -1;

         for(int var4 = 0; var4 < 10; ++var4) {
            if(var1 >= this.countco[var4] && this.countco[var4] != 0) {
               var3 = this.countobj[var4];
            }
         }

         if(var3 != -1) {
            return Occluder.getItemDefinition(var3).method4575(1, 1336448754);
         }
      }

      Model var6 = (Model)ItemDefinition_cachedModels.method3032((long)this.id);
      if(var6 != null) {
         return var6;
      } else {
         ModelData var7 = ModelData.method2823(ItemDefinition_modelArchive, this.model, 0);
         if(var7 == null) {
            return null;
         } else {
            if(this.resizeX != 128 || this.resizeY != 128 || this.resizeZ != 128) {
               var7.method2773(this.resizeX, this.resizeY, this.resizeZ);
            }

            int var5;
            if(this.recolorFrom != null) {
               for(var5 = 0; var5 < this.recolorFrom.length; ++var5) {
                  var7.method2770(this.recolorFrom[var5], this.recolorTo[var5]);
               }
            }

            if(this.retextureFrom != null) {
               for(var5 = 0; var5 < this.retextureFrom.length; ++var5) {
                  var7.method2831(this.retextureFrom[var5], this.retextureTo[var5]);
               }
            }

            var6 = var7.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
            var6.isSingleTile = true;
            ItemDefinition_cachedModels.method3034(var6, (long)this.id);
            return var6;
         }
      }
   }

   private void rl$$init() {
      this.shiftClickActionIndex = -2;
      this.modelOverride = -1;
   }

   public void setModelOverride(int var1) {
      this.modelOverride = var1;
   }

   public boolean isStackable() {
      return this.getIsStackable() != 0;
   }

   public void setShiftClickActionIndex(int var1) {
      this.shiftClickActionIndex = var1;
   }

   public void resetShiftClickActionIndex() {
      this.shiftClickActionIndex = -2;
   }

   public int getId() {
      return this.id;
   }

   public void setName(String var1) {
      this.name = var1;
   }

   public String getName() {
      return this.name;
   }

   public int getPrice() {
      return this.price;
   }

   public boolean isMembers() {
      return this.isMembersOnly;
   }

   public String[] getInventoryActions() {
      return this.inventoryActions;
   }

   public int getMaleModel() {
      return this.maleModel;
   }

   public int getLinkedNoteId() {
      return this.note;
   }

   public int getNote() {
      return this.noteTemplate;
   }

   public void setTradeable(boolean var1) {
      this.isTradable = var1;
   }

   public boolean isTradeable() {
      return this.isTradable;
   }

   public int getPlaceholderId() {
      return this.placeholder;
   }

   public int getPlaceholderTemplateId() {
      return this.placeholderTemplate;
   }

   public RSModel getModel(int var1) {
      return this.method4575(var1, 1336448754);
   }

   public int getShiftClickActionIndex() {
      return this.method4543(-1424068644);
   }

   @ObfuscatedName("e")
   @ObfuscatedSignature(
           signature = "(ZB)Ldw;",
           garbageValue = "22"
   )
   public final ModelData method4538(boolean var1) {
      int var2 = this.maleModel;
      int var3 = this.maleModel1;
      int var4 = this.maleModel2;
      if(var1) {
         var2 = this.femaleModel;
         var3 = this.femaleModel1;
         var4 = this.femaleModel2;
      }

      if(var2 == -1) {
         return null;
      } else {
         ModelData var5 = ModelData.method2823(ItemDefinition_modelArchive, var2, 0);
         if(var3 != -1) {
            ModelData var6 = ModelData.method2823(ItemDefinition_modelArchive, var3, 0);
            if(var4 != -1) {
               ModelData var7 = ModelData.method2823(ItemDefinition_modelArchive, var4, 0);
               ModelData[] var8 = new ModelData[]{var5, var6, var7};
               var5 = new ModelData(var8, 3);
            } else {
               ModelData[] var10 = new ModelData[]{var5, var6};
               var5 = new ModelData(var10, 2);
            }
         }

         if(!var1 && this.maleOffset != 0) {
            var5.method2784(0, this.maleOffset, 0);
         }

         if(var1 && this.femaleOffset != 0) {
            var5.method2784(0, this.femaleOffset, 0);
         }

         int var9;
         if(this.recolorFrom != null) {
            for(var9 = 0; var9 < this.recolorFrom.length; ++var9) {
               var5.method2770(this.recolorFrom[var9], this.recolorTo[var9]);
            }
         }

         if(this.retextureFrom != null) {
            for(var9 = 0; var9 < this.retextureFrom.length; ++var9) {
               var5.method2831(this.retextureFrom[var9], this.retextureTo[var9]);
            }
         }

         return var5;
      }
   }

   @ObfuscatedName("f")
   @ObfuscatedSignature(
           signature = "(ILjava/lang/String;I)Ljava/lang/String;",
           garbageValue = "570180688"
   )
   public String getParam(int index, String defaultString) {
      return class94.method2216(this.params, index, defaultString);
   }

   @ObfuscatedName("h")
   @ObfuscatedSignature(
           signature = "(ZI)Ldw;",
           garbageValue = "1830989293"
   )
   public final ModelData method4540(boolean var1) {
      int var2 = this.maleHeadModel;
      int var3 = this.maleHeadModel2;
      if(var1) {
         var2 = this.femaleHeadModel;
         var3 = this.femaleHeadModel2;
      }

      if(var2 == -1) {
         return null;
      } else {
         ModelData var4 = ModelData.method2823(ItemDefinition_modelArchive, var2, 0);
         if(var3 != -1) {
            ModelData var5 = ModelData.method2823(ItemDefinition_modelArchive, var3, 0);
            ModelData[] var6 = new ModelData[]{var4, var5};
            var4 = new ModelData(var6, 2);
         }

         int var7;
         if(this.recolorFrom != null) {
            for(var7 = 0; var7 < this.recolorFrom.length; ++var7) {
               var4.method2770(this.recolorFrom[var7], this.recolorTo[var7]);
            }
         }

         if(this.retextureFrom != null) {
            for(var7 = 0; var7 < this.retextureFrom.length; ++var7) {
               var4.method2831(this.retextureFrom[var7], this.retextureTo[var7]);
            }
         }

         return var4;
      }
   }

   @ObfuscatedName("i")
   @ObfuscatedSignature(
           signature = "(II)Ldh;"
   )
   public final Model method4575(int var1, int var2) {
      return this.modelOverride == -1?(Model)this.copy$getModel(var1, var2):(Model)ViewportMouse.client.getItemDefinition(this.modelOverride).getModel(var1);
   }

   @ObfuscatedName("j")
   public int method4543(int var1) {
      return this.shiftClickActionIndex == -2?this.copy$getShiftClickIndex(var1):this.shiftClickActionIndex;
   }

   @ObfuscatedName("m")
   @ObfuscatedSignature(
           signature = "(Lit;Lit;I)V",
           garbageValue = "-2143595462"
   )
   void method4533(ItemDefinition var1, ItemDefinition var2) {
      this.model = var1.model;
      this.zoom2d = var1.zoom2d;
      this.xan2d = var1.xan2d;
      this.yan2d = var1.yan2d;
      this.zan2d = var1.zan2d;
      this.offsetX2d = var1.offsetX2d;
      this.offsetY2d = var1.offsetY2d;
      this.recolorFrom = var1.recolorFrom;
      this.recolorTo = var1.recolorTo;
      this.retextureFrom = var1.retextureFrom;
      this.retextureTo = var1.retextureTo;
      this.isStackable = var1.isStackable;
      this.name = var2.name;
      this.price = 0;
      this.isMembersOnly = false;
      this.isTradable = false;
   }

   @ObfuscatedName("v")
   @ObfuscatedSignature(
           signature = "(B)Lbl;",
           garbageValue = "66"
   )
   static ClientPreferences method4600() {
      AccessFile var0 = null;
      ClientPreferences var1 = new ClientPreferences();

      try {
         var0 = class202.method3853("", class10.field66.name, false);
         byte[] var2 = new byte[(int)var0.method5()];

         int var4;
         for(int var3 = 0; var3 < var2.length; var3 += var4) {
            var4 = var0.method6(var2, var3, var2.length - var3);
            if(var4 == -1) {
               throw new IOException();
            }
         }

         var1 = new ClientPreferences(new Buffer(var2));
      } catch (Exception var6) {
         ;
      }

      try {
         if(var0 != null) {
            var0.method18();
         }
      } catch (Exception var5) {
         ;
      }

      return var1;
   }

   public void postDecode() {
      if(id == 2742) {
         name = "Coin Casket (small)";
         inventoryActions[1] = null;
      }

      if(id == 2744) {
         name = "Coin Casket (medium)";
         inventoryActions[1] = null;
      }

      if(id == 2746) {
         name = "Coin Casket (large)";
         inventoryActions[1] = null;
      }

      if(id == 2748) {
         name = "Coin Casket (giant)";
         inventoryActions[1] = null;
      }

      if (id == 3455 || id == 3457 || id == 3458) {
         name = "Clue key";
         inventoryActions[3] = "Check-Hint";
      }

      if(id == 13190) { //bond
         name = CustomMain.worldType.getName() + " Credit";
         isStackable = 1;
         inventoryActions[0] = "Claim";
         inventoryActions[2] = null;
      }

      if (id == 13302) {
         name = "PK Key";
      }
      if(id == 6199) {
         inventoryActions[2] = "Gift";
      }

      if(id == 290) {
         name = "Super Mystery Box";
         inventoryActions[1] = "Open";
         inventoryActions[2] = "Gift";
      }

      if(id == 6828) {
         name = "Pet Mystery Box";
         inventoryActions[1] = "Open";
         inventoryActions[2] = "Gift";
      }

      if(id == 6829) {
         name = "Voting Mystery Box";
         inventoryActions[1] = "Open";
         inventoryActions[2] = "Gift";
      }

      if(id == 6831) {
         name = "3rd Age Mystery Box";
         inventoryActions[1] = "Open";
         inventoryActions[2] = "Gift";
      }

      if(id == 1505) {
         name = "Obelisk destination scroll";
      }

      if (id == 621) {
         name = "Tournament voucher";
      }

      if(id == 4067) {
         name = "Vote ticket";
      }

      if (id == 9477) {
         name = "Coinbox";
         inventoryActions[0] = "Open";
         isStackable = 0;
      }

      if (id == 3455 || id == 3457 || id == 3458) {
         inventoryActions[3] = "Check-Hint";
      }
      if(id == 10834) {
         name = "Dice bag";
         inventoryActions[0] = "Roll 4-sided";
         inventoryActions[1] = "Roll 12-sided";
         inventoryActions[2] = "Roll 100-sided";
      }

      if (id == 1464) {
         name = "Vote Lottery Ticket";
         isStackable = 0;
      }

      if(id == 6306) {
         name = "LMS Sticks";
         isTradable = false;
      }

      if(id == 6806) {
         name = "Green Skin Scroll";
         inventoryActions[0] = "Redeem";
      }

      if(id == 6807) {
         name = "Blue Skin Scroll";
         inventoryActions[0] = "Redeem";
      }

      if(id == 6808) {
         name = "Purple Skin Scroll";
         inventoryActions[0] = "Redeem";
      }

      if(id == 19625) {
         name = "Home teleport";
      }
      if(id == 8007) {
         inventoryActions[1] = null;
      }
      if(id >= 1567 && id <= 1572)
         name = "Overgrown cat";
      /* Quick option for repairing all broken items */
      if(name.endsWith("(broken)"))
         inventoryActions[0] = "Fix";

      if(id == 11169) {
         name = CustomMain.worldType.getName() + " Herald";
         inventoryActions[0] = "View-updates";
         inventoryActions[1] = null;
         inventoryActions[4] = "Destroy";
      }
      if(id == 12746 || (id >= 12748 && id <= 12756)) {
         inventoryActions[0] = "Info";
         inventoryActions[1] = "Redeem";
      }
      if (id == 2399) {
         name = "Deadman supply key";
      }

      if(id == 21532) {
         name = "Blood Fragments";
      }

      if(id == 607) {
         name = "Rare Drop Scroll";
         inventoryActions[0] = "Activate";
      }
      if(id == 608) {
         name = "Pet Drop Scroll";
         inventoryActions[0] = "Activate";
      }
      if(id == 6758) {
         name = "Bonus Exp Scroll";
         inventoryActions[0] = "Activate";
      }

      if(id == 2730) {
         name = "Wilderness Reward Box (small)";
         inventoryActions[0] = "Open";
         inventoryActions[1] = null;
      }

      if(id == 2732) {
         name = "Wilderness Reward Box (medium)";
         inventoryActions[0] = "Open";
         inventoryActions[1] = null;
      }

      if(id == 2734) {
         name = "Wilderness Reward Box (large)";
         inventoryActions[0] = "Open";
         inventoryActions[1] = null;
      }

      if(id == 2736) {
         name = "Wilderness Reward Box (giant)";
         inventoryActions[0] = "Open";
         inventoryActions[1] = null;
      }

      if (id == 13215) {
         ItemDefinition platinumTokenClone = Occluder.getItemDefinition(13204);
         price = platinumTokenClone.price;
         femaleModel1 = platinumTokenClone.femaleModel1;
         femaleOffset = platinumTokenClone.femaleOffset;
         inventoryActions = platinumTokenClone.inventoryActions;
         model = platinumTokenClone.model;
         maleModel = platinumTokenClone.maleModel;
         isMembersOnly = platinumTokenClone.isMembersOnly;
         name = "Bloody Token";
         isStackable = platinumTokenClone.isStackable;
         xan2d = platinumTokenClone.xan2d;
         yan2d = platinumTokenClone.yan2d;
         offsetY2d = platinumTokenClone.offsetY2d;
         zoom2d = platinumTokenClone.zoom2d;
         offsetX2d = platinumTokenClone.offsetX2d;
         zan2d = platinumTokenClone.zan2d;
         recolorFrom = new short[]{5813, 9139, 26006};
         recolorTo = new short[]{947, 948, 949};
         countco = new int[]{2, 3, 4, 5, 0, 0, 0, 0, 0, 0};
         countobj = new int[]{13216, 13217, 13218, 13218, 0, 0, 0, 0, 0, 0};
      }

      if (id == 13216) {
         ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3985);
         price = platinumTokenClone.price;
         femaleModel1 = platinumTokenClone.femaleModel1;
         name = "Bloody Token";
         femaleOffset = platinumTokenClone.femaleOffset;
         inventoryActions = platinumTokenClone.inventoryActions;
         model = platinumTokenClone.model;
         maleModel = platinumTokenClone.maleModel;
         isMembersOnly = platinumTokenClone.isMembersOnly;
         isStackable = platinumTokenClone.isStackable;
         xan2d = platinumTokenClone.xan2d;
         yan2d = platinumTokenClone.yan2d;
         offsetY2d = platinumTokenClone.offsetY2d;
         zoom2d = platinumTokenClone.zoom2d;
         offsetX2d = platinumTokenClone.offsetX2d;
         zan2d = platinumTokenClone.zan2d;
         recolorFrom = new short[]{5813, 9139, 26006};
         recolorTo = new short[]{947, 948, 949};
      }

      if (id == 13217) {
         ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3987);
         price = platinumTokenClone.price;
         femaleModel1 = platinumTokenClone.femaleModel1;
         name = "Bloody Token";
         femaleOffset = platinumTokenClone.femaleOffset;
         inventoryActions = platinumTokenClone.inventoryActions;
         model = platinumTokenClone.model;
         maleModel = platinumTokenClone.maleModel;
         isMembersOnly = platinumTokenClone.isMembersOnly;
         isStackable = platinumTokenClone.isStackable;
         xan2d = platinumTokenClone.xan2d;
         yan2d = platinumTokenClone.yan2d;
         offsetY2d = platinumTokenClone.offsetY2d;
         zoom2d = platinumTokenClone.zoom2d;
         offsetX2d = platinumTokenClone.offsetX2d;
         zan2d = platinumTokenClone.zan2d;
         recolorFrom = new short[]{5813, 9139, 26006};
         recolorTo = new short[]{947, 948, 949};
      }

      if (id == 13218) {
         ItemDefinition platinumTokenClone = Occluder.getItemDefinition(3989);
         price = platinumTokenClone.price;
         femaleModel1 = platinumTokenClone.femaleModel1;
         femaleOffset = platinumTokenClone.femaleOffset;
         name = "Bloody Token";
         inventoryActions = platinumTokenClone.inventoryActions;
         model = platinumTokenClone.model;
         maleModel = platinumTokenClone.maleModel;
         isMembersOnly = platinumTokenClone.isMembersOnly;
         isStackable = platinumTokenClone.isStackable;
         xan2d = platinumTokenClone.xan2d;
         yan2d = platinumTokenClone.yan2d;
         offsetY2d = platinumTokenClone.offsetY2d;
         zoom2d = platinumTokenClone.zoom2d;
         offsetX2d = platinumTokenClone.offsetX2d;
         zan2d = platinumTokenClone.zan2d;
         recolorFrom = new short[]{5813, 9139, 26006};
         recolorTo = new short[]{947, 948, 949};
      }

      if(id == 22330) {
         name = "PVP Armour Mystery Box";
         inventoryActions[0] = "Open";
         inventoryActions[1] = "Gift";
         inventoryActions[2] = null;
         inventoryActions[3] = null;
      }

      if (id == 3606 || id == 3608 || id == 7297) {
         ItemDefinition bloodyKey = Occluder.getItemDefinition(20526);

         switch (id) {
            case 3606:
               name = "Bloody key (easy)";
               break;
            case 3608:
               name = "Bloody key (medium)";
               break;
            case 7297:
               name = "Bloody key (hard)";
               break;
         }

         model = bloodyKey.model;
         xan2d = bloodyKey.xan2d;
         offsetY2d = bloodyKey.offsetY2d;
         yan2d = bloodyKey.yan2d;
         offsetX2d = bloodyKey.offsetX2d;
         zoom2d = bloodyKey.zoom2d;
      }

      if(id == 22521 || id == 22522 || id == 22523 || id == 22524) {
         String size = "";
         if(id == 22521)
            size = "(small)";
         else if(id == 22522)
            size = "(medium)";
         else if(id == 22523)
            size = "(large)";
         else if(id == 22524)
            size = "(giant)";
         name = "Blood money pouch " + size;
         recolorFrom = new short[]{6798};
         recolorTo = new short[]{948};
      }

      if(id == 2528) {
         name = "Skill Lamp";
      }

      if(id == 11918) {
         name = "Santa Outfit Box";
         inventoryActions[0] = "Open";
      }

      if(id == 12897) {
         name = "Anti-Santa Outfit Box";
         inventoryActions[0] = "Open";
      }

      if(id == 22816 || id == 22817) {
         inventoryActions[4] = "Destroy";
      }

      if(id == 21227) {
         name = "Easter Egg";
         inventoryActions[0] = "Open";
      }

      if (id == 8943 || id == 8944 || id == 8945 || id == 8946 || id == 8947 || id == 8948) {
         ItemDefinition bloodyKey = Occluder.getItemDefinition(20526);

         switch (id) {
            case 8943:
               name = "Wilderness key (1M OSRS)";
               break;
            case 8944:
               name = "Wilderness key (5M OSRS)";
               break;
            case 8945:
               name = "Wilderness key (10M OSRS)";
               break;
            case 8946:
               name = "Wilderness key (25M OSRS)";
               break;
            case 8947:
               name = "Wilderness key (50M OSRS)";
               break;
            case 8948:
               name = "Wilderness key (100M OSRS)";
               break;
         }

         inventoryActions[0] = "Information";
         inventoryActions[3] = null;
         inventoryActions[4] = "Destroy";
         model = bloodyKey.model;
         xan2d = bloodyKey.xan2d;
         offsetY2d = bloodyKey.offsetY2d;
         yan2d = bloodyKey.yan2d;
         offsetX2d = bloodyKey.offsetX2d;
         zoom2d = bloodyKey.zoom2d;
      }
   }
}
Code:
package net.runelite.standalone;

import net.runelite.api.HeadIcon;
import net.runelite.api.events.NpcActionChanged;
import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.api.RSNPCDefinition;
import net.runelite.rs.api.RSSprite;

@ObfuscatedName("il")
public class NPCDefinition extends DualNode implements RSNPCDefinition {
   @ObfuscatedName("n")
   @ObfuscatedSignature(
           signature = "Lhp;"
   )
   public static AbstractArchive NpcDefinition_modelArchive;
   @ObfuscatedName("u")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   public static EvictingDualNodeHashTable NpcDefinition_cachedModels;
   @ObfuscatedName("v")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   public static EvictingDualNodeHashTable NpcDefinition_cached;
   @ObfuscatedName("z")
   @ObfuscatedSignature(
           signature = "Lhp;"
   )
   public static AbstractArchive NpcDefinition_archive;
   @ObfuscatedName("o")
   @ObfuscatedGetter(
           intValue = 1951589919
   )
   public int walkingAnimation;
   @ObfuscatedName("p")
   public String name;
   @ObfuscatedName("q")
   @ObfuscatedGetter(
           intValue = -441203939
   )
   public int size;
   @ObfuscatedName("r")
   @ObfuscatedGetter(
           intValue = 795033679
   )
   public int id;
   @ObfuscatedName("s")
   public String[] actions;
   @ObfuscatedName("t")
   short[] colors;
   @ObfuscatedName("w")
   @ObfuscatedGetter(
           intValue = -2041030831
   )
   public int walkRightSequence;
   @ObfuscatedName("x")
   short[] retextureFrom;
   @ObfuscatedName("y")
   int[] additionalModels;
   @ObfuscatedName("a")
   @ObfuscatedGetter(
           intValue = 1113665339
   )
   public int walkBackSequence;
   @ObfuscatedName("aa")
   @ObfuscatedGetter(
           intValue = 950956241
   )
   public int rotation;
   @ObfuscatedName("ab")
   @ObfuscatedGetter(
           intValue = -313433817
   )
   int transformVarp;
   @ObfuscatedName("ac")
   @ObfuscatedGetter(
           intValue = 1963706097
   )
   int ambient;
   @ObfuscatedName("al")
   @ObfuscatedSignature(
           signature = "Llb;"
   )
   IterableNodeHashTable params;
   @ObfuscatedName("ao")
   public boolean isFollower;
   @ObfuscatedName("ap")
   public int[] transforms;
   @ObfuscatedName("ar")
   @ObfuscatedGetter(
           intValue = 1759904707
   )
   int transformVarbit;
   @ObfuscatedName("as")
   public boolean isClickable;
   @ObfuscatedName("aw")
   @ObfuscatedGetter(
           intValue = 246799047
   )
   public int headIconPrayer;
   @ObfuscatedName("ax")
   public boolean isInteractable;
   @ObfuscatedName("az")
   @ObfuscatedGetter(
           intValue = -1785698549
   )
   int contrast;
   @ObfuscatedName("b")
   @ObfuscatedGetter(
           intValue = -394985883
   )
   public int turnRightSequence;
   @ObfuscatedName("c")
   @ObfuscatedGetter(
           intValue = -1669190657
   )
   public int turnLeftSequence;
   @ObfuscatedName("d")
   @ObfuscatedGetter(
           intValue = 758770497
   )
   int widthScale;
   @ObfuscatedName("e")
   @ObfuscatedGetter(
           intValue = -1204590857
   )
   public int walkLeftSequence;
   @ObfuscatedName("f")
   public boolean drawMapDot;
   @ObfuscatedName("g")
   short[] modifiedColors;
   @ObfuscatedName("h")
   short[] retextureTo;
   @ObfuscatedName("i")
   @ObfuscatedGetter(
           intValue = -182220755
   )
   public int standingAnimation;
   @ObfuscatedName("j")
   @ObfuscatedGetter(
           intValue = 1360683279
   )
   public int combatLevel;
   @ObfuscatedName("k")
   public boolean isVisible;
   @ObfuscatedName("l")
   @ObfuscatedGetter(
           intValue = -1757828027
   )
   int heightScale;
   @ObfuscatedName("m")
   int[] models;

   static {
      NpcDefinition_cached = new EvictingDualNodeHashTable(64);
      NpcDefinition_cachedModels = new EvictingDualNodeHashTable(50);
   }

   NPCDefinition() {
      this.name = "null";
      this.size = 1;
      this.standingAnimation = -1;
      this.turnLeftSequence = -1;
      this.turnRightSequence = -1;
      this.walkingAnimation = -1;
      this.walkBackSequence = -1;
      this.walkLeftSequence = -1;
      this.walkRightSequence = -1;
      this.actions = new String[5];
      this.actionsHook(-1);
      this.drawMapDot = true;
      this.combatLevel = -1;
      this.widthScale = 128;
      this.heightScale = 128;
      this.isVisible = false;
      this.ambient = 0;
      this.contrast = 0;
      this.headIconPrayer = -1;
      this.rotation = 32;
      this.transformVarbit = -1;
      this.transformVarp = -1;
      this.isInteractable = true;
      this.isClickable = true;
      this.isFollower = false;
   }

   @ObfuscatedName("n")
   @ObfuscatedSignature(
           signature = "(B)V",
           garbageValue = "-117"
   )
   void method4402() {
   }

   @ObfuscatedName("p")
   @ObfuscatedSignature(
           signature = "(B)Ldw;",
           garbageValue = "58"
   )
   public final ModelData method4406() {
      if(this.transforms != null) {
         NPCDefinition var1 = this.method4407();
         return var1 == null?null:var1.method4406();
      } else if(this.additionalModels == null) {
         return null;
      } else {
         boolean var5 = false;

         for(int var2 = 0; var2 < this.additionalModels.length; ++var2) {
            if(!NpcDefinition_modelArchive.method4024(this.additionalModels[var2], 0)) {
               var5 = true;
            }
         }

         if(var5) {
            return null;
         } else {
            ModelData[] var6 = new ModelData[this.additionalModels.length];

            for(int var3 = 0; var3 < this.additionalModels.length; ++var3) {
               var6[var3] = ModelData.method2823(NpcDefinition_modelArchive, this.additionalModels[var3], 0);
            }

            ModelData var7;
            if(var6.length == 1) {
               var7 = var6[0];
            } else {
               var7 = new ModelData(var6, var6.length);
            }

            int var4;
            if(this.colors != null) {
               for(var4 = 0; var4 < this.colors.length; ++var4) {
                  var7.method2770(this.colors[var4], this.modifiedColors[var4]);
               }
            }

            if(this.retextureFrom != null) {
               for(var4 = 0; var4 < this.retextureFrom.length; ++var4) {
                  var7.method2831(this.retextureFrom[var4], this.retextureTo[var4]);
               }
            }

            return var7;
         }
      }
   }

   @ObfuscatedName("q")
   @ObfuscatedSignature(
           signature = "(I)Lil;",
           garbageValue = "1423511184"
   )
   public final NPCDefinition method4407() {
      int var1 = -1;
      if(this.transformVarbit != -1) {
         var1 = WorldMapSprite.method782(this.transformVarbit);
      } else if(this.transformVarp != -1) {
         var1 = Varps.Varps_main[this.transformVarp];
      }

      int var2;
      if(var1 >= 0 && var1 < this.transforms.length - 1) {
         var2 = this.transforms[var1];
      } else {
         var2 = this.transforms[this.transforms.length - 1];
      }

      return var2 != -1?PacketBufferNode.getNpcDefinition(var2):null;
   }

   @ObfuscatedName("r")
   @ObfuscatedSignature(
           signature = "(Lix;ILix;IS)Ldh;",
           garbageValue = "-1424"
   )
   public final Model method4405(SequenceDefinition var1, int var2, SequenceDefinition var3, int var4) {
      if(this.transforms != null) {
         NPCDefinition var12 = this.method4407();
         return var12 == null?null:var12.method4405(var1, var2, var3, var4);
      } else {
         Model var5 = (Model)NpcDefinition_cachedModels.method3032((long)this.id);
         if(var5 == null) {
            boolean var6 = false;

            for(int var7 = 0; var7 < this.models.length; ++var7) {
               if(!NpcDefinition_modelArchive.method4024(this.models[var7], 0)) {
                  var6 = true;
               }
            }

            if(var6) {
               return null;
            }

            ModelData[] var8 = new ModelData[this.models.length];

            int var9;
            for(var9 = 0; var9 < this.models.length; ++var9) {
               var8[var9] = ModelData.method2823(NpcDefinition_modelArchive, this.models[var9], 0);
            }

            ModelData var11;
            if(var8.length == 1) {
               var11 = var8[0];
            } else {
               var11 = new ModelData(var8, var8.length);
            }

            if(this.colors != null) {
               for(var9 = 0; var9 < this.colors.length; ++var9) {
                  var11.method2770(this.colors[var9], this.modifiedColors[var9]);
               }
            }

            if(this.retextureFrom != null) {
               for(var9 = 0; var9 < this.retextureFrom.length; ++var9) {
                  var11.method2831(this.retextureFrom[var9], this.retextureTo[var9]);
               }
            }

            var5 = var11.method2778(this.ambient + 64, this.contrast + 850, -30, -50, -30);
            NpcDefinition_cachedModels.method3034(var5, (long)this.id);
         }

         Model var10;
         if(var1 != null && var3 != null) {
            var10 = var1.method4660(var5, var2, var3, var4, (byte)-35);
         } else if(var1 != null) {
            var10 = var1.method4661(var5, var2, 338377454);
         } else if(var3 != null) {
            var10 = var3.method4661(var5, var4, 805280683);
         } else {
            var10 = var5.method2355(true);
         }

         if(this.widthScale != 128 || this.heightScale != 128) {
            var10.method2402(this.widthScale, this.heightScale, this.widthScale);
         }

         return var10;
      }
   }

   @ObfuscatedName("u")
   @ObfuscatedSignature(
           signature = "(Lkl;II)V",
           garbageValue = "-1943278683"
   )
   void method4424(Buffer var1, int var2) {
      int var3;
      int var4;
      if(var2 == 1) {
         var3 = var1.readUnsignedByte();
         this.models = new int[var3];

         for(var4 = 0; var4 < var3; ++var4) {
            this.models[var4] = var1.readUnsignedShort();
         }
      } else if(var2 == 2) {
         this.name = var1.readString();
      } else if(var2 == 12) {
         this.size = var1.readUnsignedByte();
      } else if(var2 == 13) {
         this.standingAnimation = var1.readUnsignedShort();
      } else if(var2 == 14) {
         this.walkingAnimation = var1.readUnsignedShort();
      } else if(var2 == 15) {
         this.turnLeftSequence = var1.readUnsignedShort();
      } else if(var2 == 16) {
         this.turnRightSequence = var1.readUnsignedShort();
      } else if(var2 == 17) {
         this.walkingAnimation = var1.readUnsignedShort();
         this.walkBackSequence = var1.readUnsignedShort();
         this.walkLeftSequence = var1.readUnsignedShort();
         this.walkRightSequence = var1.readUnsignedShort();
      } else if(var2 == 18) {
         var1.readUnsignedShort();
      } else if(var2 >= 30 && var2 < 35) {
         this.actions[var2 - 30] = var1.readString();
         this.actionsHook(var2 - 30);
         if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) {
            this.actions[var2 - 30] = null;
            this.actionsHook(var2 - 30);
         }
      } else if(var2 == 40) {
         var3 = var1.readUnsignedByte();
         this.colors = new short[var3];
         this.modifiedColors = new short[var3];

         for(var4 = 0; var4 < var3; ++var4) {
            this.colors[var4] = (short)var1.readUnsignedShort();
            this.modifiedColors[var4] = (short)var1.readUnsignedShort();
         }
      } else if(var2 == 41) {
         var3 = var1.readUnsignedByte();
         this.retextureFrom = new short[var3];
         this.retextureTo = new short[var3];

         for(var4 = 0; var4 < var3; ++var4) {
            this.retextureFrom[var4] = (short)var1.readUnsignedShort();
            this.retextureTo[var4] = (short)var1.readUnsignedShort();
         }
      } else if(var2 == 60) {
         var3 = var1.readUnsignedByte();
         this.additionalModels = new int[var3];

         for(var4 = 0; var4 < var3; ++var4) {
            this.additionalModels[var4] = var1.readUnsignedShort();
         }
      } else if(var2 == 93) {
         this.drawMapDot = false;
      } else if(var2 == 95) {
         this.combatLevel = var1.readUnsignedShort();
      } else if(var2 == 97) {
         this.widthScale = var1.readUnsignedShort();
      } else if(var2 == 98) {
         this.heightScale = var1.readUnsignedShort();
      } else if(var2 == 99) {
         this.isVisible = true;
      } else if(var2 == 100) {
         this.ambient = var1.readByte();
      } else if(var2 == 101) {
         this.contrast = var1.readByte() * 5;
      } else if(var2 == 102) {
         this.headIconPrayer = var1.readUnsignedShort();
      } else if(var2 == 103) {
         this.rotation = var1.readUnsignedShort();
      } else if(var2 != 106 && var2 != 118) {
         if(var2 == 107) {
            this.isInteractable = false;
         } else if(var2 == 109) {
            this.isClickable = false;
         } else if(var2 == 111) {
            this.isFollower = true;
         } else if(var2 == 249) {
            this.params = UserComparator5.method3374(var1, this.params);
         }
      } else {
         this.transformVarbit = var1.readUnsignedShort();
         if(this.transformVarbit == 65535) {
            this.transformVarbit = -1;
         }

         this.transformVarp = var1.readUnsignedShort();
         if(this.transformVarp == 65535) {
            this.transformVarp = -1;
         }

         var3 = -1;
         if(var2 == 118) {
            var3 = var1.readUnsignedShort();
            if(var3 == 65535) {
               var3 = -1;
            }
         }

         var4 = var1.readUnsignedByte();
         this.transforms = new int[var4 + 2];

         for(int var5 = 0; var5 <= var4; ++var5) {
            this.transforms[var5] = var1.readUnsignedShort();
            if(this.transforms[var5] == 65535) {
               this.transforms[var5] = -1;
            }
         }

         this.transforms[var4 + 1] = var3;
      }

   }

   @ObfuscatedName("v")
   @ObfuscatedSignature(
           signature = "(Lkl;B)V",
           garbageValue = "-41"
   )
   void method4429(Buffer var1) {
      while(true) {
         int var2 = var1.readUnsignedByte();
         if(var2 == 0) {
            return;
         }

         this.method4424(var1, var2);
      }
   }

   @ObfuscatedName("y")
   @ObfuscatedSignature(
           signature = "(III)I",
           garbageValue = "-1804168798"
   )
   public int method4409(int var1, int var2) {
      return HealthBar.getParam(this.params, var1, var2);
   }

   public int getRsOverheadIcon() {
      return this.headIconPrayer;
   }

   public void actionsHook(int var1) {
      NpcActionChanged var2 = new NpcActionChanged();
      var2.setNpcDefinition(this);
      var2.setIdx(var1);
      ViewportMouse.client.getCallbacks().post(NpcActionChanged.class, var2);
   }

   public HeadIcon getOverheadIcon() {
      switch(this.getRsOverheadIcon()) {
         case 0:
            return HeadIcon.MELEE;
         case 1:
            return HeadIcon.RANGED;
         case 2:
            return HeadIcon.MAGIC;
         case 3:
         case 4:
         case 5:
         default:
            return null;
         case 6:
            return HeadIcon.RANGE_MAGE;
      }
   }

   public int getId() {
      return this.id;
   }

   public String getName() {
      return this.name;
   }

   public int getSize() {
      return this.size;
   }

   public int[] getModels() {
      return this.models;
   }

   public String[] getActions() {
      return this.actions;
   }

   public boolean isMinimapVisible() {
      return this.drawMapDot;
   }

   public int getCombatLevel() {
      return this.combatLevel;
   }

   public boolean isVisible() {
      return this.isVisible;
   }

   public int[] getConfigs() {
      return this.transforms;
   }

   public boolean isClickable() {
      return this.isClickable;
   }

   public RSNPCDefinition transform() {
      return this.method4407();
   }

   @ObfuscatedName("i")
   @ObfuscatedSignature(
           signature = "(ILjava/lang/String;I)Ljava/lang/String;",
           garbageValue = "-1270482233"
   )
   public String method4410(int var1, String var2) {
      return class94.method2216(this.params, var1, var2);
   }

   @ObfuscatedName("m")
   @ObfuscatedSignature(
           signature = "(B)Z",
           garbageValue = "-43"
   )
   public boolean method4408() {
      if(this.transforms == null) {
         return true;
      } else {
         int var1 = -1;
         if(this.transformVarbit != -1) {
            var1 = WorldMapSprite.method782(this.transformVarbit);
         } else if(this.transformVarp != -1) {
            var1 = Varps.Varps_main[this.transformVarp];
         }

         return var1 >= 0 && var1 < this.transforms.length?this.transforms[var1] != -1:this.transforms[this.transforms.length - 1] != -1;
      }
   }

   @ObfuscatedName("v")
   @ObfuscatedSignature(
           signature = "(Lhp;III)Llf;"
   )
   public static Sprite method4417(AbstractArchive var0, int var1, int var2, int var3) {
      net.runelite.api.Sprite var4 = (net.runelite.api.Sprite)Client.spriteOverrides.get(Integer.valueOf(var1));
      return var4 != null?(Sprite)((RSSprite)var4):(Sprite)Client.copy$SpriteBuffer_getSprite(var0, var1, var2, var3);
   }

   @ObfuscatedName("gr")
   @ObfuscatedSignature(
           signature = "(IIIIIIII)V",
           garbageValue = "474931921"
   )
   static final void method4403(int var0, int var1, int var2, int var3, int var4, int var5, int var6) {
      int var8 = var6 - 334;
      if(var8 < 0) {
         var8 = 0;
      } else if(var8 > 100) {
         var8 = 100;
      }

      int var9 = (Client.zoomWidth - Client.zoomHeight) * var8 / 100 + Client.zoomHeight;
      int var7 = var5 * var9 / 256;
      var8 = 2048 - var3 & 2047;
      var9 = 2048 - var4 & 2047;
      int var10 = 0;
      int var11 = 0;
      int var12 = var7;
      int var13;
      int var14;
      int var15;
      if(var8 != 0) {
         var13 = Rasterizer3D.Rasterizer3D_sine[var8];
         var14 = Rasterizer3D.Rasterizer3D_cosine[var8];
         var15 = var11 * var14 - var7 * var13 >> 16;
         var12 = var14 * var7 + var13 * var11 >> 16;
         var11 = var15;
      }

      if(var9 != 0) {
         var13 = Rasterizer3D.Rasterizer3D_sine[var9];
         var14 = Rasterizer3D.Rasterizer3D_cosine[var9];
         var15 = var10 * var14 + var13 * var12 >> 16;
         var12 = var12 * var14 - var10 * var13 >> 16;
         var10 = var15;
      }

      GrandExchangeOfferOwnWorldComparator.cameraX = var0 - var10;
      Varcs.cameraY = var1 - var11;
      WorldMapIcon_1.cameraZ = var2 - var12;
      IgnoreList.cameraPitch = var3;
      Client.onCameraPitchChanged(-1);
      WorldMapSection2.cameraYaw = var4;
      if(Client.oculusOrbState == 1 && Client.staffModLevel >= 2 && Client.cycle % 50 == 0 && (ObjectSound.oculusOrbFocalPointX >> 7 != class215.localPlayer.x >> 7 || class125.oculusOrbFocalPointY >> 7 != class215.localPlayer.y * 682054857 >> 7)) {
         var13 = class215.localPlayer.plane;
         var14 = (ObjectSound.oculusOrbFocalPointX >> 7) + class215.baseX;
         var15 = (class125.oculusOrbFocalPointY >> 7) + class304.baseY;
         class298.method5476(var14, var15, var13, true);
      }
   }

   void postDecode() {
      if (id == 5527) {
         /* Twiggy O'Korn */
         actions[2] = "Rewards";
      } else if (id == 315) {
         actions[0] = "Talk-to";
         actions[1] = "Set-skull";
         actions[2] = "Reset-kdr";
         actions[3] = null;
         actions[4] = null;
      } else if(id == 5567) {
         name = "Blood Money Shop";
         actions[0] = "Melee";
         actions[1] = "Magic";
         actions[2] = "Ranged";
      } else if (id == 1815) {
         name = "Vote Manager";
         actions[0] = "Trade";
         actions[2] = "Cast-votes";
         actions[3] = "Claim-votes";
         actions[4] = "Lottery-info";
      } else if (id == 2108) {
         name = "Credit Manager";
         actions[0] = "Open-Shop";
         actions[2] = "Claim-purchases";
      } else if (id == 306) {
         name = CustomMain.worldType.getName() + " Expert";
         actions[0] = "Talk-to";
         actions[2] = "View-help";
         actions[3] = "View-guide";
         actions[4] = "Task-rewards";
      } else if (id == 5442) {
         name = "Security Advisor";
         actions[2] = "Check Pin Settings";
         actions[3] = "Check 2FA Settings";
      } else if (id == 535) {
         /* Horvik */
         actions[0] = "Repair-items";
         actions[2] = "Upgrade-items";
      } else if (id == 3894) {
         /* Sigmund the Merchant */
         actions[0] = "Buy-items";
         actions[2] = "Sell-items";
         actions[3] = "Sets";
         actions[4] = null;
      } else if (id == 2883) {
         /* Donator Range Shop */
         name = "Donator Range Shop";
         actions[0] = "Trade";
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if (id == 5523) {
         /* Gambling man */
         name = CustomMain.worldType.getName() + " Gambler";
         actions[0] = null;
         actions[2] = "Trade";
      } else if (id == 4398) {
         /* ECO Wizard */
         name = CustomMain.worldType.getName() + " Wizard";
         actions[0] = "Teleport";
         actions[2] = "Teleport-previous";
      } else if (id == 4159) {
         /* PVP Wizard */
         name = CustomMain.worldType.getName() + " Wizard";
         actions[0] = "Teleport";
         actions[2] = "Teleport-previous";
      } else if (id == 2462) {
         /* Shanomi */
         actions[2] = "Trade";
      } else if (id == 3343) {
         name = CustomMain.worldType.getName() + " Nurse";
      } else if (id == 1603) {
         /* Kolodion */
         name = "Battle Point Exchange";
         actions[2] = "Trade";
         actions[3] = "Check-points";
      } else if (id == 3278) {
         name = "Construction Worker";
      } else if(id == 3189) {
         name = "Trade Manager";
         actions[0] = null;
         actions[1] = "Exchange";
         actions[2] = "Coffer";
         actions[3] = "Guide";
      } else if (id == 1307) {
         actions[0] = "Change-looks";
         actions[2] = "Skin-unlocks";
         actions[3] = "Title-unlocks";
         actions[4] = null;
      } else if (id == 4225) {
         name = "Shop";
         actions[0] = "Untradeable";
      } else if (id == 1199) {
         name = "Shop";
         actions[0] = "Consumable";
      } else if (id == 5081) {
         name = "Shop";
         actions[0] = "Magic";
      } else if (id == 2153) {
         name = "Shop";
         actions[0] = "Melee";
      } else if (id == 4579) {
         name = "Shop";
         actions[0] = "Misc";
      } else if (id == 2668) {
         name = "Max hit dummy";
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if (id == 6118) {
         name = "Elvarg";
         combatLevel = 280;
      } else if (id == 3358) {
         name = "Ket'ian";
         combatLevel = 420;
         widthScale *= 2;
         heightScale *= 2;
         size = 2;
      } else if (id == 3329) {
         name = "Sapphires Champion";
         combatLevel = 600;
         widthScale *= 2;
         heightScale *= 2;
         size = 2;
      } else if (id == 5906) {
         actions[2] = null;
      } else if ("Pick-up".equals(actions[0]) && "Talk-to".equals(actions[2]) && "Chase".equals(actions[3]) && "Interact".equals(actions[4])) {
         actions[3] = "Age";
         actions[4] = null;
      } else if (id == 1849) {
         name = "Loyalty Fairy";
         actions[0] = "About";
      } else if (id == 7759) {
         actions[0] = actions[2] = null;
      } else if (id == 7316) {
         name = "Tournament Manager";
         actions[0] = "Sign-up";
         actions[1] = "Rewards";
      } else if (id == 7941) {
         actions[2] = actions[3] = actions[4] = null;
      } else if (id == 3080) { // man at home. remove attack option so people can't be assholes to newbies that are just starting out
         actions[1] = null;
         combatLevel = 0;
      } else if (id == 307) { // second guide npc (with no options); originally dr jekyll
         name = CustomMain.worldType.getName() + " Expert";
         actions[0] = null;
         actions[4] = null;
         models = new int[]{214, 250, 5674, 5668, 5672, 7127, 7123};
         additionalModels = new int[]{52, 82};
         colors = new short[]{6466, 5541, 6457, 8844, 6798};
         modifiedColors = new short[]{127, -24254, 127, 6478, -11139};
         standingAnimation = 813;
         walkingAnimation = 1205;
      } else if(id == 311) {
         name = "Ironman";
         actions[1] = "Open-shop";
         actions[2] = null;
      } else if(id == 7951) {
         name = "PvP Event Manager";
         actions[0] = "Join-event";
         actions[1] = "Create-event";
      } else if(id == 8009) {
         actions[3] = "Metamorphosis";
      } else if(id == 8507) {
         name = "Bloody Merchant";
         actions[0] = "Trade";
      } else if(id == 7297) { // Skotizo (For eco world)
         // Replaces Mistag
         copy(7286);
      } else if(id == 8407) {
         actions[1] = "View Trading Post";
      } else if(id == 6002) {
         name = CustomMain.worldType.getName() + " Caretaker";
         actions[0] = "Trade";
      } else if(id == 8500) {
         name = "Old man";
         actions[1] = "Trade";
      } else if (id == 7411) {
         name = "Exodia the Forbidden one";
      } else if(id == 7412) { //Nechryarch Melee
         copy(7411);
         headIconPrayer = 0;
         name = "Exodia the Forbidden one";
      } else if(id == 7414) { //Nechryarch Range
         copy(7411);
         headIconPrayer = 1;
         name = "Exodia the Forbidden one";
      } else if(id == 7415) { //Nechryarch Mage
         copy(7411);
         headIconPrayer = 2;
         name = "Exodia the Forbidden one";
      } else if(id == 8300) { //Ranalph Devere Melee
         copy(3966);
         headIconPrayer = 0;
      } else if(id == 8301) { //Ranalph Devere Range
         copy(3966);
         headIconPrayer = 1;
      } else if(id == 8302) { //Ranalph Devere Mage
         copy(3966);
         headIconPrayer = 2;
      } else if (id == 7317) {
         actions[3] = "Trade";
      }
   }

   void copy(int otherId) {
      NPCDefinition otherDef = PacketBufferNode.getNpcDefinition(otherId);

      drawMapDot = otherDef.drawMapDot;
      standingAnimation = otherDef.standingAnimation;
      size = otherDef.size;
      walkBackSequence = otherDef.walkBackSequence;
      name = otherDef.name;
      turnLeftSequence = otherDef.turnLeftSequence;
      turnRightSequence = otherDef.turnRightSequence;
      walkingAnimation = otherDef.walkingAnimation;
      walkRightSequence = otherDef.walkRightSequence;
      walkLeftSequence = otherDef.walkLeftSequence;
      isFollower = otherDef.isFollower;
      actions = otherDef.actions == null ? null : otherDef.actions.clone();
      combatLevel = otherDef.combatLevel;
      isVisible = otherDef.isVisible;
      headIconPrayer = otherDef.headIconPrayer;
      rotation = otherDef.rotation;
      transforms = otherDef.transforms == null ? null : otherDef.transforms.clone();
      isClickable = otherDef.isClickable;
      isInteractable = otherDef.isInteractable;
      retextureFrom = otherDef.retextureFrom == null ? null : otherDef.retextureFrom.clone();
      retextureTo = otherDef.retextureTo == null ? null : otherDef.retextureTo.clone();
      transformVarp = otherDef.transformVarp;
      models = otherDef.models;
      colors = otherDef.colors == null ? null : otherDef.colors.clone();
      additionalModels = otherDef.additionalModels == null ? null : otherDef.additionalModels.clone();
      transformVarbit = otherDef.transformVarbit;
      modifiedColors = otherDef.modifiedColors == null ? null : otherDef.modifiedColors.clone();
      widthScale = otherDef.widthScale;
      heightScale = otherDef.heightScale;
      ambient = otherDef.ambient;
      contrast = otherDef.contrast;
   }
}
Code:
package net.runelite.standalone;

import net.runelite.mapping.ObfuscatedGetter;
import net.runelite.mapping.ObfuscatedName;
import net.runelite.mapping.ObfuscatedSignature;
import net.runelite.rs.api.RSObjectDefinition;

@ObfuscatedName("iz")
public class ObjectDefinition extends DualNode implements RSObjectDefinition {
   @ObfuscatedName("n")
   @ObfuscatedSignature(
           signature = "Lhp;"
   )
   public static AbstractArchive ObjectDefinition_archive;
   @ObfuscatedName("p")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   public static EvictingDualNodeHashTable ObjectDefinition_cachedEntities;
   @ObfuscatedName("q")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   public static EvictingDualNodeHashTable ObjectDefinition_cachedModels;
   @ObfuscatedName("r")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   public static EvictingDualNodeHashTable ObjectDefinition_cachedModelData;
   @ObfuscatedName("u")
   @ObfuscatedSignature(
           signature = "Lem;"
   )
   public static EvictingDualNodeHashTable ObjectDefinition_cached;
   @ObfuscatedName("v")
   @ObfuscatedSignature(
           signature = "Lhp;"
   )
   public static AbstractArchive ObjectDefinition_modelsArchive;
   @ObfuscatedName("z")
   public static boolean ObjectDefinition_isLowDetail;
   @ObfuscatedName("m")
   @ObfuscatedSignature(
           signature = "[Ldw;"
   )
   static ModelData[] field3461;
   @ObfuscatedName("o")
   short[] recolorFrom;
   @ObfuscatedName("s")
   @ObfuscatedGetter(
           intValue = 2069443219
   )
   public int int1;
   @ObfuscatedName("t")
   @ObfuscatedGetter(
           intValue = -1768434003
   )
   public int sizeX;
   @ObfuscatedName("w")
   short[] retextureTo;
   @ObfuscatedName("x")
   @ObfuscatedGetter(
           intValue = 887491837
   )
   public int interactType;
   @ObfuscatedName("y")
   @ObfuscatedGetter(
           intValue = -10424721
   )
   public int id;
   @ObfuscatedName("a")
   short[] recolorTo;
   @ObfuscatedName("aa")
   @ObfuscatedGetter(
           intValue = 2127089139
   )
   public int mapIconId;
   @ObfuscatedName("ab")
   public boolean clipped;
   @ObfuscatedName("ac")
   @ObfuscatedGetter(
           intValue = -1443717983
   )
   int ambient;
   @ObfuscatedName("ad")
   @ObfuscatedGetter(
           intValue = 1528184415
   )
   int offsetHeight;
   @ObfuscatedName("ae")
   @ObfuscatedGetter(
           intValue = -702042991
   )
   int transformVarbit;
   @ObfuscatedName("af")
   @ObfuscatedSignature(
           signature = "Llb;"
   )
   IterableNodeHashTable params;
   @ObfuscatedName("ag")
   @ObfuscatedGetter(
           intValue = -423945127
   )
   public int int4;
   @ObfuscatedName("ah")
   @ObfuscatedGetter(
           intValue = -214798847
   )
   public int ambientSoundId;
   @ObfuscatedName("ai")
   public boolean boolean2;
   @ObfuscatedName("aj")
   @ObfuscatedGetter(
           intValue = -1044165733
   )
   public int int5;
   @ObfuscatedName("ak")
   boolean isSolid;
   @ObfuscatedName("al")
   @ObfuscatedGetter(
           intValue = 771948197
   )
   int offsetX;
   @ObfuscatedName("am")
   public int[] transforms;
   @ObfuscatedName("an")
   @ObfuscatedGetter(
           intValue = 1216184101
   )
   int offsetY;
   @ObfuscatedName("ao")
   @ObfuscatedGetter(
           intValue = 1741322051
   )
   int modelSizeY;
   @ObfuscatedName("ap")
   @ObfuscatedGetter(
           intValue = 468378425
   )
   public int mapSceneId;
   @ObfuscatedName("aq")
   @ObfuscatedGetter(
           intValue = 1194600097
   )
   public int int3;
   @ObfuscatedName("ar")
   boolean isRotated;
   @ObfuscatedName("as")
   @ObfuscatedGetter(
           intValue = -570144093
   )
   int modelHeight;
   @ObfuscatedName("au")
   public int[] soundEffectIds;
   @ObfuscatedName("av")
   @ObfuscatedGetter(
           intValue = 884373055
   )
   int transformVarp;
   @ObfuscatedName("aw")
   public String[] actions;
   @ObfuscatedName("ax")
   @ObfuscatedGetter(
           intValue = -1167602213
   )
   int modelSizeX;
   @ObfuscatedName("ay")
   @ObfuscatedGetter(
           intValue = -1994867697
   )
   public int int6;
   @ObfuscatedName("az")
   @ObfuscatedGetter(
           intValue = -308737111
   )
   int contrast;
   @ObfuscatedName("b")
   public String name;
   @ObfuscatedName("c")
   int[] models;
   @ObfuscatedName("d")
   public boolean modelClipped;
   @ObfuscatedName("e")
   short[] retextureFrom;
   @ObfuscatedName("f")
   @ObfuscatedGetter(
           intValue = 1385916293
   )
   int clipType;
   @ObfuscatedName("g")
   @ObfuscatedGetter(
           intValue = -1471425107
   )
   public int sizeY;
   @ObfuscatedName("h")
   public boolean boolean1;
   @ObfuscatedName("i")
   int[] modelIds;
   @ObfuscatedName("j")
   boolean nonFlatShading;
   @ObfuscatedName("k")
   @ObfuscatedGetter(
           intValue = 1255987799
   )
   public int int2;
   @ObfuscatedName("l")
   @ObfuscatedGetter(
           intValue = -1077296785
   )
   public int animationId;

   static {
      ObjectDefinition_isLowDetail = false;
      ObjectDefinition_cached = new EvictingDualNodeHashTable(4096);
      ObjectDefinition_cachedModelData = new EvictingDualNodeHashTable(500);
      ObjectDefinition_cachedEntities = new EvictingDualNodeHashTable(30);
      ObjectDefinition_cachedModels = new EvictingDualNodeHashTable(30);
      field3461 = new ModelData[4];
   }

   ObjectDefinition() {
      this.name = "null";
      this.sizeX = 1;
      this.sizeY = 1;
      this.interactType = 2;
      this.boolean1 = true;
      this.int1 = -1;
      this.clipType = -1;
      this.nonFlatShading = false;
      this.modelClipped = false;
      this.animationId = -1;
      this.int2 = 16;
      this.ambient = 0;
      this.contrast = 0;
      this.actions = new String[5];
      this.mapIconId = -1;
      this.mapSceneId = -1;
      this.isRotated = false;
      this.clipped = true;
      this.modelSizeX = 128;
      this.modelHeight = 128;
      this.modelSizeY = 128;
      this.offsetX = 0;
      this.offsetHeight = 0;
      this.offsetY = 0;
      this.boolean2 = false;
      this.isSolid = false;
      this.int3 = -1;
      this.transformVarbit = -1;
      this.transformVarp = -1;
      this.ambientSoundId = -1;
      this.int4 = 0;
      this.int5 = 0;
      this.int6 = 0;
   }

   @ObfuscatedName("n")
   @ObfuscatedSignature(
           signature = "(B)V",
           garbageValue = "52"
   )
   void method4728() {
      if(this.int1 == -1) {
         this.int1 = 0;
         if(this.modelIds != null && (this.models == null || this.models[0] == 10)) {
            this.int1 = 1;
         }

         for(int var1 = 0; var1 < 5; ++var1) {
            if(this.actions[var1] != null) {
               this.int1 = 1;
            }
         }
      }

      if(this.int3 == -1) {
         this.int3 = this.interactType != 0?1:0;
      }

   }

   @ObfuscatedName("o")
   @ObfuscatedSignature(
           signature = "(ILjava/lang/String;B)Ljava/lang/String;",
           garbageValue = "-65"
   )
   public String method4748(int var1, String var2) {
      return class94.method2216(this.params, var1, var2);
   }

   @ObfuscatedName("p")
   @ObfuscatedSignature(
           signature = "(I)Z",
           garbageValue = "1580173918"
   )
   public final boolean method4721() {
      if(this.modelIds == null) {
         return true;
      } else {
         boolean var1 = true;

         for(int var2 = 0; var2 < this.modelIds.length; ++var2) {
            var1 &= ObjectDefinition_modelsArchive.method4024(this.modelIds[var2] & 65535, 0);
         }

         return var1;
      }
   }

   @ObfuscatedName("q")
   @ObfuscatedSignature(
           signature = "(II[[IIIIB)Ler;",
           garbageValue = "-50"
   )
   public final Entity method4755(int var1, int var2, int[][] var3, int var4, int var5, int var6) {
      long var7;
      if(this.models == null) {
         var7 = (long)(var2 + (this.id << 10));
      } else {
         var7 = (long)(var2 + (var1 << 3) + (this.id << 10));
      }

      Object var9 = (Entity)ObjectDefinition_cachedEntities.method3032(var7);
      if(var9 == null) {
         ModelData var10 = this.method4719(var1, var2);
         if(var10 == null) {
            return null;
         }

         if(!this.nonFlatShading) {
            var9 = var10.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
         } else {
            var10.ambient = (short)(this.ambient + 64);
            var10.contrast = (short)(this.contrast + 768);
            var10.method2774();
            var9 = var10;
         }

         ObjectDefinition_cachedEntities.method3034((DualNode)var9, var7);
      }

      if(this.nonFlatShading) {
         var9 = ((ModelData)var9).method2762();
      }

      if(this.clipType >= 0) {
         if(var9 instanceof Model) {
            var9 = ((Model)var9).method2354(var3, var4, var5, var6, true, this.clipType);
         } else if(var9 instanceof ModelData) {
            var9 = ((ModelData)var9).method2763(var3, var4, var5, var6, true, this.clipType);
         }
      }

      return (Entity)var9;
   }

   @ObfuscatedName("r")
   @ObfuscatedSignature(
           signature = "(II)Z",
           garbageValue = "1830976839"
   )
   public final boolean method4738(int var1) {
      if(this.models != null) {
         for(int var4 = 0; var4 < this.models.length; ++var4) {
            if(this.models[var4] == var1) {
               return ObjectDefinition_modelsArchive.method4024(this.modelIds[var4] & 65535, 0);
            }
         }

         return true;
      } else if(this.modelIds == null) {
         return true;
      } else if(var1 != 10) {
         return true;
      } else {
         boolean var2 = true;

         for(int var3 = 0; var3 < this.modelIds.length; ++var3) {
            var2 &= ObjectDefinition_modelsArchive.method4024(this.modelIds[var3] & 65535, 0);
         }

         return var2;
      }
   }

   @ObfuscatedName("u")
   @ObfuscatedSignature(
           signature = "(Lkl;II)V",
           garbageValue = "-912301650"
   )
   void method4716(Buffer var1, int var2) {
      int var3;
      int var4;
      if(var2 == 1) {
         var3 = var1.readUnsignedByte();
         if(var3 > 0) {
            if(this.modelIds != null && !ObjectDefinition_isLowDetail) {
               var1.offset += 3 * var3;
            } else {
               this.models = new int[var3];
               this.modelIds = new int[var3];

               for(var4 = 0; var4 < var3; ++var4) {
                  this.modelIds[var4] = var1.readUnsignedShort();
                  this.models[var4] = var1.readUnsignedByte();
               }
            }
         }
      } else if(var2 == 2) {
         this.name = var1.readString();
      } else if(var2 == 5) {
         var3 = var1.readUnsignedByte();
         if(var3 > 0) {
            if(this.modelIds != null && !ObjectDefinition_isLowDetail) {
               var1.offset += var3 * 2;
            } else {
               this.models = null;
               this.modelIds = new int[var3];

               for(var4 = 0; var4 < var3; ++var4) {
                  this.modelIds[var4] = var1.readUnsignedShort();
               }
            }
         }
      } else if(var2 == 14) {
         this.sizeX = var1.readUnsignedByte();
      } else if(var2 == 15) {
         this.sizeY = var1.readUnsignedByte();
      } else if(var2 == 17) {
         this.interactType = 0;
         this.boolean1 = false;
      } else if(var2 == 18) {
         this.boolean1 = false;
      } else if(var2 == 19) {
         this.int1 = var1.readUnsignedByte();
      } else if(var2 == 21) {
         this.clipType = 0;
      } else if(var2 == 22) {
         this.nonFlatShading = true;
      } else if(var2 == 23) {
         this.modelClipped = true;
      } else if(var2 == 24) {
         this.animationId = var1.readUnsignedShort();
         if(this.animationId == 65535) {
            this.animationId = -1;
         }
      } else if(var2 == 27) {
         this.interactType = 1;
      } else if(var2 == 28) {
         this.int2 = var1.readUnsignedByte();
      } else if(var2 == 29) {
         this.ambient = var1.readByte();
      } else if(var2 == 39) {
         this.contrast = var1.readByte() * 25;
      } else if(var2 >= 30 && var2 < 35) {
         this.actions[var2 - 30] = var1.readString();
         if(this.actions[var2 - 30].equalsIgnoreCase("Hidden")) {
            this.actions[var2 - 30] = null;
         }
      } else if(var2 == 40) {
         var3 = var1.readUnsignedByte();
         this.recolorFrom = new short[var3];
         this.recolorTo = new short[var3];

         for(var4 = 0; var4 < var3; ++var4) {
            this.recolorFrom[var4] = (short)var1.readUnsignedShort();
            this.recolorTo[var4] = (short)var1.readUnsignedShort();
         }
      } else if(var2 == 41) {
         var3 = var1.readUnsignedByte();
         this.retextureFrom = new short[var3];
         this.retextureTo = new short[var3];

         for(var4 = 0; var4 < var3; ++var4) {
            this.retextureFrom[var4] = (short)var1.readUnsignedShort();
            this.retextureTo[var4] = (short)var1.readUnsignedShort();
         }
      } else if (var2 == 61) {
         var1.readUnsignedShort();
      } else if(var2 == 62) {
         this.isRotated = true;
      } else if(var2 == 64) {
         this.clipped = false;
      } else if(var2 == 65) {
         this.modelSizeX = var1.readUnsignedShort();
      } else if(var2 == 66) {
         this.modelHeight = var1.readUnsignedShort();
      } else if(var2 == 67) {
         this.modelSizeY = var1.readUnsignedShort();
      } else if(var2 == 68) {
         this.mapSceneId = var1.readUnsignedShort();
      } else if(var2 == 69) {
         var1.readUnsignedByte();
      } else if(var2 == 70) {
         this.offsetX = var1.g2s();
      } else if(var2 == 71) {
         this.offsetHeight = var1.g2s();
      } else if(var2 == 72) {
         this.offsetY = var1.g2s();
      } else if(var2 == 73) {
         this.boolean2 = true;
      } else if(var2 == 74) {
         this.isSolid = true;
      } else if(var2 == 75) {
         this.int3 = var1.readUnsignedByte();
      } else if(var2 != 77 && var2 != 92) {
         if(var2 == 78) {
            this.ambientSoundId = var1.readUnsignedShort();
            this.int4 = var1.readUnsignedByte();
         } else if(var2 == 79) {
            this.int5 = var1.readUnsignedShort();
            this.int6 = var1.readUnsignedShort();
            this.int4 = var1.readUnsignedByte();
            var3 = var1.readUnsignedByte();
            this.soundEffectIds = new int[var3];

            for(var4 = 0; var4 < var3; ++var4) {
               this.soundEffectIds[var4] = var1.readUnsignedShort();
            }
         } else if(var2 == 81) {
            this.clipType = var1.readUnsignedByte() * 256;
         } else if(var2 == 82) {
            this.mapIconId = var1.readUnsignedShort();
         } else if (var2 == 89) {
            var1.readUnsignedShort();
         } else if(var2 == 249) {
            this.params = UserComparator5.method3374(var1, this.params);
         }
      } else {
         this.transformVarbit = var1.readUnsignedShort();
         if(this.transformVarbit == 65535) {
            this.transformVarbit = -1;
         }

         this.transformVarp = var1.readUnsignedShort();
         if(this.transformVarp == 65535) {
            this.transformVarp = -1;
         }

         var3 = -1;
         if(var2 == 92) {
            var3 = var1.readUnsignedShort();
            if(var3 == 65535) {
               var3 = -1;
            }
         }

         var4 = var1.readUnsignedByte();
         this.transforms = new int[var4 + 2];

         for(int var5 = 0; var5 <= var4; ++var5) {
            this.transforms[var5] = var1.readUnsignedShort();
            if(this.transforms[var5] == 65535) {
               this.transforms[var5] = -1;
            }
         }

         this.transforms[var4 + 1] = var3;
      }

   }

   @ObfuscatedName("v")
   @ObfuscatedSignature(
           signature = "(Lkl;B)V",
           garbageValue = "76"
   )
   void method4717(Buffer var1) {
      while(true) {
         int var2 = var1.readUnsignedByte();
         if(var2 == 0) {
            return;
         }

         this.method4716(var1, var2);
      }
   }

   @ObfuscatedName("y")
   @ObfuscatedSignature(
           signature = "(II[[IIIILix;II)Ldh;",
           garbageValue = "680709040"
   )
   public final Model method4723(int var1, int var2, int[][] var3, int var4, int var5, int var6, SequenceDefinition var7, int var8) {
      long var9;
      if(this.models == null) {
         var9 = (long)(var2 + (this.id << 10));
      } else {
         var9 = (long)(var2 + (var1 << 3) + (this.id << 10));
      }

      Model var11 = (Model)ObjectDefinition_cachedModels.method3032(var9);
      if(var11 == null) {
         ModelData var12 = this.method4719(var1, var2);
         if(var12 == null) {
            return null;
         }

         var11 = var12.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
         ObjectDefinition_cachedModels.method3034(var11, var9);
      }

      if(var7 == null && this.clipType == -1) {
         return var11;
      } else {
         if(var7 != null) {
            var11 = var7.method4662(var11, var8, var2, (byte)2);
         } else {
            var11 = var11.method2355(true);
         }

         if(this.clipType >= 0) {
            var11 = var11.method2354(var3, var4, var5, var6, false, this.clipType);
         }

         return var11;
      }
   }

   @ObfuscatedName("a")
   @ObfuscatedSignature(
           signature = "(I)Z",
           garbageValue = "1401395643"
   )
   public boolean method4727() {
      if(this.transforms == null) {
         return this.ambientSoundId != -1 || this.soundEffectIds != null;
      } else {
         for(int var1 = 0; var1 < this.transforms.length; ++var1) {
            if(this.transforms[var1] != -1) {
               ObjectDefinition var2 = GrandExchangeOfferOwnWorldComparator.getObjectDefinition(this.transforms[var1]);
               if(var2.ambientSoundId != -1 || var2.soundEffectIds != null) {
                  return true;
               }
            }
         }

         return false;
      }
   }

   @ObfuscatedName("b")
   @ObfuscatedSignature(
           signature = "(IIB)I",
           garbageValue = "79"
   )
   public int method4725(int var1, int var2) {
      return HealthBar.getParam(this.params, var1, var2);
   }

   @ObfuscatedName("c")
   @ObfuscatedSignature(
           signature = "(B)Liz;",
           garbageValue = "16"
   )
   public final ObjectDefinition method4733() {
      int var1 = -1;
      if(this.transformVarbit != -1) {
         var1 = WorldMapSprite.method782(this.transformVarbit);
      } else if(this.transformVarp != -1) {
         var1 = Varps.Varps_main[this.transformVarp];
      }

      int var2;
      if(var1 >= 0 && var1 < this.transforms.length - 1) {
         var2 = this.transforms[var1];
      } else {
         var2 = this.transforms[this.transforms.length - 1];
      }

      return var2 != -1?GrandExchangeOfferOwnWorldComparator.getObjectDefinition(var2):null;
   }

   public int getId() {
      return this.id;
   }

   public String getName() {
      return this.name;
   }

   public String[] getActions() {
      return this.actions;
   }

   public int getMapIconId() {
      return this.mapIconId;
   }

   public int getMapSceneId() {
      return this.mapSceneId;
   }

   public int[] getImpostorIds() {
      return this.transforms;
   }

   public RSObjectDefinition getImpostor() {
      return this.method4733();
   }

   @ObfuscatedName("i")
   @ObfuscatedSignature(
           signature = "(III)Ldw;",
           garbageValue = "-819701179"
   )
   final ModelData method4719(int var1, int var2) {
      ModelData var3 = null;
      boolean var4;
      int var5;
      int var7;
      if(this.models == null) {
         if(var1 != 10) {
            return null;
         }

         if(this.modelIds == null) {
            return null;
         }

         var4 = this.isRotated;
         if(var1 == 2 && var2 > 3) {
            var4 = !var4;
         }

         var5 = this.modelIds.length;

         for(int var6 = 0; var6 < var5; ++var6) {
            var7 = this.modelIds[var6];
            if(var4) {
               var7 += 65536;
            }

            var3 = (ModelData)ObjectDefinition_cachedModelData.method3032((long)var7);
            if(var3 == null) {
               var3 = ModelData.method2823(ObjectDefinition_modelsArchive, var7 & 65535, 0);
               if(var3 == null) {
                  return null;
               }

               if(var4) {
                  var3.method2772();
               }

               ObjectDefinition_cachedModelData.method3034(var3, (long)var7);
            }

            if(var5 > 1) {
               field3461[var6] = var3;
            }
         }

         if(var5 > 1) {
            var3 = new ModelData(field3461, var5);
         }
      } else {
         int var9 = -1;

         for(var5 = 0; var5 < this.models.length; ++var5) {
            if(this.models[var5] == var1) {
               var9 = var5;
               break;
            }
         }

         if(var9 == -1) {
            return null;
         }

         var5 = this.modelIds[var9];
         boolean var10 = this.isRotated ^ var2 > 3;
         if(var10) {
            var5 += 65536;
         }

         var3 = (ModelData)ObjectDefinition_cachedModelData.method3032((long)var5);
         if(var3 == null) {
            var3 = ModelData.method2823(ObjectDefinition_modelsArchive, var5 & 65535, 0);
            if(var3 == null) {
               return null;
            }

            if(var10) {
               var3.method2772();
            }

            ObjectDefinition_cachedModelData.method3034(var3, (long)var5);
         }
      }

      if(this.modelSizeX == 128 && this.modelHeight == 128 && this.modelSizeY == 128) {
         var4 = false;
      } else {
         var4 = true;
      }

      boolean var11;
      if(this.offsetX == 0 && this.offsetHeight == 0 && this.offsetY == 0) {
         var11 = false;
      } else {
         var11 = true;
      }

      ModelData var8 = new ModelData(var3, var2 == 0 && !var4 && !var11, this.recolorFrom == null, null == this.retextureFrom, true);
      if(var1 == 4 && var2 > 3) {
         var8.method2765(256);
         var8.method2784(45, 0, -45);
      }

      var2 &= 3;
      if(var2 == 1) {
         var8.method2833();
      } else if(var2 == 2) {
         var8.method2759();
      } else if(var2 == 3) {
         var8.method2798();
      }

      if(this.recolorFrom != null) {
         for(var7 = 0; var7 < this.recolorFrom.length; ++var7) {
            var8.method2770(this.recolorFrom[var7], this.recolorTo[var7]);
         }
      }

      if(this.retextureFrom != null) {
         for(var7 = 0; var7 < this.retextureFrom.length; ++var7) {
            var8.method2831(this.retextureFrom[var7], this.retextureTo[var7]);
         }
      }

      if(var4) {
         var8.method2773(this.modelSizeX, this.modelHeight, this.modelSizeY);
      }

      if(var11) {
         var8.method2784(this.offsetX, this.offsetHeight, this.offsetY);
      }

      return var8;
   }

   @ObfuscatedName("m")
   @ObfuscatedSignature(
           signature = "(II[[IIIII)Ldh;",
           garbageValue = "-2129252392"
   )
   public final Model method4722(int var1, int var2, int[][] var3, int var4, int var5, int var6) {
      long var7;
      if(this.models == null) {
         var7 = (long)(var2 + (this.id << 10));
      } else {
         var7 = (long)(var2 + (var1 << 3) + (this.id << 10));
      }

      Model var9 = (Model)ObjectDefinition_cachedModels.method3032(var7);
      if(var9 == null) {
         ModelData var10 = this.method4719(var1, var2);
         if(var10 == null) {
            return null;
         }

         var9 = var10.method2778(this.ambient + 64, this.contrast + 768, -50, -10, -50);
         ObjectDefinition_cachedModels.method3034(var9, var7);
      }

      if(this.clipType >= 0) {
         var9 = var9.method2354(var3, var4, var5, var6, true, this.clipType);
      }

      return var9;
   }

   void postDecode() {
      if (id == 10060) {
         name = "Trading Post";
         actions[0] = "Open";
         actions[1] = "Coffer";
         actions[2] = "Guide";
      } else if(id == 1534) {
         /* home room curtains */
         actions[0] = null;
      } else if(id == 18258) {
         /* custom altar */
         actions[0] = "Pray-at";
         actions[1] = "Spellbook";
      } else if(id == 11833) {
         actions[1] = "Practice";
      } else if(id == 32758) {
         name = "Loyalty Chest";
         actions[0] = "Loot";
         actions[1] = "About";
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if(id == 3192) {
         name = "PvP Leaderboard";
         actions[0] = "Edge PKing";
         actions[1] = "Deep Wild PKing";
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if(id == 32759) {
         name = "Loyalty Chest";
         actions[0] = null;
         actions[1] = null;
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if(id == 31379) { //is this obj ever used?????????
         name = "Donation table";
         int1 = 1;
         sizeX = sizeY = 2;
         boolean2 = false;
         int3 = 1;
         transforms = null;
         modelIds = new int[]{32153};
         transformVarbit = -1;
      } else if(id == 25203) { // decapitated elvarg corpse
         actions[0] = "Loot";
      } else if(id == 29226) {
         name = "Pet list";
         actions[4] = null;
      } else if(id == 6045) {
         actions[0] = "Dump-ore";
      } else if(id == 3581) {
         name = "Ticket exchange";
         actions[0] = "Use";
      } else if(id == 11508 || id == 11509) {
         //curtain
         clipType = 0;
      } else if (id == 31618) { // home portal
         name = "World Portal";
         actions[0] = "Teleport";
         actions[1] = "Teleport-previous";
      } else if(id == 31380) {
         //uhh i hope 31380 isn't ever used
         name = "Rejuvenation pool";
         int1 = 1;
         sizeX = sizeY = 2;
         animationId = 7304;
         int4 = 3;
         boolean1 = false;
         actions[0] = "Drink";
         ambientSoundId = 2149;
         clipType = 1;
         boolean2 = false;
         transforms = null;
         ambient = 40;
         modelIds = new int[]{32101};
         transformVarbit = -1;
      } else if(id == 30352) {
         name = "test";
         actions[1] = "Practice";
      } else if(id == 539) {
         name = "Donator Area";
      } else if(id == 33114) {
         name = "PvP Supply Chest";
         actions[0] = "Check-timer";
      } else if(id == 33115) {
         name = "PvP Supply Chest";
      } else if(id == 31583) {
         name = "PvP Supply Chest";
      } else if(id == 32572) {
         name = "Bloody Chest";
         actions[1] = "Information";
      } else if(id == 32573) {
         name = "Bloody Chest";
         actions[0] = null;
         actions[1] = null;
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if (id == 30169) { // Dagannoth kings crack
         actions[0] = "Instance";
         actions[1] = "Peek";
      } else if (id == 1816) { // KBD Lever
         actions[1] = "Instance";
         actions[2] = "Commune";
      } else if (id == 535) { // Thermonuclear smoke devil crevice
         actions[1] = "Instance";
         actions[2] = "Peek";
      } else if (id == 23104) { // Cerberus iron winch
         actions[1] = "Instance";
         actions[2] = "Peek";
      } else if (id == 29705) { // KQ Crack
         actions[0] = "Instance";
         actions[1] = "Peek";
      } else if (id >= 26502 && id <= 26505) { // GWD boss doors
         actions[1] = "Instance";
         actions[2] = "Peek";
      } else if (id == 31621) { // pvm instance portal
         name = "Boss instance portal";
         actions[0] = "Use";
      } else if(id == 19038) { //christmas tree
         name = "Christmas tree";
         actions[0] = "Grab-present";
      } else if(id == 29709) {
         name = "Snowball Exchange";
         actions[0] = "Open";
         actions[1] = "Information";
      } else if (id == 40000) {
         copy(32546);
         name = "Giveaway booth";
         actions[0] = "Use";
      } else if(id == 40001) {
         copy(4525);
         actions[0] = "Exit";
         actions[1] = null;
         actions[4] = null;
      } else if(id == 40002) {
         copy(32424);
         name = "Consumables";
      } else if(id == 40003) {
         copy(32425);
         name = "Equipment";
      } else if(id == 28925) {
         name = "Fun PVP Portal";
      } else if(id == 31622) {
         name = "Ket'ian Wilderness Boss Portal";
      } else if(id == 31626) {
         name = "Tournament Entrance";
      } else if(id == 2654) {
         name = "Bloody Fountain";
         actions[0] = "Drink";
         actions[1] = null;
         modelHeight = 200;
         modelSizeX = 200;
         modelSizeY = 200;
         sizeX = 3;
         sizeY = 3;
      } else if(id == 4470) {
         name = "Donator Zone";
         actions[0] = "Enter";
      } else if(id == 40004) {
         copy(29241);
         actions[4] = null;
      } else if(id == 40005) {
         copy(31858);
         actions[0] = "Pray-at";
         actions[1] = "Spellbook";
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if(id == 40006) {
         copy(4537);
         actions[4] = null;
      } else if(id == 40007) {
         copy(13619);
         name = "Fun PVP Portal";
         actions[4] = null;
      } else if(id == 40008) {
         copy(20839);
         name = "Tournament Barrier";
         actions[0] = "Use";
      } else if(id == 40009) {
         copy(26714);
         name = "Mounted Max Cape";
         actions[0] = null;
         actions[1] = null;
         actions[2] = null;
         actions[3] = null;
         actions[4] = null;
      } else if(id == 31846) {
         name = "Tournament Information";
         actions[0] = "Read";
      } else if(id == 29087) {
         name = "Ticket Exchange";
         actions[0] = "Use";
      } else if(id == 172) {
         name = "Crystal Chest";
      } else if (id == 27290) {
         name = "PK Chest";
      } else if (id == 4004) {
         name = "Well of Goodwill";
         actions[0] = "Use";
      } else if (id == 4390) {
         name = "Donator Zone portal";
      }
   }

   private void copy(int id) {
      ObjectDefinition from = GrandExchangeOfferOwnWorldComparator.getObjectDefinition(id);
      name = from.name;
      sizeX = from.sizeX;
      sizeY = from.sizeY;
      clipType = from.clipType;
      boolean1 = from.boolean1;
      int1 = from.int1;
      clipType = from.clipType;
      nonFlatShading = from.nonFlatShading;
      modelClipped = from.modelClipped;
      animationId = from.animationId;
      int2 = from.int2;
      ambient = from.ambient;
      contrast = from.contrast;
      actions = from.actions;
      mapIconId = from.mapIconId;
      mapSceneId = from.mapSceneId;
      isRotated = from.isRotated;
      clipped = from.clipped;
      modelSizeX = from.modelSizeX;
      modelHeight = from.modelHeight;
      modelSizeY = from.modelSizeY;
      offsetX = from.offsetX;
      offsetHeight = from.offsetHeight;
      offsetY = from.offsetY;
      boolean2 = from.boolean2;
      isSolid = from.isSolid;
      int3 = from.int3;
      transformVarbit = from.transformVarbit;
      transformVarp = from.transformVarp;
      ambientSoundId = from.ambientSoundId;
      int4 = from.int4;
      int5 = from.int5;
      int6 = from.int6;
      modelIds = from.modelIds;
   }
}

replace your ModelData with this
https://pastebin.com/uTspqe97

thats should be all for the client side now time for the server side

replace your region keys class with this

Code:
package io.ruin.data.impl;

import com.google.common.collect.Maps;
import com.google.gson.*;
import io.ruin.api.utils.JsonUtils;
import io.ruin.api.utils.ServerWrapper;
import io.ruin.data.DataFile;
import io.ruin.model.map.MultiZone;
import io.ruin.model.map.Region;
import io.ruin.model.map.dynamic.DynamicMap;
import org.json.JSONArray;
import org.json.JSONObject;

import java.util.Arrays;
import java.util.Map;

public class region_keys extends DataFile {

    public static final int[] NULL_KEYS = new int[4];

    @Override
    public String path() {
        return "xteas.json";
    }

    @Override
    public int priority() {
        return 2;
    }

    @Override
    public Object fromJson(String fileName, String json) {


        Map<Integer, int[]> key_map = Maps.newHashMap();
        JsonParser parser = new JsonParser();
       JsonArray array = (JsonArray) parser.parse(json);
        Gson builder = new GsonBuilder().create();

        //Load keys into map
        for (int i = 0; i < array.size(); i++) {
            JsonObject jObject = (JsonObject) array.get(i);
            int regionId = jObject.get("mapsquare").getAsInt();
          int[] keys1 = builder.fromJson(jObject.getAsJsonArray("key"), int[].class);
            key_map.put(regionId, keys1);
        }
        //Populate regions list
        for (int i = 0; i < Region.LOADED.length; i++) {
            Region region = new Region(i);
           if ((region.keys = key_map.get(i)) != null && !isValid(region.id, region.keys)) {
                region.keys = null; //Invalid keys
            }
            Region.LOADED[i] = region;
        }
        //Load each region
        for(Region region : Region.LOADED) {
            try {
                region.init();
            } catch (Exception ex) {
                System.err.println("Error loading region " + region.id);
                ex.printStackTrace();
            }
        }

        MultiZone.load();
        DynamicMap.load();
        return key_map;
    }

    private static boolean isValid(int id, int[] keys) {
        Region r = new Region(id);
        r.keys = keys;
        try {
            r.getLandscapeData();
            return true;
        } catch(Throwable t) {
            return false;
        }
    }

}

add this to your inbuffer class inside kronos-api

Code:
    public int readUnsignedIntSmartShortCompat() {
        int var1 = 0;

        int var2;
        for (var2 = this.readUSmart(); var2 == 32767; var2 = this.readUSmart()) {
            var1 += 32767;
        }

        var1 += var2;
        return var1;
    }
    public int readUSmart() {
        int peek = payload[position] & 0xFF;
        return peek < 128 ? this.readUnsignedByte() : this.readUnsignedShort() - 0x8000;
    }

replace the defs with these https://cdn.discordapp.com/attachmen...7682/cache.rar

replace the init method inside the region class with this

https://pastebin.com/ENtkdqaY

make sure u have added this inside of kronos server inside the data folder
https://cdn.discordapp.com/attachmen...750/xteas.json

00
  • Like
Reactions: