diff --git a/src/main/java/net/fabricmc/loom/api/ModSettings.java b/src/main/java/net/fabricmc/loom/api/ModSettings.java index 471f7d65..0e0eff0e 100644 --- a/src/main/java/net/fabricmc/loom/api/ModSettings.java +++ b/src/main/java/net/fabricmc/loom/api/ModSettings.java @@ -27,6 +27,7 @@ package net.fabricmc.loom.api; import javax.inject.Inject; import org.gradle.api.Named; +import org.gradle.api.file.FileCollection; import org.gradle.api.provider.ListProperty; import org.gradle.api.tasks.SourceSet; import org.jetbrains.annotations.ApiStatus; @@ -41,6 +42,11 @@ public abstract class ModSettings implements Named { */ public abstract ListProperty getModSourceSets(); + /** + * List of classpath directories, or jar files used to populate the `fabric.classPathGroups` Fabric Loader system property. + */ + public abstract FileCollection getModFiles(); + @Inject public ModSettings() { getModSourceSets().finalizeValueOnRead(); diff --git a/src/main/java/net/fabricmc/loom/util/gradle/SourceSetHelper.java b/src/main/java/net/fabricmc/loom/util/gradle/SourceSetHelper.java index 4630bde6..4950be4f 100644 --- a/src/main/java/net/fabricmc/loom/util/gradle/SourceSetHelper.java +++ b/src/main/java/net/fabricmc/loom/util/gradle/SourceSetHelper.java @@ -56,9 +56,14 @@ public final class SourceSetHelper { } public static List getClasspath(ModSettings modSettings, Project project) { - return modSettings.getModSourceSets().get().stream() + final List files = new ArrayList<>(); + + files.addAll(modSettings.getModSourceSets().get().stream() .flatMap(sourceSet -> getClasspath(sourceSet, project).stream()) - .toList(); + .toList()); + files.addAll(modSettings.getModFiles().getFiles()); + + return Collections.unmodifiableList(files); } public static List getClasspath(SourceSet sourceSet, Project project) {