From 6515174e18f980243eb5a261f51f1cd2e3e62cb8 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Mon, 29 Oct 2018 10:11:36 +0100 Subject: [PATCH 1/2] Properly update last action times in Idle Notifier - Properly update last action times in Idle Notifier right after the action is changed/updated. - Do not reset lastCombatCountdown in resetTimers() Supersedes/closes #6241 Extracted from #5369 Signed-off-by: Tomas Slusny --- .../plugins/idlenotifier/IdleNotifierPlugin.java | 12 +++++++++--- .../plugins/idlenotifier/IdleNotifierPluginTest.java | 1 - 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java index e3222dc1e0..2c0dd0edfc 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java @@ -214,19 +214,23 @@ public class IdleNotifierPlugin extends Plugin case SAND_COLLECTION: resetTimers(); lastAnimation = animation; + lastAnimating = Instant.now(); break; case MAGIC_LUNAR_SHARED: if (graphic == GraphicID.BAKE_PIE) { resetTimers(); lastAnimation = animation; + lastAnimating = Instant.now(); break; } case IDLE: + lastAnimating = Instant.now(); break; default: // On unknown animation simply assume the animation is invalid and dont throw notification lastAnimation = IDLE; + lastAnimating = null; } } @@ -246,6 +250,10 @@ public class IdleNotifierPlugin extends Plugin { lastInteract = null; } + else + { + lastInteracting = Instant.now(); + } final boolean isNpc = target instanceof NPC; @@ -264,6 +272,7 @@ public class IdleNotifierPlugin extends Plugin // Player is most likely in combat with attack-able NPC resetTimers(); lastInteract = target; + lastInteracting = Instant.now(); } } @@ -553,9 +562,6 @@ public class IdleNotifierPlugin extends Plugin { final Player local = client.getLocalPlayer(); - // Reset combat idle timer - lastCombatCountdown = 0; - // Reset animation idle timer lastAnimating = null; if (client.getGameState() == GameState.LOGIN_SCREEN || local == null || local.getAnimation() != lastAnimation) diff --git a/runelite-client/src/test/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPluginTest.java b/runelite-client/src/test/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPluginTest.java index ffeac2c653..3fed66da12 100644 --- a/runelite-client/src/test/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPluginTest.java +++ b/runelite-client/src/test/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPluginTest.java @@ -155,7 +155,6 @@ public class IdleNotifierPluginTest AnimationChanged animationChanged = new AnimationChanged(); animationChanged.setActor(player); plugin.onAnimationChanged(animationChanged); - plugin.onInteractingChanged(new InteractingChanged(player, monster)); plugin.onGameTick(new GameTick()); // Logout From 1842612b28aebf2bf8efa90cfeb07d2192eb39e0 Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Mon, 29 Oct 2018 10:36:48 +0100 Subject: [PATCH 2/2] Add support for lastCombatCountdown to combat idle In case user has combat idle set to 0, this ensures that the idle notif will not fire right away. Signed-off-by: Tomas Slusny --- .../client/plugins/idlenotifier/IdleNotifierPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java index 2c0dd0edfc..59b5a09565 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/idlenotifier/IdleNotifierPlugin.java @@ -456,7 +456,9 @@ public class IdleNotifierPlugin extends Plugin if (interact == null) { - if (lastInteracting != null && Instant.now().compareTo(lastInteracting.plus(waitDuration)) >= 0) + if (lastInteracting != null + && Instant.now().compareTo(lastInteracting.plus(waitDuration)) >= 0 + && lastCombatCountdown == 0) { lastInteract = null; lastInteracting = null;