MinionManager.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. package me.lethunderhawk.minion.manager;
  2. import me.lethunderhawk.main.Main;
  3. import me.lethunderhawk.minion.runtime.PlacedMinion;
  4. import org.bukkit.Location;
  5. import org.bukkit.plugin.java.JavaPlugin;
  6. import java.util.ArrayList;
  7. import java.util.List;
  8. import java.util.Map;
  9. import java.util.UUID;
  10. import java.util.concurrent.ConcurrentHashMap;
  11. public class MinionManager {
  12. private static final Map<UUID, PlacedMinion> BY_ENTITY = new ConcurrentHashMap<>();
  13. public static void register(PlacedMinion minion) {
  14. BY_ENTITY.put(minion.getArmorStand().getUniqueId(), minion);
  15. }
  16. public static PlacedMinion getByEntity(UUID entityId) {
  17. return BY_ENTITY.get(entityId);
  18. }
  19. public static void unregister(PlacedMinion minion) {
  20. BY_ENTITY.remove(minion.getArmorStand().getUniqueId());
  21. }
  22. public static void stopAndUnregister(PlacedMinion minion) {
  23. minion.stop();
  24. unregister(minion);
  25. }
  26. public static void startAndRegister(PlacedMinion minion, JavaPlugin plugin) {
  27. minion.start(plugin);
  28. register(minion);
  29. }
  30. public static List<PlacedMinion> stopAndUnregisterAll() {
  31. List<PlacedMinion> minions = new ArrayList<>();
  32. BY_ENTITY.forEach((key, minion) -> {
  33. minions.add(minion);
  34. stopAndUnregister(minion);
  35. });
  36. return minions;
  37. }
  38. public static boolean isMinionAtLocation(Location placeLocation) {
  39. for(PlacedMinion minion : BY_ENTITY.values()){
  40. if(minion.getLocation().equals(placeLocation)){
  41. return true;
  42. }
  43. }
  44. return false;
  45. }
  46. public static void startAndRegisterAll(Main plugin, List<PlacedMinion> minions) {
  47. for(PlacedMinion minion : minions){
  48. startAndRegister(minion, plugin);
  49. }
  50. }
  51. }