diff --git a/src/main/java/me/itzg/helpers/forge/ForgeInstaller.java b/src/main/java/me/itzg/helpers/forge/ForgeInstaller.java index 2f83f3a9..e5e0c67e 100644 --- a/src/main/java/me/itzg/helpers/forge/ForgeInstaller.java +++ b/src/main/java/me/itzg/helpers/forge/ForgeInstaller.java @@ -12,6 +12,7 @@ import java.util.Arrays; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.regex.Matcher; import java.util.regex.Pattern; import lombok.NonNull; @@ -30,11 +31,6 @@ public class ForgeInstaller { "Exec:\\s+(?.+)" + "|The server installed successfully, you should now be able to run the file (?.+)"); - private static final List entryJarFormats = Arrays.asList( - "forge-%s-%s.jar", - "forge-%s-%s-shim.jar" - ); - private final InstallerResolver installerResolver; public ForgeInstaller(InstallerResolver installerResolver) { @@ -96,7 +92,7 @@ else if ( final Path forgeInstallerJar = installerResolver.download(resolved.minecraft, resolved.forge, outputDir); try { - newManifest = install(forgeInstallerJar, outputDir, resolved.minecraft, variant, resolved.forge); + newManifest = install(forgeInstallerJar, outputDir, resolved.minecraft, Optional.ofNullable(resolved.variantOverride).orElse(variant), resolved.forge); } finally { @@ -217,7 +213,7 @@ private ForgeManifest install(Path installerJar, Path outputDir, String minecraf // A 1.12.2 style installer that doesn't report entry point in logs // >= 1.20.4 where "Exec:" line is no longer included in logs if (entryFile == null) { - final Path resolved = findEntryJar(outputDir, minecraftVersion, forgeVersion); + final Path resolved = findEntryJar(outputDir, variant, minecraftVersion, forgeVersion); if (resolved != null) { entryFile = resolved.toAbsolutePath(); } @@ -254,9 +250,20 @@ private ForgeManifest install(Path installerJar, Path outputDir, String minecraf } } - private static Path findEntryJar(Path outputDir, String minecraftVersion, String forgeVersion) { - for (final String entryJarFormat : entryJarFormats) { - final Path path = outputDir.resolve(String.format(entryJarFormat, minecraftVersion, forgeVersion)); + @FunctionalInterface + interface ServerJarNameBuilder { + String build(String variant, String minecraftVersion, String forgeVersion); + } + + private final static List serverJarNameBuilders = Arrays.asList( + (v, m, f) -> String.format("%s-%s-%s.jar", v, m, f), + (v,m, f) -> String.format("%s-%s-%s-shim.jar", v, m, f), + (v,m, f) -> String.format("%s-%s.jar", v, f) + ); + + private static Path findEntryJar(Path outputDir, String variant, String minecraftVersion, String forgeVersion) { + for (final ServerJarNameBuilder builder : serverJarNameBuilders) { + final Path path = outputDir.resolve(builder.build(variant.toLowerCase(), minecraftVersion, forgeVersion)); if (Files.exists(path)) { return path; } diff --git a/src/main/java/me/itzg/helpers/forge/ProvidedInstallerResolver.java b/src/main/java/me/itzg/helpers/forge/ProvidedInstallerResolver.java index 311859e1..19008d26 100644 --- a/src/main/java/me/itzg/helpers/forge/ProvidedInstallerResolver.java +++ b/src/main/java/me/itzg/helpers/forge/ProvidedInstallerResolver.java @@ -3,6 +3,7 @@ import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.node.ObjectNode; import java.io.IOException; +import java.io.InputStream; import java.nio.file.Path; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -11,7 +12,12 @@ import me.itzg.helpers.json.ObjectMappers; public class ProvidedInstallerResolver implements InstallerResolver { + private static final Pattern OLD_FORGE_ID_VERSION = Pattern.compile("forge(.+)", Pattern.CASE_INSENSITIVE); + public static final String PROP_ID = "id"; + public static final String PROP_INHERITS_FROM = "inheritsFrom"; + public static final String INSTALLER_ID_FORGE = "forge"; + public static final String INSTALLER_ID_CLEANROOM = "cleanroom"; private final Path forgeInstaller; @@ -31,7 +37,7 @@ public VersionPair resolve() { throw new GenericException("Failed to locate version from provided installer file"); } - return new VersionPair(versions.minecraft, versions.forge); + return versions; } @Override @@ -46,22 +52,10 @@ public void cleanup(Path forgeInstallerJar) { private VersionPair extractVersion(Path forgeInstaller) throws IOException { - // Extract version from installer jar's version.json file - // where top level "id" field is used - - final VersionPair fromVersionJson = IoStreams.readFileFromZip(forgeInstaller, "version.json", inputStream -> { - final ObjectNode parsed = ObjectMappers.defaultMapper() - .readValue(inputStream, ObjectNode.class); - - final String id = parsed.get("id").asText(""); - - final String[] idParts = id.split("-"); - if (idParts.length != 3 || !idParts[1].equals("forge")) { - throw new GenericException("Unexpected format of id from Forge installer's version.json: " + id); - } - - return new VersionPair(idParts[0], idParts[2]); - }); + final VersionPair fromVersionJson = IoStreams.readFileFromZip(forgeInstaller, "version.json", + ProvidedInstallerResolver::extractFromVersionJson + ); + // will be null if version.json wasn't present if (fromVersionJson != null) { return fromVersionJson; } @@ -70,7 +64,7 @@ private VersionPair extractVersion(Path forgeInstaller) throws IOException { final ObjectNode parsed = ObjectMappers.defaultMapper() .readValue(inputStream, ObjectNode.class); - final JsonNode idNode = parsed.path("versionInfo").path("id"); + final JsonNode idNode = parsed.path("versionInfo").path(PROP_ID); if (idNode.isTextual()) { final String[] idParts = idNode.asText().split("-"); @@ -100,4 +94,33 @@ private VersionPair extractVersion(Path forgeInstaller) throws IOException { } }); } + + /** + * Extract version from installer jar's version.json file where top level "id" and "inheritedFrom" fields are used + * @throws GenericException if something wasn't right about the version.json + */ + public static VersionPair extractFromVersionJson(InputStream versionJsonIn) throws IOException { + final ObjectNode parsed = ObjectMappers.defaultMapper() + .readValue(versionJsonIn, ObjectNode.class); + + final String id = parsed.get(PROP_ID).asText(); + final JsonNode inheritsFromNode = parsed.get(PROP_INHERITS_FROM); + if (inheritsFromNode.isMissingNode()) { + throw new GenericException("Installer version.json is missing " + PROP_INHERITS_FROM); + } + final String minecraftVersion = inheritsFromNode.asText(); + + final String[] idParts = id.split("-"); + if (idParts.length >= 3) { + if (idParts[1].equals(INSTALLER_ID_FORGE)) { + return new VersionPair(minecraftVersion, idParts[2]); + } + if (idParts[0].equals(INSTALLER_ID_CLEANROOM)) { + return new VersionPair(minecraftVersion, String.join("-", idParts[1], idParts[2])) + .setVariantOverride(INSTALLER_ID_CLEANROOM); + } + } + + throw new GenericException("Unexpected format of id from Forge installer's version.json: " + id); + } } diff --git a/src/main/java/me/itzg/helpers/forge/VersionPair.java b/src/main/java/me/itzg/helpers/forge/VersionPair.java index 8d48dce5..d23c5e3f 100644 --- a/src/main/java/me/itzg/helpers/forge/VersionPair.java +++ b/src/main/java/me/itzg/helpers/forge/VersionPair.java @@ -1,13 +1,16 @@ package me.itzg.helpers.forge; -import lombok.AllArgsConstructor; import lombok.EqualsAndHashCode; +import lombok.RequiredArgsConstructor; +import lombok.Setter; import lombok.ToString; -@AllArgsConstructor +@RequiredArgsConstructor @ToString @EqualsAndHashCode public class VersionPair { - String minecraft; - String forge; + final String minecraft; + final String forge; + @Setter + String variantOverride; } diff --git a/src/test/java/me/itzg/helpers/forge/ProvidedInstallerResolverTest.java b/src/test/java/me/itzg/helpers/forge/ProvidedInstallerResolverTest.java index 9dd0d97d..190f2323 100644 --- a/src/test/java/me/itzg/helpers/forge/ProvidedInstallerResolverTest.java +++ b/src/test/java/me/itzg/helpers/forge/ProvidedInstallerResolverTest.java @@ -2,10 +2,16 @@ import static org.assertj.core.api.Assertions.assertThat; +import java.io.IOException; +import java.io.InputStream; import java.net.URISyntaxException; import java.net.URL; import java.nio.file.Paths; +import java.util.stream.Stream; import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; class ProvidedInstallerResolverTest { @@ -22,4 +28,28 @@ void resolvesVersionFromFile() throws URISyntaxException { assertThat(versions.minecraft).isEqualTo("1.20.2"); assertThat(versions.forge).isEqualTo("48.1.0"); } + + @ParameterizedTest + @MethodSource("resolvesIdVariantsArgs") + void resolvesIdVariants(String versionJsonName, String expectedMinecraftVersion, String expectedInstallerVersion) + throws IOException { + try (InputStream versionJsonStream = ProvidedInstallerResolverTest.class.getResourceAsStream( + "/forge/" + versionJsonName)) { + assertThat(versionJsonStream).isNotNull(); + + final VersionPair result = ProvidedInstallerResolver.extractFromVersionJson(versionJsonStream); + assertThat(result).isNotNull(); + assertThat(result.minecraft).isEqualTo(expectedMinecraftVersion); + assertThat(result.forge).isEqualTo(expectedInstallerVersion); + } + } + + public static Stream resolvesIdVariantsArgs() { + return Stream.of( + Arguments.arguments("version-forge-1.20.2.json", "1.20.2", "48.1.0"), + Arguments.arguments("version-forge-1.12.2.json", "1.12.2", "14.23.5.2860"), + Arguments.arguments("version-cleanroom.json", "1.12.2", "0.2.4-alpha") + ); + } + } \ No newline at end of file diff --git a/src/test/resources/forge/version-cleanroom.json b/src/test/resources/forge/version-cleanroom.json new file mode 100644 index 00000000..5d7ca358 --- /dev/null +++ b/src/test/resources/forge/version-cleanroom.json @@ -0,0 +1,1830 @@ +{ + "_comment_": [ + "Please do not automate the download and installation of Cleanroom.", + "Our efforts are supported by ads from the download page." + ], + "id": "cleanroom-0.2.4-alpha", + "time": "2024-11-21T14:32:01+00:00", + "releaseTime": "2024-11-21T14:32:01+00:00", + "type": "release", + "mainClass": "top.outlands.foundation.boot.Foundation", + "inheritsFrom": "1.12.2", + "logging": { + + }, + "minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker --versionType Forge", + "libraries": [ + { + "name": "com.cleanroommc:cleanroom:0.2.4-alpha", + "downloads": { + "artifact": { + "path": "com/cleanroommc/cleanroom/0.2.4-alpha/cleanroom-0.2.4-alpha.jar", + "url": "", + "sha1": "31647233f145b0f046d29a113150247e26a785f1", + "size": 4884554 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM.jar", + "sha1": "3236dd55e36b663ed7c93e56ec978df092165812", + "size": 137424 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM.jar", + "sha1": "9550cee1997ce6b37beb24146aaf20ec866fbf13", + "size": 44499 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM.jar", + "sha1": "13a40ba3294faf0ffbf16c20c0fcbbe752b96bd0", + "size": 111643 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM.jar", + "sha1": "77e90517bbcbde2d8da6c2aa787eddfb2fe2ef35", + "size": 938262 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM.jar", + "sha1": "439badc50392bae331270a16443803998e882c32", + "size": 142488 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM.jar", + "sha1": "79507d1201dcf4ff92ff3cb0394309740e9393a8", + "size": 13496 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM.jar", + "sha1": "69efa343d687bbfda5d928283a8ba9ade9dc7489", + "size": 797917 + } + } + }, + { + "name": "org.ow2.asm:asm:9.7.1", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm/9.7.1/asm-9.7.1.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm/9.7.1/asm-9.7.1.jar", + "sha1": "f0ed132a49244b042cd0e15702ab9f2ce3cc8436", + "size": 126093 + } + } + }, + { + "name": "org.ow2.asm:asm-commons:9.7.1", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-commons/9.7.1/asm-commons-9.7.1.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-commons/9.7.1/asm-commons-9.7.1.jar", + "sha1": "406c6a2225cfe1819f102a161e54cc16a5c24f75", + "size": 73459 + } + } + }, + { + "name": "org.ow2.asm:asm-tree:9.7.1", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-tree/9.7.1/asm-tree-9.7.1.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-tree/9.7.1/asm-tree-9.7.1.jar", + "sha1": "3a53139787663b139de76b627fca0084ab60d32c", + "size": 51939 + } + } + }, + { + "name": "org.ow2.asm:asm-util:9.7.1", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-util/9.7.1/asm-util-9.7.1.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-util/9.7.1/asm-util-9.7.1.jar", + "sha1": "9e23359b598ec6b74b23e53110dd5c577adf2243", + "size": 94519 + } + } + }, + { + "name": "org.ow2.asm:asm-analysis:9.7.1", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-analysis/9.7.1/asm-analysis-9.7.1.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-analysis/9.7.1/asm-analysis-9.7.1.jar", + "sha1": "f97a3b319f0ed6a8cd944dc79060d3912a28985f", + "size": 35126 + } + } + }, + { + "name": "org.ow2.asm:asm-deprecated:7.1", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-deprecated/7.1/asm-deprecated-7.1.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-deprecated/7.1/asm-deprecated-7.1.jar", + "sha1": "004ad3a41a931f2ef0aa8f8dc5d7c82090d744c1", + "size": 9152 + } + } + }, + { + "name": "top.outlands:foundation:0.14.0", + "downloads": { + "artifact": { + "path": "top/outlands/foundation/0.14.0/foundation-0.14.0.jar", + "url": "https://maven.arcseekers.com/releases/top/outlands/foundation/0.14.0/foundation-0.14.0.jar", + "sha1": "e30334d166a5504a2ed9ffd17f67ed18cdf2fe37", + "size": 58446 + } + } + }, + { + "name": "org.burningwave:jvm-driver:8.16.1", + "downloads": { + "artifact": { + "path": "org/burningwave/jvm-driver/8.16.1/jvm-driver-8.16.1.jar", + "url": "https://maven.minecraftforge.net/org/burningwave/jvm-driver/8.16.1/jvm-driver-8.16.1.jar", + "sha1": "86cc25a3cdea3b3e843b61bd14c2a5c36f36ec6b", + "size": 293690 + } + } + }, + { + "name": "io.github.toolfactory:jvm-driver:9.7.1", + "downloads": { + "artifact": { + "path": "io/github/toolfactory/jvm-driver/9.7.1/jvm-driver-9.7.1.jar", + "url": "https://maven.minecraftforge.net/io/github/toolfactory/jvm-driver/9.7.1/jvm-driver-9.7.1.jar", + "sha1": "d4f63e9ce8de7abd19b9ee6884e1165762c624b2", + "size": 224021 + } + } + }, + { + "name": "io.github.toolfactory:narcissus:1.0.7", + "downloads": { + "artifact": { + "path": "io/github/toolfactory/narcissus/1.0.7/narcissus-1.0.7.jar", + "url": "https://maven.minecraftforge.net/io/github/toolfactory/narcissus/1.0.7/narcissus-1.0.7.jar", + "sha1": "ab657109bd984dbeae7fa77b9997e6f35f1230b7", + "size": 121119 + } + } + }, + { + "name": "org.javassist:javassist:3.30.2-GA", + "downloads": { + "artifact": { + "path": "org/javassist/javassist/3.30.2-GA/javassist-3.30.2-GA.jar", + "url": "https://maven.minecraftforge.net/org/javassist/javassist/3.30.2-GA/javassist-3.30.2-GA.jar", + "sha1": "284580b5e42dfa1b8267058566435d9e93fae7f7", + "size": 794714 + } + } + }, + { + "name": "zone.rong:imaginebreaker:2.1", + "downloads": { + "artifact": { + "path": "zone/rong/imaginebreaker/2.1/imaginebreaker-2.1.jar", + "url": "https://repo.cleanroommc.com/releases/zone/rong/imaginebreaker/2.1/imaginebreaker-2.1.jar", + "sha1": "5954b781a93d4cfb246723c08994cd033ceb614b", + "size": 5612 + } + } + }, + { + "name": "com.ibm.icu:icu4j:76.1", + "downloads": { + "artifact": { + "path": "com/ibm/icu/icu4j/76.1/icu4j-76.1.jar", + "url": "https://maven.minecraftforge.net/com/ibm/icu/icu4j/76.1/icu4j-76.1.jar", + "sha1": "215f3a8e936d4069344bd75f2b1368fd58112894", + "size": 14621879 + } + } + }, + { + "name": "org.jline:jline:3.27.1", + "downloads": { + "artifact": { + "path": "org/jline/jline/3.27.1/jline-3.27.1.jar", + "url": "https://maven.minecraftforge.net/org/jline/jline/3.27.1/jline-3.27.1.jar", + "sha1": "c78ca5c9ef6c3b2d86b307bcfc547a2dc301ce45", + "size": 1428075 + } + } + }, + { + "name": "org.jline:jline-native:3.27.1", + "downloads": { + "artifact": { + "path": "org/jline/jline-native/3.27.1/jline-native-3.27.1.jar", + "url": "https://maven.minecraftforge.net/org/jline/jline-native/3.27.1/jline-native-3.27.1.jar", + "sha1": "d0b198908023385a089379a1c854aadc7a7dd99b", + "size": 190113 + } + } + }, + { + "name": "lzma:lzma:0.0.1", + "downloads": { + "artifact": { + "path": "lzma/lzma/0.0.1/lzma-0.0.1.jar", + "url": "https://libraries.minecraft.net/lzma/lzma/0.0.1/lzma-0.0.1.jar", + "sha1": "521616dc7487b42bef0e803bd2fa3faf668101d7", + "size": 5762 + } + } + }, + { + "name": "java3d:vecmath:1.5.2", + "downloads": { + "artifact": { + "path": "java3d/vecmath/1.5.2/vecmath-1.5.2.jar", + "url": "https://libraries.minecraft.net/java3d/vecmath/1.5.2/vecmath-1.5.2.jar", + "sha1": "79846ba34cbd89e2422d74d53752f993dcc2ccaf", + "size": 318956 + } + } + }, + { + "name": "net.sf.trove4j:trove4j:3.0.3", + "downloads": { + "artifact": { + "path": "net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar", + "url": "https://maven.minecraftforge.net/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar", + "sha1": "42ccaf4761f0dfdfa805c9e340d99a755907e2dd", + "size": 2523218 + } + } + }, + { + "name": "org.apache.maven:maven-artifact:3.9.9", + "downloads": { + "artifact": { + "path": "org/apache/maven/maven-artifact/3.9.9/maven-artifact-3.9.9.jar", + "url": "https://maven.minecraftforge.net/org/apache/maven/maven-artifact/3.9.9/maven-artifact-3.9.9.jar", + "sha1": "a130ec431ef32e12a4424f9b074735bb58e15d2d", + "size": 58819 + } + } + }, + { + "name": "net.sf.jopt-simple:jopt-simple:5.0.4", + "downloads": { + "artifact": { + "path": "net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar", + "url": "https://maven.minecraftforge.net/net/sf/jopt-simple/jopt-simple/5.0.4/jopt-simple-5.0.4.jar", + "sha1": "4fdac2fbe92dfad86aa6e9301736f6b4342a3f5c", + "size": 78146 + } + } + }, + { + "name": "org.apache.commons:commons-lang3:3.17.0", + "downloads": { + "artifact": { + "path": "org/apache/commons/commons-lang3/3.17.0/commons-lang3-3.17.0.jar", + "url": "https://maven.minecraftforge.net/org/apache/commons/commons-lang3/3.17.0/commons-lang3-3.17.0.jar", + "sha1": "b17d2136f0460dcc0d2016ceefca8723bdf4ee70", + "size": 673587 + } + } + }, + { + "name": "org.apache.commons:commons-compress:1.27.1", + "downloads": { + "artifact": { + "path": "org/apache/commons/commons-compress/1.27.1/commons-compress-1.27.1.jar", + "url": "https://maven.minecraftforge.net/org/apache/commons/commons-compress/1.27.1/commons-compress-1.27.1.jar", + "sha1": "a19151084758e2fbb6b41eddaa88e7b8ff4e6599", + "size": 1087319 + } + } + }, + { + "name": "org.apache.httpcomponents:httpclient:4.5.14", + "downloads": { + "artifact": { + "path": "org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar", + "url": "https://maven.minecraftforge.net/org/apache/httpcomponents/httpclient/4.5.14/httpclient-4.5.14.jar", + "sha1": "1194890e6f56ec29177673f2f12d0b8e627dec98", + "size": 785639 + } + } + }, + { + "name": "org.apache.httpcomponents:httpcore:4.4.16", + "downloads": { + "artifact": { + "path": "org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar", + "url": "https://maven.minecraftforge.net/org/apache/httpcomponents/httpcore/4.4.16/httpcore-4.4.16.jar", + "sha1": "51cf043c87253c9f58b539c9f7e44c8894223850", + "size": 327891 + } + } + }, + { + "name": "com.github.oshi:oshi-core:6.6.5", + "downloads": { + "artifact": { + "path": "com/github/oshi/oshi-core/6.6.5/oshi-core-6.6.5.jar", + "url": "https://maven.minecraftforge.net/com/github/oshi/oshi-core/6.6.5/oshi-core-6.6.5.jar", + "sha1": "e1099981fd15dc4236c4499d82aba1276fb43a9a", + "size": 991378 + } + } + }, + { + "name": "net.java.dev.jna:jna:5.15.0", + "downloads": { + "artifact": { + "path": "net/java/dev/jna/jna/5.15.0/jna-5.15.0.jar", + "url": "https://maven.minecraftforge.net/net/java/dev/jna/jna/5.15.0/jna-5.15.0.jar", + "sha1": "01ee1d80ff44f08280188f7c0e740d57207841ac", + "size": 2001532 + } + } + }, + { + "name": "net.java.dev.jna:jna-platform:5.15.0", + "downloads": { + "artifact": { + "path": "net/java/dev/jna/jna-platform/5.15.0/jna-platform-5.15.0.jar", + "url": "https://maven.minecraftforge.net/net/java/dev/jna/jna-platform/5.15.0/jna-platform-5.15.0.jar", + "sha1": "86b502cad57d45da172b5e3231c537b042e296ef", + "size": 1376668 + } + } + }, + { + "name": "it.unimi.dsi:fastutil:8.5.15", + "downloads": { + "artifact": { + "path": "it/unimi/dsi/fastutil/8.5.15/fastutil-8.5.15.jar", + "url": "https://maven.minecraftforge.net/it/unimi/dsi/fastutil/8.5.15/fastutil-8.5.15.jar", + "sha1": "1e885b40c9563ab0d3899b871fd0b30e958705dc", + "size": 23730770 + } + } + }, + { + "name": "commons-codec:commons-codec:1.17.1", + "downloads": { + "artifact": { + "path": "commons-codec/commons-codec/1.17.1/commons-codec-1.17.1.jar", + "url": "https://maven.minecraftforge.net/commons-codec/commons-codec/1.17.1/commons-codec-1.17.1.jar", + "sha1": "973638b7149d333563584137ebf13a691bb60579", + "size": 372687 + } + } + }, + { + "name": "commons-io:commons-io:2.17.0", + "downloads": { + "artifact": { + "path": "commons-io/commons-io/2.17.0/commons-io-2.17.0.jar", + "url": "https://maven.minecraftforge.net/commons-io/commons-io/2.17.0/commons-io-2.17.0.jar", + "sha1": "ddcc8433eb019fb48fe25207c0278143f3e1d7e2", + "size": 515978 + } + } + }, + { + "name": "commons-logging:commons-logging:1.3.4", + "downloads": { + "artifact": { + "path": "commons-logging/commons-logging/1.3.4/commons-logging-1.3.4.jar", + "url": "https://maven.minecraftforge.net/commons-logging/commons-logging/1.3.4/commons-logging-1.3.4.jar", + "sha1": "b9fc14968d63a8b8a8a2c1885fe3e90564239708", + "size": 73721 + } + } + }, + { + "name": "com.google.guava:guava:33.3.1-jre", + "downloads": { + "artifact": { + "path": "com/google/guava/guava/33.3.1-jre/guava-33.3.1-jre.jar", + "url": "https://maven.minecraftforge.net/com/google/guava/guava/33.3.1-jre/guava-33.3.1-jre.jar", + "sha1": "852f8b363da0111e819460021ca693cacca3e8db", + "size": 3079289 + } + } + }, + { + "name": "com.google.guava:failureaccess:1.0.2", + "downloads": { + "artifact": { + "path": "com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar", + "url": "https://maven.minecraftforge.net/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar", + "sha1": "c4a06a64e650562f30b7bf9aaec1bfed43aca12b", + "size": 4740 + } + } + }, + { + "name": "com.google.code.gson:gson:2.11.0", + "downloads": { + "artifact": { + "path": "com/google/code/gson/gson/2.11.0/gson-2.11.0.jar", + "url": "https://maven.minecraftforge.net/com/google/code/gson/gson/2.11.0/gson-2.11.0.jar", + "sha1": "527175ca6d81050b53bdd4c457a6d6e017626b0e", + "size": 298435 + } + } + }, + { + "name": "com.google.code.findbugs:jsr305:3.0.2", + "downloads": { + "artifact": { + "path": "com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "url": "https://maven.minecraftforge.net/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar", + "sha1": "25ea2e8b0c338a877313bd4672d3fe056ea78f0d", + "size": 19936 + } + } + }, + { + "name": "io.netty:netty-codec:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-codec/4.1.114.Final/netty-codec-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-codec/4.1.114.Final/netty-codec-4.1.114.Final.jar", + "sha1": "5a49dfa2828d64bf756f670e63259115332744cf", + "size": 352122 + } + } + }, + { + "name": "io.netty:netty-buffer:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-buffer/4.1.114.Final/netty-buffer-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-buffer/4.1.114.Final/netty-buffer-4.1.114.Final.jar", + "sha1": "f1d77d15c0b781cd9395a2a956262766fd0c7602", + "size": 336533 + } + } + }, + { + "name": "io.netty:netty-common:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-common/4.1.114.Final/netty-common-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-common/4.1.114.Final/netty-common-4.1.114.Final.jar", + "sha1": "862712e292b162c8ccaa7847a6a54df8178f77e5", + "size": 694522 + } + } + }, + { + "name": "io.netty:netty-handler:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-handler/4.1.114.Final/netty-handler-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-handler/4.1.114.Final/netty-handler-4.1.114.Final.jar", + "sha1": "e56fbde4b9aa628eed15a5dbfbeb97877db88146", + "size": 577439 + } + } + }, + { + "name": "io.netty:netty-resolver:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-resolver/4.1.114.Final/netty-resolver-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-resolver/4.1.114.Final/netty-resolver-4.1.114.Final.jar", + "sha1": "10b23784b23d6a948930f52ba82874f1291b5873", + "size": 37840 + } + } + }, + { + "name": "io.netty:netty-transport:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-transport/4.1.114.Final/netty-transport-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-transport/4.1.114.Final/netty-transport-4.1.114.Final.jar", + "sha1": "e0225a575f487904be8517092cbd74e01913533c", + "size": 521373 + } + } + }, + { + "name": "io.netty:netty-transport-native-unix-common:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-transport-native-unix-common/4.1.114.Final/netty-transport-native-unix-common-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-transport-native-unix-common/4.1.114.Final/netty-transport-native-unix-common-4.1.114.Final.jar", + "sha1": "d1171bb99411f282068f49d780cedf8c9adeabfd", + "size": 44158 + } + } + }, + { + "name": "io.netty:netty-transport-classes-epoll:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-transport-classes-epoll/4.1.114.Final/netty-transport-classes-epoll-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-transport-classes-epoll/4.1.114.Final/netty-transport-classes-epoll-4.1.114.Final.jar", + "sha1": "f442c794e6fe89e6974f058bf393353e01fb927d", + "size": 147623 + } + } + }, + { + "name": "io.netty:netty-transport-native-epoll:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-transport-native-epoll/4.1.114.Final/netty-transport-native-epoll-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-transport-native-epoll/4.1.114.Final/netty-transport-native-epoll-4.1.114.Final.jar", + "sha1": "aff3cd3f41f587f43c14cbb47b9ab380f5387a81", + "size": 6198 + } + } + }, + { + "name": "io.netty:netty-codec-http:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-codec-http/4.1.114.Final/netty-codec-http-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-codec-http/4.1.114.Final/netty-codec-http-4.1.114.Final.jar", + "sha1": "fbce5a53884275662e68aaad70f88bf7e5d04164", + "size": 668310 + } + } + }, + { + "name": "io.netty:netty-codec-http2:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-codec-http2/4.1.114.Final/netty-codec-http2-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-codec-http2/4.1.114.Final/netty-codec-http2-4.1.114.Final.jar", + "sha1": "19ae07fdf99142a70338f8cda70a3d2edbc8e80a", + "size": 490385 + } + } + }, + { + "name": "io.netty:netty-codec-dns:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-codec-dns/4.1.114.Final/netty-codec-dns-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-codec-dns/4.1.114.Final/netty-codec-dns-4.1.114.Final.jar", + "sha1": "35798729ba06670fb4fcd02db98d9577e363992d", + "size": 67106 + } + } + }, + { + "name": "io.netty:netty-resolver-dns:4.1.114.Final", + "downloads": { + "artifact": { + "path": "io/netty/netty-resolver-dns/4.1.114.Final/netty-resolver-dns-4.1.114.Final.jar", + "url": "https://maven.minecraftforge.net/io/netty/netty-resolver-dns/4.1.114.Final/netty-resolver-dns-4.1.114.Final.jar", + "sha1": "2fed36ff50059ded641fa5064963c4b4313512f3", + "size": 188213 + } + } + }, + { + "name": "org.apache.logging.log4j:log4j-api:2.24.1", + "downloads": { + "artifact": { + "path": "org/apache/logging/log4j/log4j-api/2.24.1/log4j-api-2.24.1.jar", + "url": "https://maven.minecraftforge.net/org/apache/logging/log4j/log4j-api/2.24.1/log4j-api-2.24.1.jar", + "sha1": "7ebeb12c20606373005af4232cd0ecca72613dda", + "size": 348428 + } + } + }, + { + "name": "org.apache.logging.log4j:log4j-core:2.24.1", + "downloads": { + "artifact": { + "path": "org/apache/logging/log4j/log4j-core/2.24.1/log4j-core-2.24.1.jar", + "url": "https://maven.minecraftforge.net/org/apache/logging/log4j/log4j-core/2.24.1/log4j-core-2.24.1.jar", + "sha1": "c85285146f28d8c8962384f786e2dff04172fb43", + "size": 1910958 + } + } + }, + { + "name": "org.apache.logging.log4j:log4j-slf4j2-impl:2.24.1", + "downloads": { + "artifact": { + "path": "org/apache/logging/log4j/log4j-slf4j2-impl/2.24.1/log4j-slf4j2-impl-2.24.1.jar", + "url": "https://maven.minecraftforge.net/org/apache/logging/log4j/log4j-slf4j2-impl/2.24.1/log4j-slf4j2-impl-2.24.1.jar", + "sha1": "8e3ddc96464ef7f768823e7e001a52b23de8cd0a", + "size": 30133 + } + } + }, + { + "name": "org.slf4j:slf4j-api:2.0.16", + "downloads": { + "artifact": { + "path": "org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar", + "url": "https://maven.minecraftforge.net/org/slf4j/slf4j-api/2.0.16/slf4j-api-2.0.16.jar", + "sha1": "0172931663a09a1fa515567af5fbef00897d3c04", + "size": 69435 + } + } + }, + { + "name": "jakarta.annotation:jakarta.annotation-api:3.0.0", + "downloads": { + "artifact": { + "path": "jakarta/annotation/jakarta.annotation-api/3.0.0/jakarta.annotation-api-3.0.0.jar", + "url": "https://maven.minecraftforge.net/jakarta/annotation/jakarta.annotation-api/3.0.0/jakarta.annotation-api-3.0.0.jar", + "sha1": "54f928fadec906a99d558536756d171917b9d936", + "size": 26378 + } + } + }, + { + "name": "jakarta.xml.bind:jakarta.xml.bind-api:4.0.2", + "downloads": { + "artifact": { + "path": "jakarta/xml/bind/jakarta.xml.bind-api/4.0.2/jakarta.xml.bind-api-4.0.2.jar", + "url": "https://maven.minecraftforge.net/jakarta/xml/bind/jakarta.xml.bind-api/4.0.2/jakarta.xml.bind-api-4.0.2.jar", + "sha1": "6cd5a999b834b63238005b7144136379dc36cad2", + "size": 131033 + } + } + }, + { + "name": "jakarta.xml.ws:jakarta.xml.ws-api:4.0.2", + "downloads": { + "artifact": { + "path": "jakarta/xml/ws/jakarta.xml.ws-api/4.0.2/jakarta.xml.ws-api-4.0.2.jar", + "url": "https://maven.minecraftforge.net/jakarta/xml/ws/jakarta.xml.ws-api/4.0.2/jakarta.xml.ws-api-4.0.2.jar", + "sha1": "331ecab874ee75b48db661a331319958cb04edec", + "size": 77621 + } + } + }, + { + "name": "jakarta.activation:jakarta.activation-api:2.1.3", + "downloads": { + "artifact": { + "path": "jakarta/activation/jakarta.activation-api/2.1.3/jakarta.activation-api-2.1.3.jar", + "url": "https://maven.minecraftforge.net/jakarta/activation/jakarta.activation-api/2.1.3/jakarta.activation-api-2.1.3.jar", + "sha1": "fa165bd70cda600368eee31555222776a46b881f", + "size": 66514 + } + } + }, + { + "name": "org.glassfish.corba:glassfish-corba-omgapi:4.2.5", + "downloads": { + "artifact": { + "path": "org/glassfish/corba/glassfish-corba-omgapi/4.2.5/glassfish-corba-omgapi-4.2.5.jar", + "url": "https://maven.minecraftforge.net/org/glassfish/corba/glassfish-corba-omgapi/4.2.5/glassfish-corba-omgapi-4.2.5.jar", + "sha1": "112740b44afd5739b4ef614a8ff5221cc3f338b7", + "size": 1389070 + } + } + }, + { + "name": "org.openjdk.nashorn:nashorn-core:15.4", + "downloads": { + "artifact": { + "path": "org/openjdk/nashorn/nashorn-core/15.4/nashorn-core-15.4.jar", + "url": "https://maven.minecraftforge.net/org/openjdk/nashorn/nashorn-core/15.4/nashorn-core-15.4.jar", + "sha1": "f67f5ffaa5f5130cf6fb9b133da00c7df3b532a5", + "size": 2167292 + } + } + }, + { + "name": "com.cleanroommc:sponge-mixin:0.20.7+mixin.0.8.7", + "downloads": { + "artifact": { + "path": "com/cleanroommc/sponge-mixin/0.20.7+mixin.0.8.7/sponge-mixin-0.20.7+mixin.0.8.7.jar", + "url": "https://maven.arcseekers.com/releases/com/cleanroommc/sponge-mixin/0.20.7+mixin.0.8.7/sponge-mixin-0.20.7+mixin.0.8.7.jar", + "sha1": "25d6a376b40d1c75a118e91df3e77b670b478235", + "size": 1454345 + } + } + }, + { + "name": "io.github.llamalad7:mixinextras-common:0.5.0-beta.4", + "downloads": { + "artifact": { + "path": "io/github/llamalad7/mixinextras-common/0.5.0-beta.4/mixinextras-common-0.5.0-beta.4.jar", + "url": "https://maven.minecraftforge.net/io/github/llamalad7/mixinextras-common/0.5.0-beta.4/mixinextras-common-0.5.0-beta.4.jar", + "sha1": "314d1230493cdb555a88dbfe599d090a639351be", + "size": 715528 + } + } + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-linux-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "sha1": "09435d680b96b5c987f0db199c6ef034e6193d0d", + "size": 126384 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-linux-arm32", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "sha1": "be7437250db5c0eb105030e4cf91e83125503bb3", + "size": 116793 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-linux", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-linux.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-linux.jar", + "sha1": "eb1b9db3564ac5465e56c65695b9afce252de327", + "size": 123433 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "sha1": "74096208ae0758c79d5ce06363a5b21baae78f6f", + "size": 142179 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-macos", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-macos.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-macos.jar", + "sha1": "3377a1fd3d48eb5803cf981a8f1ea92f003677a4", + "size": 144843 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-windows-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "sha1": "968415f2b5a7c797fee2cd7cdd48c1faefea341e", + "size": 143263 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-windows-x86", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "sha1": "1b88da6fd38c547157ee229936893f1d2946050f", + "size": 159466 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-glfw:3.3.4-27-CLEANROOM:natives-windows", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-windows.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-glfw/3.3.4-27-CLEANROOM/lwjgl3-glfw-3.3.4-27-CLEANROOM-natives-windows.jar", + "sha1": "61a3a09e2f4b48fa438c124a62a7aa5ee4bb2969", + "size": 168801 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-linux-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "sha1": "4a9891300ad8639fce1e53dc40e58fbb6ee60bb4", + "size": 216124 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-linux-arm32", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "sha1": "b5dc77640c3e089b58803a31fc652dcab787566f", + "size": 183066 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-linux", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-linux.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-linux.jar", + "sha1": "84c3dc326b5fd6ba7171c5139f819836297d81b7", + "size": 210690 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "sha1": "7b2aecc4b684ca983c8da5ad88ded91ba215eb10", + "size": 143309 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-macos", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-macos.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-macos.jar", + "sha1": "cef4f18bd610dffa4834ebc7aa9d9ac0b0b1a203", + "size": 154458 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-windows-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "sha1": "f5b5ded7a850b049b9b29a9e2fc6bf5f594d8994", + "size": 153138 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-windows-x86", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "sha1": "616bb73570044840e6955914f63ceeb46998a639", + "size": 151299 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-jemalloc:3.3.4-27-CLEANROOM:natives-windows", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-windows.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-jemalloc/3.3.4-27-CLEANROOM/lwjgl3-jemalloc-3.3.4-27-CLEANROOM-natives-windows.jar", + "sha1": "b918a5db422ed6212788155a458938529aa2c14d", + "size": 182575 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-linux-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "sha1": "9acf2860c7002d8bcaf712f904b4f012e96a43c8", + "size": 592755 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-linux-arm32", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "sha1": "095bdc8462ca15f16e34baf87e5c59614d4014aa", + "size": 505408 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-linux", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-linux.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-linux.jar", + "sha1": "d34006326d28fe4da4aa8d056b6d98ac12df819d", + "size": 573020 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "sha1": "6ccbc673d99b9e7a44c7c53717b4b041beeb4c57", + "size": 470796 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-macos", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-macos.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-macos.jar", + "sha1": "a1d45f96223c57b8c32414652abb21d6a9e098e4", + "size": 519616 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-windows-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "sha1": "d77038de4634b32c3f22bfc7b67a09bc2d44ceda", + "size": 615655 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-windows-x86", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "sha1": "89a34d7b81bbd8453e73289e08dcaa2c5401c361", + "size": 637049 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-openal:3.3.4-27-CLEANROOM:natives-windows", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-windows.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-openal/3.3.4-27-CLEANROOM/lwjgl3-openal-3.3.4-27-CLEANROOM-natives-windows.jar", + "sha1": "ec2f1f38d2f3a5fd4e72387c963ea3cf5f9c1980", + "size": 696635 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-linux-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "sha1": "ec5e7e0cc02d141be1ae6d7c50854bee32ce0f78", + "size": 79554 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-linux-arm32", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "sha1": "f79e47d51d4df61347b59ee1576306d0bd0586af", + "size": 58694 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-linux", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-linux.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-linux.jar", + "sha1": "8809c93b7330a4c865e3a6fd94785df5829a9b60", + "size": 80656 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "sha1": "8014684b4b7e03a62273666f5b642cbc986d4a3c", + "size": 42468 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-macos", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-macos.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-macos.jar", + "sha1": "638fd787e7727f7644c5540c68fb49e8fa8572aa", + "size": 41466 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-windows-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "sha1": "253f99becdb508cad9765574c6c218f609eaf9e1", + "size": 82415 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-windows-x86", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "sha1": "82dbc2834416aafd5b2c4748c9b7f676cb47955c", + "size": 88640 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-opengl:3.3.4-27-CLEANROOM:natives-windows", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-windows.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-opengl/3.3.4-27-CLEANROOM/lwjgl3-opengl-3.3.4-27-CLEANROOM-natives-windows.jar", + "sha1": "664642b4c7bd5f8fd30b6c6e1897db9793b20983", + "size": 101546 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-linux-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "sha1": "a0a5d4a49666e6575c23101798e769901250608c", + "size": 256680 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-linux-arm32", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "sha1": "cd7612dc37c4c29f8bd547063c11509826a41486", + "size": 191996 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-linux", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-linux.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-linux.jar", + "sha1": "0162d58ebb1074696bae28823873726c5bfaa629", + "size": 271775 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "sha1": "e2b88d882e0f18513daac72f6d51e626f454d711", + "size": 200056 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-macos", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-macos.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-macos.jar", + "sha1": "4672760ae96f95520415155b00a12476fbde3d4f", + "size": 234039 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-windows-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "sha1": "d9183c9aa58c14b14c61bb8bfdd87b23b6ebe8a1", + "size": 242860 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-windows-x86", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "sha1": "f13617a9f34d321908cf58f549a1e6fd190e3e8f", + "size": 251902 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-stb:3.3.4-27-CLEANROOM:natives-windows", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-windows.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-stb/3.3.4-27-CLEANROOM/lwjgl3-stb-3.3.4-27-CLEANROOM-natives-windows.jar", + "sha1": "a62b5072815a9dd390eda7bbe632406c871c1e09", + "size": 287384 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-linux-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "sha1": "1defb0a64f6b8d85470d2bf010ed51ff6c6ac9bb", + "size": 43449 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-linux-arm32", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "sha1": "cb8c11638e4458080f98b0caef3c32fbbf0f2513", + "size": 49733 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-linux", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-linux.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-linux.jar", + "sha1": "1b87e969bba6b3fb7b347210ba90a7647aae174c", + "size": 45451 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "sha1": "efba1976bea5faafe3aaabb0461d10c1ac6d5c0f", + "size": 42410 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-macos", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-macos.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-macos.jar", + "sha1": "2e98ca816f3799450b791f2d51eed553aa67d730", + "size": 45985 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-windows-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "sha1": "a272ef20fed86cefe009091ab9a904a2c6db957b", + "size": 112201 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-windows-x86", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "sha1": "5cdb58fb74b60b4347a5a2c881f70adf82d7f4be", + "size": 111767 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3-tinyfd:3.3.4-27-CLEANROOM:natives-windows", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-windows.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3-tinyfd/3.3.4-27-CLEANROOM/lwjgl3-tinyfd-3.3.4-27-CLEANROOM-natives-windows.jar", + "sha1": "826cbe66bb582f63f63899af898952b5c5a88a98", + "size": 131465 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-linux-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-linux-arm64.jar", + "sha1": "84eb514ec951346d23d5b8edfb072d2c30aa1c07", + "size": 91420 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-linux-arm32", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-linux-arm32.jar", + "sha1": "d9345670418cf90e21521e011e1b6f6b0049bfbb", + "size": 72799 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-linux", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-linux.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-linux.jar", + "sha1": "85cd444a52c43e6e1c39231e0e3a92d724f35f6b", + "size": 94612 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "linux" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-macos-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-macos-arm64.jar", + "sha1": "f8a4b4f48f7f77bfc9c8e0d81935fb8d8734a390", + "size": 37787 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-macos", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-macos.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-macos.jar", + "sha1": "499f9d7edb0fcb0c539d327dd1b7f202cf5a7c7f", + "size": 49192 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "osx" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-windows-arm64", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-windows-arm64.jar", + "sha1": "61bd89b7579f7a4023ad441181d490aac5f4de6c", + "size": 123119 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-windows-x86", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-windows-x86.jar", + "sha1": "6cf4eb12890dbd36d08440eca0dc266f1e2e3461", + "size": 129751 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + }, + { + "name": "org.lwjgl3:lwjgl3:3.3.4-27-CLEANROOM:natives-windows", + "downloads": { + "artifact": { + "path": "org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-windows.jar", + "url": "https://repo.cleanroommc.com/snapshots/org/lwjgl3/lwjgl3/3.3.4-27-CLEANROOM/lwjgl3-3.3.4-27-CLEANROOM-natives-windows.jar", + "sha1": "729e6f638ab48bb90ae0b5bfe878164fbd60319a", + "size": 152632 + } + }, + "rules": [ + { + "action": "allow", + "os": { + "name": "windows" + } + } + ] + } + ] +} \ No newline at end of file diff --git a/src/test/resources/forge/version-forge-1.12.2.json b/src/test/resources/forge/version-forge-1.12.2.json new file mode 100644 index 00000000..e18a305e --- /dev/null +++ b/src/test/resources/forge/version-forge-1.12.2.json @@ -0,0 +1,261 @@ +{ + "_comment_": [ + "Please do not automate the download and installation of Forge.", + "Our efforts are supported by ads from the download page.", + "If you MUST automate this, please consider supporting the project through https://www.patreon.com/LexManos/" + ], + "id": "1.12.2-forge-14.23.5.2860", + "time": "2021-12-13T04:40:03+00:00", + "releaseTime": "2021-12-13T04:40:03+00:00", + "type": "release", + "mainClass": "net.minecraft.launchwrapper.Launch", + "inheritsFrom": "1.12.2", + "logging": { + + }, + "minecraftArguments": "--username ${auth_player_name} --version ${version_name} --gameDir ${game_directory} --assetsDir ${assets_root} --assetIndex ${assets_index_name} --uuid ${auth_uuid} --accessToken ${auth_access_token} --userType ${user_type} --tweakClass net.minecraftforge.fml.common.launcher.FMLTweaker --versionType Forge", + "libraries": [ + { + "name": "net.minecraftforge:forge:1.12.2-14.23.5.2860", + "downloads": { + "artifact": { + "path": "net/minecraftforge/forge/1.12.2-14.23.5.2860/forge-1.12.2-14.23.5.2860.jar", + "url": "", + "sha1": "029250575d3aa2cf80b56dffb66238a1eeaea2ac", + "size": 4466148 + } + } + }, + { + "name": "org.ow2.asm:asm-debug-all:5.2", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-debug-all/5.2/asm-debug-all-5.2.jar", + "sha1": "3354e11e2b34215f06dab629ab88e06aca477c19", + "size": 387903 + } + } + }, + { + "name": "net.minecraft:launchwrapper:1.12", + "downloads": { + "artifact": { + "path": "net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar", + "url": "https://libraries.minecraft.net/net/minecraft/launchwrapper/1.12/launchwrapper-1.12.jar", + "sha1": "111e7bea9c968cdb3d06ef4632bf7ff0824d0f36", + "size": 32999 + } + } + }, + { + "name": "org.jline:jline:3.5.1", + "downloads": { + "artifact": { + "path": "org/jline/jline/3.5.1/jline-3.5.1.jar", + "url": "https://maven.minecraftforge.net/org/jline/jline/3.5.1/jline-3.5.1.jar", + "sha1": "51800e9d7a13608894a5a28eed0f5c7fa2f300fb", + "size": 614590 + } + } + }, + { + "name": "com.typesafe.akka:akka-actor_2.11:2.3.3", + "downloads": { + "artifact": { + "path": "com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar", + "url": "https://maven.minecraftforge.net/com/typesafe/akka/akka-actor_2.11/2.3.3/akka-actor_2.11-2.3.3.jar", + "sha1": "ed62e9fc709ca0f2ff1a3220daa8b70a2870078e", + "size": 2514991 + } + } + }, + { + "name": "com.typesafe:config:1.2.1", + "downloads": { + "artifact": { + "path": "com/typesafe/config/1.2.1/config-1.2.1.jar", + "url": "https://maven.minecraftforge.net/com/typesafe/config/1.2.1/config-1.2.1.jar", + "sha1": "f771f71fdae3df231bcd54d5ca2d57f0bf93f467", + "size": 219554 + } + } + }, + { + "name": "org.scala-lang:scala-actors-migration_2.11:1.1.0", + "downloads": { + "artifact": { + "path": "org/scala-lang/scala-actors-migration_2.11/1.1.0/scala-actors-migration_2.11-1.1.0.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/scala-actors-migration_2.11/1.1.0/scala-actors-migration_2.11-1.1.0.jar", + "sha1": "dfa8bc42b181d5b9f1a5dd147f8ae308b893eb6f", + "size": 58018 + } + } + }, + { + "name": "org.scala-lang:scala-compiler:2.11.1", + "downloads": { + "artifact": { + "path": "org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/scala-compiler/2.11.1/scala-compiler-2.11.1.jar", + "sha1": "56ea2e6c025e0821f28d73ca271218b8dd04926a", + "size": 13449765 + } + } + }, + { + "name": "org.scala-lang.plugins:scala-continuations-library_2.11:1.0.2_mc", + "downloads": { + "artifact": { + "path": "org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2_mc/scala-continuations-library_2.11-1.0.2_mc.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/plugins/scala-continuations-library_2.11/1.0.2_mc/scala-continuations-library_2.11-1.0.2_mc.jar", + "sha1": "0e517c53a7e9acd6b1668c5a35eccbaa3bab9aac", + "size": 25365 + } + } + }, + { + "name": "org.scala-lang.plugins:scala-continuations-plugin_2.11.1:1.0.2_mc", + "downloads": { + "artifact": { + "path": "org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2_mc/scala-continuations-plugin_2.11.1-1.0.2_mc.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/plugins/scala-continuations-plugin_2.11.1/1.0.2_mc/scala-continuations-plugin_2.11.1-1.0.2_mc.jar", + "sha1": "f361a3283452c57fa30c1ee69448995de23c60f7", + "size": 206575 + } + } + }, + { + "name": "org.scala-lang:scala-library:2.11.1", + "downloads": { + "artifact": { + "path": "org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/scala-library/2.11.1/scala-library-2.11.1.jar", + "sha1": "0e11da23da3eabab9f4777b9220e60d44c1aab6a", + "size": 5538130 + } + } + }, + { + "name": "org.scala-lang:scala-parser-combinators_2.11:1.0.1", + "downloads": { + "artifact": { + "path": "org/scala-lang/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/scala-parser-combinators_2.11/1.0.1/scala-parser-combinators_2.11-1.0.1.jar", + "sha1": "f05d7345bf5a58924f2837c6c1f4d73a938e1ff0", + "size": 419701 + } + } + }, + { + "name": "org.scala-lang:scala-reflect:2.11.1", + "downloads": { + "artifact": { + "path": "org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/scala-reflect/2.11.1/scala-reflect-2.11.1.jar", + "sha1": "6580347e61cc7f8e802941e7fde40fa83b8badeb", + "size": 4372892 + } + } + }, + { + "name": "org.scala-lang:scala-swing_2.11:1.0.1", + "downloads": { + "artifact": { + "path": "org/scala-lang/scala-swing_2.11/1.0.1/scala-swing_2.11-1.0.1.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/scala-swing_2.11/1.0.1/scala-swing_2.11-1.0.1.jar", + "sha1": "b1cdd92bd47b1e1837139c1c53020e86bb9112ae", + "size": 726500 + } + } + }, + { + "name": "org.scala-lang:scala-xml_2.11:1.0.2", + "downloads": { + "artifact": { + "path": "org/scala-lang/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar", + "url": "https://maven.minecraftforge.net/org/scala-lang/scala-xml_2.11/1.0.2/scala-xml_2.11-1.0.2.jar", + "sha1": "7a80ec00aec122fba7cd4e0d4cdd87ff7e4cb6d0", + "size": 648679 + } + } + }, + { + "name": "lzma:lzma:0.0.1", + "downloads": { + "artifact": { + "path": "lzma/lzma/0.0.1/lzma-0.0.1.jar", + "url": "https://libraries.minecraft.net/lzma/lzma/0.0.1/lzma-0.0.1.jar", + "sha1": "521616dc7487b42bef0e803bd2fa3faf668101d7", + "size": 5762 + } + } + }, + { + "name": "java3d:vecmath:1.5.2", + "downloads": { + "artifact": { + "path": "java3d/vecmath/1.5.2/vecmath-1.5.2.jar", + "url": "https://libraries.minecraft.net/java3d/vecmath/1.5.2/vecmath-1.5.2.jar", + "sha1": "79846ba34cbd89e2422d74d53752f993dcc2ccaf", + "size": 318956 + } + } + }, + { + "name": "net.sf.trove4j:trove4j:3.0.3", + "downloads": { + "artifact": { + "path": "net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar", + "url": "https://libraries.minecraft.net/net/sf/trove4j/trove4j/3.0.3/trove4j-3.0.3.jar", + "sha1": "42ccaf4761f0dfdfa805c9e340d99a755907e2dd", + "size": 2523218 + } + } + }, + { + "name": "org.apache.maven:maven-artifact:3.5.3", + "downloads": { + "artifact": { + "path": "org/apache/maven/maven-artifact/3.5.3/maven-artifact-3.5.3.jar", + "url": "https://maven.minecraftforge.net/org/apache/maven/maven-artifact/3.5.3/maven-artifact-3.5.3.jar", + "sha1": "7dc72b6d6d8a6dced3d294ed54c2cc3515ade9f4", + "size": 54961 + } + } + }, + { + "name": "net.sf.jopt-simple:jopt-simple:5.0.3", + "downloads": { + "artifact": { + "path": "net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar", + "url": "https://libraries.minecraft.net/net/sf/jopt-simple/jopt-simple/5.0.3/jopt-simple-5.0.3.jar", + "sha1": "cdd846cfc4e0f7eefafc02c0f5dce32b9303aa2a", + "size": 78175 + } + } + }, + { + "name": "org.apache.logging.log4j:log4j-api:2.15.0", + "downloads": { + "artifact": { + "path": "org/apache/logging/log4j/log4j-api/2.15.0/log4j-api-2.15.0.jar", + "url": "https://maven.minecraftforge.net/org/apache/logging/log4j/log4j-api/2.15.0/log4j-api-2.15.0.jar", + "sha1": "4a5aa7e55a29391c6f66e0b259d5189aa11e45d0", + "size": 301804 + } + } + }, + { + "name": "org.apache.logging.log4j:log4j-core:2.15.0", + "downloads": { + "artifact": { + "path": "org/apache/logging/log4j/log4j-core/2.15.0/log4j-core-2.15.0.jar", + "url": "https://maven.minecraftforge.net/org/apache/logging/log4j/log4j-core/2.15.0/log4j-core-2.15.0.jar", + "sha1": "ba55c13d7ac2fd44df9cc8074455719a33f375b9", + "size": 1789769 + } + } + } + ] +} \ No newline at end of file diff --git a/src/test/resources/forge/version-forge-1.20.2.json b/src/test/resources/forge/version-forge-1.20.2.json new file mode 100644 index 00000000..a7236374 --- /dev/null +++ b/src/test/resources/forge/version-forge-1.20.2.json @@ -0,0 +1,385 @@ +{ + "_comment_": [ + "Please do not automate the download and installation of Forge.", + "Our efforts are supported by ads from the download page.", + "If you MUST automate this, please consider supporting the project through https://www.patreon.com/LexManos/" + ], + "id": "1.20.2-forge-48.1.0", + "time": "2023-12-06T18:35:54+00:00", + "releaseTime": "2023-12-06T18:35:54+00:00", + "type": "release", + "mainClass": "net.minecraftforge.bootstrap.BootstrapLauncher", + "inheritsFrom": "1.20.2", + "logging": { + + }, + "arguments": { + "game": [ + "--launchTarget", + "forge_client", + "--fml.forgeVersion", + "48.1.0", + "--fml.mcVersion", + "1.20.2", + "--fml.forgeGroup", + "net.minecraftforge", + "--fml.mcpVersion", + "20230921.100330" + ], + "jvm": [ + "-Djava.net.preferIPv6Addresses=system", + "-DignoreList=JarJarFileSystems-,asm-,asm-analysis-,asm-commons-,asm-tree-,asm-util-,bootstrap-,client-extra-,failureaccess-,fmlcore-,forge-,guava-,javafmllanguage-,lowcodelanguage-,mclanguage-,securemodules-,unsafe-,${version_name}.jar", + "-DmergeModules=jna-5.10.0.jar,jna-platform-5.10.0.jar", + "-DlibraryDirectory=${library_directory}", + "-p", + "${library_directory}/net/minecraftforge/bootstrap/1.2.0/bootstrap-1.2.0.jar${classpath_separator}${library_directory}/net/minecraftforge/securemodules/2.2.3/securemodules-2.2.3.jar${classpath_separator}${library_directory}/net/minecraftforge/unsafe/0.9.2/unsafe-0.9.2.jar${classpath_separator}${library_directory}/org/ow2/asm/asm/9.6/asm-9.6.jar${classpath_separator}${library_directory}/org/ow2/asm/asm-tree/9.6/asm-tree-9.6.jar${classpath_separator}${library_directory}/org/ow2/asm/asm-util/9.6/asm-util-9.6.jar${classpath_separator}${library_directory}/org/ow2/asm/asm-commons/9.6/asm-commons-9.6.jar${classpath_separator}${library_directory}/org/ow2/asm/asm-analysis/9.6/asm-analysis-9.6.jar${classpath_separator}${library_directory}/net/minecraftforge/JarJarFileSystems/0.3.19/JarJarFileSystems-0.3.19.jar${classpath_separator}${library_directory}/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar${classpath_separator}${library_directory}/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", + "--add-modules", + "ALL-MODULE-PATH", + "--add-exports", + "jdk.naming.dns/com.sun.jndi.dns=java.naming" + ] + }, + "libraries": [ + { + "name": "net.minecraftforge:unsafe:0.9.2", + "downloads": { + "artifact": { + "path": "net/minecraftforge/unsafe/0.9.2/unsafe-0.9.2.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/unsafe/0.9.2/unsafe-0.9.2.jar", + "sha1": "33bad02861cabd77c54a8c9d1205e8638bbbbb4f", + "size": 7768 + } + } + }, + { + "name": "net.minecraftforge:securemodules:2.2.3", + "downloads": { + "artifact": { + "path": "net/minecraftforge/securemodules/2.2.3/securemodules-2.2.3.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/securemodules/2.2.3/securemodules-2.2.3.jar", + "sha1": "5a784c87cf99b4b6db15d576f5110b00af25ced0", + "size": 95961 + } + } + }, + { + "name": "org.ow2.asm:asm:9.6", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm/9.6/asm-9.6.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm/9.6/asm-9.6.jar", + "sha1": "aa205cf0a06dbd8e04ece91c0b37c3f5d567546a", + "size": 123598 + } + } + }, + { + "name": "org.ow2.asm:asm-tree:9.6", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-tree/9.6/asm-tree-9.6.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-tree/9.6/asm-tree-9.6.jar", + "sha1": "c0cdda9d211e965d2a4448aa3fd86110f2f8c2de", + "size": 51935 + } + } + }, + { + "name": "org.ow2.asm:asm-util:9.6", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-util/9.6/asm-util-9.6.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-util/9.6/asm-util-9.6.jar", + "sha1": "f77caf84eb93786a749b2baa40865b9613e3eaee", + "size": 91131 + } + } + }, + { + "name": "org.ow2.asm:asm-commons:9.6", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-commons/9.6/asm-commons-9.6.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-commons/9.6/asm-commons-9.6.jar", + "sha1": "f1a9e5508eff490744144565c47326c8648be309", + "size": 72194 + } + } + }, + { + "name": "org.ow2.asm:asm-analysis:9.6", + "downloads": { + "artifact": { + "path": "org/ow2/asm/asm-analysis/9.6/asm-analysis-9.6.jar", + "url": "https://maven.minecraftforge.net/org/ow2/asm/asm-analysis/9.6/asm-analysis-9.6.jar", + "sha1": "9ce6c7b174bd997fc2552dff47964546bd7a5ec3", + "size": 34041 + } + } + }, + { + "name": "net.minecraftforge:accesstransformers:8.1.1", + "downloads": { + "artifact": { + "path": "net/minecraftforge/accesstransformers/8.1.1/accesstransformers-8.1.1.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/accesstransformers/8.1.1/accesstransformers-8.1.1.jar", + "sha1": "55b3a0604fec2b22c183a3e49b6f3da4e7aaaf27", + "size": 76622 + } + } + }, + { + "name": "org.antlr:antlr4-runtime:4.9.1", + "downloads": { + "artifact": { + "path": "org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar", + "url": "https://maven.minecraftforge.net/org/antlr/antlr4-runtime/4.9.1/antlr4-runtime-4.9.1.jar", + "sha1": "428664f05d2b7f7b7610204b5aa7c1763f62011a", + "size": 337868 + } + } + }, + { + "name": "net.minecraftforge:eventbus:6.2.0", + "downloads": { + "artifact": { + "path": "net/minecraftforge/eventbus/6.2.0/eventbus-6.2.0.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/eventbus/6.2.0/eventbus-6.2.0.jar", + "sha1": "0861291db776b4817a800758311a88c9a42a55e9", + "size": 54084 + } + } + }, + { + "name": "net.jodah:typetools:0.6.3", + "downloads": { + "artifact": { + "path": "net/jodah/typetools/0.6.3/typetools-0.6.3.jar", + "url": "https://maven.minecraftforge.net/net/jodah/typetools/0.6.3/typetools-0.6.3.jar", + "sha1": "a01aaa6ddaea9ec07ec4f209487b7a46a526283a", + "size": 18281 + } + } + }, + { + "name": "net.minecraftforge:forgespi:7.1.0", + "downloads": { + "artifact": { + "path": "net/minecraftforge/forgespi/7.1.0/forgespi-7.1.0.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/forgespi/7.1.0/forgespi-7.1.0.jar", + "sha1": "48348f02f312527ac7b5f1e9105c4cb01a875b0c", + "size": 29762 + } + } + }, + { + "name": "net.minecraftforge:coremods:5.1.0", + "downloads": { + "artifact": { + "path": "net/minecraftforge/coremods/5.1.0/coremods-5.1.0.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/coremods/5.1.0/coremods-5.1.0.jar", + "sha1": "51c71425f6b216763c7a452b31d51ffa20de8804", + "size": 24255 + } + } + }, + { + "name": "org.openjdk.nashorn:nashorn-core:15.3", + "downloads": { + "artifact": { + "path": "org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar", + "url": "https://maven.minecraftforge.net/org/openjdk/nashorn/nashorn-core/15.3/nashorn-core-15.3.jar", + "sha1": "43977e804697048fc8d81d333a36c17d07a5b3dd", + "size": 2167288 + } + } + }, + { + "name": "net.minecraftforge:modlauncher:10.1.1", + "downloads": { + "artifact": { + "path": "net/minecraftforge/modlauncher/10.1.1/modlauncher-10.1.1.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/modlauncher/10.1.1/modlauncher-10.1.1.jar", + "sha1": "f00115c910f869fd937b0d6fa36543f41587911e", + "size": 130692 + } + } + }, + { + "name": "net.minecraftforge:mergetool-api:1.0", + "downloads": { + "artifact": { + "path": "net/minecraftforge/mergetool-api/1.0/mergetool-api-1.0.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/mergetool-api/1.0/mergetool-api-1.0.jar", + "sha1": "589fac8080d2eb657bb37f464151abcd25524d64", + "size": 2624 + } + } + }, + { + "name": "com.electronwill.night-config:toml:3.6.4", + "downloads": { + "artifact": { + "path": "com/electronwill/night-config/toml/3.6.4/toml-3.6.4.jar", + "url": "https://maven.minecraftforge.net/com/electronwill/night-config/toml/3.6.4/toml-3.6.4.jar", + "sha1": "51d6cefb2b55ee55ee26b16391212fb2c7dfb4f4", + "size": 31816 + } + } + }, + { + "name": "com.electronwill.night-config:core:3.6.4", + "downloads": { + "artifact": { + "path": "com/electronwill/night-config/core/3.6.4/core-3.6.4.jar", + "url": "https://maven.minecraftforge.net/com/electronwill/night-config/core/3.6.4/core-3.6.4.jar", + "sha1": "510f174abbf1c947494db50ef2445683bd52c230", + "size": 199834 + } + } + }, + { + "name": "org.apache.maven:maven-artifact:3.8.5", + "downloads": { + "artifact": { + "path": "org/apache/maven/maven-artifact/3.8.5/maven-artifact-3.8.5.jar", + "url": "https://maven.minecraftforge.net/org/apache/maven/maven-artifact/3.8.5/maven-artifact-3.8.5.jar", + "sha1": "4433f50c07debefaed0553bd0068f4f48d449313", + "size": 58077 + } + } + }, + { + "name": "net.minecrell:terminalconsoleappender:1.2.0", + "downloads": { + "artifact": { + "path": "net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar", + "url": "https://maven.minecraftforge.net/net/minecrell/terminalconsoleappender/1.2.0/terminalconsoleappender-1.2.0.jar", + "sha1": "96d02cd3b384ff015a8fef4223bcb4ccf1717c95", + "size": 15977 + } + } + }, + { + "name": "org.jline:jline-reader:3.12.1", + "downloads": { + "artifact": { + "path": "org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar", + "url": "https://maven.minecraftforge.net/org/jline/jline-reader/3.12.1/jline-reader-3.12.1.jar", + "sha1": "4382ab1382c7b6f379377ed5f665dc2f6e1218bc", + "size": 150765 + } + } + }, + { + "name": "org.jline:jline-terminal:3.12.1", + "downloads": { + "artifact": { + "path": "org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar", + "url": "https://maven.minecraftforge.net/org/jline/jline-terminal/3.12.1/jline-terminal-3.12.1.jar", + "sha1": "c777448314e050d980a6b697c140f3bfe9eb7416", + "size": 211712 + } + } + }, + { + "name": "org.spongepowered:mixin:0.8.5", + "downloads": { + "artifact": { + "path": "org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar", + "url": "https://maven.minecraftforge.net/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar", + "sha1": "9d1c0c3a304ae6697ecd477218fa61b850bf57fc", + "size": 1089277 + } + } + }, + { + "name": "net.minecraftforge:JarJarFileSystems:0.3.19", + "downloads": { + "artifact": { + "path": "net/minecraftforge/JarJarFileSystems/0.3.19/JarJarFileSystems-0.3.19.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/JarJarFileSystems/0.3.19/JarJarFileSystems-0.3.19.jar", + "sha1": "2464eb7d6b9ddb9db36a82cf8a95193e5c6fe020", + "size": 32195 + } + } + }, + { + "name": "net.minecraftforge:JarJarSelector:0.3.19", + "downloads": { + "artifact": { + "path": "net/minecraftforge/JarJarSelector/0.3.19/JarJarSelector-0.3.19.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/JarJarSelector/0.3.19/JarJarSelector-0.3.19.jar", + "sha1": "376cc9c8ea60720cf027c01fc033de915699801c", + "size": 17374 + } + } + }, + { + "name": "net.minecraftforge:JarJarMetadata:0.3.19", + "downloads": { + "artifact": { + "path": "net/minecraftforge/JarJarMetadata/0.3.19/JarJarMetadata-0.3.19.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/JarJarMetadata/0.3.19/JarJarMetadata-0.3.19.jar", + "sha1": "0083feaa9b770e6ac0e96ee4fc23fa89325c5fe2", + "size": 15895 + } + } + }, + { + "name": "net.minecraftforge:bootstrap:1.2.0", + "downloads": { + "artifact": { + "path": "net/minecraftforge/bootstrap/1.2.0/bootstrap-1.2.0.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/bootstrap/1.2.0/bootstrap-1.2.0.jar", + "sha1": "ef7d81393a75915531d76e4f51743b65859e82f6", + "size": 8292 + } + } + }, + { + "name": "com.google.guava:guava:32.1.2-jre", + "downloads": { + "artifact": { + "path": "com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar", + "url": "https://libraries.minecraft.net/com/google/guava/guava/32.1.2-jre/guava-32.1.2-jre.jar", + "sha1": "5e64ec7e056456bef3a4bc4c6fdaef71e8ab6318", + "size": 3041591 + } + } + }, + { + "name": "com.google.guava:failureaccess:1.0.1", + "downloads": { + "artifact": { + "path": "com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", + "url": "https://libraries.minecraft.net/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar", + "sha1": "1dcf1de382a0bf95a3d8b0849546c88bac1292c9", + "size": 4617 + } + } + }, + { + "name": "net.minecraftforge:fmlloader:1.20.2-48.1.0", + "downloads": { + "artifact": { + "path": "net/minecraftforge/fmlloader/1.20.2-48.1.0/fmlloader-1.20.2-48.1.0.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/fmlloader/1.20.2-48.1.0/fmlloader-1.20.2-48.1.0.jar", + "sha1": "71b9fc8011f62aaae50d1d14b2e27e413fa483b5", + "size": 256205 + } + } + }, + { + "name": "net.minecraftforge:fmlearlydisplay:1.20.2-48.1.0", + "downloads": { + "artifact": { + "path": "net/minecraftforge/fmlearlydisplay/1.20.2-48.1.0/fmlearlydisplay-1.20.2-48.1.0.jar", + "url": "https://maven.minecraftforge.net/net/minecraftforge/fmlearlydisplay/1.20.2-48.1.0/fmlearlydisplay-1.20.2-48.1.0.jar", + "sha1": "b5951e49178b49352d118c441c5ae3218ed5db26", + "size": 170473 + } + } + } + ] +} \ No newline at end of file