From 9313747479f6330566248f2b938ad5ca30159e82 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Thu, 22 Feb 2018 09:38:42 +0100 Subject: [PATCH] Prevent throwing duplacite events for GameObject Store last gameObject as static variable in tile mixin and in case new event is exactly same as last one in game object spawned, do not proceed. Signed-off-by: Tomas Slusny --- .../java/net/runelite/mixins/RSTileMixin.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java index a1a76aff89..9ee17a68ee 100644 --- a/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java +++ b/runelite-mixins/src/main/java/net/runelite/mixins/RSTileMixin.java @@ -58,6 +58,9 @@ public abstract class RSTileMixin implements RSTile @Shadow("clientInstance") private static RSClient client; + @Inject + private static GameObject lastGameObject; + @Inject private WallObject previousWallObject; @@ -208,12 +211,25 @@ public abstract class RSTileMixin implements RSTile // Previous game object GameObject previous = previousGameObjects[idx]; + // GameObject that was changed. RSGameObject current = (RSGameObject) getGameObjects()[idx]; + // Last game object + GameObject last = lastGameObject; + + // Update last game object + lastGameObject = current; + // Update previous object to current previousGameObjects[idx] = current; + // Duplicate event, return + if (current != null && current.equals(last)) + { + return; + } + // Characters seem to generate a constant stream of new GameObjects if (current == null || !(current.getRenderable() instanceof Actor)) {