diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ColorTileObject.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ColorTileObject.java index 1af342cd20..b1641a4885 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ColorTileObject.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ColorTileObject.java @@ -27,6 +27,7 @@ package net.runelite.client.plugins.objectindicators; import java.awt.Color; import lombok.RequiredArgsConstructor; import lombok.Value; +import net.runelite.api.ObjectComposition; import net.runelite.api.TileObject; /** @@ -38,5 +39,13 @@ import net.runelite.api.TileObject; class ColorTileObject { private final TileObject tileObject; + /** + * Non-transformed object composition for the object + */ + private final ObjectComposition composition; + /** + * Name to highlight for multilocs + */ + private final String name; private final Color color; } diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java index 0e52edf0a4..980e9317d9 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsOverlay.java @@ -33,6 +33,7 @@ import net.runelite.api.Client; import net.runelite.api.DecorativeObject; import net.runelite.api.GameObject; import net.runelite.api.GroundObject; +import net.runelite.api.ObjectComposition; import net.runelite.api.TileObject; import net.runelite.api.WallObject; import net.runelite.client.ui.overlay.Overlay; @@ -71,6 +72,18 @@ class ObjectIndicatorsOverlay extends Overlay continue; } + ObjectComposition composition = colorTileObject.getComposition(); + if (composition.getImpostorIds() != null) + { + // This is a multiloc + composition = composition.getImpostor(); + // Only mark the object if the name still matches + if (composition == null || !composition.getName().equals(colorTileObject.getName())) + { + continue; + } + } + if (color == null || !config.rememberObjectColors()) { // Fallback to the current config if the object is marked before the addition of multiple colors diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java index cfa99092a8..6e24212005 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/objectindicators/ObjectIndicatorsPlugin.java @@ -292,16 +292,15 @@ public class ObjectIndicatorsPlugin extends Plugin { if (worldPoint.getRegionX() == objectPoint.getRegionX() && worldPoint.getRegionY() == objectPoint.getRegionY() - && worldPoint.getPlane() == objectPoint.getZ()) + && worldPoint.getPlane() == objectPoint.getZ() + && objectPoint.getId() == object.getId()) { - // Transform object to get the name which matches against what we've stored - ObjectComposition composition = getObjectComposition(object.getId()); - if (composition != null && objectPoint.getName().equals(composition.getName())) - { - log.debug("Marking object {} due to matching {}", object, objectPoint); - objects.add(new ColorTileObject(object, objectPoint.getColor())); - break; - } + log.debug("Marking object {} due to matching {}", object, objectPoint); + objects.add(new ColorTileObject(object, + client.getObjectDefinition(object.getId()), + objectPoint.getName(), + objectPoint.getColor())); + break; } } } @@ -415,7 +414,10 @@ public class ObjectIndicatorsPlugin extends Plugin else { objectPoints.add(point); - objects.add(new ColorTileObject(object, color)); + objects.add(new ColorTileObject(object, + client.getObjectDefinition(object.getId()), + name, + color)); log.debug("Marking object: {}", point); }