diff --git a/src/main/java/net/fabricmc/loom/api/NeoForgeExtensionAPI.java b/src/main/java/net/fabricmc/loom/api/NeoForgeExtensionAPI.java index 9d5474b3d..711ffc47c 100644 --- a/src/main/java/net/fabricmc/loom/api/NeoForgeExtensionAPI.java +++ b/src/main/java/net/fabricmc/loom/api/NeoForgeExtensionAPI.java @@ -25,11 +25,30 @@ package net.fabricmc.loom.api; import org.gradle.api.file.ConfigurableFileCollection; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.SetProperty; /** * This is the NeoForge extension API available to build scripts. */ public interface NeoForgeExtensionAPI { + /** + * If true, {@linkplain LoomGradleExtensionAPI#getAccessWidenerPath() the project access widener file} + * will be remapped to an access transformer file if set. + * + * @return the property + */ + Property getConvertAccessWideners(); + + /** + * A set of additional access widener files that will be converted to access transformers + * {@linkplain #getConvertAccessWideners() if enabled}. The files are specified as paths in jar files + * (e.g. {@code path/to/my_aw.accesswidener}). + * + * @return the property + */ + SetProperty getExtraAccessWideners(); + /** * A collection of all project access transformers. * The collection should only contain AT files, and not directories or other files. diff --git a/src/main/java/net/fabricmc/loom/extension/NeoForgeExtensionImpl.java b/src/main/java/net/fabricmc/loom/extension/NeoForgeExtensionImpl.java index 7795978c9..374d3ee80 100644 --- a/src/main/java/net/fabricmc/loom/extension/NeoForgeExtensionImpl.java +++ b/src/main/java/net/fabricmc/loom/extension/NeoForgeExtensionImpl.java @@ -28,17 +28,33 @@ import org.gradle.api.Project; import org.gradle.api.file.ConfigurableFileCollection; +import org.gradle.api.provider.Property; +import org.gradle.api.provider.SetProperty; import net.fabricmc.loom.api.NeoForgeExtensionAPI; public class NeoForgeExtensionImpl implements NeoForgeExtensionAPI { + private final Property convertAccessWideners; + private final SetProperty extraAccessWideners; private final ConfigurableFileCollection accessTransformers; @Inject public NeoForgeExtensionImpl(Project project) { + convertAccessWideners = project.getObjects().property(Boolean.class).convention(false); + extraAccessWideners = project.getObjects().setProperty(String.class).empty(); accessTransformers = project.getObjects().fileCollection(); } + @Override + public Property getConvertAccessWideners() { + return convertAccessWideners; + } + + @Override + public SetProperty getExtraAccessWideners() { + return extraAccessWideners; + } + @Override public ConfigurableFileCollection getAccessTransformers() { return accessTransformers; diff --git a/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java b/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java index 42b15aa85..40277c042 100644 --- a/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java +++ b/src/main/java/net/fabricmc/loom/task/RemapTaskConfiguration.java @@ -121,6 +121,10 @@ public void run() { }); }); } + } else if (extension.isNeoForge()) { + if (PropertyUtil.getAndFinalize(extension.getNeoForge().getConvertAccessWideners())) { + Aw2At.setup(getProject(), (RemapJarTask) getTasks().getByName(REMAP_JAR_TASK_NAME)); + } } }); diff --git a/src/main/java/net/fabricmc/loom/util/aw2at/Aw2At.java b/src/main/java/net/fabricmc/loom/util/aw2at/Aw2At.java index 72662d515..19ba40d95 100644 --- a/src/main/java/net/fabricmc/loom/util/aw2at/Aw2At.java +++ b/src/main/java/net/fabricmc/loom/util/aw2at/Aw2At.java @@ -78,7 +78,13 @@ public static void setup(Project project, RemapJarTask remapJar) { remapJar.getAtAccessWideners().add(awName); } - remapJar.getAtAccessWideners().addAll(extension.getForge().getExtraAccessWideners()); + if (extension.isForge()) { + remapJar.getAtAccessWideners().addAll(extension.getForge().getExtraAccessWideners()); + } else if (extension.isNeoForge()) { + remapJar.getAtAccessWideners().addAll(extension.getNeoForge().getExtraAccessWideners()); + } else { + throw new IllegalStateException("Unexpected extension!"); + } } /**