diff --git a/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java b/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java index d1b2a6ad..432b5dc9 100644 --- a/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java +++ b/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java @@ -114,7 +114,7 @@ public interface LoomGradleExtensionAPI { } default List getRuntimeRemapConfigurations() { - return getRemapConfigurations().stream().filter(element -> element.getOnCompileClasspath().get()).toList(); + return getRemapConfigurations().stream().filter(element -> element.getOnRuntimeClasspath().get()).toList(); } @ApiStatus.Experimental diff --git a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java index d0417961..c3a904c9 100644 --- a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java @@ -94,9 +94,14 @@ public abstract class AnnotationProcessorInvoker { try { LoomGradleExtension loom = LoomGradleExtension.get(project); String refmapName = Objects.requireNonNull(MixinExtension.getMixinInformationContainer(sourceSet)).refmapNameProvider().get(); + + final File mixinMappings = getMixinMappingsForSourceSet(project, sourceSet); + + task.getOutputs().file(mixinMappings).withPropertyName("mixin-ap-" + sourceSet.getName()).optional(); + Map args = new HashMap<>() {{ put(Constants.MixinArguments.IN_MAP_FILE_NAMED_INTERMEDIARY, loom.getMappingConfiguration().tinyMappings.toFile().getCanonicalPath()); - put(Constants.MixinArguments.OUT_MAP_FILE_NAMED_INTERMEDIARY, getMixinMappingsForSourceSet(project, sourceSet).getCanonicalPath()); + put(Constants.MixinArguments.OUT_MAP_FILE_NAMED_INTERMEDIARY, mixinMappings.getCanonicalPath()); put(Constants.MixinArguments.OUT_REFMAP_FILE, getRefmapDestination(task, refmapName)); put(Constants.MixinArguments.DEFAULT_OBFUSCATION_ENV, "named:" + loom.getMixin().getRefmapTargetNamespace().get()); put(Constants.MixinArguments.QUIET, "true"); diff --git a/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java b/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java index 18d55451..2d2041b6 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java +++ b/src/main/java/net/fabricmc/loom/decompilers/fernflower/FabricFernFlowerDecompiler.java @@ -61,6 +61,11 @@ public final class FabricFernFlowerDecompiler implements LoomDecompiler { } ff.addSource(compiledJar.toFile()); - ff.decompileContext(); + + try { + ff.decompileContext(); + } finally { + ff.clearContext(); + } } } diff --git a/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java b/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java index f1948b59..334ed6e3 100644 --- a/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/AbstractRemapJarTask.java @@ -29,6 +29,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.nio.file.Path; +import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.Set; @@ -99,6 +100,9 @@ public abstract class AbstractRemapJarTask extends Jar { @Input public abstract Property getIncludesClientOnlyClasses(); + @Input + public abstract ListProperty getAdditionalClientOnlyEntries(); + private final Provider jarManifestServiceProvider; @Inject @@ -128,7 +132,8 @@ public abstract class AbstractRemapJarTask extends Jar { params.getJarManifestService().set(jarManifestServiceProvider); if (getIncludesClientOnlyClasses().get()) { - final List clientOnlyEntries = getClientOnlyEntries(); + final List clientOnlyEntries = new ArrayList<>(getClientOnlyEntries()); + clientOnlyEntries.addAll(getAdditionalClientOnlyEntries().get()); applyClientOnlyManifestAttributes(params, clientOnlyEntries); params.getClientOnlyEntries().set(clientOnlyEntries.stream().filter(s -> s.endsWith(".class")).toList()); }