Use npc indices to iterate local npcs

This commit is contained in:
Adam
2017-10-17 10:38:41 -04:00
parent c3e8cc0131
commit 10a494a2b7
6 changed files with 34 additions and 26 deletions

View File

@@ -28,6 +28,7 @@ import java.awt.Graphics2D;
import java.awt.Polygon;
import java.awt.image.BufferedImage;
import net.runelite.api.Actor;
import net.runelite.api.NPC;
import net.runelite.api.Perspective;
import net.runelite.api.Point;
import net.runelite.api.mixins.Inject;
@@ -59,7 +60,8 @@ public abstract class RSActorMixin implements RSActor
if (i < 0x8000)
{
return client.getNpc(i);
NPC[] npcs = client.getCachedNPCs();
return npcs[i];
}
i -= 0x8000;

View File

@@ -52,9 +52,19 @@ public abstract class RSClientMixin implements RSClient
@Inject
@Override
public NPC getNpc(int idx)
public List<NPC> getNpcs()
{
return getCachedNPCs()[idx];
int validNpcIndexes = getNpcIndexesCount();
int[] npcIndexes = getNpcIndices();
NPC[] cachedNpcs = getCachedNPCs();
List<NPC> npcs = new ArrayList<NPC>(validNpcIndexes);
for (int i = 0; i < validNpcIndexes; ++i)
{
npcs.add(cachedNpcs[npcIndexes[i]]);
}
return npcs;
}
@Inject