diff --git a/changelog.md b/changelog.md index 7642acc..b0d3f95 100644 --- a/changelog.md +++ b/changelog.md @@ -11,6 +11,7 @@ These changes will (most likely) be included in the next version. ## [Unreleased] +- MobArena no longer crashes when players try to join with items that lower their max health below the default of 20. Players with lower max health will notice missing health in the lobby, but it will quickly regenerate to full. - Food levels no longer deplete for players in the lobby and spectator area. ## [0.103.2] - 2019-04-23 diff --git a/src/main/java/com/garbagemule/MobArena/ArenaImpl.java b/src/main/java/com/garbagemule/MobArena/ArenaImpl.java index cc00480..ce53d7b 100644 --- a/src/main/java/com/garbagemule/MobArena/ArenaImpl.java +++ b/src/main/java/com/garbagemule/MobArena/ArenaImpl.java @@ -835,7 +835,7 @@ public class ArenaImpl implements Arena return; } - double full = p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getBaseValue(); + double full = p.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); p.setHealth(full); plugin.getServer().getScheduler() diff --git a/src/main/java/com/garbagemule/MobArena/steps/SetHealth.java b/src/main/java/com/garbagemule/MobArena/steps/SetHealth.java index 48536f8..e9bcd43 100644 --- a/src/main/java/com/garbagemule/MobArena/steps/SetHealth.java +++ b/src/main/java/com/garbagemule/MobArena/steps/SetHealth.java @@ -24,13 +24,16 @@ class SetHealth extends PlayerStep { player.setRemainingAir(NORMAL_AIR); player.setFireTicks(NORMAL_FIRE); - double full = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getBaseValue(); + double full = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); player.setHealth(full); } @Override public void undo() { - player.setHealth(health); + double max = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue(); + double capped = Math.min(health, max); + player.setHealth(capped); + player.setFireTicks(fire); player.setRemainingAir(air); }