9
0
mirror of https://github.com/Auxilor/EcoMobs.git synced 2025-12-20 07:29:21 +00:00

Cleaned up /killall leaving lingering boss bars

This commit is contained in:
Auxilor
2021-04-18 21:05:51 +01:00
parent f3dd440def
commit 663104bda0
4 changed files with 40 additions and 29 deletions

View File

@@ -4,23 +4,24 @@ import com.willfp.eco.core.AbstractPacketAdapter;
import com.willfp.eco.core.EcoPlugin;
import com.willfp.eco.core.command.AbstractCommand;
import com.willfp.eco.core.integrations.IntegrationLoader;
import com.willfp.ecobosses.bosses.EcoBoss;
import com.willfp.ecobosses.bosses.EcoBosses;
import com.willfp.ecobosses.bosses.listeners.*;
import com.willfp.ecobosses.bosses.listeners.AttackListeners;
import com.willfp.ecobosses.bosses.listeners.AutoSpawnTimer;
import com.willfp.ecobosses.bosses.listeners.DeathListeners;
import com.willfp.ecobosses.bosses.listeners.PassiveListeners;
import com.willfp.ecobosses.bosses.listeners.SpawnListeners;
import com.willfp.ecobosses.bosses.util.BossUtils;
import com.willfp.ecobosses.commands.CommandEbdrop;
import com.willfp.ecobosses.commands.CommandEbkillall;
import com.willfp.ecobosses.commands.CommandEbreload;
import com.willfp.ecobosses.commands.CommandEbspawn;
import com.willfp.ecobosses.commands.TabCompleterEbspawn;
import lombok.Getter;
import org.bukkit.Bukkit;
import org.bukkit.entity.LivingEntity;
import org.bukkit.event.Listener;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
@SuppressWarnings("unused")
public class EcoBossesPlugin extends EcoPlugin {
@@ -62,13 +63,7 @@ public class EcoBossesPlugin extends EcoPlugin {
public void disable() {
this.getExtensionLoader().unloadExtensions();
for (EcoBoss boss : EcoBosses.values()) {
for (UUID uuid : boss.getLivingBosses().keySet()) {
LivingEntity entity = (LivingEntity) Bukkit.getEntity(uuid);
assert entity != null;
entity.damage(10000000);
}
}
BossUtils.killAllBosses();
}
/**

View File

@@ -135,7 +135,7 @@ public class LivingEcoBoss extends PluginDependent {
for (Effect effect : effects) {
effect.tick(boss, entity, tick);
}
if (entity.isDead()) {
if (entity.isDead() || Bukkit.getEntity(entity.getUniqueId()) == null) {
for (BossTicker ticker : tickers) {
ticker.onDeath(boss, entity, tick);
}

View File

@@ -5,6 +5,8 @@ import com.willfp.ecobosses.bosses.EcoBoss;
import com.willfp.ecobosses.bosses.EcoBosses;
import com.willfp.ecobosses.bosses.util.obj.DamagerProperty;
import lombok.experimental.UtilityClass;
import org.bukkit.Bukkit;
import org.bukkit.boss.KeyedBossBar;
import org.bukkit.entity.LivingEntity;
import org.bukkit.persistence.PersistentDataType;
import org.jetbrains.annotations.NotNull;
@@ -14,6 +16,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.UUID;
@UtilityClass
@SuppressWarnings("unchecked")
@@ -68,4 +71,31 @@ public class BossUtils {
return topDamagers;
}
/**
* Kill all bosses.
*
* @return The amount of bosses killed.
*/
public int killAllBosses() {
int amount = 0;
for (EcoBoss boss : EcoBosses.values()) {
for (UUID uuid : boss.getLivingBosses().keySet()) {
LivingEntity entity = (LivingEntity) Bukkit.getEntity(uuid);
assert entity != null;
entity.damage(10000000);
amount++;
}
}
List<KeyedBossBar> bars = new ArrayList<>();
Bukkit.getBossBars().forEachRemaining(bars::add);
for (KeyedBossBar bar : bars) {
if (bar.getKey().toString().startsWith("ecobosses:boss")) {
Bukkit.removeBossBar(bar.getKey());
}
}
return amount;
}
}

View File

@@ -2,15 +2,11 @@ package com.willfp.ecobosses.commands;
import com.willfp.eco.core.command.AbstractCommand;
import com.willfp.ecobosses.EcoBossesPlugin;
import com.willfp.ecobosses.bosses.EcoBoss;
import com.willfp.ecobosses.bosses.EcoBosses;
import org.bukkit.Bukkit;
import com.willfp.ecobosses.bosses.util.BossUtils;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.LivingEntity;
import org.jetbrains.annotations.NotNull;
import java.util.List;
import java.util.UUID;
public class CommandEbkillall extends AbstractCommand {
/**
@@ -25,16 +21,6 @@ public class CommandEbkillall extends AbstractCommand {
@Override
public void onExecute(@NotNull final CommandSender sender,
@NotNull final List<String> args) {
int amount = 0;
for (EcoBoss boss : EcoBosses.values()) {
for (UUID uuid : boss.getLivingBosses().keySet()) {
LivingEntity entity = (LivingEntity) Bukkit.getEntity(uuid);
assert entity != null;
entity.damage(10000000);
amount++;
}
}
sender.sendMessage(this.getPlugin().getLangYml().getMessage("killall").replace("%amount%", String.valueOf(amount)));
sender.sendMessage(this.getPlugin().getLangYml().getMessage("killall").replace("%amount%", String.valueOf(BossUtils.killAllBosses())));
}
}