From 2e74a84d37924aaeaec58aa140541e5370fafb2d Mon Sep 17 00:00:00 2001 From: modmuss Date: Sun, 10 Mar 2024 13:38:37 +0000 Subject: [PATCH] Check Minecraft java version (#1059) * Fix deprecation warning in Gradle 8.7 (#1056) * Check Minecraft java version * Fix * Fix * Fix --- .../providers/minecraft/MinecraftProvider.java | 12 ++++++++++++ .../providers/minecraft/MinecraftVersionMeta.java | 6 +++++- .../LayeredMappingsTestConstants.groovy | 4 ++-- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java index f206a7a9..0c966c2e 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftProvider.java @@ -31,6 +31,7 @@ import java.util.List; import java.util.Objects; import com.google.common.base.Preconditions; +import org.gradle.api.JavaVersion; import org.gradle.api.Project; import org.gradle.api.logging.Logger; import org.jetbrains.annotations.Nullable; @@ -86,6 +87,17 @@ public abstract class MinecraftProvider { getExtension()::download ); + final MinecraftVersionMeta.JavaVersion javaVersion = getVersionInfo().javaVersion(); + + if (javaVersion != null) { + final int requiredMajorJavaVersion = getVersionInfo().javaVersion().majorVersion(); + final JavaVersion requiredJavaVersion = JavaVersion.toVersion(requiredMajorJavaVersion); + + if (!JavaVersion.current().isCompatibleWith(requiredJavaVersion)) { + throw new IllegalStateException("Minecraft " + minecraftVersion + " requires Java " + requiredJavaVersion + " but Gradle is using " + JavaVersion.current()); + } + } + downloadJars(); if (provideServer()) { diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java index 7a311fbb..5325cc38 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/minecraft/MinecraftVersionMeta.java @@ -47,7 +47,8 @@ public record MinecraftVersionMeta( int minimumLauncherVersion, String releaseTime, String time, - String type + String type, + @Nullable JavaVersion javaVersion ) { private static Map OS_NAMES = Map.of( Platform.OperatingSystem.WINDOWS, "windows", @@ -168,4 +169,7 @@ public record MinecraftVersionMeta( return new File(baseDirectory, path()); } } + + public record JavaVersion(String component, int majorVersion) { + } } diff --git a/src/test/groovy/net/fabricmc/loom/test/unit/layeredmappings/LayeredMappingsTestConstants.groovy b/src/test/groovy/net/fabricmc/loom/test/unit/layeredmappings/LayeredMappingsTestConstants.groovy index fffbc67a..a5bc09ab 100644 --- a/src/test/groovy/net/fabricmc/loom/test/unit/layeredmappings/LayeredMappingsTestConstants.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/unit/layeredmappings/LayeredMappingsTestConstants.groovy @@ -34,13 +34,13 @@ interface LayeredMappingsTestConstants { client_mappings: new MinecraftVersionMeta.Download(null, "227d16f520848747a59bef6f490ae19dc290a804", 6431705, "https://launcher.mojang.com/v1/objects/227d16f520848747a59bef6f490ae19dc290a804/client.txt"), server_mappings: new MinecraftVersionMeta.Download(null, "84d80036e14bc5c7894a4fad9dd9f367d3000334", 4948536, "https://launcher.mojang.com/v1/objects/84d80036e14bc5c7894a4fad9dd9f367d3000334/server.txt") ] - public static final MinecraftVersionMeta VERSION_META_1_17 = new MinecraftVersionMeta(null, null, null, 0, DOWNLOADS_1_17, null, null, null, null, 0, null, null, null) + public static final MinecraftVersionMeta VERSION_META_1_17 = new MinecraftVersionMeta(null, null, null, 0, DOWNLOADS_1_17, null, null, null, null, 0, null, null, null, null) public static final Map DOWNLOADS_1_16_5 = [ client_mappings: new MinecraftVersionMeta.Download(null, "e3dfb0001e1079a1af72ee21517330edf52e6192", 5746047, "https://launcher.mojang.com/v1/objects/e3dfb0001e1079a1af72ee21517330edf52e6192/client.txt"), server_mappings: new MinecraftVersionMeta.Download(null, "81d5c793695d8cde63afddb40dde88e3a88132ac", 4400926, "https://launcher.mojang.com/v1/objects/81d5c793695d8cde63afddb40dde88e3a88132ac/server.txt") ] - public static final MinecraftVersionMeta VERSION_META_1_16_5 = new MinecraftVersionMeta(null, null, null, 0, DOWNLOADS_1_16_5, null, null, null, null, 0, null, null, null) + public static final MinecraftVersionMeta VERSION_META_1_16_5 = new MinecraftVersionMeta(null, null, null, 0, DOWNLOADS_1_16_5, null, null, null, null, 0, null, null, null, null) public static final String PARCHMENT_NOTATION = "org.parchmentmc.data:parchment-1.16.5:20210608-SNAPSHOT@zip" public static final String PARCHMENT_URL = "https://maven.parchmentmc.net/org/parchmentmc/data/parchment-1.16.5/20210608-SNAPSHOT/parchment-1.16.5-20210608-SNAPSHOT.zip"