From 2154e5e8b03dcec19852186ff5a2814e2997394d Mon Sep 17 00:00:00 2001 From: Tomas Slusny Date: Mon, 26 Nov 2018 13:15:43 +0000 Subject: [PATCH] Properly parse stat change value in status bars This prevents all kinds of unsupported formats and number format exceptions. Closes #6589 Signed-off-by: Tomas Slusny --- .../plugins/statusbars/StatusBarsOverlay.java | 25 ++++++++++++++----- 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java index db6e4b1b49..571dad0632 100644 --- a/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java +++ b/runelite-client/src/main/java/net/runelite/client/plugins/statusbars/StatusBarsOverlay.java @@ -24,13 +24,14 @@ */ package net.runelite.client.plugins.statusbars; +import com.google.common.base.Strings; +import com.google.common.primitives.Ints; import java.awt.Color; import java.awt.Dimension; import java.awt.Graphics2D; import java.awt.Image; import javax.inject.Inject; import net.runelite.api.Client; -import net.runelite.api.ItemID; import net.runelite.api.MenuEntry; import net.runelite.api.Point; import net.runelite.api.Skill; @@ -182,22 +183,34 @@ class StatusBarsOverlay extends Overlay int prayerHealValue = 0; int foodHealValue = 0; - if (change != null & - entry.getParam1() == WidgetInfo.INVENTORY.getId() && - entry.getIdentifier() != ItemID.SPICY_STEW) + if (change != null & entry.getParam1() == WidgetInfo.INVENTORY.getId()) { final StatsChanges statsChanges = change.calculate(client); for (final StatChange c : statsChanges.getStatChanges()) { + final String strVar = c.getTheoretical(); + + if (Strings.isNullOrEmpty(strVar)) + { + continue; + } + + final Integer value = Ints.tryParse(strVar.startsWith("+") ? strVar.substring(1) : strVar); + + if (value == null) + { + continue; + } + if (c.getStat().getName().equals(Skill.HITPOINTS.getName())) { - foodHealValue = Integer.parseInt(c.getTheoretical()); + foodHealValue = value; } if (c.getStat().getName().equals(Skill.PRAYER.getName())) { - prayerHealValue = Integer.parseInt(c.getTheoretical()); + prayerHealValue = value; } if (foodHealValue != 0 && prayerHealValue != 0)