aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorshedaniel <daniel@shedaniel.me>2021-07-27 03:08:03 +0800
committerGitHub <noreply@github.com>2021-07-26 20:08:03 +0100
commit75234f4cbde7392f47a593b670b51cdda821e030 (patch)
treebc90728671a966097da36329ba643c43d1c78cd4 /src
parentb558ee1a4604a0fbf0eba8edab401f2a831e4fb6 (diff)
downloadarchitectury-loom-75234f4cbde7392f47a593b670b51cdda821e030.tar.gz
architectury-loom-75234f4cbde7392f47a593b670b51cdda821e030.tar.bz2
architectury-loom-75234f4cbde7392f47a593b670b51cdda821e030.zip
Use Property in LoomGradleExtension & Move task groups to constants (#445)
* Use Property in LoomGradleExtension Signed-off-by: shedaniel <daniel@shedaniel.me> * Fix customMinecraftManifest Signed-off-by: shedaniel <daniel@shedaniel.me> * Add deprecation messages, let's wait for the tests to run to fix the tests that are using deprecated apis Signed-off-by: shedaniel <daniel@shedaniel.me> * Apply license Signed-off-by: shedaniel <daniel@shedaniel.me> * Update src/main/java/net/fabricmc/loom/util/DeprecationHelper.java Co-authored-by: Juuxel <6596629+Juuxel@users.noreply.github.com> * Fix some tests, move mixinRefmapName -> mixin.defaultRefmapName Signed-off-by: shedaniel <daniel@shedaniel.me> * Move back to the api Signed-off-by: shedaniel <daniel@shedaniel.me> * Fix some tests Signed-off-by: shedaniel <daniel@shedaniel.me> * Apply reviews Signed-off-by: shedaniel <daniel@shedaniel.me> * Update src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java Co-authored-by: Juuxel <6596629+Juuxel@users.noreply.github.com> Co-authored-by: Juuxel <6596629+Juuxel@users.noreply.github.com> Co-authored-by: modmuss50 <modmuss50@gmail.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/java/net/fabricmc/loom/LoomGradleExtension.java5
-rw-r--r--src/main/java/net/fabricmc/loom/api/LoomGradleExtensionAPI.java116
-rw-r--r--src/main/java/net/fabricmc/loom/api/MixinApExtensionAPI.java6
-rw-r--r--src/main/java/net/fabricmc/loom/build/MixinRefmapHelper.java2
-rw-r--r--src/main/java/net/fabricmc/loom/build/mixin/AnnotationProcessorInvoker.java2
-rw-r--r--src/main/java/net/fabricmc/loom/build/mixin/JavaApInvoker.java2
-rw-r--r--src/main/java/net/fabricmc/loom/build/mixin/KaptApInvoker.java2
-rw-r--r--src/main/java/net/fabricmc/loom/build/mixin/ScalaApInvoker.java2
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/CompileConfiguration.java5
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/RemapConfiguration.java4
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/accesswidener/AccessWidenerJarProcessor.java9
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/MinecraftProviderImpl.java10
-rw-r--r--src/main/java/net/fabricmc/loom/configuration/providers/mappings/MappingsProviderImpl.java8
-rw-r--r--src/main/java/net/fabricmc/loom/decompilers/DecompilerConfiguration.java4
-rw-r--r--src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionApiImpl.java111
-rw-r--r--src/main/java/net/fabricmc/loom/extension/LoomGradleExtensionImpl.java5
-rw-r--r--src/main/java/net/fabricmc/loom/extension/MixinApExtension.java7
-rw-r--r--src/main/java/net/fabricmc/loom/extension/MixinApExtensionApiImpl.java47
-rw-r--r--src/main/java/net/fabricmc/loom/extension/MixinApExtensionImpl.java22
-rw-r--r--src/main/java/net/fabricmc/loom/task/AbstractLoomTask.java3
-rw-r--r--src/main/java/net/fabricmc/loom/task/AbstractRunTask.java3
-rw-r--r--src/main/java/net/fabricmc/loom/task/GenerateSourcesTask.java1
-rw-r--r--src/main/java/net/fabricmc/loom/task/LoomTasks.java16
-rw-r--r--src/main/java/net/fabricmc/loom/task/RemapJarTask.java2
-rw-r--r--src/main/java/net/fabricmc/loom/util/Constants.java8
-rw-r--r--src/main/java/net/fabricmc/loom/util/DeprecationHelper.java86
-rw-r--r--src/test/groovy/net/fabricmc/loom/test/integration/CustomManifestTest.groovy2
-rw-r--r--src/test/resources/projects/accesswidener/build.gradle2
-rw-r--r--src/test/resources/projects/dependencyResolutionManagement/projmap/build.gradle2
-rw-r--r--src/test/resources/projects/mixinApAutoRefmap/build.gradle3
-rw-r--r--src/test/resources/projects/mixinApSimple/build.gradle2
-rw-r--r--src/test/resources/projects/multiproject/build.gradle2
32 files changed, 349 insertions, 152 deletions
diff --git a/src/main/java/net/fabricmc/loom/LoomGradleExtension.java b/src/main/java/net/fabricmc/loom/LoomGradleExtension.java
index 2705898c..c912da94 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 c90a21ce..bd48bd6e 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);
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default File getAccessWidener() {
+ getDeprecationHelper().replaceWithInLoom0_11("accessWidener", "accessWidenerPath");
+ return getAccessWidenerPath().getAsFile().getOrNull();
+ }
+
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default void setAccessWidener(File file) {
+ getDeprecationHelper().replaceWithInLoom0_11("accessWidener", "accessWidenerPath");
+ getAccessWidenerPath().set(file);
+ }
+
+ Property<Boolean> getShareRemapCaches();
+
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default void setShareCaches(boolean shareCaches) {
+ getDeprecationHelper().replaceWithInLoom0_11("shareCaches", "shareRemapCaches");
+ getShareRemapCaches().set(shareCaches);
+ }
- boolean isShareCaches();
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default boolean isShareCaches() {
+ getDeprecationHelper().replaceWithInLoom0_11("shareCaches", "shareRemapCaches");
+ return getShareRemapCaches().get();
+ }
default void shareCaches() {
- setShareCaches(true);
+ getShareRemapCaches().set(true);
}
- List<LoomDecompiler> getDecompilers();
+ ListProperty<LoomDecompiler> getGameDecompilers();
+
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default List<LoomDecompiler> getDecompilers() {
+ getDeprecationHelper().replaceWithInLoom0_11("decompilers", "gameDecompilers");
+ return getGameDecompilers().get();
+ }
- void addDecompiler(LoomDecompiler decompiler);
+ default void addDecompiler(LoomDecompiler decompiler) {
+ getGameDecompilers().add(decompiler);
+ }
- List<JarProcessor> getJarProcessors();
+ ListProperty<JarProcessor> getGameJarProcessors();
- void addJarProcessor(JarProcessor processor);
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default List<JarProcessor> 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<LayeredMappingSpecBuilder> action);
- String getRefmapName();
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default String getRefmapName() {
+ getDeprecationHelper().replaceWithInLoom0_11("refmapName", "mixin.defaultRefmapName");
+ return getMixin().getDefaultRefmapName().get();
+ }
+
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default void setRefmapName(String refmapName) {
+ getDeprecationHelper().replaceWithInLoom0_11("refmapName", "mixin.defaultRefmapName");
+ getMixin().getDefaultRefmapName().set(refmapName);
+ }
- void setRefmapName(String refmapName);
+ Property<Boolean> getRemapArchives();
- boolean isRemapMod();
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default boolean isRemapMod() {
+ getDeprecationHelper().replaceWithInLoom0_11("remapMod", "remapArchives");
+ return getRemapArchives().get();
+ }
- void setRemapMod(boolean remapMod);
+ @Deprecated(forRemoval = true)
+ @ApiStatus.ScheduledForRemoval(inVersion = "0.11")
+ default void setRemapMod(boolean remapMod) {
+ getDeprecationHelper().replaceWithInLoom0_11("remapMod", "remapArchives");
+ getRemapArchives().set(remapMod);
+ }
void runs(Action<NamedDomainObjectContainer<RunConfigSettings>> action);
@@ -85,7 +156,22 @@ public interface LoomGradleExtensionAPI {
@ApiStatus.Experimental
void mixin(Action<MixinApExtensionAPI> action);
- void setCustomManifest(String customManifest);
+ @ApiStatus.Experimental
+ MixinApExtensionAPI getMixin();
+
+ Property<String> getCustomMinecraftManifest();
- String getCustomManifest();
+ @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 88b7fa79..e74eecbf 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<String> 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 458a5ffb..27712c3a 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 04c47c9d..40221850 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<T extends Task> {
}
protected static Collection<Configuration> getApConfigurations(Project project, Function<String, String> 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 a449600a..b1109f1c 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<JavaCompile> {
}
private static Map<SourceSet, JavaCompile> 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 3fea3c6e..04b00c6c 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<JavaCompile> {
}
private static Map<SourceSet, JavaCompile> 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 7a3238b7..8597cdd9 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<ScalaCompile> {
}
private static Map<SourceSet, ScalaCompile> 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 89bab1f8..579f51f1 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 039b8326..f3c16aef 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 679bb946..bca3f352 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 c4326a92..97fa0013 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<ManifestVersion.Versions> 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 6342de96..903d347a 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 40380a4d..bd51c4e8 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 5b2f3a7c..408e396f 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,73 +42,67 @@ 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<LoomDecompiler> decompilers = new ArrayList<>();
- protected final List<JarProcessor> jarProcessors = new ArrayList<>();
+ protected final DeprecationHelper deprecationHelper;
+ protected final ListProperty<LoomDecompiler> decompilers;
+ protected final ListProperty<JarProcessor> 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<Boolean> shareCaches;
+ protected final Property<Boolean> remapArchives;
+ protected final Property<String> customManifest;
private NamedDomainObjectContainer<RunConfigSettings> 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);
- @Override
- public File getAccessWidener() {
- return accessWidener;
+ this.deprecationHelper = new DeprecationHelper.ProjectBased(project);
}
@Override
- public void setAccessWidener(File file) {
- Objects.requireNonNull(file, "Access widener file cannot be null");
- this.accessWidener = file;
+ public DeprecationHelper getDeprecationHelper() {
+ return deprecationHelper;
}
@Override
- public void setShareCaches(boolean shareCaches) {
- this.shareCaches = shareCaches;
+ public RegularFileProperty getAccessWidenerPath() {
+ return accessWidener;
}
@Override
- public boolean isShareCaches() {
+ public Property<Boolean> getShareRemapCaches() {
return shareCaches;
}
@Override
- public List<LoomDecompiler> getDecompilers() {
+ public ListProperty<LoomDecompiler> getGameDecompilers() {
return decompilers;
}
@Override
- public void addDecompiler(LoomDecompiler decompiler) {
- Objects.requireNonNull(decompiler, "Decompiler cannot be null");
- decompilers.add(decompiler);
- }
-
- @Override
- public List<JarProcessor> getJarProcessors() {
+ public ListProperty<JarProcessor> 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<LayeredMappingSpecBuilder> action) {
LayeredMappingSpecBuilder builder = new LayeredMappingSpecBuilder();
action.execute(builder);
@@ -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<Boolean> getRemapArchives() {
+ return remapArchives;
}
@Override
@@ -156,23 +131,12 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
}
@Override
- public boolean isRemapMod() {
- return remapMod;
- }
-
- @Override
public void mixin(Action<MixinApExtensionAPI> 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<String> 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() {
@@ -190,6 +152,11 @@ public abstract class LoomGradleExtensionApiImpl implements LoomGradleExtensionA
}
@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 436f9b6b..323495c4 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 e63700b1..28f64c3f 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<String> refmapName;
private Stream<String> mixinJsonNames;
final PatternSet mixinJsonPattern;
public MixinInformationContainer(@NotNull SourceSet sourceSet,
- @NotNull String refmapName,
+ @NotNull Provider<String> 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 76326380..db06c481 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<String> refmapName);
@Override
public void add(SourceSet sourceSet, String refmapName, Action<PatternSet> action) {
@@ -51,14 +57,14 @@ public abstract class MixinApExtensionApiImpl implements MixinApExtensionAPI {
@Override
public void add(String sourceSetName, String refmapName, Action<PatternSet> 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<String> refmapName, Action<PatternSet> action) {
+ add(resolveSourceSet(sourceSetName), refmapName, action);
+ }
+ public void add(SourceSet sourceSet, Provider<String> refmapName, Action<PatternSet> 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<PatternSet> 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<PatternSet> 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<String> getDefaultRefmapName() {
+ throw new RuntimeException("Yeah... something is really wrong");
+ }
+
+ @Override
+ protected PatternSet add0(SourceSet sourceSet, Provider<String> 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 fd541106..bdd306ce 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<String> 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<String> 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<String> 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 01030fd9..baccf222 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 89b5a37a..c93c85a4 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<Project, RunConfig> 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 e72e225e..4c833cfe 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 79629d03..c37fcbb0 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 3ec83527..8422d4d2 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 a2fed6b0..1495ba4c 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 00000000..f38c9022
--- /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 aa849c1b..f6ee1f00 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 42e0b4ec..acebfb69 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 ca8c73f6..4c329835 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 93b05071..c5199d0c 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 bf2d09f0..2090d7fa 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 46fab3ed..5f4ed194 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 {