From 2b9072f37d8d20595a778dd2da89fbb0892340bd Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Mon, 16 Jan 2023 18:19:48 +0000 Subject: [PATCH] Add RemapConfigurationSettings.getApplyDependencyTransforms to close #797 (#799) --- .../fabricmc/loom/api/RemapConfigurationSettings.java | 10 ++++++++++ .../loom/configuration/processors/SpecContextImpl.java | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java b/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java index cd88e5a9..b1b00e0b 100644 --- a/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java +++ b/src/main/java/net/fabricmc/loom/api/RemapConfigurationSettings.java @@ -60,6 +60,7 @@ public abstract class RemapConfigurationSettings implements Named { getOnCompileClasspath().finalizeValueOnRead(); getOnRuntimeClasspath().finalizeValueOnRead(); getPublishingMode().convention(PublishingMode.NONE).finalizeValueOnRead(); + getApplyDependencyTransforms().convention(defaultDependencyTransforms()).finalizeValueOnRead(); } @Override @@ -100,6 +101,11 @@ public abstract class RemapConfigurationSettings implements Named { */ public abstract Property getPublishingMode(); + /** + * @return true when dependencies should be evaluated for minecraft jar transforms such as transitive Access Wideners or Injected interfaces. + */ + public abstract Property getApplyDependencyTransforms(); + public enum PublishingMode { NONE, COMPILE_ONLY(JavaPlugin.API_ELEMENTS_CONFIGURATION_NAME), @@ -174,4 +180,8 @@ public abstract class RemapConfigurationSettings implements Named { private NamedDomainObjectProvider getConfigurationByName(String name) { return getProject().getConfigurations().named(name); } + + private Provider defaultDependencyTransforms() { + return getSourceSet().map(sourceSet -> sourceSet.getName().equals(SourceSet.MAIN_SOURCE_SET_NAME) || sourceSet.getName().equals("client")); + } } diff --git a/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java b/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java index cc23c801..bc26a01b 100644 --- a/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java +++ b/src/main/java/net/fabricmc/loom/configuration/processors/SpecContextImpl.java @@ -113,10 +113,12 @@ public record SpecContextImpl(List modDependencies, List runtimeEntries = extension.getRuntimeRemapConfigurations().stream() + .filter(settings -> settings.getApplyDependencyTransforms().get()) .flatMap(resolve) .toList(); return extension.getCompileRemapConfigurations().stream() + .filter(settings -> settings.getApplyDependencyTransforms().get()) .flatMap(resolve) .filter(runtimeEntries::contains) // Use the intersection of the two configurations. .map(FabricModJsonFactory::createFromZipOptional)