aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorTrương Hoàng Long <longtruong2411@gmail.com>2022-10-09 19:43:43 +0200
committerTrương Hoàng Long <longtruong2411@gmail.com>2022-10-09 19:45:38 +0200
commitd5715454feb746850c242421bfd3be1bc06cf0ca (patch)
tree4bcb9253a236dc73e14c6d81cda5f927d783b5d1 /src
parentc15ac748152acf155da5f3294e6fda913e8984a9 (diff)
downloadSkyblocker-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.java2
-rw-r--r--src/main/java/me/xmrvizzy/skyblocker/skyblock/StatusBarTracker.java31
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) {}
}