entityhider: Allow hiding of specific players. (#1507)

This commit is contained in:
Ganom
2019-09-01 12:39:54 -04:00
committed by GitHub
parent 3e10c06bb1
commit 5a429b7070
5 changed files with 46 additions and 3 deletions

View File

@@ -1492,6 +1492,13 @@ public interface Client extends GameShell
*/
void setAttackersHidden(boolean state);
/**
* Hides players input here.
*
* @param names the names of the players
*/
void setHideSpecificPlayers(List<String> names);
/**
* Sets whether projectiles are hidden.
*

View File

@@ -166,6 +166,17 @@ public interface EntityHiderConfig extends Config
@ConfigItem(
position = 13,
keyName = "hideSpecificPlayers",
name = "Hide Specific Players",
description = "Hides players you never wish to see."
)
default String hideSpecificPlayers()
{
return "";
}
@ConfigItem(
position = 14,
keyName = "hideProjectiles",
name = "Hide Projectiles",
description = "Configures whether or not projectiles are hidden"

View File

@@ -34,11 +34,11 @@ import net.runelite.api.Player;
import net.runelite.api.coords.WorldPoint;
import net.runelite.api.events.ConfigChanged;
import net.runelite.api.events.GameStateChanged;
import net.runelite.api.util.Text;
import net.runelite.client.config.ConfigManager;
import net.runelite.client.eventbus.EventBus;
import net.runelite.client.plugins.Plugin;
import net.runelite.client.plugins.PluginDescriptor;
import net.runelite.api.util.Text;
@PluginDescriptor(
name = "Entity Hider",
@@ -99,6 +99,7 @@ public class EntityHiderPlugin extends Plugin
client.setPlayersHidden(config.hidePlayers());
client.setPlayersHidden2D(config.hidePlayers2D());
client.setHideSpecificPlayers(Text.fromCSV(config.hideSpecificPlayers()));
client.setFriendsHidden(config.hideFriends());
client.setClanMatesHidden(config.hideClanMates());

View File

@@ -74,6 +74,9 @@ public abstract class EntityHiderBridgeMixin implements RSClient
@Inject
public static List<String> hideNPCsOnDeath;
@Inject
public static List<String> hideSpecificPlayers;
@Inject
@Override
public void setIsHidingEntities(boolean state)
@@ -151,6 +154,13 @@ public abstract class EntityHiderBridgeMixin implements RSClient
hideNPCsOnDeath = NPCs;
}
@Inject
@Override
public void setHideSpecificPlayers(List<String> players)
{
hideSpecificPlayers = players;
}
@Inject
@Override
public void setAttackersHidden(boolean state)

View File

@@ -32,6 +32,7 @@ import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
import net.runelite.api.util.Text;
import net.runelite.rs.api.RSActor;
import net.runelite.rs.api.RSClient;
import net.runelite.rs.api.RSEntity;
@@ -82,6 +83,9 @@ public abstract class EntityHiderMixin implements RSScene
@Shadow("hideNPCsOnDeath")
private static List<String> hideNPCsOnDeath;
@Shadow("hideSpecificPlayers")
private static List<String> hideSpecificPlayers;
@Shadow("hideNPCs2D")
private static boolean hideNPCs2D;
@@ -144,11 +148,21 @@ public abstract class EntityHiderMixin implements RSScene
boolean local = drawingUI ? hideLocalPlayer2D : hideLocalPlayer;
boolean other = drawingUI ? hidePlayers2D : hidePlayers;
boolean isLocalPlayer = entity == client.getLocalPlayer();
RSPlayer player = (RSPlayer) entity;
for (String name : hideSpecificPlayers)
{
if (name != null && !name.equals(""))
{
if (Text.standardize(player.getName()).equals(name))
{
return false;
}
}
}
if (isLocalPlayer ? local : other)
{
RSPlayer player = (RSPlayer) entity;
if (!hideAttackers)
{
if (player.getInteracting() == client.getLocalPlayer())