aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/net/fabricmc/loom/LoomGradleExtension.java
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-01-20 20:00:06 +0800
committershedaniel <daniel@shedaniel.me>2021-01-20 20:00:06 +0800
commitba3735c68e1681ad1164daf926f8104b912d6aba (patch)
treeb164d5e0549cef6a5b68734bb619e408e61b01e5 /src/main/java/net/fabricmc/loom/LoomGradleExtension.java
parentc57b28e5b6034f2cfcb2c06e5e067ad91056e582 (diff)
downloadarchitectury-loom-ba3735c68e1681ad1164daf926f8104b912d6aba.tar.gz
architectury-loom-ba3735c68e1681ad1164daf926f8104b912d6aba.tar.bz2
architectury-loom-ba3735c68e1681ad1164daf926f8104b912d6aba.zip
Allow configuring additional local sourceSets.
Diffstat (limited to 'src/main/java/net/fabricmc/loom/LoomGradleExtension.java')
-rw-r--r--src/main/java/net/fabricmc/loom/LoomGradleExtension.java34
1 files changed, 31 insertions, 3 deletions
diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java
index 3c93cf0d..c7344c4d 100644
--- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java
+++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java
@@ -27,6 +27,7 @@ package net.fabricmc.loom;
import java.io.File;
import java.nio.file.Path;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
@@ -42,11 +43,14 @@ import java.util.stream.Collectors;
import com.google.gson.JsonObject;
import org.cadixdev.lorenz.MappingSet;
import org.cadixdev.mercury.Mercury;
+import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.file.ConfigurableFileCollection;
import org.gradle.api.plugins.BasePluginConvention;
+import org.gradle.api.plugins.JavaPluginConvention;
+import org.gradle.api.tasks.SourceSet;
import org.jetbrains.annotations.Nullable;
import net.fabricmc.loom.api.decompilers.LoomDecompiler;
@@ -98,6 +102,12 @@ public class LoomGradleExtension {
private final LazyBool forge;
private Set<File> mixinMappings = Collections.synchronizedSet(new HashSet<>());
private final List<String> tasksBeforeRun = Collections.synchronizedList(new ArrayList<>());
+ public final List<Supplier<SourceSet>> forgeLocalMods = Collections.synchronizedList(new ArrayList<>(Arrays.asList(new Supplier<SourceSet>() {
+ @Override
+ public SourceSet get() {
+ return project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName("main");
+ }
+ })));
/**
* Loom will generate a new genSources task (with a new name, based off of {@link LoomDecompiler#name()})
@@ -126,10 +136,28 @@ public class LoomGradleExtension {
return srcMercuryCache[id] != null ? srcMercuryCache[id] : (srcMercuryCache[id] = factory.get());
}
- public void addTaskBeforeRun(String task) {
- synchronized (this.tasksBeforeRun) {
- this.tasksBeforeRun.add(task);
+ public void localMods(Action<SourceSetConsumer> action) {
+ if (!isForge()) {
+ throw new UnsupportedOperationException("Not running with Forge support.");
}
+
+ action.execute(new SourceSetConsumer());
+ }
+
+ public class SourceSetConsumer {
+ public void add(Object... sourceSets) {
+ for (Object sourceSet : sourceSets) {
+ if (sourceSet instanceof SourceSet) {
+ forgeLocalMods.add(() -> (SourceSet) sourceSet);
+ } else {
+ forgeLocalMods.add(() -> project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().findByName(String.valueOf(forgeLocalMods)));
+ }
+ }
+ }
+ }
+
+ public void addTaskBeforeRun(String task) {
+ this.tasksBeforeRun.add(task);
}
public List<String> getTasksBeforeRun() {