From bb51c8d0401d6a5770ddbae8e99a4ce2fc366549 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Sun, 16 Nov 2025 23:26:48 +0100 Subject: [PATCH 1/3] Add support for --launcher-meta-uri to NeoFormRuntimeTask for unobfuscated version support --- .../neoforged/nfrtgradle/NeoFormRuntimeTask.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java index 15c83004..1bd13408 100644 --- a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java +++ b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java @@ -22,6 +22,7 @@ import org.gradle.api.tasks.Input; import org.gradle.api.tasks.InputFiles; import org.gradle.api.tasks.Internal; +import org.gradle.api.tasks.Optional; import org.gradle.jvm.toolchain.JavaLanguageVersion; import org.gradle.jvm.toolchain.JavaToolchainService; import org.gradle.process.ExecOperations; @@ -53,6 +54,15 @@ public abstract class NeoFormRuntimeTask extends DefaultTask { @InputFiles public abstract ConfigurableFileCollection getNeoFormRuntime(); + /** + * URL for the Minecraft Launcher manifest used to resolve Minecraft version information. + * When none is given, it defaults to {@code https://piston-meta.mojang.com/mc/game/version_manifest_v2.json}. + */ + @Input + @Optional + public abstract Property getLauncherManifestUrl(); + + /** * Enable verbose output for the NFRT engine. Defaults to false. */ @@ -125,6 +135,11 @@ public final void run(List args) { realArgs.add(2, "--work-dir"); realArgs.add(3, getWorkDirectory().get().getAsFile().getAbsolutePath()); + if (getLauncherManifestUrl().isPresent()) { + realArgs.add("--launcher-meta-uri"); + realArgs.add(getLauncherManifestUrl().get()); + } + if (getVerbose().get()) { realArgs.add("--verbose"); } From 302b30b4d65ae9ad0d9df4cd111d3dfa309da003 Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Sun, 16 Nov 2025 23:35:36 +0100 Subject: [PATCH 2/3] Add support for --launcher-meta-uri to NeoFormRuntimeTask for unobfuscated version support --- src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java index 1bd13408..173d1400 100644 --- a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java +++ b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java @@ -62,7 +62,6 @@ public abstract class NeoFormRuntimeTask extends DefaultTask { @Optional public abstract Property getLauncherManifestUrl(); - /** * Enable verbose output for the NFRT engine. Defaults to false. */ From bea6e252f2b30422990f205acbb215f37fc06bca Mon Sep 17 00:00:00 2001 From: Sebastian Hartte Date: Sun, 16 Nov 2025 23:59:08 +0100 Subject: [PATCH 3/3] Wire up the launcher manifest URL with the extension and a gradle property. --- README.md | 4 ++++ .../neoforged/nfrtgradle/NeoFormRuntimeExtension.java | 9 +++++++++ .../net/neoforged/nfrtgradle/NeoFormRuntimePlugin.java | 1 + 3 files changed, 14 insertions(+) diff --git a/README.md b/README.md index 85d6d468..5b771588 100644 --- a/README.md +++ b/README.md @@ -662,6 +662,10 @@ neoFormRuntime { // Print more information when NFRT cannot use a cached result // Gradle Property: neoForge.neoFormRuntime.analyzeCacheMisses analyzeCacheMisses = true + + // Overrides the launcher manifest URL used by NFRT to look up Minecraft versions + // Gradle Property: neoForge.neoFormRuntime.launcherManifestUrl + launcherManifestUrl = "https://.../version_manifest_v2.json" } ``` diff --git a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeExtension.java b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeExtension.java index 2c9fb23f..347be540 100644 --- a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeExtension.java +++ b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeExtension.java @@ -21,6 +21,7 @@ public NeoFormRuntimeExtension(Project project) { getEnableCache().convention(PropertyUtils.getBooleanProperty(project, "neoForge.neoFormRuntime.enableCache").orElse(true)); getVerbose().convention(PropertyUtils.getBooleanProperty(project, "neoForge.neoFormRuntime.verbose").orElse(false)); getAnalyzeCacheMisses().convention(PropertyUtils.getBooleanProperty(project, "neoForge.neoFormRuntime.analyzeCacheMisses").orElse(false)); + getLauncherManifestUrl().convention(PropertyUtils.getStringProperty(project, "neoForge.neoFormRuntime.launcherManifestUrl")); } /** @@ -66,4 +67,12 @@ public NeoFormRuntimeExtension(Project project) { * Gradle property: {@code neoForge.neoFormRuntime.analyzeCacheMisses}. */ public abstract Property getAnalyzeCacheMisses(); + + /** + * URL for the Minecraft Launcher manifest used to resolve Minecraft version information. + *

+ * Default: {@code https://piston-meta.mojang.com/mc/game/version_manifest_v2.json}
+ * Gradle property: {@code neoForge.neoFormRuntime.launcherManifestUrl}. + */ + public abstract Property getLauncherManifestUrl(); } diff --git a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimePlugin.java b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimePlugin.java index c84d1bbb..5719020f 100644 --- a/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimePlugin.java +++ b/src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimePlugin.java @@ -39,6 +39,7 @@ public void apply(Project project) { project.getTasks().withType(NeoFormRuntimeTask.class).configureEach(task -> { task.getNeoFormRuntime().convention(toolConfiguration); task.getVerbose().convention(extension.getVerbose()); + task.getLauncherManifestUrl().convention(extension.getLauncherManifestUrl()); // Every invocation of NFRT should inherit the tools it's using itself via Gradle task.addArtifactsToManifest(externalToolsConfiguration); });