From 730c259d19ae0430cbae1cf953fe1c46e3234b3d Mon Sep 17 00:00:00 2001 From: Auxilor Date: Sun, 2 May 2021 10:29:04 +0100 Subject: [PATCH] Moved autospawn checks to by world --- .../bosses/listeners/AutoSpawnTimer.java | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AutoSpawnTimer.java b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AutoSpawnTimer.java index 5a1421b..42a1a54 100644 --- a/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AutoSpawnTimer.java +++ b/eco-core/core-plugin/src/main/java/com/willfp/ecobosses/bosses/listeners/AutoSpawnTimer.java @@ -4,7 +4,16 @@ import com.willfp.eco.util.NumberUtils; import com.willfp.ecobosses.EcoBossesPlugin; import com.willfp.ecobosses.bosses.EcoBoss; import com.willfp.ecobosses.bosses.EcoBosses; +import com.willfp.ecobosses.bosses.LivingEcoBoss; +import org.bukkit.Bukkit; import org.bukkit.Location; +import org.bukkit.World; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; public class AutoSpawnTimer implements Runnable { private int tick = 0; @@ -26,8 +35,21 @@ public class AutoSpawnTimer implements Runnable { continue; } + Set worlds = new HashSet<>(); + + for (UUID uuid : boss.getLivingBosses().keySet()) { + worlds.add(Bukkit.getEntity(uuid).getWorld()); + } + + List locations = new ArrayList<>(boss.getAutoSpawnLocations()); + locations.removeIf(location -> worlds.contains(location.getWorld())); + + if (locations.isEmpty()) { + continue; + } + if (tick % boss.getAutoSpawnInterval() == 0) { - Location location = boss.getAutoSpawnLocations().get(NumberUtils.randInt(0, boss.getAutoSpawnLocations().size() - 1)); + Location location = locations.get(NumberUtils.randInt(0, locations.size() - 1)); boss.spawn(location); } }