diff --git a/src/main/java/net/fabricmc/loom/api/manifest/VersionsManifestsAPI.java b/src/main/java/net/fabricmc/loom/api/manifest/VersionsManifestsAPI.java index e4fbc063..040ed9fb 100644 --- a/src/main/java/net/fabricmc/loom/api/manifest/VersionsManifestsAPI.java +++ b/src/main/java/net/fabricmc/loom/api/manifest/VersionsManifestsAPI.java @@ -30,17 +30,21 @@ import org.jetbrains.annotations.ApiStatus; public interface VersionsManifestsAPI { /** * Adds a URL to a versions manifest json with the default priority of {@code 0}. + * @param name a string that uniquely identifies this versions manifest, + * to be used in cache file paths * @param url the String-representation of the URL to the manifest json */ - default void add(String url) { - add(url, 0); + default void add(String name, String url) { + add(name, url, 0); } /** * Adds a URL to a versions manifest json with the given priority. + * @param name a string that uniquely identifies this versions manifest, + * to be used in cache file paths * @param url the String-representation of the URL to the manifest json * @param priority the priority with which this URL gets sorted against other entries * entries are sorted by priority, from lowest to highest */ - void add(String url, int priority); + void add(String name, String url, int priority); } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestLocations.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestLocations.java index f127e7d3..1119fc5f 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestLocations.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/ManifestLocations.java @@ -25,29 +25,26 @@ package net.fabricmc.loom.configuration.providers.minecraft; import java.nio.file.Path; +import java.util.HashSet; import java.util.Iterator; import java.util.PriorityQueue; import java.util.Queue; +import java.util.Set; import net.fabricmc.loom.api.manifest.VersionsManifestsAPI; import net.fabricmc.loom.configuration.providers.minecraft.ManifestLocations.ManifestLocation; public class ManifestLocations implements VersionsManifestsAPI, Iterable { - private static final String FILE_EXTENSION = ".json"; private final Queue locations = new PriorityQueue<>(); - private final String baseFileName; - - public ManifestLocations(String baseFileName) { - this.baseFileName = baseFileName; - } - - public void addBuiltIn(int priority, String url, String fileName) { - locations.add(new ManifestLocation(priority, url, fileName)); - } + private final Set manifestNames = new HashSet<>(); @Override - public void add(String url, int priority) { - locations.add(new ManifestLocation(priority, url)); + public void add(String name, String url, int priority) { + if (manifestNames.add(name)) { + locations.add(new ManifestLocation(name, url, priority)); + } else { + throw new IllegalStateException("cannot add multiple versions manifests with the same name!"); + } } @Override @@ -56,22 +53,18 @@ public class ManifestLocations implements VersionsManifestsAPI, Iterable { - private final int priority; + private final String name; private final String url; - private final String builtInFileName; + private final int priority; - private ManifestLocation(int priority, String url) { - this(priority, url, null); - } - - private ManifestLocation(int priority, String url, String builtInFileName) { - this.priority = priority; + private ManifestLocation(String name, String url, int priority) { + this.name = name; this.url = url; - this.builtInFileName = builtInFileName; + this.priority = priority; } - public boolean isBuiltIn() { - return builtInFileName != null; + public String name() { + return name; } public String url() { @@ -79,10 +72,7 @@ public class ManifestLocations implements VersionsManifestsAPI, Iterable