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:
@@ -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();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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())));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user