JackOUT

Untitled

Jun 4th, 2023
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 4.88 KB | None | 0 0
  1. package games.coob.nmsinterface;
  2.  
  3. import lombok.Getter;
  4. import lombok.NonNull;
  5. import org.bukkit.Location;
  6. import org.jetbrains.annotations.Nullable;
  7. import org.mineacademy.fo.settings.ConfigItems;
  8. import org.mineacademy.fo.settings.YamlConfig;
  9.  
  10. import java.util.ArrayList;
  11. import java.util.List;
  12. import java.util.Set;
  13.  
  14. public class HologramRegistry extends YamlConfig /*implements HologramRegistryI*/ {
  15.  
  16.     private static final String FOLDER = "holograms";
  17.  
  18.     private static final ConfigItems<HologramRegistry> loadedFiles = ConfigItems.fromFolder(FOLDER, HologramRegistry.class);
  19.  
  20.     @Getter
  21.     private NMSHologramI hologram;
  22.  
  23.     private HologramRegistry(final String id) {
  24.         this(id, null);
  25.     }
  26.  
  27.     private HologramRegistry(final String id, @Nullable final NMSHologramI hologram) {
  28.         if (hologram != null)
  29.             this.hologram = hologram;
  30.  
  31.         this.loadConfiguration(NO_DEFAULT, FOLDER + "/" + id + ".yml");
  32.     }
  33.  
  34.     @Override
  35.     protected void onLoad() {
  36.         this.hologram = this.get("Hologram", NMSHologramI.class);
  37.  
  38.         this.save();
  39.     }
  40.  
  41.     @Override
  42.     protected void onSave() {
  43.         this.set("Hologram", this.hologram);
  44.     }
  45.  
  46.     /**
  47.      * Automatically loads stored disk Holograms and spawns them
  48.      */
  49.     /*@Override
  50.     public void spawnFromDisk() {
  51.         if (!MinecraftVersion.atLeast(MinecraftVersion.V.v1_16))
  52.             return;
  53.  
  54.         // Tricky: This automatically calls the spawn method which puts the hologram to our loadedHolograms list
  55.         this.loadedHolograms = loadHolograms();
  56.  
  57.         Common.log("@Found " + this.loadedHolograms.size() + " Holograms on the disk");
  58.  
  59.         for (final NMSHologramI hologram : this.loadedHolograms)
  60.             Common.log("\tspawned " + hologram + " at " + hologram.getLocation());
  61.     }*/
  62.  
  63.     /*@Override
  64.     public List<NMSHologramI> loadHolograms() {
  65.         final List<NMSHologramI> loadedHologram = new ArrayList<>();
  66.  
  67.         for (final SerializedMap map : getMapList("Saved_Holograms")) {
  68.             final NMSHologramI hologram = NMSHologramProvider.deserialize(map);
  69.  
  70.             loadedHologram.add(hologram);
  71.         }
  72.  
  73.         return loadedHologram;
  74.     }*/
  75.  
  76.     /**
  77.      * Registers a new hologram to our map
  78.      *
  79.      * @param hologram
  80.      */
  81.     /*@Override
  82.     public void register(final NMSHologramI hologram) {
  83.         Valid.checkBoolean(!this.isRegistered(hologram), hologram + " is already registered!");
  84.  
  85.         this.loadedHolograms.add(hologram);
  86.         this.save();
  87.     }*/
  88.  
  89.     /*@Override
  90.     public void unregister(final NMSHologramI hologram) {
  91.         this.loadedHolograms.remove(hologram);
  92.         this.save();
  93.     }*/
  94.  
  95.     /**
  96.      * Return true if the given hologram is already registered
  97.      *
  98.      * @param hologram
  99.      * @return
  100.      */
  101.     /*@Override
  102.     public boolean isRegistered(final NMSHologramI hologram) {
  103.         return this.isRegistered(hologram.getUniqueId());
  104.     }*/
  105.  
  106.     /**
  107.      * Return true if the given hologram is already registered
  108.      *
  109.      * @param entityUniqueId
  110.      * @return
  111.      */
  112.     /*@Override
  113.     public boolean isRegistered(final UUID entityUniqueId) {
  114.         for (final NMSHologramI hologram : this.loadedHolograms)
  115.             if (hologram != null && hologram.getUniqueId().equals(entityUniqueId))
  116.                 return true;
  117.  
  118.         return false;
  119.     }*/
  120.  
  121.     /**
  122.      * Get the loaded holograms
  123.      */
  124.     /*@Override
  125.     public List<NMSHologramI> getLoadedHolograms() {
  126.         return Collections.unmodifiableList(this.loadedHolograms);
  127.     }*/
  128.  
  129.     // -----------------------------------------------------------------
  130.     // Static
  131.     // -----------------------------------------------------------------
  132.     public static List<Location> getHologramLocations() {
  133.         final List<Location> locations = new ArrayList<>();
  134.  
  135.         for (final HologramRegistry registry : getHolograms())
  136.             locations.add(registry.getHologram().getLocation());
  137.  
  138.         return locations;
  139.     }
  140.  
  141.     /**
  142.      * @return
  143.      * @see ConfigItems#getItems()
  144.      */
  145.     public static List<? extends HologramRegistry> getHolograms() {
  146.         return loadedFiles.getItems();
  147.     }
  148.  
  149.     /**
  150.      * @return
  151.      * @see ConfigItems#getItemNames()
  152.      */
  153.     public static Set<String> getHologramIDs() {
  154.         return loadedFiles.getItemNames();
  155.     }
  156.  
  157.     public static HologramRegistry createHologram(@NonNull final String id, final NMSHologramI hologram) {
  158.         return loadedFiles.loadOrCreateItem(id, () -> new HologramRegistry(id, hologram));
  159.     }
  160.  
  161.     /**
  162.      * @see ConfigItems#loadItems()
  163.      */
  164.     public static void loadHolograms() {
  165.         loadedFiles.loadItems();
  166.     }
  167.  
  168.     public static void removeHologram(final String id) {
  169.         loadedFiles.removeItemByName(id);
  170.     }
  171.  
  172.     public static void removeHologram(final NMSHologramI hologram) {
  173.         for (final HologramRegistry registry : getHolograms())
  174.             if (registry.getHologram().equals(hologram))
  175.                 loadedFiles.removeItem(registry);
  176.     }
  177.  
  178.     /**
  179.      * @see ConfigItems#isItemLoaded(String)
  180.      */
  181.     public static boolean isHologramLoaded(final String id) {
  182.         return loadedFiles.isItemLoaded(id);
  183.     }
  184.  
  185.     /**
  186.      * @return
  187.      * @see ConfigItems#findItem(String)
  188.      */
  189.     public static HologramRegistry findById(@NonNull final String id) {
  190.         return loadedFiles.findItem(id);
  191.     }
  192. }
  193.  
Add Comment
Please, Sign In to add comment