diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSModelMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSModelMixin.java index dfa641faec..9a6e50379f 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSModelMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSModelMixin.java @@ -192,24 +192,47 @@ public abstract class RSModelMixin implements RSModel int translateZ; if (type == 2) { - int deltaX = nextTranslateX - currentTranslateX & 0xFF; - int deltaY = nextTranslateY - currentTranslateY & 0xFF; - int deltaZ = nextTranslateZ - currentTranslateZ & 0xFF; - if (deltaX >= 128) + if (nextTranslateX != 0) { - deltaX -= 256; + int deltaX = nextTranslateX - currentTranslateX & 0xFF; + if (deltaX >= 128) + { + deltaX -= 256; + } + translateX = currentTranslateX + deltaX * interval / intervalCount & 0xFF; } - if (deltaY >= 128) + else { - deltaY -= 256; + translateX = currentTranslateX; } - if (deltaZ >= 128) + + if (nextTranslateY != 0) { - deltaZ -= 256; + int deltaY = nextTranslateY - currentTranslateY & 0xFF; + if (deltaY >= 128) + { + deltaY -= 256; + } + translateY = currentTranslateY + deltaY * interval / intervalCount & 0xFF; + } + else + { + translateY = currentTranslateY; + } + + if (nextTranslateZ != 0) + { + int deltaZ = nextTranslateZ - currentTranslateZ & 0xFF; + if (deltaZ >= 128) + { + deltaZ -= 256; + } + translateZ = currentTranslateZ + deltaZ * interval / intervalCount & 0xFF; + } + else + { + translateZ = currentTranslateZ; } - translateX = currentTranslateX + deltaX * interval / intervalCount & 0xFF; - translateY = currentTranslateY + deltaY * interval / intervalCount & 0xFF; - translateZ = currentTranslateZ + deltaZ * interval / intervalCount & 0xFF; } else if (type == 5) {