Skip to content

Commit 7e45dcc

Browse files
committed
Use J25 only if the version needs it.
1 parent 36b6845 commit 7e45dcc

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/main/java/net/neoforged/moddevgradle/internal/ModDevArtifactsWorkflow.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@ public static ModDevArtifactsWorkflow create(Project project,
112112
});
113113

114114
// it has to contain client-extra to be loaded by FML, and it must be added to the legacy CP
115-
var createArtifacts = tasks.register("createMinecraftArtifacts", CreateMinecraftArtifacts.class, task -> {
115+
var createArtifacts = tasks.register("createMinecraftArtifacts", CreateMinecraftArtifacts.class, task -> {
116116
task.setGroup(branding.internalTaskGroup());
117117
task.setDescription("Creates the NeoForge and Minecraft artifacts by invoking NFRT.");
118118
for (var configuration : createManifestConfigurations) {
@@ -123,6 +123,13 @@ public static ModDevArtifactsWorkflow create(Project project,
123123
task.getToolsJavaExecutable().set(javaToolchainService
124124
.launcherFor(spec -> spec.getLanguageVersion().set(JavaLanguageVersion.of(versionCapabilities.javaVersion())))
125125
.map(javaLauncher -> javaLauncher.getExecutablePath().getAsFile().getAbsolutePath()));
126+
// NFRT itself needs to run with a newer version of the JDK to be able to compile with -release 25, for example
127+
// It can however not run with Java 25 and compile Java 8 code while maintaining the same lambda naming.
128+
if (versionCapabilities.javaVersion() > 21) {
129+
task.getJavaExecutable().set(javaToolchainService
130+
.launcherFor(spec -> spec.getLanguageVersion().set(JavaLanguageVersion.of(versionCapabilities.javaVersion())))
131+
.map(javaLauncher -> javaLauncher.getExecutablePath().getAsFile().getAbsolutePath()));
132+
}
126133

127134
task.getAccessTransformers().from(accessTransformers);
128135
// If AT validation is enabled, add the user-supplied AT paths as files to be validated,

src/main/java/net/neoforged/nfrtgradle/NeoFormRuntimeTask.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public abstract class NeoFormRuntimeTask extends DefaultTask {
7373
*/
7474
@Input
7575
@ApiStatus.Internal
76-
protected abstract Property<String> getJavaExecutable();
76+
public abstract Property<String> getJavaExecutable();
7777

7878
@Inject
7979
@ApiStatus.Internal
@@ -113,7 +113,7 @@ public NeoFormRuntimeTask() {
113113

114114
// Run NFRT itself with Java 25
115115
getJavaExecutable().convention(getJavaToolchainService()
116-
.launcherFor(spec -> spec.getLanguageVersion().set(JavaLanguageVersion.of(25)))
116+
.launcherFor(spec -> spec.getLanguageVersion().set(JavaLanguageVersion.of(21)))
117117
.map(javaLauncher -> javaLauncher.getExecutablePath().getAsFile().getAbsolutePath()));
118118

119119
// We construct this here to keep them private from subclasses

0 commit comments

Comments
 (0)