diff --git a/src/main/java/dev/architectury/loom/metadata/ArchitecturyCommonJson.java b/src/main/java/dev/architectury/loom/metadata/ArchitecturyCommonJson.java index c0e4489809..68742e2c15 100644 --- a/src/main/java/dev/architectury/loom/metadata/ArchitecturyCommonJson.java +++ b/src/main/java/dev/architectury/loom/metadata/ArchitecturyCommonJson.java @@ -18,6 +18,7 @@ import net.fabricmc.loom.LoomGradlePlugin; import net.fabricmc.loom.configuration.ifaceinject.InterfaceInjectionProcessor; +import net.fabricmc.loom.util.ModPlatform; public final class ArchitecturyCommonJson implements JsonBackedModMetadataFile, SingleIdModMetadataFile { public static final String FILE_NAME = "architectury.common.json"; @@ -108,7 +109,7 @@ public String getFileName() { } @Override - public List getMixinConfigs() { + public List getMixinConfigs(@Nullable ModPlatform platform) { return List.of(); } diff --git a/src/main/java/dev/architectury/loom/metadata/ErroringModMetadataFile.java b/src/main/java/dev/architectury/loom/metadata/ErroringModMetadataFile.java index 38d0b3688a..ff5ee89ec7 100644 --- a/src/main/java/dev/architectury/loom/metadata/ErroringModMetadataFile.java +++ b/src/main/java/dev/architectury/loom/metadata/ErroringModMetadataFile.java @@ -6,6 +6,7 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.VisibleForTesting; +import net.fabricmc.loom.util.ModPlatform; import net.fabricmc.loom.configuration.ifaceinject.InterfaceInjectionProcessor; /** @@ -42,7 +43,7 @@ public String getFileName() { } @Override - public List getMixinConfigs() { + public List getMixinConfigs(@Nullable ModPlatform platform) { return List.of(); } } diff --git a/src/main/java/dev/architectury/loom/metadata/ModMetadataFile.java b/src/main/java/dev/architectury/loom/metadata/ModMetadataFile.java index ded523d409..bfc396c3a4 100644 --- a/src/main/java/dev/architectury/loom/metadata/ModMetadataFile.java +++ b/src/main/java/dev/architectury/loom/metadata/ModMetadataFile.java @@ -6,6 +6,7 @@ import org.jetbrains.annotations.Nullable; import net.fabricmc.loom.configuration.ifaceinject.InterfaceInjectionProcessor; +import net.fabricmc.loom.util.ModPlatform; import net.fabricmc.loom.util.function.CollectionUtil; /** @@ -48,5 +49,5 @@ public interface ModMetadataFile { /** * {@return a list of the mixin configs declared in this mod metadata file}. */ - List getMixinConfigs(); + List getMixinConfigs(@Nullable ModPlatform platform); } diff --git a/src/main/java/dev/architectury/loom/metadata/ModsToml.java b/src/main/java/dev/architectury/loom/metadata/ModsToml.java index 5546a85360..e53592fb3f 100644 --- a/src/main/java/dev/architectury/loom/metadata/ModsToml.java +++ b/src/main/java/dev/architectury/loom/metadata/ModsToml.java @@ -14,11 +14,13 @@ import com.electronwill.nightconfig.core.Config; import com.electronwill.nightconfig.core.io.ParsingException; import com.electronwill.nightconfig.toml.TomlParser; +import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import org.jetbrains.annotations.Nullable; import net.fabricmc.loom.configuration.ifaceinject.InterfaceInjectionProcessor; import net.fabricmc.loom.util.ExceptionUtil; +import net.fabricmc.loom.util.ModPlatform; public final class ModsToml implements ModMetadataFile { public static final String FILE_PATH = "META-INF/mods.toml"; @@ -83,7 +85,21 @@ public String getFileName() { } @Override - public List getMixinConfigs() { + public List getMixinConfigs(@Nullable ModPlatform platform) { + if (platform == ModPlatform.NEOFORGE) { + Optional> mixins = config.getOptional("mixins"); + if (mixins.isEmpty()) return List.of(); + + final ImmutableList.Builder configs = ImmutableList.builder(); + + for (final Config mixin : mixins.get()) { + final Optional config = mixin.getOptional("config"); + config.ifPresent(configs::add); + } + + return configs.build(); + } + return List.of(); } diff --git a/src/main/java/dev/architectury/loom/metadata/QuiltModJson.java b/src/main/java/dev/architectury/loom/metadata/QuiltModJson.java index 05044f9932..cd43433c94 100644 --- a/src/main/java/dev/architectury/loom/metadata/QuiltModJson.java +++ b/src/main/java/dev/architectury/loom/metadata/QuiltModJson.java @@ -20,6 +20,7 @@ import net.fabricmc.loom.LoomGradlePlugin; import net.fabricmc.loom.configuration.ifaceinject.InterfaceInjectionProcessor; +import net.fabricmc.loom.util.ModPlatform; import net.fabricmc.loom.util.function.CollectionUtil; public final class QuiltModJson implements JsonBackedModMetadataFile, SingleIdModMetadataFile { @@ -107,7 +108,7 @@ public List getInjectedInterfaces } @Override - public List getMixinConfigs() { + public List getMixinConfigs(@Nullable ModPlatform platform) { // RFC 0002: The `mixin` field: // Type: Array/String // Required: False diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java index ff2d328dd6..5640f6f619 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java @@ -237,7 +237,7 @@ private void setupLegacyMixinRefmapRemapping(RemapParams params) { final FabricModJson fabricModJson = FabricModJsonFactory.createFromZipNullable(getInputFile().getAsFile().get().toPath()); if (fabricModJson != null) { - allMixinConfigs.addAll(fabricModJson.getMixinConfigurations()); + allMixinConfigs.addAll(fabricModJson.getMixinConfigurations(extension.getPlatform().get())); } if (getReadMixinConfigsFromManifest().get()) { diff --git a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJson.java b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJson.java index 5e5cc379cc..176bbf07af 100644 --- a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJson.java +++ b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJson.java @@ -32,6 +32,9 @@ import com.google.gson.JsonElement; import com.google.gson.JsonObject; + +import net.fabricmc.loom.util.ModPlatform; + import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.VisibleForTesting; @@ -53,7 +56,11 @@ public String getId() { @Nullable public abstract JsonElement getCustom(String key); - public abstract List getMixinConfigurations(); + public final List getMixinConfigurations() { + return getMixinConfigurations(null); + } + + public abstract List getMixinConfigurations(@Nullable ModPlatform platform); public abstract Map getClassTweakers(); diff --git a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV0.java b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV0.java index 935b0cea80..a661d406e5 100644 --- a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV0.java +++ b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV0.java @@ -35,6 +35,8 @@ import com.google.gson.JsonPrimitive; import org.jetbrains.annotations.Nullable; +import net.fabricmc.loom.util.ModPlatform; + @Deprecated public final class FabricModJsonV0 extends FabricModJson { FabricModJsonV0(JsonObject jsonObject, FabricModJsonSource source) { @@ -53,7 +55,7 @@ public JsonElement getCustom(String key) { } @Override - public List getMixinConfigurations() { + public List getMixinConfigurations(@Nullable ModPlatform platform) { final JsonObject mixinsObject = jsonObject.getAsJsonObject("mixins"); if (mixinsObject == null) { diff --git a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV1.java b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV1.java index 16239e0bc3..a55a5b7eca 100644 --- a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV1.java +++ b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV1.java @@ -38,6 +38,8 @@ import com.google.gson.JsonPrimitive; import org.jetbrains.annotations.Nullable; +import net.fabricmc.loom.util.ModPlatform; + public final class FabricModJsonV1 extends FabricModJson { FabricModJsonV1(JsonObject jsonObject, FabricModJsonSource source) { super(jsonObject, source); @@ -69,7 +71,7 @@ static JsonElement getCustom(JsonObject jsonObject, String key) { } @Override - public List getMixinConfigurations() { + public List getMixinConfigurations(@Nullable ModPlatform platform) { final JsonArray mixinArray = jsonObject.getAsJsonArray("mixins"); if (mixinArray == null) { diff --git a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV2.java b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV2.java index ed52bef463..398359321a 100644 --- a/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV2.java +++ b/src/main/java/net/fabricmc/loom/util/fmj/FabricModJsonV2.java @@ -36,6 +36,7 @@ import org.jetbrains.annotations.ApiStatus; import org.jetbrains.annotations.Nullable; +import net.fabricmc.loom.util.ModPlatform; import net.fabricmc.loom.util.Pair; @ApiStatus.Experimental @@ -56,7 +57,7 @@ public JsonElement getCustom(String key) { } @Override - public List getMixinConfigurations() { + public List getMixinConfigurations(@Nullable ModPlatform platform) { if (!jsonObject.has("mixins")) { return Collections.emptyList(); } diff --git a/src/main/java/net/fabricmc/loom/util/fmj/ModMetadataFabricModJson.java b/src/main/java/net/fabricmc/loom/util/fmj/ModMetadataFabricModJson.java index a60f6a4e85..2b899650dc 100644 --- a/src/main/java/net/fabricmc/loom/util/fmj/ModMetadataFabricModJson.java +++ b/src/main/java/net/fabricmc/loom/util/fmj/ModMetadataFabricModJson.java @@ -39,6 +39,7 @@ import org.gradle.api.tasks.SourceSet; import org.jetbrains.annotations.Nullable; +import net.fabricmc.loom.util.ModPlatform; import net.fabricmc.loom.util.gradle.SourceSetHelper; public final class ModMetadataFabricModJson extends FabricModJson { @@ -115,8 +116,8 @@ public int getVersion() { } @Override - public List getMixinConfigurations() { - return modMetadata.getMixinConfigs(); + public List getMixinConfigurations(@Nullable ModPlatform platform) { + return modMetadata.getMixinConfigs(platform); } @Override