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.
This commit is contained in:
Hydrox6
2021-08-19 15:37:45 +01:00
parent 86cbf9b42b
commit ffff30d60c

View File

@@ -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)
{