public static HashMap<Entity, Integer> IdHashMap = new HashMap<>();
public String name;
private int task;
private int task2;
private Entity entity;
@SuppressWarnings("deprecation")
@EventHandler
public void onDamage(EntityDamageByEntityEvent event) {
this.entity = event.getEntity();
if(IdHashMap.get(entity) == event.getEntity().getEntityId()) {
return;
}else {
IdHashMap.put(entity, event.getEntity().getEntityId());
}
if(event.getEntity() instanceof Monster||event.getEntity() instanceof Player||event.getEntity() instanceof Animals) {
if(name!=null) {
if(name.equals(event.getEntity().getName())) return;
}
Player player = (Player) event.getDamager();
Entity entity = event.getEntity();
name = entity.getName();
if(entity instanceof Monster|| entity instanceof Player|| entity instanceof Animals) {
Location loc = new Location(entity.getLocation().getWorld(), entity.getLocation().getX(), entity.getLocation().getY(), entity.getLocation().getZ());
double HP = (int) ((Monster) event.getEntity()).getHealth();
double MAXHP = (int) ((Monster) event.getEntity()).getMaxHealth();
if(event.getDamager()==player) {
BossBar bossBar = Bukkit.getServer().createBossBar(entity.getName() + (ChatColor.RED + "" + HP + "/" + MAXHP), BarColor.RED, BarStyle.SOLID);
bossBar.addPlayer(player);
task = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), () ->{
task2 = Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getInstance(), ()->{
if(entity.getLocation()==loc) {
Bukkit.getScheduler().cancelTask(task);
Bukkit.getScheduler().cancelTask(task2);
bossBar.setVisible(false);
}
},3*20,3*20);
if(!entity.isDead()) {
bossBar.setProgress(((Damageable) entity).getHealth() / ((Damageable) entity).getMaxHealth());
bossBar.setTitle(entity.getName() + (ChatColor.RED + "" + HP + "/" + MAXHP));
}else {
List<Player> players = bossBar.getPlayers();
for (Player player1 : players) {
bossBar.removePlayer(player1);
}
bossBar.setVisible(false);
Bukkit.getScheduler().cancelTask(task);
}
},0,10);
}
}
}
}