Allow specifying multiple mixin configs for forge

This commit is contained in:
shedaniel
2020-12-30 15:58:41 +08:00
parent e507000686
commit 7a1bf32134
3 changed files with 25 additions and 33 deletions

View File

@@ -24,14 +24,17 @@
package net.fabricmc.loom;
import java.io.IOException;
import java.util.HashSet;
import java.util.Map;
import java.util.Optional;
import java.util.Set;
import com.google.common.collect.ImmutableMap;
import groovy.util.Node;
import net.fabricmc.loom.providers.*;
import net.fabricmc.loom.task.AbstractLoomTask;
import net.fabricmc.loom.task.RemapAllSourcesTask;
import net.fabricmc.loom.task.RemapJarTask;
import net.fabricmc.loom.task.RemapSourcesJarTask;
import net.fabricmc.loom.util.*;
import net.fabricmc.loom.util.mixin.JavaApInvoker;
import net.fabricmc.loom.util.mixin.KaptApInvoker;
import net.fabricmc.loom.util.mixin.ScalaApInvoker;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.Task;
@@ -52,32 +55,8 @@ import org.gradle.api.tasks.bundling.Jar;
import org.gradle.api.tasks.javadoc.Javadoc;
import org.gradle.plugins.ide.idea.model.IdeaModel;
import net.fabricmc.loom.providers.ForgeProvider;
import net.fabricmc.loom.providers.ForgeUniversalProvider;
import net.fabricmc.loom.providers.ForgeUserdevProvider;
import net.fabricmc.loom.providers.LaunchProvider;
import net.fabricmc.loom.providers.MappingsCache;
import net.fabricmc.loom.providers.MappingsProvider;
import net.fabricmc.loom.providers.McpConfigProvider;
import net.fabricmc.loom.providers.MinecraftProvider;
import net.fabricmc.loom.providers.PatchProvider;
import net.fabricmc.loom.task.AbstractLoomTask;
import net.fabricmc.loom.task.RemapAllSourcesTask;
import net.fabricmc.loom.task.RemapJarTask;
import net.fabricmc.loom.task.RemapSourcesJarTask;
import net.fabricmc.loom.util.Constants;
import net.fabricmc.loom.util.DownloadUtil;
import net.fabricmc.loom.util.FabricApiExtension;
import net.fabricmc.loom.util.GroovyXmlUtil;
import net.fabricmc.loom.util.JarRemapper;
import net.fabricmc.loom.util.LoomDependencyManager;
import net.fabricmc.loom.util.NestedJars;
import net.fabricmc.loom.util.RemappedConfigurationEntry;
import net.fabricmc.loom.util.SetupIntelijRunConfigs;
import net.fabricmc.loom.util.SourceRemapper;
import net.fabricmc.loom.util.mixin.JavaApInvoker;
import net.fabricmc.loom.util.mixin.KaptApInvoker;
import net.fabricmc.loom.util.mixin.ScalaApInvoker;
import java.io.IOException;
import java.util.*;
public class AbstractPlugin implements Plugin<Project> {
protected Project project;
@@ -295,9 +274,14 @@ public class AbstractPlugin implements Plugin<Project> {
if (extension.isForge()) {
remapJarTask.getToM().set("srg");
((Jar) jarTask).manifest(manifest -> {
List<String> configs = new ArrayList<>();
if (extension.mixinConfig != null) {
manifest.attributes(ImmutableMap.of("MixinConfigs", extension.mixinConfig));
configs.add(extension.mixinConfig);
}
if (extension.mixinConfigs != null) {
configs.addAll(extension.mixinConfigs);
}
manifest.attributes(ImmutableMap.of("MixinConfigs", String.join(",", configs)));
});
}

View File

@@ -77,6 +77,7 @@ public class LoomGradleExtension {
public Function<String, Object> intermediaryUrl = mcVer -> "https://maven.fabricmc.net/net/fabricmc/intermediary/" + mcVer + "/intermediary-" + mcVer + "-v2.jar";
public boolean shareCaches = false;
public String mixinConfig = null; // FORGE: Passed to Minecraft
public List<String> mixinConfigs = null; // FORGE: Passed to Minecraft
private final ConfigurableFileCollection unmappedMods;

View File

@@ -87,11 +87,18 @@ public class LaunchProvider extends DependencyProvider {
.property("net.minecraftforge.gradle.GradleStart.srg.srg-mcp", getExtension().getMappingsProvider().srgToNamedSrg.getAbsolutePath());
String mixinConfig = getExtension().mixinConfig;
List<String> mixinConfigs = getExtension().mixinConfigs;
if (mixinConfig != null) {
launchConfig.argument("-mixin.config");
launchConfig.argument(mixinConfig);
}
if (mixinConfigs != null) {
for (String config : mixinConfigs) {
launchConfig.argument("-mixin.config");
launchConfig.argument(config);
}
}
}
//Enable ansi by default for idea and vscode