diff --git a/bootstrap.json b/bootstrap.json index 9032e655d3..3ae81b11cc 100644 --- a/bootstrap.json +++ b/bootstrap.json @@ -20,10 +20,10 @@ "size": "3168921" }, { - "hash": "7d64dafaf007613fef59f47884ce62db5fdc21e148b351e52a3f6ce7cc28928e", + "hash": "877106b9b525477f8e9662704b00894d445dd7d476c51dad7a674f6a313e3f88", "name": "client-1.5.28-SNAPSHOT.jar", "path": "https://raw.githubusercontent.com/runelite-extended/maven-repo/master/live/client-1.5.28-SNAPSHOT.jar", - "size": "5845716" + "size": "5845767" }, { "hash": "18c4a0095d5c1da6b817592e767bb23d29dd2f560ad74df75ff3961dbde25b79", @@ -218,16 +218,16 @@ "size": "1019717" }, { - "hash": "69eddc4155a66e07761c433dc83c0703afe7b1206063fc5e1ef77c787ce777ee", + "hash": "303ac8f202bc169f30f16f3c5a3810aaae773515af4d6a7562bc996ed0f32054", "name": "runescape-api-1.5.28-SNAPSHOT.jar", "path": "https://raw.githubusercontent.com/runelite-extended/maven-repo/master/live/runescape-api-1.5.28-SNAPSHOT.jar", - "size": "56056" + "size": "56043" }, { - "hash": "55426093ae731f5c25fe6d5eb28bfb8f645ea7e41faad9e12f53d40f683101be", + "hash": "830499b8b8d65403536d20206d210f12e7524777dde9a6948d4681333c9b962a", "name": "http-api-1.5.28-SNAPSHOT.jar", "path": "https://raw.githubusercontent.com/runelite-extended/maven-repo/master/live/http-api-1.5.28-SNAPSHOT.jar", - "size": "101785" + "size": "101786" }, { "hash": "f55abda036da75e1af45bd43b9dfa79b2a3d90905be9cb38687c6621597a8165", diff --git a/runelite-api/src/main/java/net/runelite/api/DynamicObject.java b/runelite-api/src/main/java/net/runelite/api/DynamicObject.java new file mode 100644 index 0000000000..a1914605e3 --- /dev/null +++ b/runelite-api/src/main/java/net/runelite/api/DynamicObject.java @@ -0,0 +1,6 @@ +package net.runelite.api; + +public interface DynamicObject extends Renderable +{ + int getAnimationID(); +} diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java index 93f4210530..6a24c10976 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/devtools/DevToolsOverlay.java @@ -42,6 +42,7 @@ import net.runelite.api.Actor; import net.runelite.api.Client; import net.runelite.api.Constants; import net.runelite.api.DecorativeObject; +import net.runelite.api.DynamicObject; import net.runelite.api.GameObject; import net.runelite.api.GraphicsObject; import net.runelite.api.GroundObject; @@ -54,6 +55,7 @@ import net.runelite.api.Perspective; import net.runelite.api.Player; import net.runelite.api.Point; import net.runelite.api.Projectile; +import net.runelite.api.Renderable; import net.runelite.api.Scene; import net.runelite.api.Tile; import net.runelite.api.WallObject; @@ -307,7 +309,11 @@ class DevToolsOverlay extends Overlay { if (player.getLocalLocation().distanceTo(gameObject.getLocalLocation()) <= MAX_DISTANCE) { - OverlayUtil.renderTileOverlay(graphics, gameObject, "ID: " + gameObject.getId(), GREEN); + Renderable renderable = gameObject.getRenderable(); + if (renderable instanceof DynamicObject) + { + OverlayUtil.renderTileOverlay(graphics, gameObject, "ID: " + gameObject.getId() + " Anim: " + ((DynamicObject) renderable).getAnimationID(), GREEN); + } } // Draw a polygon around the convex hull @@ -417,7 +423,7 @@ class DevToolsOverlay extends Overlay } int projectileId = projectile.getId(); - Actor projectileInteracting = null; + Actor projectileInteracting = projectile.getInteracting(); String infoString = ""; diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java index 18ad95fb67..5760e13157 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSDynamicObjectMixin.java @@ -27,11 +27,13 @@ package net.runelite.mixins; import net.runelite.api.mixins.Copy; import net.runelite.api.mixins.FieldHook; 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; import net.runelite.rs.api.RSClient; import net.runelite.rs.api.RSDynamicObject; +import net.runelite.rs.api.RSEntity; import net.runelite.rs.api.RSModel; @Mixin(RSDynamicObject.class) @@ -40,6 +42,9 @@ public abstract class RSDynamicObjectMixin implements RSDynamicObject @Shadow("client") private static RSClient client; + @Inject + public int animationID; + @Copy("getModel") public abstract RSModel rs$getModel(); @@ -78,4 +83,18 @@ public abstract class RSDynamicObjectMixin implements RSDynamicObject setAnimFrame(Integer.MIN_VALUE | objectFrameCycle << 16 | getAnimFrame()); } } + + @MethodHook(value = "", end = true) + @Inject + public void rl$init(int id, int type, int orientation, int plane, int x, int y, int animationID, boolean var8, RSEntity var9) + { + this.animationID = animationID; + } + + @Inject + @Override + public int getAnimationID() + { + return animationID; + } } diff --git a/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java b/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java index 44dd3cadf5..cdaa72277c 100644 --- a/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java +++ b/runescape-api/src/main/java/net/runelite/rs/api/RSDynamicObject.java @@ -1,9 +1,10 @@ package net.runelite.rs.api; +import net.runelite.api.DynamicObject; import net.runelite.api.Renderable; import net.runelite.mapping.Import; -public interface RSDynamicObject extends RSEntity, Renderable +public interface RSDynamicObject extends RSEntity, DynamicObject, Renderable { @Import("id") int getId(); diff --git a/runescape-client/src/main/java/DynamicObject.java b/runescape-client/src/main/java/DynamicObject.java index 891cc10b79..95d3a17dae 100644 --- a/runescape-client/src/main/java/DynamicObject.java +++ b/runescape-client/src/main/java/DynamicObject.java @@ -74,15 +74,15 @@ public class DynamicObject extends Entity { @ObfuscatedSignature( signature = "(IIIIIIIZLex;)V" ) - DynamicObject(int var1, int var2, int var3, int var4, int var5, int var6, int var7, boolean var8, Entity var9) { + DynamicObject(int var1, int var2, int var3, int var4, int var5, int var6, int animationID, boolean var8, Entity var9) { this.id = var1; this.type = var2; this.orientation = var3; this.plane = var4; this.x = var5; this.y = var6; - if(var7 != -1) { - this.sequenceDefinition = WorldMapAreaData.getSequenceDefinition(var7); + if(animationID != -1) { + this.sequenceDefinition = WorldMapAreaData.getSequenceDefinition(animationID); this.frame = 0; this.cycleStart = Client.cycle - 1; if(this.sequenceDefinition.__t == 0 && var9 != null && var9 instanceof DynamicObject) {