From f2935dcfdb629ae7b3a1748889dd323b6a892db8 Mon Sep 17 00:00:00 2001 From: Max Weber Date: Sun, 12 May 2019 23:59:03 -0600 Subject: [PATCH] mixins: Correct DecorativeObject's clickbox - getOrientation has nothing to do with getClickbox's orientation parameter - model A is offset by x/yOffset - model B exists sometimes --- .../mixins/RSDecorativeObjectMixin.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSDecorativeObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSDecorativeObjectMixin.java index e86e689fef..9bf27786eb 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSDecorativeObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSDecorativeObjectMixin.java @@ -110,7 +110,29 @@ public abstract class RSDecorativeObjectMixin implements RSDecorativeObject @Override public Area getClickbox() { - return Perspective.getClickbox(client, getModel(), getOrientation(), getLocalLocation()); + Area clickbox = new Area(); + + LocalPoint lp = getLocalLocation(); + Area clickboxA = Perspective.getClickbox(client, getModel(), 0, + new LocalPoint(lp.getX() + getXOffset(), lp.getY() + getYOffset())); + Area clickboxB = Perspective.getClickbox(client, getModel2(), 0, lp); + + if (clickboxA == null && clickboxB == null) + { + return null; + } + + if (clickboxA != null) + { + clickbox.add(clickboxA); + } + + if (clickboxB != null) + { + clickbox.add(clickboxB); + } + + return clickbox; } @Inject