From 40b3ebc80e1bb7ec440297d3dfafd062bca2f486 Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Fri, 20 May 2022 11:22:05 +0100 Subject: [PATCH] Add property to control if a remap jar includes client only entries. --- src/main/java/net/fabricmc/loom/task/RemapJarTask.java | 10 +++++++++- .../net/fabricmc/loom/task/RemapTaskConfiguration.java | 1 + 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java index fe1e53b4..ccdcccde 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java @@ -93,6 +93,9 @@ public abstract class RemapJarTask extends AbstractRemapJarTask { @Input public abstract Property getAddNestedDependencies(); + @Input + public abstract Property getIncludesClientOnlyClasses(); + private Supplier tinyRemapperService = Suppliers.memoize(() -> TinyRemapperService.getOrCreate(this)); @Inject @@ -101,6 +104,7 @@ public abstract class RemapJarTask extends AbstractRemapJarTask { getClasspath().from(getProject().getConfigurations().getByName(JavaPlugin.COMPILE_CLASSPATH_CONFIGURATION_NAME)); getAddNestedDependencies().convention(true).finalizeValueOnRead(); + getIncludesClientOnlyClasses().convention(false).finalizeValueOnRead(); Configuration includeConfiguration = getProject().getConfigurations().getByName(Constants.Configurations.INCLUDE); getNestedJars().from(new IncludedJarFactory(getProject()).getNestedJars(includeConfiguration)); @@ -144,7 +148,11 @@ public abstract class RemapJarTask extends AbstractRemapJarTask { setupLegacyMixinRefmapRemapping(params); } - if (extension.areEnvironmentSourceSetsSplit()) { + if (getIncludesClientOnlyClasses().get()) { + if (!extension.areEnvironmentSourceSetsSplit()) { + throw new UnsupportedOperationException("Jar cannot include client only classes as the sources are not split"); + } + final List clientOnlyJarEntries = getClientOnlyJarEntries(); params.getManifestAttributes().set(Map.of( "Fabric-Loom-Split-Environment", "true", diff --git a/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java b/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java index bedd5c52..4d54eefb 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java +++ b/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java @@ -68,6 +68,7 @@ public class RemapTaskConfiguration { // Setup the input file and the nested deps task.getInputFile().convention(jarTask.getArchiveFile()); task.dependsOn(tasks.named(JavaPlugin.JAR_TASK_NAME)); + task.getIncludesClientOnlyClasses().set(project.provider(extension::areEnvironmentSourceSetsSplit)); }); // Configure the default jar task