diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java index 2705898..c912da9 100644 --- a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java +++ b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java @@ -93,8 +93,6 @@ public interface LoomGradleExtension extends LoomGradleExtensionAPI { boolean isRootProject(); - boolean isShareCaches(); - default boolean ideSync() { return Boolean.parseBoolean(System.getProperty("idea.sync.active", "false")); } @@ -104,5 +102,6 @@ public interface LoomGradleExtension extends LoomGradleExtensionAPI { return String.format("https://maven.fabricmc.net/net/fabricmc/intermediary/%1$s/intermediary-%1$s-v2.jar", minecraftVersion); } - MixinApExtension getMixinApExtension(); + @Override + MixinApExtension getMixin(); } diff --git a/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java b/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java index c90a21c..bd48bd6 100644 --- a/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java +++ b/src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java @@ -31,36 +31,85 @@ import org.gradle.api.Action; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.artifacts.Dependency; import org.gradle.api.file.ConfigurableFileCollection; +import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.provider.ListProperty; +import org.gradle.api.provider.Property; import org.jetbrains.annotations.ApiStatus; import net.fabricmc.loom.api.decompilers.LoomDecompiler; import net.fabricmc.loom.configuration.ide.RunConfigSettings; import net.fabricmc.loom.configuration.processors.JarProcessor; import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpecBuilder; +import net.fabricmc.loom.util.DeprecationHelper; /** * This is the public api available exposed to build scripts. */ public interface LoomGradleExtensionAPI { - File getAccessWidener(); + @ApiStatus.Internal + DeprecationHelper getDeprecationHelper(); - void setAccessWidener(File file); + RegularFileProperty getAccessWidenerPath(); - void setShareCaches(boolean shareCaches); - - boolean isShareCaches(); - - default void shareCaches() { - setShareCaches(true); + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default File getAccessWidener() { + getDeprecationHelper().replaceWithInLoom0_11("accessWidener", "accessWidenerPath"); + return getAccessWidenerPath().getAsFile().getOrNull(); } - List getDecompilers(); + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default void setAccessWidener(File file) { + getDeprecationHelper().replaceWithInLoom0_11("accessWidener", "accessWidenerPath"); + getAccessWidenerPath().set(file); + } - void addDecompiler(LoomDecompiler decompiler); + Property getShareRemapCaches(); - List getJarProcessors(); + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default void setShareCaches(boolean shareCaches) { + getDeprecationHelper().replaceWithInLoom0_11("shareCaches", "shareRemapCaches"); + getShareRemapCaches().set(shareCaches); + } - void addJarProcessor(JarProcessor processor); + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default boolean isShareCaches() { + getDeprecationHelper().replaceWithInLoom0_11("shareCaches", "shareRemapCaches"); + return getShareRemapCaches().get(); + } + + default void shareCaches() { + getShareRemapCaches().set(true); + } + + ListProperty getGameDecompilers(); + + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default List getDecompilers() { + getDeprecationHelper().replaceWithInLoom0_11("decompilers", "gameDecompilers"); + return getGameDecompilers().get(); + } + + default void addDecompiler(LoomDecompiler decompiler) { + getGameDecompilers().add(decompiler); + } + + ListProperty getGameJarProcessors(); + + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default List getJarProcessors() { + getDeprecationHelper().replaceWithInLoom0_11("jarProcessors", "gameJarProcessors"); + return getGameJarProcessors().get(); + } + + default void addJarProcessor(JarProcessor processor) { + getGameJarProcessors().add(processor); + } ConfigurableFileCollection getLog4jConfigs(); @@ -70,13 +119,35 @@ public interface LoomGradleExtensionAPI { Dependency layered(Action action); - String getRefmapName(); + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default String getRefmapName() { + getDeprecationHelper().replaceWithInLoom0_11("refmapName", "mixin.defaultRefmapName"); + return getMixin().getDefaultRefmapName().get(); + } - void setRefmapName(String refmapName); + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default void setRefmapName(String refmapName) { + getDeprecationHelper().replaceWithInLoom0_11("refmapName", "mixin.defaultRefmapName"); + getMixin().getDefaultRefmapName().set(refmapName); + } - boolean isRemapMod(); + Property getRemapArchives(); - void setRemapMod(boolean remapMod); + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default boolean isRemapMod() { + getDeprecationHelper().replaceWithInLoom0_11("remapMod", "remapArchives"); + return getRemapArchives().get(); + } + + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default void setRemapMod(boolean remapMod) { + getDeprecationHelper().replaceWithInLoom0_11("remapMod", "remapArchives"); + getRemapArchives().set(remapMod); + } void runs(Action> action); @@ -85,7 +156,22 @@ public interface LoomGradleExtensionAPI { @ApiStatus.Experimental void mixin(Action action); - void setCustomManifest(String customManifest); + @ApiStatus.Experimental + MixinApExtensionAPI getMixin(); - String getCustomManifest(); + Property getCustomMinecraftManifest(); + + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default void setCustomManifest(String customManifest) { + getDeprecationHelper().replaceWithInLoom0_11("customManifest", "customMinecraftManifest"); + getCustomMinecraftManifest().set(customManifest); + } + + @Deprecated(forRemoval = true) + @ApiStatus.ScheduledForRemoval(inVersion = "0.11") + default String getCustomManifest() { + getDeprecationHelper().replaceWithInLoom0_11("customManifest", "customMinecraftManifest"); + return getCustomMinecraftManifest().getOrNull(); + } } diff --git a/src/main/java/net/fabricmc/loom/api/MixinApExtensionAPI.java b/src/main/java/net/fabricmc/loom/api/MixinApExtensionAPI.java index 88b7fa7..e74eecb 100644 --- a/src/main/java/net/fabricmc/loom/api/MixinApExtensionAPI.java +++ b/src/main/java/net/fabricmc/loom/api/MixinApExtensionAPI.java @@ -25,17 +25,19 @@ package net.fabricmc.loom.api; import org.gradle.api.Action; +import org.gradle.api.provider.Property; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.util.PatternSet; import org.jetbrains.annotations.ApiStatus; @ApiStatus.Experimental public interface MixinApExtensionAPI { + Property getDefaultRefmapName(); + /** * Apply Mixin AP to sourceSet. * @param sourceSet the sourceSet that applies Mixin AP. - * @param refmapName the output ref-map name. By default this will - * be {@link net.fabricmc.loom.LoomGradleExtension#getRefmapName()} + * @param refmapName the output ref-map name. By default this will be {@link #getDefaultRefmapName()} * @param action used for filter the mixin json files. By default this will be all files * with name {@code *.mixins.json} that is inside the {@code resources} folder * of {@code sourceSet}. diff --git a/src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java b/src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java index 458a5ff..27712c3 100644 --- a/src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java +++ b/src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java @@ -44,7 +44,7 @@ public final class MixinRefmapHelper { private MixinRefmapHelper() { } public static boolean addRefmapName(Project project, Path outputPath) { - MixinApExtension mixin = LoomGradleExtension.get(project).getMixinApExtension(); + MixinApExtension mixin = LoomGradleExtension.get(project).getMixin(); File output = outputPath.toFile(); return mixin.getMixinSourceSetsStream().map(sourceSet -> { 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 04c47c9..4022185 100644 --- a/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java @@ -65,7 +65,7 @@ public abstract class AnnotationProcessorInvoker { } protected static Collection getApConfigurations(Project project, Function getApConfigNameFunc) { - MixinApExtension mixin = LoomGradleExtension.get(project).getMixinApExtension(); + MixinApExtension mixin = LoomGradleExtension.get(project).getMixin(); return mixin.getApConfigurationsStream(getApConfigNameFunc).collect(Collectors.toList()); } diff --git a/src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java index a449600..b1109f1 100644 --- a/src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java @@ -46,7 +46,7 @@ public class JavaApInvoker extends AnnotationProcessorInvoker { } private static Map getInvokerTasks(Project project) { - MixinApExtension mixin = LoomGradleExtension.get(project).getMixinApExtension(); + MixinApExtension mixin = LoomGradleExtension.get(project).getMixin(); return mixin.getInvokerTasksStream(AnnotationProcessorInvoker.JAVA) .collect(Collectors.toMap(Map.Entry::getKey, entry -> Objects.requireNonNull((JavaCompile) entry.getValue()))); } diff --git a/src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java index 3fea3c6..04b00c6 100644 --- a/src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java @@ -66,7 +66,7 @@ public class KaptApInvoker extends AnnotationProcessorInvoker { } private static Map getInvokerTasks(Project project) { - MixinApExtension mixin = LoomGradleExtension.get(project).getMixinApExtension(); + MixinApExtension mixin = LoomGradleExtension.get(project).getMixin(); return mixin.getInvokerTasksStream(AnnotationProcessorInvoker.JAVA) .collect(Collectors.toMap(Map.Entry::getKey, entry -> Objects.requireNonNull((JavaCompile) entry.getValue()))); } diff --git a/src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java b/src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java index 7a3238b..8597cdd 100644 --- a/src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java +++ b/src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java @@ -47,7 +47,7 @@ public class ScalaApInvoker extends AnnotationProcessorInvoker { } private static Map getInvokerTasks(Project project) { - MixinApExtension mixin = LoomGradleExtension.get(project).getMixinApExtension(); + MixinApExtension mixin = LoomGradleExtension.get(project).getMixin(); return mixin.getInvokerTasksStream(AnnotationProcessorInvoker.SCALA) .collect(Collectors.toMap(Map.Entry::getKey, entry -> Objects.requireNonNull((ScalaCompile) entry.getValue()))); } diff --git a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java index 89bab1f..579f51f 100644 --- a/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java @@ -129,9 +129,10 @@ public final class CompileConfiguration { project.getTasks().getByName("cleanEclipse").finalizedBy(project.getTasks().getByName("cleanEclipseRuns")); SetupIntelijRunConfigs.setup(project); + extension.getRemapArchives().finalizeValue(); // Enables the default mod remapper - if (extension.isRemapMod()) { + if (extension.getRemapArchives().get()) { RemapConfiguration.setupDefaultRemap(project); } else { Jar jarTask = (Jar) project.getTasks().getByName("jar"); @@ -144,7 +145,7 @@ public final class CompileConfiguration { System.setProperty("log4j.skipJansi", "true"); project.getLogger().info("Configuring compiler arguments for Java"); - MixinApExtension mixinApExtension = LoomGradleExtension.get(project).getMixinApExtension(); + MixinApExtension mixinApExtension = LoomGradleExtension.get(project).getMixin(); mixinApExtension.init(); new JavaApInvoker(project).configureMixin(); diff --git a/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java b/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java index 039b832..f3c16ae 100644 --- a/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java +++ b/src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java @@ -97,7 +97,7 @@ public class RemapConfiguration { // TODO what is this for? Task parentTask = project.getTasks().getByName("build"); - if (extension.isShareCaches()) { + if (extension.getShareRemapCaches().get()) { Project rootProject = project.getRootProject(); if (extension.isRootProject()) { @@ -154,7 +154,7 @@ public class RemapConfiguration { }); } - if (extension.isShareCaches()) { + if (extension.getShareRemapCaches().get()) { remapSourcesJarTask.setSourceRemapper(remapper); } diff --git a/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java b/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java index 679bb94..bca3f35 100644 --- a/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java +++ b/src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java @@ -77,14 +77,15 @@ public class AccessWidenerJarProcessor implements JarProcessor { @Override public void setup() { LoomGradleExtension loomGradleExtension = LoomGradleExtension.get(project); + File awPath = loomGradleExtension.getAccessWidenerPath().get().getAsFile(); - if (!loomGradleExtension.getAccessWidener().exists()) { - throw new RuntimeException("Could not find access widener file @ " + loomGradleExtension.getAccessWidener().getAbsolutePath()); + if (!awPath.exists()) { + throw new RuntimeException("Could not find access widener file @ " + awPath.getAbsolutePath()); } - inputHash = Checksum.sha256(loomGradleExtension.getAccessWidener()); + inputHash = Checksum.sha256(awPath); - try (BufferedReader reader = new BufferedReader(new FileReader(loomGradleExtension.getAccessWidener()))) { + try (BufferedReader reader = new BufferedReader(new FileReader(awPath))) { accessWidenerReader.read(reader); } catch (IOException e) { throw new RuntimeException("Failed to read project access widener file"); diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java index c4326a9..97fa001 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java @@ -121,7 +121,7 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra } private void downloadMcJson(boolean offline) throws IOException { - if (getExtension().isShareCaches() && !getExtension().isRootProject() && versionManifestJson.exists() && !isRefreshDeps()) { + if (getExtension().getShareRemapCaches().get() && !getExtension().isRootProject() && versionManifestJson.exists() && !isRefreshDeps()) { return; } @@ -145,10 +145,10 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra Optional optionalVersion = Optional.empty(); - if (getExtension().getCustomManifest() != null) { + if (getExtension().getCustomMinecraftManifest().isPresent()) { ManifestVersion.Versions customVersion = new ManifestVersion.Versions(); customVersion.id = minecraftVersion; - customVersion.url = getExtension().getCustomManifest(); + customVersion.url = getExtension().getCustomMinecraftManifest().get(); optionalVersion = Optional.of(customVersion); getProject().getLogger().lifecycle("Using custom minecraft manifest"); } @@ -212,7 +212,7 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra } private boolean hasRecentValidManifest() throws IOException { - if (getExtension().getCustomManifest() != null) { + if (getExtension().getCustomMinecraftManifest().isPresent()) { return false; } @@ -233,7 +233,7 @@ public class MinecraftProviderImpl extends DependencyProvider implements Minecra } private void downloadJars(Logger logger) throws IOException { - if (getExtension().isShareCaches() && !getExtension().isRootProject() && minecraftClientJar.exists() && minecraftServerJar.exists() && !isRefreshDeps()) { + if (getExtension().getShareRemapCaches().get() && !getExtension().isRootProject() && minecraftClientJar.exists() && minecraftServerJar.exists() && !isRefreshDeps()) { return; } diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java index 6342de9..903d347 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java @@ -177,11 +177,13 @@ public class MappingsProviderImpl extends DependencyProvider implements Mappings LoomGradleExtension extension = getExtension(); - if (extension.getAccessWidener() != null) { - extension.addJarProcessor(new AccessWidenerJarProcessor(getProject())); + if (extension.getAccessWidenerPath().isPresent()) { + extension.getGameJarProcessors().add(new AccessWidenerJarProcessor(getProject())); } - JarProcessorManager processorManager = new JarProcessorManager(extension.getJarProcessors()); + extension.getAccessWidenerPath().finalizeValue(); + extension.getGameJarProcessors().finalizeValue(); + JarProcessorManager processorManager = new JarProcessorManager(extension.getGameJarProcessors().get()); extension.setJarProcessorManager(processorManager); processorManager.setupProcessors(); diff --git a/src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java b/src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java index 40380a4..bd51c4e 100644 --- a/src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java +++ b/src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java @@ -36,7 +36,7 @@ public final class DecompilerConfiguration { public static void setup(Project project) { LoomGradleExtension extension = LoomGradleExtension.get(project); - extension.addDecompiler(new FabricFernFlowerDecompiler(project)); - extension.addDecompiler(new FabricCFRDecompiler(project)); + extension.getGameDecompilers().add(new FabricFernFlowerDecompiler(project)); + extension.getGameDecompilers().add(new FabricCFRDecompiler(project)); } } diff --git a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java index 5b2f3a7..408e396 100644 --- a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java @@ -24,17 +24,14 @@ package net.fabricmc.loom.extension; -import java.io.File; -import java.util.ArrayList; -import java.util.List; -import java.util.Objects; - import org.gradle.api.Action; import org.gradle.api.NamedDomainObjectContainer; import org.gradle.api.Project; import org.gradle.api.artifacts.Dependency; import org.gradle.api.file.ConfigurableFileCollection; -import org.gradle.api.plugins.BasePluginConvention; +import org.gradle.api.file.RegularFileProperty; +import org.gradle.api.provider.ListProperty; +import org.gradle.api.provider.Property; import net.fabricmc.loom.api.MixinApExtensionAPI; import net.fabricmc.loom.api.decompilers.LoomDecompiler; @@ -45,72 +42,66 @@ import net.fabricmc.loom.configuration.providers.mappings.GradleMappingContext; import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpec; import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingSpecBuilder; import net.fabricmc.loom.configuration.providers.mappings.LayeredMappingsDependency; +import net.fabricmc.loom.util.DeprecationHelper; /** * This class implements the public extension api. */ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionAPI { - protected final List decompilers = new ArrayList<>(); - protected final List jarProcessors = new ArrayList<>(); + protected final DeprecationHelper deprecationHelper; + protected final ListProperty decompilers; + protected final ListProperty jarProcessors; protected final ConfigurableFileCollection log4jConfigs; - - protected File accessWidener = null; - protected boolean shareCaches = false; - protected String refmapName = null; - protected boolean remapMod = true; - protected String customManifest; + protected final RegularFileProperty accessWidener; + protected final Property shareCaches; + protected final Property remapArchives; + protected final Property customManifest; private NamedDomainObjectContainer runConfigs; protected LoomGradleExtensionApiImpl(Project project, LoomFiles directories) { this.runConfigs = project.container(RunConfigSettings.class, baseName -> new RunConfigSettings(project, baseName)); + this.decompilers = project.getObjects().listProperty(LoomDecompiler.class) + .empty(); + this.jarProcessors = project.getObjects().listProperty(JarProcessor.class) + .empty(); this.log4jConfigs = project.files(directories.getDefaultLog4jConfigFile()); + this.accessWidener = project.getObjects().fileProperty(); + this.shareCaches = project.getObjects().property(Boolean.class) + .convention(false); + this.remapArchives = project.getObjects().property(Boolean.class) + .convention(true); + this.customManifest = project.getObjects().property(String.class); + + this.deprecationHelper = new DeprecationHelper.ProjectBased(project); } @Override - public File getAccessWidener() { + public DeprecationHelper getDeprecationHelper() { + return deprecationHelper; + } + + @Override + public RegularFileProperty getAccessWidenerPath() { return accessWidener; } @Override - public void setAccessWidener(File file) { - Objects.requireNonNull(file, "Access widener file cannot be null"); - this.accessWidener = file; - } - - @Override - public void setShareCaches(boolean shareCaches) { - this.shareCaches = shareCaches; - } - - @Override - public boolean isShareCaches() { + public Property getShareRemapCaches() { return shareCaches; } @Override - public List getDecompilers() { + public ListProperty getGameDecompilers() { return decompilers; } @Override - public void addDecompiler(LoomDecompiler decompiler) { - Objects.requireNonNull(decompiler, "Decompiler cannot be null"); - decompilers.add(decompiler); - } - - @Override - public List getJarProcessors() { + public ListProperty getGameJarProcessors() { return jarProcessors; } - @Override - public void addJarProcessor(JarProcessor processor) { - Objects.requireNonNull(processor, "Jar processor cannot be null"); - jarProcessors.add(processor); - } - @Override public Dependency layered(Action action) { LayeredMappingSpecBuilder builder = new LayeredMappingSpecBuilder(); @@ -120,24 +111,8 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA } @Override - public String getRefmapName() { - if (refmapName == null || refmapName.isEmpty()) { - String defaultRefmapName = getProject().getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName() + "-refmap.json"; - getProject().getLogger().info("Could not find refmap definition, will be using default name: " + defaultRefmapName); - refmapName = defaultRefmapName; - } - - return refmapName; - } - - @Override - public void setRefmapName(String refmapName) { - this.refmapName = refmapName; - } - - @Override - public void setRemapMod(boolean remapMod) { - this.remapMod = remapMod; + public Property getRemapArchives() { + return remapArchives; } @Override @@ -155,24 +130,13 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA return log4jConfigs; } - @Override - public boolean isRemapMod() { - return remapMod; - } - @Override public void mixin(Action action) { - action.execute(getMixinApExtension()); + action.execute(getMixin()); } @Override - public void setCustomManifest(String customManifest) { - Objects.requireNonNull(customManifest, "Custom manifest cannot be null"); - this.customManifest = customManifest; - } - - @Override - public String getCustomManifest() { + public Property getCustomMinecraftManifest() { return customManifest; } @@ -180,8 +144,6 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA protected abstract LoomFiles getFiles(); - protected abstract MixinApExtension getMixinApExtension(); - // This is here to ensure that LoomGradleExtensionApiImpl compiles without any unimplemented methods private final class EnsureCompile extends LoomGradleExtensionApiImpl { private EnsureCompile() { @@ -189,6 +151,11 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA throw new RuntimeException(); } + @Override + public DeprecationHelper getDeprecationHelper() { + throw new RuntimeException("Yeah... something is really wrong"); + } + @Override protected Project getProject() { throw new RuntimeException("Yeah... something is really wrong"); @@ -200,7 +167,7 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA } @Override - protected MixinApExtension getMixinApExtension() { + public MixinApExtension getMixin() { throw new RuntimeException("Yeah... something is really wrong"); } } diff --git a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java index 436f9b6..323495c 100644 --- a/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java @@ -63,7 +63,8 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen public LoomGradleExtensionImpl(Project project, LoomFiles files) { super(project, files); this.project = project; - this.mixinApExtension = new MixinApExtensionImpl(project); + // Initiate with newInstance to allow gradle to decorate our extension + this.mixinApExtension = project.getObjects().newInstance(MixinApExtensionImpl.class, project); this.loomFiles = files; this.unmappedMods = project.files(); } @@ -164,7 +165,7 @@ public class LoomGradleExtensionImpl extends LoomGradleExtensionApiImpl implemen } @Override - public MixinApExtension getMixinApExtension() { + public MixinApExtension getMixin() { return this.mixinApExtension; } } diff --git a/src/main/java/net/fabricmc/loom/extension/MixinApExtension.java b/src/main/java/net/fabricmc/loom/extension/MixinApExtension.java index e63700b..28f64c3 100644 --- a/src/main/java/net/fabricmc/loom/extension/MixinApExtension.java +++ b/src/main/java/net/fabricmc/loom/extension/MixinApExtension.java @@ -34,6 +34,7 @@ import org.gradle.api.InvalidUserDataException; import org.gradle.api.Task; import org.gradle.api.artifacts.Configuration; import org.gradle.api.plugins.ExtraPropertiesExtension; +import org.gradle.api.provider.Provider; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.util.PatternSet; @@ -57,13 +58,13 @@ public interface MixinApExtension extends MixinApExtensionAPI { */ final class MixinInformationContainer { private final SourceSet sourceSet; - private final String refmapName; + private final Provider refmapName; private Stream mixinJsonNames; final PatternSet mixinJsonPattern; public MixinInformationContainer(@NotNull SourceSet sourceSet, - @NotNull String refmapName, + @NotNull Provider refmapName, @NotNull PatternSet mixinJsonPattern) { this.sourceSet = sourceSet; this.refmapName = refmapName; @@ -88,7 +89,7 @@ public interface MixinApExtension extends MixinApExtensionAPI { @NotNull public String getRefmapName() { - return refmapName; + return refmapName.get(); } } diff --git a/src/main/java/net/fabricmc/loom/extension/MixinApExtensionApiImpl.java b/src/main/java/net/fabricmc/loom/extension/MixinApExtensionApiImpl.java index 7632638..db06c48 100644 --- a/src/main/java/net/fabricmc/loom/extension/MixinApExtensionApiImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/MixinApExtensionApiImpl.java @@ -28,15 +28,21 @@ import org.gradle.api.Action; import org.gradle.api.InvalidUserDataException; import org.gradle.api.Project; import org.gradle.api.plugins.JavaPluginConvention; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.util.PatternSet; -import net.fabricmc.loom.LoomGradleExtension; import net.fabricmc.loom.api.MixinApExtensionAPI; public abstract class MixinApExtensionApiImpl implements MixinApExtensionAPI { protected abstract Project getProject(); - protected abstract PatternSet add0(SourceSet sourceSet, String refmapName); + + protected final PatternSet add0(SourceSet sourceSet, String refmapName) { + return add0(sourceSet, getProject().provider(() -> refmapName)); + } + + protected abstract PatternSet add0(SourceSet sourceSet, Provider refmapName); @Override public void add(SourceSet sourceSet, String refmapName, Action action) { @@ -51,14 +57,14 @@ public abstract class MixinApExtensionApiImpl implements MixinApExtensionAPI { @Override public void add(String sourceSetName, String refmapName, Action action) { - // try to find sourceSet with name sourceSetName in this project - SourceSet sourceSet = getProject().getConvention().getPlugin(JavaPluginConvention.class) - .getSourceSets().findByName(sourceSetName); + add(sourceSetName, getProject().provider(() -> refmapName), action); + } - if (sourceSet == null) { - throw new InvalidUserDataException("No sourceSet " + sourceSetName + " was found"); - } + public void add(String sourceSetName, Provider refmapName, Action action) { + add(resolveSourceSet(sourceSetName), refmapName, action); + } + public void add(SourceSet sourceSet, Provider refmapName, Action action) { PatternSet pattern = add0(sourceSet, refmapName); action.execute(pattern); } @@ -70,8 +76,7 @@ public abstract class MixinApExtensionApiImpl implements MixinApExtensionAPI { @Override public void add(SourceSet sourceSet, Action action) { - LoomGradleExtension extension = LoomGradleExtension.get(getProject()); - add(sourceSet, extension.getRefmapName(), action); + add(sourceSet, getDefaultRefmapName(), action); } @Override @@ -81,8 +86,7 @@ public abstract class MixinApExtensionApiImpl implements MixinApExtensionAPI { @Override public void add(String sourceSetName, Action action) { - LoomGradleExtension extension = LoomGradleExtension.get(getProject()); - add(sourceSetName, extension.getRefmapName(), action); + add(sourceSetName, getDefaultRefmapName(), action); } @Override @@ -90,6 +94,18 @@ public abstract class MixinApExtensionApiImpl implements MixinApExtensionAPI { add(sourceSetName, x -> { }); } + private SourceSet resolveSourceSet(String sourceSetName) { + // try to find sourceSet with name sourceSetName in this project + SourceSet sourceSet = getProject().getConvention().getPlugin(JavaPluginConvention.class) + .getSourceSets().findByName(sourceSetName); + + if (sourceSet == null) { + throw new InvalidUserDataException("No sourceSet " + sourceSetName + " was found"); + } + + return sourceSet; + } + // This is here to ensure that LoomGradleExtensionApiImpl compiles without any unimplemented methods private final class EnsureCompile extends MixinApExtensionApiImpl { private EnsureCompile() { @@ -103,7 +119,12 @@ public abstract class MixinApExtensionApiImpl implements MixinApExtensionAPI { } @Override - protected PatternSet add0(SourceSet sourceSet, String refmapName) { + public Property getDefaultRefmapName() { + throw new RuntimeException("Yeah... something is really wrong"); + } + + @Override + protected PatternSet add0(SourceSet sourceSet, Provider refmapName) { throw new RuntimeException("Yeah... something is really wrong"); } } diff --git a/src/main/java/net/fabricmc/loom/extension/MixinApExtensionImpl.java b/src/main/java/net/fabricmc/loom/extension/MixinApExtensionImpl.java index fd54110..bdd306c 100644 --- a/src/main/java/net/fabricmc/loom/extension/MixinApExtensionImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/MixinApExtensionImpl.java @@ -33,11 +33,16 @@ import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; +import javax.inject.Inject; + import org.gradle.api.Project; import org.gradle.api.Task; import org.gradle.api.UnknownTaskException; import org.gradle.api.artifacts.Configuration; +import org.gradle.api.plugins.BasePluginConvention; import org.gradle.api.plugins.JavaPluginConvention; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.Provider; import org.gradle.api.tasks.Input; import org.gradle.api.tasks.SourceSet; import org.gradle.api.tasks.util.PatternSet; @@ -46,10 +51,14 @@ import org.jetbrains.annotations.NotNull; public class MixinApExtensionImpl extends MixinApExtensionApiImpl implements MixinApExtension { private boolean isDefault; private final Project project; + private final Property defaultRefmapName; + @Inject public MixinApExtensionImpl(Project project) { this.isDefault = true; this.project = project; + this.defaultRefmapName = project.getObjects().property(String.class) + .convention(project.provider(this::getDefaultMixinRefmapName)); } @Override @@ -58,7 +67,18 @@ public class MixinApExtensionImpl extends MixinApExtensionApiImpl implements Mix } @Override - protected PatternSet add0(SourceSet sourceSet, String refmapName) { + public Property getDefaultRefmapName() { + return defaultRefmapName; + } + + private String getDefaultMixinRefmapName() { + String defaultRefmapName = getProject().getConvention().getPlugin(BasePluginConvention.class).getArchivesBaseName() + "-refmap.json"; + getProject().getLogger().info("Could not find refmap definition, will be using default name: " + defaultRefmapName); + return defaultRefmapName; + } + + @Override + protected PatternSet add0(SourceSet sourceSet, Provider refmapName) { PatternSet pattern = new PatternSet().setIncludes(Collections.singletonList("*.mixins.json")); MixinApExtension.setMixinInformationContainer(sourceSet, new MixinApExtension.MixinInformationContainer(sourceSet, refmapName, pattern)); diff --git a/src/main/java/net/fabricmc/loom/task/AbstractLoomTask.java b/src/main/java/net/fabricmc/loom/task/AbstractLoomTask.java index 01030fd..baccf22 100644 --- a/src/main/java/net/fabricmc/loom/task/AbstractLoomTask.java +++ b/src/main/java/net/fabricmc/loom/task/AbstractLoomTask.java @@ -28,10 +28,11 @@ import org.gradle.api.DefaultTask; import org.gradle.api.tasks.Internal; import net.fabricmc.loom.LoomGradleExtension; +import net.fabricmc.loom.util.Constants; public abstract class AbstractLoomTask extends DefaultTask { public AbstractLoomTask() { - setGroup("fabric"); + setGroup(Constants.TaskGroup.FABRIC); } @Internal diff --git a/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java b/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java index 89b5a37..c93c85a 100644 --- a/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java +++ b/src/main/java/net/fabricmc/loom/task/AbstractRunTask.java @@ -35,13 +35,14 @@ import org.gradle.api.Project; import org.gradle.api.tasks.JavaExec; import net.fabricmc.loom.configuration.ide.RunConfig; +import net.fabricmc.loom.util.Constants; public abstract class AbstractRunTask extends JavaExec { private final RunConfig config; public AbstractRunTask(Function configProvider) { super(); - setGroup("fabric"); + setGroup(Constants.TaskGroup.FABRIC); this.config = configProvider.apply(getProject()); setClasspath(config.sourceSet.getRuntimeClasspath()); diff --git a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java index e72e225..4c833cf 100644 --- a/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java +++ b/src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java @@ -56,7 +56,6 @@ public class GenerateSourcesTask extends AbstractLoomTask { public GenerateSourcesTask(LoomDecompiler decompiler) { this.decompiler = decompiler; - setGroup("fabric"); getOutputs().upToDateWhen((o) -> false); } diff --git a/src/main/java/net/fabricmc/loom/task/LoomTasks.java b/src/main/java/net/fabricmc/loom/task/LoomTasks.java index 79629d0..c37fcbb 100644 --- a/src/main/java/net/fabricmc/loom/task/LoomTasks.java +++ b/src/main/java/net/fabricmc/loom/task/LoomTasks.java @@ -35,6 +35,7 @@ import net.fabricmc.loom.api.decompilers.LoomDecompiler; import net.fabricmc.loom.configuration.ide.RunConfigSettings; import net.fabricmc.loom.configuration.providers.mappings.MappingsProviderImpl; import net.fabricmc.loom.decompilers.fernflower.FabricFernFlowerDecompiler; +import net.fabricmc.loom.util.Constants; public final class LoomTasks { private LoomTasks() { @@ -50,7 +51,7 @@ public final class LoomTasks { tasks.register("remapJar", RemapJarTask.class, t -> { t.setDescription("Remaps the built project jar to intermediary mappings."); - t.setGroup("fabric"); + t.setGroup(Constants.TaskGroup.FABRIC); }); tasks.register("downloadAssets", DownloadAssetsTask.class, t -> t.setDescription("Downloads required assets for Fabric.")); @@ -65,24 +66,24 @@ public final class LoomTasks { tasks.register("genIdeaWorkspace", GenIdeaProjectTask.class, t -> { t.setDescription("Generates an IntelliJ IDEA workspace from this project."); t.dependsOn("idea", "downloadAssets"); - t.setGroup("ide"); + t.setGroup(Constants.TaskGroup.IDE); }); tasks.register("genEclipseRuns", GenEclipseRunsTask.class, t -> { t.setDescription("Generates Eclipse run configurations for this project."); t.dependsOn("downloadAssets"); - t.setGroup("ide"); + t.setGroup(Constants.TaskGroup.IDE); }); tasks.register("cleanEclipseRuns", CleanEclipseRunsTask.class, t -> { t.setDescription("Removes Eclipse run configurations for this project."); - t.setGroup("ide"); + t.setGroup(Constants.TaskGroup.IDE); }); tasks.register("vscode", GenVsCodeProjectTask.class, t -> { t.setDescription("Generates VSCode launch configurations."); t.dependsOn("downloadAssets"); - t.setGroup("ide"); + t.setGroup(Constants.TaskGroup.IDE); }); } @@ -97,7 +98,6 @@ public final class LoomTasks { tasks.register(taskName, RunGameTask.class, config).configure(t -> { t.setDescription("Starts the '" + config.getConfigName() + "' run configuration"); - t.setGroup("fabric"); if (config.getEnvironment().equals("client")) { t.dependsOn("downloadAssets"); @@ -136,7 +136,9 @@ public final class LoomTasks { inputJar = outputJar; } - for (LoomDecompiler decompiler : extension.getDecompilers()) { + extension.getGameDecompilers().finalizeValue(); + + for (LoomDecompiler decompiler : extension.getGameDecompilers().get()) { String taskName = decompiler instanceof FabricFernFlowerDecompiler ? "genSources" : "genSourcesWith" + decompiler.name(); // decompiler will be passed to the constructor of GenerateSourcesTask GenerateSourcesTask generateSourcesTask = tasks.register(taskName, GenerateSourcesTask.class, decompiler).get(); diff --git a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java index 3ec8352..8422d4d 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapJarTask.java +++ b/src/main/java/net/fabricmc/loom/task/RemapJarTask.java @@ -147,7 +147,7 @@ public class RemapJarTask extends Jar { jarRemapper.scheduleRemap(input, output) .supplyAccessWidener((remapData, remapper) -> { - if (getRemapAccessWidener().getOrElse(false) && extension.getAccessWidener() != null) { + if (getRemapAccessWidener().getOrElse(false) && extension.getAccessWidenerPath().isPresent()) { AccessWidenerJarProcessor accessWidenerJarProcessor = extension.getJarProcessorManager().getByType(AccessWidenerJarProcessor.class); byte[] data; diff --git a/src/main/java/net/fabricmc/loom/util/Constants.java b/src/main/java/net/fabricmc/loom/util/Constants.java index a2fed6b..1495ba4 100644 --- a/src/main/java/net/fabricmc/loom/util/Constants.java +++ b/src/main/java/net/fabricmc/loom/util/Constants.java @@ -117,4 +117,12 @@ public class Constants { private Knot() { } } + + public static final class TaskGroup { + public static final String FABRIC = "fabric"; + public static final String IDE = "ide"; + + private TaskGroup() { + } + } } diff --git a/src/main/java/net/fabricmc/loom/util/DeprecationHelper.java b/src/main/java/net/fabricmc/loom/util/DeprecationHelper.java new file mode 100644 index 0000000..f38c902 --- /dev/null +++ b/src/main/java/net/fabricmc/loom/util/DeprecationHelper.java @@ -0,0 +1,86 @@ +/* + * This file is part of fabric-loom, licensed under the MIT License (MIT). + * + * Copyright (c) 2021 FabricMC + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. + */ + +package net.fabricmc.loom.util; + +import java.util.concurrent.atomic.AtomicBoolean; + +import org.gradle.api.Project; +import org.gradle.api.logging.LogLevel; +import org.gradle.api.logging.configuration.WarningMode; + +public interface DeprecationHelper { + default void replaceWithInLoom0_10(String currentName, String newName) { + toBeRemovedIn(currentName, newName, "Loom 0.10"); + } + + default void replaceWithInLoom0_11(String currentName, String newName) { + toBeRemovedIn(currentName, newName, "Loom 0.11"); + } + + default void replaceWithInLoom0_12(String currentName, String newName) { + toBeRemovedIn(currentName, newName, "Loom 0.12"); + } + + default void toBeRemovedIn(String currentName, String newName, String removalVersion) { + warn("The '%s' property has been deprecated, and has been replaced with '%s'. This is scheduled to be removed in %s.".formatted(currentName, newName, removalVersion)); + } + + Project getProject(); + + void warn(String warning); + + class ProjectBased implements DeprecationHelper { + private final Project project; + private final AtomicBoolean usingDeprecatedApi = new AtomicBoolean(false); + + public ProjectBased(Project project) { + this.project = project; + + project.getGradle().buildFinished(buildResult -> { + if (usingDeprecatedApi.get()) { + project.getLogger().lifecycle("Deprecated Loom APIs were used in this build, making it incompatible with future versions of Loom. " + + "Use Gradle warning modes to control the verbosity of the warnings."); + } + }); + } + + @Override + public Project getProject() { + return project; + } + + @Override + public void warn(String warning) { + WarningMode warningMode = getProject().getGradle().getStartParameter().getWarningMode(); + getProject().getLogger().log(warningMode == WarningMode.None ? LogLevel.INFO : LogLevel.WARN, warning); + + if (warningMode == WarningMode.Fail) { + throw new UnsupportedOperationException(warning); + } + + usingDeprecatedApi.set(true); + } + } +} diff --git a/src/test/groovy/net/fabricmc/loom/test/integration/CustomManifestTest.groovy b/src/test/groovy/net/fabricmc/loom/test/integration/CustomManifestTest.groovy index aa849c1..f6ee1f0 100644 --- a/src/test/groovy/net/fabricmc/loom/test/integration/CustomManifestTest.groovy +++ b/src/test/groovy/net/fabricmc/loom/test/integration/CustomManifestTest.groovy @@ -40,7 +40,7 @@ class CustomManifestTest extends Specification implements ProjectTestTrait { def filesReady() { buildGradle() << ''' loom { - customManifest = "https://maven.fabricmc.net/net/minecraft/1_18_experimental-snapshot-1.json" + customMinecraftManifest = "https://maven.fabricmc.net/net/minecraft/1_18_experimental-snapshot-1.json" } dependencies { diff --git a/src/test/resources/projects/accesswidener/build.gradle b/src/test/resources/projects/accesswidener/build.gradle index 42e0b4e..acebfb6 100644 --- a/src/test/resources/projects/accesswidener/build.gradle +++ b/src/test/resources/projects/accesswidener/build.gradle @@ -19,7 +19,7 @@ repositories { } loom { - accessWidener = file("src/main/resources/modid.accesswidener") + accessWidenerPath = file("src/main/resources/modid.accesswidener") } dependencies { diff --git a/src/test/resources/projects/dependencyResolutionManagement/projmap/build.gradle b/src/test/resources/projects/dependencyResolutionManagement/projmap/build.gradle index ca8c73f..4c32983 100644 --- a/src/test/resources/projects/dependencyResolutionManagement/projmap/build.gradle +++ b/src/test/resources/projects/dependencyResolutionManagement/projmap/build.gradle @@ -69,7 +69,7 @@ jar { } minecraft { - accessWidener = file("src/main/resources/modid.accesswidener") + accessWidenerPath = file("src/main/resources/modid.accesswidener") } // configure the maven publication diff --git a/src/test/resources/projects/mixinApAutoRefmap/build.gradle b/src/test/resources/projects/mixinApAutoRefmap/build.gradle index 93b0507..c5199d0 100644 --- a/src/test/resources/projects/mixinApAutoRefmap/build.gradle +++ b/src/test/resources/projects/mixinApAutoRefmap/build.gradle @@ -68,9 +68,8 @@ java { } loom { - refmapName = "refmap0000.json" - mixin { + defaultRefmapName = "refmap0000.json" add(sourceSets["main"], "refmap0001.json") add(sourceSets["mixin"], "refmap0002.json") add(sourceSets["mixin1"], "refmap0003.json") { diff --git a/src/test/resources/projects/mixinApSimple/build.gradle b/src/test/resources/projects/mixinApSimple/build.gradle index bf2d09f..2090d7f 100644 --- a/src/test/resources/projects/mixinApSimple/build.gradle +++ b/src/test/resources/projects/mixinApSimple/build.gradle @@ -67,8 +67,8 @@ java { } loom { - refmapName = "default-refmap0000.json" mixin { + defaultRefmapName = "default-refmap0000.json" add(sourceSets["main"], "main-refmap0000.json") add(sourceSets["mixin"]) } diff --git a/src/test/resources/projects/multiproject/build.gradle b/src/test/resources/projects/multiproject/build.gradle index 46fab3e..5f4ed19 100644 --- a/src/test/resources/projects/multiproject/build.gradle +++ b/src/test/resources/projects/multiproject/build.gradle @@ -40,7 +40,7 @@ allprojects { } loom { - shareCaches = true + shareCaches() } java {