diff --git a/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java b/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java index ca7da77e..7da1ea1e 100644 --- a/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java @@ -75,6 +75,7 @@ public abstract class AbstractRemapJarTask extends Jar { public static final String MANIFEST_NAMESPACE_KEY = "Fabric-Mapping-Namespace"; public static final String MANIFEST_SPLIT_ENV_KEY = "Fabric-Loom-Split-Environment"; public static final String MANIFEST_CLIENT_ENTRIES_KEY = "Fabric-Loom-Client-Only-Entries"; + public static final String MANIFEST_JAR_TYPE_KEY = "Fabric-Jar-Type"; public static final Attributes.Name MANIFEST_SPLIT_ENV_NAME = new Attributes.Name(MANIFEST_SPLIT_ENV_KEY); public static final Attributes.Name MANIFEST_CLIENT_ENTRIES_NAME = new Attributes.Name(MANIFEST_CLIENT_ENTRIES_KEY); @@ -112,6 +113,11 @@ public abstract class AbstractRemapJarTask extends Jar { @Optional public abstract Property getClientOnlySourceSetName(); + @Input + @Optional + @ApiStatus.Internal + public abstract Property getJarType(); + private final Provider jarManifestServiceProvider; @Inject @@ -120,6 +126,7 @@ public abstract class AbstractRemapJarTask extends Jar { getTargetNamespace().convention(MappingsNamespace.INTERMEDIARY.toString()).finalizeValueOnRead(); getRemapperIsolation().convention(false).finalizeValueOnRead(); getIncludesClientOnlyClasses().convention(false).finalizeValueOnRead(); + getJarType().finalizeValueOnRead(); jarManifestServiceProvider = JarManifestService.get(getProject()); usesService(jarManifestServiceProvider); @@ -149,6 +156,10 @@ public abstract class AbstractRemapJarTask extends Jar { params.getClientOnlyEntries().set(clientOnlyEntries.stream().filter(s -> s.endsWith(".class")).toList()); } + if (getJarType().isPresent()) { + params.getManifestAttributes().put(MANIFEST_JAR_TYPE_KEY, getJarType().get()); + } + action.execute(params); }); } diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java index e680792c..9639f3d1 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java @@ -109,6 +109,8 @@ public abstract class RemapJarTask extends AbstractRemapJarTask { // Make outputs reproducible by default setReproducibleFileOrder(true); setPreserveFileTimestamps(false); + + getJarType().set("classes"); } private void setupPreparationTask() { diff --git a/src/main/java/net/fabricmc/loom/task/RemapSourcesJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapSourcesJarTask.java index cca9638e..2a9424ac 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapSourcesJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/RemapSourcesJarTask.java @@ -51,6 +51,7 @@ public abstract class RemapSourcesJarTask extends AbstractRemapJarTask { serviceManagerProvider = BuildSharedServiceManager.createForTask(this, getBuildEventsListenerRegistry()); getClasspath().from(getProject().getConfigurations().getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME)); + getJarType().set("sources"); } @TaskAction