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)