From 91369c41f037b15b1ba50d9e838dd2654b40a799 Mon Sep 17 00:00:00 2001 From: Jordan Atwood Date: Fri, 14 Sep 2018 14:36:10 -0700 Subject: [PATCH] opponent info plugin: Fix possible onGameTick NPE The plugin is initialized with `lastTime` as null, meaning that if `onGameTick` is called before `onInteractingChanged`, you can encounter a case where after starting the client or plugin, `lastTime` has not yet been set while `client.getLocalPlayer().getInteracting` is null (because `onGameTick` gets sequenced before `onInteractingChanged` per tick), causing an NPE when trying to compare a null Duration. Fixes runelite/runelite#5451 --- .../client/plugins/opponentinfo/OpponentInfoPlugin.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java index 4ca4eaa933..a8e5694a6d 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/opponentinfo/OpponentInfoPlugin.java @@ -154,7 +154,9 @@ public class OpponentInfoPlugin extends Plugin @Subscribe public void onGameTick(GameTick gameTick) { - if (lastOpponent != null && client.getLocalPlayer().getInteracting() == null) + if (lastOpponent != null + && lastTime != null + && client.getLocalPlayer().getInteracting() == null) { if (Duration.between(lastTime, Instant.now()).compareTo(WAIT) > 0) {