From 512140fc3a12eda47b0704964330c7b35fc6789e Mon Sep 17 00:00:00 2001 From: Kyle <48519776+xKylee@users.noreply.github.com> Date: Wed, 24 Feb 2021 12:13:56 +0000 Subject: [PATCH] mixins/api: fix broken mixin + more mixins/api: fix broken mixin + more fix broken mixins add new mixins add new api support --- .../java/net/runelite/api/TileObject.java | 10 ++++++ .../runelite/api/queries/TileObjectQuery.java | 36 +++++++++++++++++++ .../net/runelite/mixins/RSClientMixin.java | 6 ++-- .../runelite/mixins/RSTileObjectMixin.java | 14 ++++++++ 4 files changed, 63 insertions(+), 3 deletions(-) diff --git a/runelite-api/src/main/java/net/runelite/api/TileObject.java b/runelite-api/src/main/java/net/runelite/api/TileObject.java index 2168c1ed6c..7bc84e97d5 100644 --- a/runelite-api/src/main/java/net/runelite/api/TileObject.java +++ b/runelite-api/src/main/java/net/runelite/api/TileObject.java @@ -103,4 +103,14 @@ public interface TileObject extends Locatable */ @Nullable Shape getClickbox(); + + /** + * Gets the name of the object + */ + String getName(); + + /** + * Gets the menu actions of the object + */ + String[] getActions(); } diff --git a/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java b/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java index f58dc01969..0e48c3ca39 100644 --- a/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java +++ b/runelite-api/src/main/java/net/runelite/api/queries/TileObjectQuery.java @@ -74,6 +74,42 @@ public abstract class TileObjectQuery return (QueryType) this; } + public QueryType nameEquals(String... names) + { + predicate = and(object -> + { + for (String name : names) + { + String objectName = object.getName(); + if (objectName != null && objectName.equals(name)) + { + return true; + } + } + return false; + }); + return (QueryType) this; + } + + public QueryType actionEquals(String... actions) + { + predicate = and(object -> + { + for (String action : actions) + { + String[] objectActions = object.getActions(); + for (String objectAction : objectActions) + { + if (objectAction != null && objectAction.equals(action)) + { + return true; + } + } + } + return false; + }); + return (QueryType) this; + } @SuppressWarnings("unchecked") public QueryType idEquals(Collection ids) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java index 7c2bf5c580..6eb966ec17 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSClientMixin.java @@ -253,7 +253,7 @@ public abstract class RSClientMixin implements RSClient private boolean isMirrored = false; @Inject - private boolean comparingAppearance = false; + private Integer comparingAppearance = 0; @Inject private List outdatedScripts = new ArrayList<>(); @@ -2017,14 +2017,14 @@ public abstract class RSClientMixin implements RSClient @Override public boolean isComparingAppearance() { - return comparingAppearance; + return comparingAppearance > 0; } @Inject @Override public void setComparingAppearance(boolean comparingAppearance) { - this.comparingAppearance = comparingAppearance; + this.comparingAppearance += comparingAppearance ? 1 : -1; } @Inject diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileObjectMixin.java index df212fc9ab..5ca9f46545 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileObjectMixin.java @@ -37,6 +37,20 @@ public abstract class RSTileObjectMixin implements TileObject long hash = getHash(); return (int) (hash >>> 17 & 4294967295L); } + + @Override + @Inject + public String getName() + { + return client.getObjectDefinition(getId()).getName(); + } + + @Override + @Inject + public String[] getActions() + { + return client.getObjectDefinition(getId()).getActions(); + } @Override @Inject