From 63f2b51b2cb3bc0340a11dd61d916db0198f77a4 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Wed, 29 Dec 2021 22:06:34 +0000 Subject: [PATCH] Fix include generating modid's that are too long for loader Co-authored-by: NebelNidas --- .../loom/build/nesting/IncludedJarFactory.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/fabricmc/loom/build/nesting/IncludedJarFactory.java b/src/main/java/net/fabricmc/loom/build/nesting/IncludedJarFactory.java index 610b720..1a833a7 100644 --- a/src/main/java/net/fabricmc/loom/build/nesting/IncludedJarFactory.java +++ b/src/main/java/net/fabricmc/loom/build/nesting/IncludedJarFactory.java @@ -33,6 +33,7 @@ import java.util.Locale; import java.util.Set; import com.google.common.collect.Sets; +import com.google.common.hash.Hashing; import com.google.gson.JsonObject; import org.apache.commons.io.FileUtils; import org.gradle.api.Project; @@ -172,10 +173,18 @@ public final class IncludedJarFactory { // Generates a barebones mod for a dependency private static String generateModForDependency(Metadata metadata) { - final String modId = (metadata.group() + "_" + metadata.name() + metadata.classifier()) + String modId = (metadata.group() + "_" + metadata.name() + metadata.classifier()) .replaceAll("\\.", "_") .toLowerCase(Locale.ENGLISH); + // Fabric Loader can't handle modIds longer than 64 characters + if (modId.length() > 64) { + String hash = Hashing.sha256() + .hashString(modId, StandardCharsets.UTF_8) + .toString(); + modId = modId.substring(0, 50) + hash.substring(0, 14); + } + final JsonObject jsonObject = new JsonObject(); jsonObject.addProperty("schemaVersion", 1);