From 07cf50f5706cb2ef58bd98fc981fb8fd710808cf Mon Sep 17 00:00:00 2001 From: Danhoby <37343749+Dan4oby@users.noreply.github.com> Date: Thu, 15 Oct 2026 15:43:55 +0300 Subject: [PATCH] feat(mmc): add compatibleJavaName hint for PrismLauncher --- .../gradle/api/task/dist/PublishMmcPackZip.java | 8 ++++++++ .../gradle/api/util/lazy/Providers.java | 14 ++++++++++++++ .../cleanroommc/gradle/env/DistributionTasks.java | 2 ++ 3 files changed, 24 insertions(+) diff --git a/src/main/java/com/cleanroommc/gradle/api/task/dist/PublishMmcPackZip.java b/src/main/java/com/cleanroommc/gradle/api/task/dist/PublishMmcPackZip.java index ae4555d..72de546 100644 --- a/src/main/java/com/cleanroommc/gradle/api/task/dist/PublishMmcPackZip.java +++ b/src/main/java/com/cleanroommc/gradle/api/task/dist/PublishMmcPackZip.java @@ -190,6 +190,9 @@ private static void writeZip(File output, Map files) { @Input public abstract ListProperty getCompatibleJavaMajors(); + @Input + public abstract Property getCompatibleJavaName(); + @Input public abstract Property getUniversalCoordinate(); @@ -298,6 +301,11 @@ private JsonObject forgePatchJson(JsonArray libraries, String lwjglVersion) { getCompatibleJavaMajors().get().forEach(javaMajors::add); patch.add("compatibleJavaMajors", javaMajors); } + + if (!getCompatibleJavaName().get().isEmpty()) { + patch.addProperty("compatibleJavaName", getCompatibleJavaName().get(); + } + if (!tweakers.isEmpty()) { patch.add("+tweakers", tweakers); } diff --git a/src/main/java/com/cleanroommc/gradle/api/util/lazy/Providers.java b/src/main/java/com/cleanroommc/gradle/api/util/lazy/Providers.java index 84df95f..3d07fb1 100644 --- a/src/main/java/com/cleanroommc/gradle/api/util/lazy/Providers.java +++ b/src/main/java/com/cleanroommc/gradle/api/util/lazy/Providers.java @@ -29,6 +29,20 @@ public static Provider targetJavaMajor(Project project) { return targetJavaVersion(project).map(JavaLanguageVersion::asInt); } + public static Provider targetJavaName(Project project) { + return targetJavaMajor(project).map(Providers::javaRuntimeName); + } + + // mojang jre names + public static String javaRuntimeName(int major) { + if (major >= 29) return ""; + if (major >= 25) return "java-runtime-epsilon"; + if (major >= 21) return "java-runtime-delta"; + if (major >= 17) return "java-runtime-beta"; + if (major >= 16) return "java-runtime-alpha"; + return "jre-legacy"; + } + public static Provider javaLauncher(Project project) { return javaLauncher(project.getExtensions().getByType(JavaToolchainService.class), targetJavaVersion(project)); } diff --git a/src/main/java/com/cleanroommc/gradle/env/DistributionTasks.java b/src/main/java/com/cleanroommc/gradle/env/DistributionTasks.java index f663c3b..e72db76 100644 --- a/src/main/java/com/cleanroommc/gradle/env/DistributionTasks.java +++ b/src/main/java/com/cleanroommc/gradle/env/DistributionTasks.java @@ -136,6 +136,7 @@ public DistributionTasks(Project project, ProjectCoordinates coordinates, Caches var javaExtension = project.getExtensions().getByType(JavaPluginExtension.class); var targetJavaMajor = Providers.targetJavaMajor(project); + var targetJavaName = Providers.targetJavaName(project); var mainSourceSet = javaExtension.getSourceSets().named(SourceSet.MAIN_SOURCE_SET_NAME); var jarTask = project.getTasks().named("jar", Jar.class); @@ -474,6 +475,7 @@ public DistributionTasks(Project project, ProjectCoordinates coordinates, Caches task.getMainClass().set(clientLaunchClass); task.getTweakers().set(clientTweakClass.map(List::of)); task.getCompatibleJavaMajors().set(targetJavaMajor.map(List::of)); + task.getCompatibleJavaName().set(targetJavaName); task.getUniversalCoordinate().set(universal.map(Coordinate::serialized)); task.getUniversalUrl().set(universalUrl); task.getUniversalJar().set(this.universalJar.flatMap(Jar::getArchiveFile));