mirror of
				https://github.com/mcMMO-Dev/mcMMO.git
				synced 2025-11-04 11:03:43 +01:00 
			
		
		
		
	Move healthbar stuff to it own class.
This commit is contained in:
		@@ -12,8 +12,6 @@ import org.bukkit.entity.Player;
 | 
				
			|||||||
import org.bukkit.event.EventHandler;
 | 
					import org.bukkit.event.EventHandler;
 | 
				
			||||||
import org.bukkit.event.EventPriority;
 | 
					import org.bukkit.event.EventPriority;
 | 
				
			||||||
import org.bukkit.event.Listener;
 | 
					import org.bukkit.event.Listener;
 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
					 | 
				
			||||||
import org.bukkit.event.entity.EntityDamageEvent;
 | 
					 | 
				
			||||||
import org.bukkit.event.entity.PlayerDeathEvent;
 | 
					import org.bukkit.event.entity.PlayerDeathEvent;
 | 
				
			||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
 | 
					import org.bukkit.event.player.AsyncPlayerChatEvent;
 | 
				
			||||||
import org.bukkit.event.player.PlayerChangedWorldEvent;
 | 
					import org.bukkit.event.player.PlayerChangedWorldEvent;
 | 
				
			||||||
@@ -50,9 +48,9 @@ import com.gmail.nossr50.util.ChimaeraWing;
 | 
				
			|||||||
import com.gmail.nossr50.util.HardcoreManager;
 | 
					import com.gmail.nossr50.util.HardcoreManager;
 | 
				
			||||||
import com.gmail.nossr50.util.ItemUtils;
 | 
					import com.gmail.nossr50.util.ItemUtils;
 | 
				
			||||||
import com.gmail.nossr50.util.Misc;
 | 
					import com.gmail.nossr50.util.Misc;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.util.MobHealthbarUtils;
 | 
				
			||||||
import com.gmail.nossr50.util.Motd;
 | 
					import com.gmail.nossr50.util.Motd;
 | 
				
			||||||
import com.gmail.nossr50.util.Permissions;
 | 
					import com.gmail.nossr50.util.Permissions;
 | 
				
			||||||
import com.gmail.nossr50.util.StringUtils;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.util.player.UserManager;
 | 
					import com.gmail.nossr50.util.player.UserManager;
 | 
				
			||||||
