package me.lethunderhawk.minion.manager; import me.lethunderhawk.main.Main; import me.lethunderhawk.minion.runtime.PlacedMinion; import org.bukkit.Location; import org.bukkit.plugin.java.JavaPlugin; import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.UUID; import java.util.concurrent.ConcurrentHashMap; public class MinionManager { private static final Map BY_ENTITY = new ConcurrentHashMap<>(); public static void register(PlacedMinion minion) { BY_ENTITY.put(minion.getArmorStand().getUniqueId(), minion); } public static PlacedMinion getByEntity(UUID entityId) { return BY_ENTITY.get(entityId); } public static void unregister(PlacedMinion minion) { BY_ENTITY.remove(minion.getArmorStand().getUniqueId()); } public static void stopAndUnregister(PlacedMinion minion) { minion.stop(); unregister(minion); } public static void startAndRegister(PlacedMinion minion, JavaPlugin plugin) { minion.start(plugin); register(minion); } public static List stopAndUnregisterAll() { List minions = new ArrayList<>(); BY_ENTITY.forEach((key, minion) -> { minions.add(minion); stopAndUnregister(minion); }); return minions; } public static boolean isMinionAtLocation(Location placeLocation) { for(PlacedMinion minion : BY_ENTITY.values()){ if(minion.getLocation().equals(placeLocation)){ return true; } } return false; } public static void startAndRegisterAll(Main plugin, List minions) { for(PlacedMinion minion : minions){ startAndRegister(minion, plugin); } } }