diff options
author | Trương Hoàng Long <longtruong2411@gmail.com> | 2022-10-09 19:43:43 +0200 |
---|---|---|
committer | Trương Hoàng Long <longtruong2411@gmail.com> | 2022-10-09 19:45:38 +0200 |
commit | d5715454feb746850c242421bfd3be1bc06cf0ca (patch) | |
tree | 4bcb9253a236dc73e14c6d81cda5f927d783b5d1 /src | |
parent | c15ac748152acf155da5f3294e6fda913e8984a9 (diff) | |
download | Skyblocker-d5715454feb746850c242421bfd3be1bc06cf0ca.tar.gz Skyblocker-d5715454feb746850c242421bfd3be1bc06cf0ca.tar.bz2 Skyblocker-d5715454feb746850c242421bfd3be1bc06cf0ca.zip |
Status Bar code cleanup
- Fix hp bar sometimes showing absorption incorrectly.
- Fix xp bar not filling all the way (fix #85)
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java | 2 | ||||
-rw-r--r-- | src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java | 31 |
2 files changed, 8 insertions, 25 deletions
diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java index 70385e01..dfaeebd0 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/FancyStatusBars.java @@ -56,7 +56,7 @@ public class FancyStatusBars extends DrawableHelper { int def = statusBarTracker.getDefense(); bars[2].fill[0] = fill(def, def + 100); bars[2].text = def; - bars[3].fill[0] = (int) (32 * player.experienceProgress); + bars[3].fill[0] = (int) (100 * player.experienceProgress); bars[3].text = player.experienceLevel; // Update positions of bars from config diff --git a/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java b/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java index 134ec1f9..96165ce8 100644 --- a/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java +++ b/src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java @@ -42,25 +42,13 @@ public class StatusBarTracker { private void updateHealth(Matcher m) { int value = parseInt(m, 1); int max = parseInt(m, 3); - int overflow = 0; - ClientPlayerEntity player = null; - try { - player = MinecraftClient.getInstance().player; + int overflow = Math.max(0, value - max); + if (MinecraftClient.getInstance() != null && MinecraftClient.getInstance().player != null) { + ClientPlayerEntity player = MinecraftClient.getInstance().player; + value = (int) (player.getHealth() * max / player.getMaxHealth()); + overflow = (int) (player.getAbsorptionAmount() * max / player.getMaxHealth()); } - // Is triggered by tests. Couldn't come up with a better solution. - catch (NullPointerException ignored) { - } - if (player != null) { - int hp = (int) (player.getHealth() * max / player.getMaxHealth()); - overflow = value - hp; - value = hp; - } else if (value > max) { - overflow = value - max; - value = max; - } - if (overflow > max) - overflow = max; - this.health = new Resource(value, max, overflow); + this.health = new Resource(Math.min(value, max), max, Math.min(overflow, max)); } private String reset(String str, Matcher m) { @@ -101,10 +89,5 @@ public class StatusBarTracker { return res.isEmpty() ? null : res; } - public record Resource( - int value, - int max, - int overflow - ) { - } + public record Resource(int value, int max, int overflow) {} } |