From ba3735c68e1681ad1164daf926f8104b912d6aba Mon Sep 17 00:00:00 2001 From: shedaniel Date: Wed, 20 Jan 2021 20:00:06 +0800 Subject: Allow configuring additional local sourceSets. --- .../fabricmc/loom/configuration/ide/RunConfig.java | 23 +++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java') diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java index 8553b18a..4b60be99 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfig.java @@ -33,6 +33,8 @@ import java.util.HashMap; import java.util.List; import java.util.Locale; import java.util.Map; +import java.util.UUID; +import java.util.function.Supplier; import java.util.stream.Collectors; import java.util.stream.Stream; import java.util.stream.StreamSupport; @@ -45,7 +47,6 @@ import com.google.gson.JsonObject; import org.apache.commons.io.FileUtils; import org.apache.commons.io.IOUtils; import org.gradle.api.Project; -import org.gradle.api.plugins.JavaPluginConvention; import org.gradle.api.tasks.SourceSet; import org.gradle.plugins.ide.eclipse.model.EclipseModel; import org.w3c.dom.Document; @@ -156,16 +157,20 @@ public class RunConfig { } if (extension.isForge()) { - SourceSet main = project.getConvention().getPlugin(JavaPluginConvention.class).getSourceSets().getByName("main"); + List modClasses = new ArrayList<>(); - String modClasses = Stream.concat( - Stream.of(main.getOutput().getResourcesDir().getAbsolutePath()), - StreamSupport.stream(main.getOutput().getClassesDirs().spliterator(), false) - .map(File::getAbsolutePath) - ).map(s -> "loom%%" + s) - .collect(Collectors.joining(File.pathSeparator)); + for (Supplier sourceSetSupplier : extension.forgeLocalMods) { + SourceSet sourceSet = sourceSetSupplier.get(); + String sourceSetName = sourceSet.getName() + "_" + UUID.randomUUID().toString().replace("-", "").substring(0, 7); - runConfig.envVariables.put("MOD_CLASSES", modClasses); + Stream.concat( + Stream.of(sourceSet.getOutput().getResourcesDir().getAbsolutePath()), + StreamSupport.stream(sourceSet.getOutput().getClassesDirs().spliterator(), false) + .map(File::getAbsolutePath) + ).map(s -> sourceSetName + "%%" + s).collect(Collectors.toCollection(() -> modClasses)); + } + + runConfig.envVariables.put("MOD_CLASSES", String.join(File.pathSeparator, modClasses)); } if (extension.getLoaderLaunchMethod().equals("launchwrapper")) { -- cgit