From 844089ae2e625462958179f850551903be62f9f3 Mon Sep 17 00:00:00 2001 From: James Munson Date: Sat, 15 Jun 2019 16:00:36 -0700 Subject: [PATCH 1/2] NPC hider based on name --- .../src/main/java/net/runelite/api/Client.java | 7 +++++++ .../plugins/entityhider/EntityHiderConfig.java | 14 +++++++++++++- .../plugins/entityhider/EntityHiderPlugin.java | 1 + .../runelite/mixins/EntityHiderBridgeMixin.java | 11 +++++++++++ .../java/net/runelite/mixins/EntityHiderMixin.java | 12 ++++++++++++ 5 files changed, 44 insertions(+), 1 deletion(-) diff --git a/runelite-api/src/main/java/net/runelite/api/Client.java b/runelite-api/src/main/java/net/runelite/api/Client.java index b8bd992eae..726bc43886 100644 --- a/runelite-api/src/main/java/net/runelite/api/Client.java +++ b/runelite-api/src/main/java/net/runelite/api/Client.java @@ -1426,6 +1426,13 @@ public interface Client extends GameShell */ void setNPCsHidden(boolean state); + /** + * Sets which NPCs are hidden + * + * @param names the names of the npcs seperated by ',' + */ + void setNPCsNames(String names); + /** * Sets whether 2D sprites (ie. overhead prayers) related to * the NPCs are hidden. diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderConfig.java b/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderConfig.java index caca619791..154258d2d6 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderConfig.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderConfig.java @@ -132,7 +132,18 @@ public interface EntityHiderConfig extends Config } @ConfigItem( - position = 10, + position = 10, + keyName = "hideNPCsNames", + name = "Hide NPCs Names", + description = "Configures which NPCs to hide" + ) + default String hideNPCsNames() + { + return ""; + } + + @ConfigItem( + position = 11, keyName = "hideProjectiles", name = "Hide Projectiles", description = "Configures whether or not projectiles are hidden" @@ -141,4 +152,5 @@ public interface EntityHiderConfig extends Config { return false; } + } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java index 4082e205ec..73069862cd 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/entityhider/EntityHiderPlugin.java @@ -94,6 +94,7 @@ public class EntityHiderPlugin extends Plugin client.setNPCsHidden(config.hideNPCs()); client.setNPCsHidden2D(config.hideNPCs2D()); + client.setNPCsNames(config.hideNPCsNames()); client.setAttackersHidden(config.hideAttackers()); diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderBridgeMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderBridgeMixin.java index 959e9c41bc..f9e9a175f2 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderBridgeMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderBridgeMixin.java @@ -64,6 +64,10 @@ public abstract class EntityHiderBridgeMixin implements RSClient @Inject public static boolean hideProjectiles; + @Inject + public static String hideNPCsNames; + + @Inject @Override public void setIsHidingEntities(boolean state) @@ -127,6 +131,13 @@ public abstract class EntityHiderBridgeMixin implements RSClient hideNPCs2D = state; } + @Inject + @Override + public void setNPCsNames(String NPCs) + { + hideNPCsNames = NPCs; + } + @Inject @Override public void setAttackersHidden(boolean state) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java index 2e69f55007..46c09f91cd 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java @@ -67,6 +67,9 @@ public abstract class EntityHiderMixin implements RSScene @Shadow("hideNPCs") private static boolean hideNPCs; + @Shadow("hideNPCsNames") + private static String hideNPCsNames; + @Shadow("hideNPCs2D") private static boolean hideNPCs2D; @@ -151,6 +154,7 @@ public abstract class EntityHiderMixin implements RSScene else if (renderable instanceof RSNPC) { RSNPC npc = (RSNPC) renderable; + String[] names = hideNPCsNames.split(","); if (!hideAttackers) { @@ -160,6 +164,14 @@ public abstract class EntityHiderMixin implements RSScene } } + for(String name: names) + { + if(names.equals(npc.getName())) + { + return false; + } + } + return drawingUI ? !hideNPCs2D : !hideNPCs; } else if (renderable instanceof RSProjectile) From 71a4b5d58b13464bdc40aad0e967b2b4eca03dc4 Mon Sep 17 00:00:00 2001 From: James Munson Date: Sat, 15 Jun 2019 16:51:44 -0700 Subject: [PATCH 2/2] NPC hider based on name --- .../src/main/java/net/runelite/mixins/EntityHiderMixin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java index 46c09f91cd..851c1b5480 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/EntityHiderMixin.java @@ -164,9 +164,9 @@ public abstract class EntityHiderMixin implements RSScene } } - for(String name: names) + for (String name: names) { - if(names.equals(npc.getName())) + if (names.equals(npc.getName())) { return false; }