Buggy code:
public class MAListener implements ArenaListener { private MobArena plugin ; private Arena arena ; public MAListener ( Arena arena , MobArena plugin ) { } public void onBlockBreak ( BlockBreakEvent event ) { } public void onBlockBurn ( BlockBurnEvent event ) { } private boolean onBlockDestroy ( BlockEvent event ) { } public void onBlockPlace ( BlockPlaceEvent event ) { } public void onBlockIgnite ( BlockIgniteEvent event ) { } public void onSignChange ( SignChangeEvent event ) { } public void onCreatureSpawn ( CreatureSpawnEvent event ) { } public void onEntityExplode ( EntityExplodeEvent event ) { } public void onEntityDeath ( EntityDeathEvent event ) { } private void onPlayerDeath ( EntityDeathEvent event , Player player ) { } private void onMonsterDeath ( EntityDeathEvent event ) { } public void onEntityDamage ( EntityDamageEvent event ) { } private void onPlayerDamage ( EntityDamageEvent event , Player player , Entity damager ) { } private void onPetDamage ( EntityDamageEvent event , Wolf pet , Entity damager ) { } private void onMonsterDamage ( EntityDamageEvent event , Entity monster , Entity damager ) { if ( damager instanceof Player ) { Player p = ( ( Player ) ( damager ) ) ; if ( ! ( arena . inArena ( p ) ) ) { event . setCancelled ( true ) ; return ; } arena . arenaPlayerMap . get ( p ) . getStats ( ) . dmgDone += event . getDamage ( ) ; ( arena . arenaPlayerMap . get ( p ) . getStats ( ) . hits ) ++ ; } else if ( ( damager instanceof Wolf ) && ( arena . pets . contains ( damager ) ) ) { event . setDamage ( 1 ) ; arena . arenaPlayerMap . get ( ( ( Player ) ( ( ( Wolf ) ( damager ) ) . getOwner ( ) ) ) ) . getStats ( ) . dmgDone += event . getDamage ( ) ; } else if ( damager instanceof LivingEntity ) { if ( ! ( arena . monsterInfight ) ) event . setCancelled ( true ) ; } if ( ( ( arena . bossWave ) != null ) && ( monster . equals ( arena . bossWave . getEntity ( ) ) ) ) { if ( ( event . getCause ( ) ) == ( DamageCause . LIGHTNING ) ) { event . setCancelled ( true ) ; return ; } arena . bossWave . subtractHealth ( event . getDamage ( ) ) ; <START_BUG> arena . bossWave . getEntity ( ) . setHealth ( 100 ) ; <END_BUG> event . setDamage ( 1 ) ; if ( ( arena . bossWave . getHealth ( ) ) <= 0 ) { arena . bossWave . clear ( ) ; arena . bossWave = null ; } else if ( ( ( arena . bossWave . getHealth ( ) ) <= 100 ) && ( ! ( arena . bossWave . isLowHealthAnnounced ( ) ) ) ) { MAUtils . tellAll ( arena , WAVE_BOSS_LOW_HEALTH ) ; arena . bossWave . setLowHealthAnnounced ( true ) ; } } } public void onEntityCombust ( EntityCombustEvent event ) { } public void onEntityTarget ( EntityTargetEvent event ) { } public void onEndermanPickup ( EndermanPickupEvent event ) { } public void onEndermanPlace ( EndermanPlaceEvent event ) { } public void onEntityRegainHealth ( EntityRegainHealthEvent event ) { } public void onPlayerAnimation ( PlayerAnimationEvent event ) { } public void onPlayerDropItem ( PlayerDropItemEvent event ) { } public void onPlayerBucketEmpty ( PlayerBucketEmptyEvent event ) { } public void onPlayerInteract ( PlayerInteractEvent event ) { } private void handleReadyBlock ( Player p ) { } private void handleSign ( Sign sign , Player p ) { } private void delayAssignClass ( final Player p , final String className ) { } public void onPlayerQuit ( PlayerQuitEvent event ) { } public void onPlayerKick ( PlayerKickEvent event ) { } public void onPlayerTeleport ( PlayerTeleportEvent event ) { } private boolean isWarp ( Location l ) { } public void onPlayerCommandPreprocess ( PlayerCommandPreprocessEvent event ) { } }

Fix:
arena . bossWave . getEntity ( ) . setHealth ( arena . bossWave . getEntity ( ) . getMaxHealth ( ) ) ;