From 689293f52c1ae22a30dbf284b5f03429861a546f Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Mon, 11 May 2020 13:20:12 +0100 Subject: [PATCH] Add a check to ensure the correct mc version is being used with the correct yarn version. This only applies to yarn mappings as there isnt a solid way to do this for other mappings. --- .../fabricmc/loom/providers/MappingsProvider.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java index c514315..d86855f 100644 --- a/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java +++ b/src/main/java/net/fabricmc/loom/providers/MappingsProvider.java @@ -95,10 +95,20 @@ public class MappingsProvider extends DependencyProvider { File mappingsJar = dependency.resolveFile().orElseThrow(() -> new RuntimeException("Could not find yarn mappings: " + dependency)); this.mappingsName = StringUtils.removeSuffix(dependency.getDependency().getGroup() + "." + dependency.getDependency().getName(), "-unmerged"); + this.minecraftVersion = minecraftProvider.getMinecraftVersion(); + + // Only do this for official yarn, there isn't really a way we can get the mc version for all mappings + if (dependency.getDependency().getGroup() != null && dependency.getDependency().getGroup().equals("net.fabricmc") && dependency.getDependency().getName().equals("yarn") && dependency.getDependency().getVersion() != null) { + String yarnVersion = dependency.getDependency().getVersion(); + char separator = yarnVersion.contains("+build.") ? '+' : yarnVersion.contains("-") ? '-' : '.'; + String yarnMinecraftVersion = yarnVersion.substring(0, yarnVersion.lastIndexOf(separator)); + + if (!yarnMinecraftVersion.equalsIgnoreCase(minecraftVersion)) { + throw new RuntimeException(String.format("Minecraft Version (%s) does not match yarn's minecraft version (%s)", minecraftVersion, yarnMinecraftVersion)); + } + } boolean isV2 = doesJarContainV2Mappings(mappingsJar.toPath()); - - this.minecraftVersion = minecraftProvider.getMinecraftVersion(); this.mappingsVersion = version + (isV2 ? "-v2" : ""); initFiles();