diff --git a/runelite-api/src/main/java/net/runelite/api/TileModel.java b/runelite-api/src/main/java/net/runelite/api/TileModel.java index 9dd05d97c2..c6f7fd2876 100644 --- a/runelite-api/src/main/java/net/runelite/api/TileModel.java +++ b/runelite-api/src/main/java/net/runelite/api/TileModel.java @@ -85,4 +85,36 @@ public interface TileModel int getBufferLen(); void setBufferLen(int bufferLen); + + int getUnderlaySwColor(); + + void setUnderlaySwColor(int color); + + int getUnderlaySeColor(); + + void setUnderlaySeColor(int color); + + int getUnderlayNeColor(); + + void setUnderlayNeColor(int color); + + int getUnderlayNwColor(); + + void setUnderlayNwColor(int color); + + int getOverlaySwColor(); + + void setOverlaySwColor(int color); + + int getOverlaySeColor(); + + void setOverlaySeColor(int color); + + int getOverlayNeColor(); + + void setOverlayNeColor(int color); + + int getOverlayNwColor(); + + void setOverlayNwColor(int color); } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java index 656e86b4cc..44e3d46697 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSSceneMixin.java @@ -33,6 +33,7 @@ import net.runelite.api.coords.WorldPoint; import net.runelite.api.hooks.DrawCallbacks; import net.runelite.api.mixins.Copy; import net.runelite.api.mixins.Inject; +import net.runelite.api.mixins.MethodHook; import net.runelite.api.mixins.Mixin; import net.runelite.api.mixins.Replace; import net.runelite.api.mixins.Shadow; @@ -787,4 +788,28 @@ public abstract class RSSceneMixin implements RSScene client.updateItemPile(sceneX, sceneY); } + + @MethodHook(value = "addTile", end = true) + @Inject + public void rl$addTile(int z, int x, int y, int shape, int rotation, int texture, int heightSw, int heightSe, + int heightNe, int heightNw, int underlaySwColor, int underlaySeColor, int underlayNeColor, + int underlayNwColor, int overlaySwColor, int overlaySeColor, int overlayNeColor, + int overlayNwColor, int underlayRgb, int overlayRgb) + { + if (shape != 0 && shape != 1) + { + Tile tile = getTiles()[z][x][y]; + TileModel sceneTileModel = tile.getTileModel(); + + sceneTileModel.setUnderlaySwColor(underlaySwColor); + sceneTileModel.setUnderlaySeColor(underlaySeColor); + sceneTileModel.setUnderlayNeColor(underlayNeColor); + sceneTileModel.setUnderlayNwColor(underlayNwColor); + + sceneTileModel.setOverlaySwColor(overlaySwColor); + sceneTileModel.setOverlaySeColor(overlaySeColor); + sceneTileModel.setOverlayNeColor(overlayNeColor); + sceneTileModel.setOverlayNwColor(overlayNwColor); + } + } } diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileModelMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileModelMixin.java index e22bf131b0..06cc88a4fa 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileModelMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileModelMixin.java @@ -16,6 +16,30 @@ public abstract class RSTileModelMixin implements RSTileModel @Inject private int rl$modelBufferLen; + @Inject + private int underlaySwColor; + + @Inject + private int underlaySeColor; + + @Inject + private int underlayNeColor; + + @Inject + private int underlayNwColor; + + @Inject + private int overlaySwColor; + + @Inject + private int overlaySeColor; + + @Inject + private int overlayNeColor; + + @Inject + private int overlayNwColor; + @Inject @Override public int getBufferOffset() @@ -57,4 +81,116 @@ public abstract class RSTileModelMixin implements RSTileModel { rl$modelBufferLen = bufferLen; } + + @Inject + @Override + public int getUnderlaySwColor() + { + return underlaySwColor; + } + + @Inject + @Override + public void setUnderlaySwColor(int color) + { + underlaySwColor = color; + } + + @Inject + @Override + public int getUnderlaySeColor() + { + return underlaySeColor; + } + + @Inject + @Override + public void setUnderlaySeColor(int color) + { + underlaySeColor = color; + } + + @Inject + @Override + public int getUnderlayNeColor() + { + return underlayNeColor; + } + + @Inject + @Override + public void setUnderlayNeColor(int color) + { + underlayNeColor = color; + } + + @Inject + @Override + public int getUnderlayNwColor() + { + return underlayNwColor; + } + + @Inject + @Override + public void setUnderlayNwColor(int color) + { + underlayNwColor = color; + } + + @Inject + @Override + public int getOverlaySwColor() + { + return overlaySwColor; + } + + @Inject + @Override + public void setOverlaySwColor(int color) + { + overlaySwColor = color; + } + + @Inject + @Override + public int getOverlaySeColor() + { + return overlaySeColor; + } + + @Inject + @Override + public void setOverlaySeColor(int color) + { + overlaySeColor = color; + } + + @Inject + @Override + public int getOverlayNeColor() + { + return overlayNeColor; + } + + @Inject + @Override + public void setOverlayNeColor(int color) + { + overlayNeColor = color; + } + + @Inject + @Override + public int getOverlayNwColor() + { + return overlayNwColor; + } + + @Inject + @Override + public void setOverlayNwColor(int color) + { + overlayNwColor = color; + } }