From ef42465378fd059df7acc6e73fd1038022ca48e6 Mon Sep 17 00:00:00 2001 From: Juuz <6596629+Juuxel@users.noreply.github.com> Date: Tue, 28 Feb 2023 19:34:18 +0200 Subject: [PATCH] Deprecate Forge data generation API (#117) * Deprecate RunConfigSettings.data() * Leave RCS.data() intact, only apply hardcoded game args if old api is used --- .../fabricmc/loom/api/ForgeExtensionAPI.java | 9 +++++++++ .../configuration/ide/RunConfigSettings.java | 11 +++++------ .../task/launch/GenerateDLIConfigTask.java | 18 ++++++++++++------ 3 files changed, 26 insertions(+), 12 deletions(-) diff --git a/src/main/java/net/fabricmc/loom/api/ForgeExtensionAPI.java b/src/main/java/net/fabricmc/loom/api/ForgeExtensionAPI.java index 3cb42e31..58339b87 100644 --- a/src/main/java/net/fabricmc/loom/api/ForgeExtensionAPI.java +++ b/src/main/java/net/fabricmc/loom/api/ForgeExtensionAPI.java @@ -110,20 +110,29 @@ public interface ForgeExtensionAPI { * {@link #dataGen(Action)}. * * @return the list + * @deprecated Removed in favor of configuring the data generator directly. */ + @ApiStatus.ScheduledForRemoval(inVersion = "2.0") + @Deprecated(forRemoval = true) List getDataGenMods(); /** * Applies data generation settings. * * @param action the action to configure data generation + * @deprecated Removed in favor of configuring the data generator directly. */ + @ApiStatus.ScheduledForRemoval(inVersion = "2.0") + @Deprecated(forRemoval = true) void dataGen(Action action); /** * Data generation config. + * @deprecated Removed in favor of configuring the data generator directly. */ @ApiStatus.NonExtendable + @ApiStatus.ScheduledForRemoval(inVersion = "2.0") + @Deprecated(forRemoval = true) interface DataGenConsumer { /** * Adds mod IDs applied for data generation. diff --git a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java index 266dc4ae..cbcb6b5d 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java @@ -325,15 +325,14 @@ public final class RunConfigSettings implements Named { } /** - * Configure run config with the default server options. + * Configure run config with the default data options. + * + *

This method can only be used on Forge. */ public void data() { + ModPlatform.assertPlatform(getExtension(), ModPlatform.FORGE, () -> "RunConfigSettings.data() is only usable on Forge."); environment("data"); - defaultMainClass(Constants.Knot.KNOT_SERVER); - - if (getExtension().isForge()) { - forgeTemplate("data"); - } + forgeTemplate("data"); } /** diff --git a/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java b/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java index 29e94f28..756da0c6 100644 --- a/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java +++ b/src/main/java/net/fabricmc/loom/task/launch/GenerateDLIConfigTask.java @@ -112,14 +112,20 @@ public abstract class GenerateDLIConfigTask extends AbstractLoomTask { .property("fabric.yarnWithSrg.path", getExtension().getMappingConfiguration().tinyMappingsWithSrg.toAbsolutePath().toString()) .property("unprotect.mappings", unprotectMappings) - .argument("data", "--all") - .argument("data", "--mod") - .argument("data", String.join(",", getExtension().getForge().getDataGenMods())) - .argument("data", "--output") - .argument("data", getProject().file("src/generated/resources").getAbsolutePath()) - .property("mixin.env.remapRefMap", "true"); + final List dataGenMods = getExtension().getForge().getDataGenMods(); + + // Only apply the hardcoded data arguments if the deprecated data generator API is being used. + if (!dataGenMods.isEmpty()) { + launchConfig + .argument("data", "--all") + .argument("data", "--mod") + .argument("data", String.join(",", getExtension().getForge().getDataGenMods())) + .argument("data", "--output") + .argument("data", getProject().file("src/generated/resources").getAbsolutePath()); + } + if (PropertyUtil.getAndFinalize(getExtension().getForge().getUseCustomMixin())) { launchConfig.property("mixin.forgeloom.inject.mappings.srg-named", getExtension().getMappingConfiguration().getReplacedTarget(getExtension(), "srg").toAbsolutePath().toString()); } else {