From 20ea426a7a0341294378e05f9b4aa6e42a0469e8 Mon Sep 17 00:00:00 2001 From: modmuss Date: Tue, 2 Jan 2024 22:35:22 +0000 Subject: [PATCH] Ensure that modImplementation is processed first, so any installer.json on that configuration takes priority. (#1015) --- .../configuration/mods/ModConfigurationRemapper.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java b/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java index 85f2c28b..1564e8bb 100644 --- a/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java +++ b/src/main/java/net/fabricmc/loom/configuration/mods/ModConfigurationRemapper.java @@ -30,6 +30,7 @@ import java.io.UncheckedIOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.ArrayList; +import java.util.Comparator; import java.util.HashMap; import java.util.LinkedHashMap; import java.util.List; @@ -83,7 +84,16 @@ public class ModConfigurationRemapper { // Client remapped dep collectors for split source sets. Same keys and values. final Map clientConfigsToRemap = new HashMap<>(); - for (RemapConfigurationSettings entry : extension.getRemapConfigurations()) { + /* + * Hack fix/improvement for https://github.com/FabricMC/fabric-loom/issues/1012 + * Ensure that modImplementation is processed first, so any installer.json on that configuration takes priority. + */ + final List remapConfigurationSettings = extension.getRemapConfigurations() + .stream() + .sorted(Comparator.comparing(setting -> !setting.getName().equals("modImplementation"))) + .toList(); + + for (RemapConfigurationSettings entry : remapConfigurationSettings) { // key: true if runtime, false if compile final Map envToEnabled = ImmutableMap.of( false, entry.getOnCompileClasspath().get(),