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
|
public interface Client
|
||||||
{
|
{
|
||||||
Player getPlayer(int idx);
|
List<Player> getPlayers();
|
||||||
|
|
||||||
Player[] getCachedPlayers();
|
|
||||||
|
|
||||||
List<NPC> getNpcs();
|
List<NPC> getNpcs();
|
||||||
|
|
||||||
|
|||||||
@@ -27,17 +27,13 @@ package net.runelite.api.queries;
|
|||||||
import net.runelite.api.Client;
|
import net.runelite.api.Client;
|
||||||
import net.runelite.api.Player;
|
import net.runelite.api.Player;
|
||||||
|
|
||||||
import java.util.Arrays;
|
|
||||||
import java.util.Objects;
|
|
||||||
|
|
||||||
public class PlayerQuery extends ActorQuery<Player, PlayerQuery>
|
public class PlayerQuery extends ActorQuery<Player, PlayerQuery>
|
||||||
{
|
{
|
||||||
@Override
|
@Override
|
||||||
public Player[] result(Client client)
|
public Player[] result(Client client)
|
||||||
{
|
{
|
||||||
return Arrays.stream(client.getCachedPlayers())
|
return client.getPlayers().stream()
|
||||||
.filter(Objects::nonNull)
|
.filter(predicate)
|
||||||
.filter(predicate)
|
.toArray(Player[]::new);
|
||||||
.toArray(Player[]::new);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,21 +124,15 @@ public class DevToolsOverlay extends Overlay
|
|||||||
|
|
||||||
private void renderPlayers(Graphics2D graphics)
|
private void renderPlayers(Graphics2D graphics)
|
||||||
{
|
{
|
||||||
Player[] players = client.getCachedPlayers();
|
List<Player> players = client.getPlayers();
|
||||||
Player local = client.getLocalPlayer();
|
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)
|
String text = p.getName() + " (A: " + p.getAnimation() + ") (G: " + p.getGraphic() + ")";
|
||||||
{
|
OverlayUtil.renderActorOverlay(graphics, p, text, BLUE);
|
||||||
if (!p.getName().equals(local.getName()))
|
|
||||||
{
|
|
||||||
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.Actor;
|
||||||
import net.runelite.api.NPC;
|
import net.runelite.api.NPC;
|
||||||
import net.runelite.api.Perspective;
|
import net.runelite.api.Perspective;
|
||||||
|
import net.runelite.api.Player;
|
||||||
import net.runelite.api.Point;
|
import net.runelite.api.Point;
|
||||||
import net.runelite.api.mixins.Inject;
|
import net.runelite.api.mixins.Inject;
|
||||||
import net.runelite.api.mixins.Mixin;
|
import net.runelite.api.mixins.Mixin;
|
||||||
@@ -65,7 +66,8 @@ public abstract class RSActorMixin implements RSActor
|
|||||||
}
|
}
|
||||||
|
|
||||||
i -= 0x8000;
|
i -= 0x8000;
|
||||||
return client.getPlayer(i);
|
Player[] players = client.getCachedPlayers();
|
||||||
|
return players[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
|
|||||||
@@ -45,9 +45,19 @@ public abstract class RSClientMixin implements RSClient
|
|||||||
{
|
{
|
||||||
@Inject
|
@Inject
|
||||||
@Override
|
@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
|
@Inject
|
||||||
|
|||||||
@@ -129,8 +129,13 @@ public interface RSClient extends RSGameEngine, Client
|
|||||||
@Import("collisionMaps")
|
@Import("collisionMaps")
|
||||||
RSCollisionData[] getCollisionMaps();
|
RSCollisionData[] getCollisionMaps();
|
||||||
|
|
||||||
|
@Import("playerIndexesCount")
|
||||||
|
int getPlayerIndexesCount();
|
||||||
|
|
||||||
|
@Import("playerIndices")
|
||||||
|
int[] getPlayerIndices();
|
||||||
|
|
||||||
@Import("cachedPlayers")
|
@Import("cachedPlayers")
|
||||||
@Override
|
|
||||||
RSPlayer[] getCachedPlayers();
|
RSPlayer[] getCachedPlayers();
|
||||||
|
|
||||||
@Import("groundItemDeque")
|
@Import("groundItemDeque")
|
||||||
|
|||||||
Reference in New Issue
Block a user