import com.gmail.nossr50.util.skills.SkillUtils;
 | 
					import com.gmail.nossr50.util.skills.SkillUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -72,17 +70,7 @@ public class PlayerListener implements Listener {
 | 
				
			|||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        EntityDamageEvent lastDamageCause = event.getEntity().getLastDamageCause();
 | 
					        event.setDeathMessage(MobHealthbarUtils.fixDeathMessage(deathMessage, event.getEntity()));
 | 
				
			||||||
        String replaceString;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        if (lastDamageCause instanceof EntityDamageByEntityEvent) {
 | 
					 | 
				
			||||||
            replaceString = StringUtils.getPrettyEntityTypeString(((EntityDamageByEntityEvent) lastDamageCause).getDamager().getType());
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
        else {
 | 
					 | 
				
			||||||
            replaceString = "a mob";
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        event.setDeathMessage(deathMessage.replaceAll("(?:\u00A7(?:[0-9A-FK-ORa-fk-or]){1}(?:[\u2764\u25A0]{1,10})){1,2}", replaceString));
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
@@ -91,7 +79,7 @@ public class PlayerListener implements Listener {
 | 
				
			|||||||
     * @param event The event to watch
 | 
					     * @param event The event to watch
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
 | 
					    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
 | 
				
			||||||
    public void onPlayerDeath(PlayerDeathEvent event) {
 | 
					    public void onPlayerDeathMonitor(PlayerDeathEvent event) {
 | 
				
			||||||
        if (!Config.getInstance().getHardcoreEnabled()) {
 | 
					        if (!Config.getInstance().getHardcoreEnabled()) {
 | 
				
			||||||
            return;
 | 
					            return;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										144
									
								
								src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										144
									
								
								src/main/java/com/gmail/nossr50/util/MobHealthbarUtils.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,144 @@
 | 
				
			|||||||
 | 
					package com.gmail.nossr50.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import org.bukkit.ChatColor;
 | 
				
			||||||
 | 
					import org.bukkit.entity.LivingEntity;
 | 
				
			||||||
 | 
					import org.bukkit.entity.Player;
 | 
				
			||||||
 | 
					import org.bukkit.event.entity.EntityDamageByEntityEvent;
 | 
				
			||||||
 | 
					import org.bukkit.event.entity.EntityDamageEvent;
 | 
				
			||||||
 | 
					import org.bukkit.metadata.FixedMetadataValue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.config.Config;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.datatypes.MobHealthbarType;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.datatypes.player.PlayerProfile;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.runnables.MobHealthDisplayUpdaterTask;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.util.player.UserManager;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public final class MobHealthbarUtils {
 | 
				
			||||||
 | 
					    private MobHealthbarUtils() {};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Fix issues with death messages caused by the mob healthbars.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param deathMessage The original death message
 | 
				
			||||||
 | 
					     * @param player The player who died
 | 
				
			||||||
 | 
					     * @return the fixed death message
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static String fixDeathMessage(String deathMessage, Player player) {
 | 
				
			||||||
 | 
					        EntityDamageEvent lastDamageCause = player.getLastDamageCause();
 | 
				
			||||||
 | 
					        String replaceString = lastDamageCause instanceof EntityDamageByEntityEvent ? StringUtils.getPrettyEntityTypeString(((EntityDamageByEntityEvent) lastDamageCause).getDamager().getType()) : "a mob";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return deathMessage.replaceAll("(?:\u00A7(?:[0-9A-FK-ORa-fk-or]){1}(?:[\u2764\u25A0]{1,10})){1,2}", replaceString);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /**
 | 
				
			||||||
 | 
					     * Handle the creation of mob healthbars.
 | 
				
			||||||
 | 
					     *
 | 
				
			||||||
 | 
					     * @param profile The 
 | 
				
			||||||
 | 
					     * @param target
 | 
				
			||||||
 | 
					     * @param damage
 | 
				
			||||||
 | 
					     */
 | 
				
			||||||
 | 
					    public static void handleMobHealthbars(Player player, LivingEntity target, int damage) {
 | 
				
			||||||
 | 
					        if (!Permissions.mobHealthDisplay(player)) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        PlayerProfile profile = UserManager.getPlayer(player).getProfile();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (profile.getMobHealthbarType() == MobHealthbarType.DISABLED) {
 | 
				
			||||||
 | 
					            return;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String oldName = target.getCustomName();
 | 
				
			||||||
 | 
					        boolean oldNameVisible = target.isCustomNameVisible();
 | 
				
			||||||
 | 
					        String newName = createHealthDisplay(profile, target, damage);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        target.setCustomName(newName);
 | 
				
			||||||
 | 
					        target.setCustomNameVisible(true);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int displayTime = Config.getInstance().getMobHealthbarTime();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if (displayTime != -1) {
 | 
				
			||||||
 | 
					            if (oldName == null) {
 | 
				
			||||||
 | 
					                oldName = "";
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            if (updateName) {
 | 
				
			||||||
 | 
					                target.setMetadata(mcMMO.customNameKey, new FixedMetadataValue(mcMMO.p, oldName));
 | 
				
			||||||
 | 
					                target.setMetadata(mcMMO.customVisibleKey, new FixedMetadataValue(mcMMO.p, oldNameVisible));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            else if (!target.hasMetadata(mcMMO.customNameKey)) {
 | 
				
			||||||
 | 
					                target.setMetadata(mcMMO.customNameKey, new FixedMetadataValue(mcMMO.p, ""));
 | 
				
			||||||
 | 
					                target.setMetadata(mcMMO.customVisibleKey, new FixedMetadataValue(mcMMO.p, false));
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            new MobHealthDisplayUpdaterTask(target).runTaskLater(mcMMO.p, displayTime * 20); // Clear health display after 3 seconds
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static String createHealthDisplay(PlayerProfile profile, LivingEntity entity, int damage) {
 | 
				
			||||||
 | 
					        int maxHealth = entity.getMaxHealth();
 | 
				
			||||||
 | 
					        int currentHealth = Math.max(entity.getHealth() - damage, 0);
 | 
				
			||||||
 | 
					        double healthPercentage = (currentHealth / (double) maxHealth) * 100.0D;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int fullDisplay = 0;
 | 
				
			||||||
 | 
					        ChatColor color = ChatColor.BLACK;
 | 
				
			||||||
 | 
					        String symbol = "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        switch (profile.getMobHealthbarType()) {
 | 
				
			||||||
 | 
					            case HEARTS:
 | 
				
			||||||
 | 
					                fullDisplay = Math.min(maxHealth / 2, 10);
 | 
				
			||||||
 | 
					                color = ChatColor.DARK_RED;
 | 
				
			||||||
 | 
					                symbol = "❤";
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            case BAR:
 | 
				
			||||||
 | 
					                fullDisplay = 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                if (healthPercentage >= 85) {
 | 
				
			||||||
 | 
					                    color = ChatColor.DARK_GREEN;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else if (healthPercentage >= 70) {
 | 
				
			||||||
 | 
					                    color = ChatColor.GREEN;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else if (healthPercentage >= 55) {
 | 
				
			||||||
 | 
					                    color = ChatColor.GOLD;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else if (healthPercentage >= 40) {
 | 
				
			||||||
 | 
					                    color = ChatColor.YELLOW;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else if (healthPercentage >= 25) {
 | 
				
			||||||
 | 
					                    color = ChatColor.RED;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                else if (healthPercentage >= 0) {
 | 
				
			||||||
 | 
					                    color = ChatColor.DARK_RED;
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                symbol = "■";
 | 
				
			||||||
 | 
					                break;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            default:
 | 
				
			||||||
 | 
					                return null;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        int coloredDisplay = (int) (fullDisplay * (healthPercentage / 100.0D));
 | 
				
			||||||
 | 
					        int grayDisplay = fullDisplay - coloredDisplay;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        String healthbar = color + "";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (int i = 0; i < coloredDisplay; i++) {
 | 
				
			||||||
 | 
					            healthbar += symbol;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        healthbar += ChatColor.GRAY;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (int i = 0; i < grayDisplay; i++) {
 | 
				
			||||||
 | 
					            healthbar += symbol;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return healthbar;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -1,6 +1,5 @@
 | 
				
			|||||||
package com.gmail.nossr50.util.skills;
 | 
					package com.gmail.nossr50.util.skills;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import org.bukkit.ChatColor;
 | 
					 | 
				
			||||||
import org.bukkit.Material;
 | 
					import org.bukkit.Material;
 | 
				
			||||||
import org.bukkit.entity.AnimalTamer;
 | 
					import org.bukkit.entity.AnimalTamer;
 | 
				
			||||||
import org.bukkit.entity.Animals;
 | 
					import org.bukkit.entity.Animals;
 | 
				
			||||||
@@ -18,19 +17,15 @@ import org.bukkit.event.entity.EntityDamageEvent;
 | 
				
			|||||||
import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 | 
					import org.bukkit.event.entity.EntityDamageEvent.DamageCause;
 | 
				
			||||||
import org.bukkit.event.player.PlayerAnimationEvent;
 | 
					import org.bukkit.event.player.PlayerAnimationEvent;
 | 
				
			||||||
import org.bukkit.inventory.ItemStack;
 | 
					import org.bukkit.inventory.ItemStack;
 | 
				
			||||||
import org.bukkit.metadata.FixedMetadataValue;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
import com.gmail.nossr50.mcMMO;
 | 
					import com.gmail.nossr50.mcMMO;
 | 
				
			||||||
import com.gmail.nossr50.config.Config;
 | 
					import com.gmail.nossr50.config.Config;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.MobHealthbarType;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 | 
					import com.gmail.nossr50.datatypes.player.McMMOPlayer;
 | 
				
			||||||
import com.gmail.nossr50.datatypes.player.PlayerProfile;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.datatypes.skills.SkillType;
 | 
					import com.gmail.nossr50.datatypes.skills.SkillType;
 | 
				
			||||||
import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
 | 
					import com.gmail.nossr50.events.fake.FakeEntityDamageByEntityEvent;
 | 
				
			||||||
import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
 | 
					import com.gmail.nossr50.events.fake.FakeEntityDamageEvent;
 | 
				
			||||||
import com.gmail.nossr50.locale.LocaleLoader;
 | 
					import com.gmail.nossr50.locale.LocaleLoader;
 | 
				
			||||||
import com.gmail.nossr50.party.PartyManager;
 | 
					import com.gmail.nossr50.party.PartyManager;
 | 
				
			||||||
import com.gmail.nossr50.runnables.MobHealthDisplayUpdaterTask;
 | 
					 | 
				
			||||||
import com.gmail.nossr50.runnables.skills.AwardCombatXpTask;
 | 
					import com.gmail.nossr50.runnables.skills.AwardCombatXpTask;
 | 
				
			||||||
import com.gmail.nossr50.runnables.skills.BleedTimerTask;
 | 
					import com.gmail.nossr50.runnables.skills.BleedTimerTask;
 | 
				
			||||||
import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
 | 
					import com.gmail.nossr50.skills.acrobatics.AcrobaticsManager;
 | 
				
			||||||
@@ -43,6 +38,7 @@ import com.gmail.nossr50.skills.taming.TamingManager;
 | 
				
			|||||||
import com.gmail.nossr50.skills.unarmed.UnarmedManager;
 | 
					import com.gmail.nossr50.skills.unarmed.UnarmedManager;
 | 
				
			||||||
import com.gmail.nossr50.util.ItemUtils;
 | 
					import com.gmail.nossr50.util.ItemUtils;
 | 
				
			||||||
import com.gmail.nossr50.util.Misc;
 | 
					import com.gmail.nossr50.util.Misc;
 | 
				
			||||||
 | 
					import com.gmail.nossr50.util.MobHealthbarUtils;
 | 
				
			||||||
import com.gmail.nossr50.util.ModUtils;
 | 
					import com.gmail.nossr50.util.ModUtils;
 | 
				
			||||||
import com.gmail.nossr50.util.Permissions;
 | 
					import com.gmail.nossr50.util.Permissions;
 | 
				
			||||||
import com.gmail.nossr50.util.player.UserManager;
 | 
					import com.gmail.nossr50.util.player.UserManager;
 | 
				
			||||||
@@ -296,37 +292,7 @@ public final class CombatUtils {
 | 
				
			|||||||
                return;
 | 
					                return;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            PlayerProfile profile = UserManager.getPlayer(player).getProfile();
 | 
					            MobHealthbarUtils.handleMobHealthbars(player, target, event.getDamage());
 | 
				
			||||||
 | 
					 | 
				
			||||||
            if (Permissions.mobHealthDisplay(player) && profile.getMobHealthbarType() != MobHealthbarType.DISABLED) {
 | 
					 | 
				
			||||||
                String oldName = target.getCustomName();
 | 
					 | 
				
			||||||
                boolean oldNameVisible = target.isCustomNameVisible();
 | 
					 | 
				
			||||||
                String newName = createHealthDisplay(profile, target, event.getDamage());
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                target.setCustomName(newName);
 | 
					 | 
				
			||||||
                target.setCustomNameVisible(true);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                int displayTime = Config.getInstance().getMobHealthbarTime();
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (displayTime != -1) {
 | 
					 | 
				
			||||||
                    if (oldName == null) {
 | 
					 | 
				
			||||||
                        oldName = "";
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    boolean updateName = !ChatColor.stripColor(oldName).equalsIgnoreCase(ChatColor.stripColor(newName));
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    if (updateName) {
 | 
					 | 
				
			||||||
                        target.setMetadata(mcMMO.customNameKey, new FixedMetadataValue(mcMMO.p, oldName));
 | 
					 | 
				
			||||||
                        target.setMetadata(mcMMO.customVisibleKey, new FixedMetadataValue(mcMMO.p, oldNameVisible));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
                    else if (!target.hasMetadata(mcMMO.customNameKey)) {
 | 
					 | 
				
			||||||
                        target.setMetadata(mcMMO.customNameKey, new FixedMetadataValue(mcMMO.p, ""));
 | 
					 | 
				
			||||||
                        target.setMetadata(mcMMO.customVisibleKey, new FixedMetadataValue(mcMMO.p, false));
 | 
					 | 
				
			||||||
                    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                    new MobHealthDisplayUpdaterTask(target).runTaskLater(mcMMO.p, displayTime * 20); // Clear health display after 3 seconds
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -627,67 +593,4 @@ public final class CombatUtils {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        return process;
 | 
					        return process;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					 | 
				
			||||||
    private static String createHealthDisplay(PlayerProfile profile, LivingEntity entity, int damage) {
 | 
					 | 
				
			||||||
        int maxHealth = entity.getMaxHealth();
 | 
					 | 
				
			||||||
        int currentHealth = Math.max(entity.getHealth() - damage, 0);
 | 
					 | 
				
			||||||
        double healthPercentage = (currentHealth / (double) maxHealth) * 100.0D;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int fullDisplay = 0;
 | 
					 | 
				
			||||||
        ChatColor color = ChatColor.BLACK;
 | 
					 | 
				
			||||||
        String symbol = "";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        switch (profile.getMobHealthbarType()) {
 | 
					 | 
				
			||||||
            case HEARTS:
 | 
					 | 
				
			||||||
                fullDisplay = Math.min(maxHealth / 2, 10);
 | 
					 | 
				
			||||||
                color = ChatColor.DARK_RED;
 | 
					 | 
				
			||||||
                symbol = "❤";
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            case BAR:
 | 
					 | 
				
			||||||
                fullDisplay = 10;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                if (healthPercentage >= 85) {
 | 
					 | 
				
			||||||
                    color = ChatColor.DARK_GREEN;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else if (healthPercentage >= 70) {
 | 
					 | 
				
			||||||
                    color = ChatColor.GREEN;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else if (healthPercentage >= 55) {
 | 
					 | 
				
			||||||
                    color = ChatColor.GOLD;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else if (healthPercentage >= 40) {
 | 
					 | 
				
			||||||
                    color = ChatColor.YELLOW;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else if (healthPercentage >= 25) {
 | 
					 | 
				
			||||||
                    color = ChatColor.RED;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
                else if (healthPercentage >= 0) {
 | 
					 | 
				
			||||||
                    color = ChatColor.DARK_RED;
 | 
					 | 
				
			||||||
                }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
                symbol = "■";
 | 
					 | 
				
			||||||
                break;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
            default:
 | 
					 | 
				
			||||||
                return null;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        int coloredDisplay = (int) (fullDisplay * (healthPercentage / 100.0D));
 | 
					 | 
				
			||||||
        int grayDisplay = fullDisplay - coloredDisplay;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        String healthbar = color + "";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (int i = 0; i < coloredDisplay; i++) {
 | 
					 | 
				
			||||||
            healthbar += symbol;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        healthbar += ChatColor.GRAY;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        for (int i = 0; i < grayDisplay; i++) {
 | 
					 | 
				
			||||||
            healthbar += symbol;
 | 
					 | 
				
			||||||
        }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        return healthbar;
 | 
					 | 
				
			||||||
    }
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user