From ffff30d60c89ea4e33d84b202162e6d60165e907 Mon Sep 17 00:00:00 2001 From: Hydrox6 Date: Thu, 19 Aug 2021 15:37:45 +0100 Subject: [PATCH] roof removal: properly account for instances when applying overrides Since instances shift around real regions to WorldPoints that don't match, the override system was trying to apply overrides to areas that don't currently exist. --- .../client/plugins/roofremoval/RoofRemovalPlugin.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java index a9e92f4420..9f86d9a47e 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/roofremoval/RoofRemovalPlugin.java @@ -46,6 +46,7 @@ import static net.runelite.api.Constants.ROOF_FLAG_HOVERED; import static net.runelite.api.Constants.ROOF_FLAG_POSITION; import net.runelite.api.GameState; import net.runelite.api.Tile; +import net.runelite.api.coords.WorldPoint; import net.runelite.api.events.GameStateChanged; import net.runelite.client.callback.ClientThread; import net.runelite.client.config.ConfigManager; @@ -246,14 +247,17 @@ public class RoofRemovalPlugin extends Plugin continue; } - int regionID = tile.getWorldLocation().getRegionID() << 2 | z; + // Properly account for instances shifting worldpoints around + final WorldPoint wp = WorldPoint.fromLocalInstance(client, tile.getLocalLocation(), tile.getPlane()); + + int regionID = wp.getRegionID() << 2 | z; if (!overrides.containsKey(regionID)) { continue; } - int rx = tile.getWorldLocation().getRegionX(); - int ry = tile.getWorldLocation().getRegionY(); + int rx = wp.getRegionX(); + int ry = wp.getRegionY(); long[] region = overrides.get(regionID); if ((region[ry] & (1L << rx)) != 0) {