aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/me/xmrvizzy/skyblocker
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/me/xmrvizzy/skyblocker')
-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) {}
}