diff --git a/src/main/java/net/torocraft/torohealth/bars/BarState.java b/src/main/java/net/torocraft/torohealth/bars/BarState.java index d706697c..3d301b11 100644 --- a/src/main/java/net/torocraft/torohealth/bars/BarState.java +++ b/src/main/java/net/torocraft/torohealth/bars/BarState.java @@ -10,7 +10,7 @@ public class BarState { public float health; public float previousHealth; - public float previousHealthDisplay; + public float previousHealthDisplay = 0; public float previousHealthDelay; public int lastDmg; public int lastDmgCumulative; @@ -61,25 +61,24 @@ private void handleHealthChange() { lastDmgCumulative += lastDmg; lastDmgDelay = HEALTH_INDICATOR_DELAY * 2; + previousHealthDisplay = Math.max(lastHealth, previousHealthDisplay); + if (previousHealthDisplay <= lastHealth) { + previousHealthDelay = HEALTH_INDICATOR_DELAY; + } lastHealth = health; if (ToroHealth.CONFIG.particle.show) { BarStates.PARTICLES.add(new BarParticle(entity, lastDmg)); } + updateAnimationSpeed(); + } + + private void updateAnimationSpeed() { + animationSpeed = (previousHealthDisplay - health) / 10f; } private void updateAnimations() { - if (previousHealthDelay > 0) { - float diff = previousHealthDisplay - health; - if (diff > 0) { - animationSpeed = diff / 10f; + if (previousHealthDelay <= 0) { + previousHealthDisplay = Math.max(previousHealthDisplay - animationSpeed, health); } - } else if (previousHealthDelay < 1 && previousHealthDisplay > health) { - previousHealthDisplay -= animationSpeed; - } else { - previousHealthDisplay = health; - previousHealth = health; - previousHealthDelay = HEALTH_INDICATOR_DELAY; - } } - }