Use player indices to iterate local players
This commit is contained in:
@@ -32,9 +32,7 @@ import net.runelite.api.widgets.WidgetInfo;
|
||||
|
||||
public interface Client
|
||||
{
|
||||
Player getPlayer(int idx);
|
||||
|
||||
Player[] getCachedPlayers();
|
||||
List<Player> getPlayers();
|
||||
|
||||
List<NPC> getNpcs();
|
||||
|
||||
|
||||
@@ -27,17 +27,13 @@ package net.runelite.api.queries;
|
||||
import net.runelite.api.Client;
|
||||
import net.runelite.api.Player;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.Objects;
|
||||
|
||||
public class PlayerQuery extends ActorQuery<Player, PlayerQuery>
|
||||
{
|
||||
@Override
|
||||
public Player[] result(Client client)
|
||||
{
|
||||
return Arrays.stream(client.getCachedPlayers())
|
||||
.filter(Objects::nonNull)
|
||||
.filter(predicate)
|
||||
.toArray(Player[]::new);
|
||||
return client.getPlayers().stream()
|
||||
.filter(predicate)
|
||||
.toArray(Player[]::new);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -124,21 +124,15 @@ public class DevToolsOverlay extends Overlay
|
||||
|
||||
private void renderPlayers(Graphics2D graphics)
|
||||
{
|
||||
Player[] players = client.getCachedPlayers();
|
||||
List<Player> players = client.getPlayers();
|
||||
Player local = client.getLocalPlayer();
|
||||
|
||||
if (players != null && (players.length - 1) > 0)
|
||||
for (Player p : players)
|
||||
{
|
||||
for (Player p : players)
|
||||
if (p != local)
|
||||
{
|
||||
if (p != null)
|
||||
{
|
||||
if (!p.getName().equals(local.getName()))
|
||||
{
|
||||
String text = p.getName() + " (A: " + p.getAnimation() + ") (G: " + p.getGraphic() + ")";
|
||||
OverlayUtil.renderActorOverlay(graphics, p, text, BLUE);
|
||||
}
|
||||
}
|
||||
String text = p.getName() + " (A: " + p.getAnimation() + ") (G: " + p.getGraphic() + ")";
|
||||
OverlayUtil.renderActorOverlay(graphics, p, text, BLUE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -128,9 +128,14 @@ public interface RSClient extends RSGameEngine, Client
|
||||
|
||||
@Import("collisionMaps")
|
||||
RSCollisionData[] getCollisionMaps();
|
||||
|
||||
@Import("playerIndexesCount")
|
||||
int getPlayerIndexesCount();
|
||||
|
||||
@Import("playerIndices")
|
||||
int[] getPlayerIndices();
|
||||
|
||||
@Import("cachedPlayers")
|
||||
@Override
|
||||
RSPlayer[] getCachedPlayers();
|
||||
|
||||
@Import("groundItemDeque")
|
||||
|
||||
Reference in New Issue
Block a user