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 85f2c28ba..1564e8bbb 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.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 static void supplyModConfigurations(Project project, SharedServiceManager // 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(),