Use player indices to iterate local players

This commit is contained in:
Adam
2017-10-17 11:59:58 -04:00
parent 10a494a2b7
commit 6792f2570a
6 changed files with 30 additions and 25 deletions

View File

@@ -30,6 +30,7 @@ import java.awt.image.BufferedImage;
import net.runelite.api.Actor;
import net.runelite.api.NPC;
import net.runelite.api.Perspective;
import net.runelite.api.Player;
import net.runelite.api.Point;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
@@ -65,7 +66,8 @@ public abstract class RSActorMixin implements RSActor
}
i -= 0x8000;
return client.getPlayer(i);
Player[] players = client.getCachedPlayers();
return players[i];
}
@Inject

View File

@@ -45,9 +45,19 @@ public abstract class RSClientMixin implements RSClient
{
@Inject
@Override
public Player getPlayer(int idx)
public List<Player> getPlayers()
{
return getCachedPlayers()[idx];
int validPlayerIndexes = getPlayerIndexesCount();
int[] playerIndexes = getPlayerIndices();
Player[] cachedPlayers = getCachedPlayers();
List<Player> players = new ArrayList<Player>(validPlayerIndexes);
for (int i = 0; i < validPlayerIndexes; ++i)
{
players.add(cachedPlayers[playerIndexes[i]]);
}
return players;
}
@Inject