diff --git a/runelite-api/src/main/java/net/runelite/api/WallObject.java b/runelite-api/src/main/java/net/runelite/api/WallObject.java index 9a7156b654..ddc4a734cd 100644 --- a/runelite-api/src/main/java/net/runelite/api/WallObject.java +++ b/runelite-api/src/main/java/net/runelite/api/WallObject.java @@ -25,28 +25,33 @@ package net.runelite.api; /** - * Represents the wall of a tile, which is an un-passable boundary. + * Represents one or two walls on a tile */ public interface WallObject extends TileObject { /** - * Gets the first orientation of the wall. - * - * @return the first orientation, 0-2048 where 0 is north + * A bitfield with the orientation of a wall + * 1 = East + * 2 = North + * 4 = West + * 8 = South */ int getOrientationA(); /** - * Gets the second orientation value of the wall. - * - * @return the second orientation, 0-2048 where 0 is north + * A bitfield containing the orientation of the second wall on this tile, + * or 0 if there is no second wall. + * @see #getOrientationA */ int getOrientationB(); /** - * Gets the boundary configuration of the wall. - * - * @return the boundary configuration + * A bitfield containing various flags: + *
{@code
+ * object type id = bits & 0x20
+ * orientation (0-3) = bits >>> 6 & 3
+ * supports items = bits >>> 8 & 1
+ * }
*/
int getConfig();
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
diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSWallObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSWallObjectMixin.java
index 3ef5358ffd..e5db24d686 100644
--- a/runelite-mixins/src/main/java/net/runelite/mixins/RSWallObjectMixin.java
+++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSWallObjectMixin.java
@@ -101,8 +101,8 @@ public abstract class RSWallObjectMixin implements RSWallObject
{
Area clickbox = new Area();
- Area clickboxA = Perspective.getClickbox(client, getModelA(), getOrientationA(), getLocalLocation());
- Area clickboxB = Perspective.getClickbox(client, getModelB(), getOrientationB(), getLocalLocation());
+ Area clickboxA = Perspective.getClickbox(client, getModelA(), 0, getLocalLocation());
+ Area clickboxB = Perspective.getClickbox(client, getModelB(), 0, getLocalLocation());
if (clickboxA == null && clickboxB == null)
{