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 64498e73..60b7e2c7 100644 --- a/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java +++ b/src/main/java/net/fabricmc/loom/configuration/ide/RunConfigSettings.java @@ -403,6 +403,30 @@ public class RunConfigSettings implements Named { forgeTemplate("data"); } + /** + * Configure run config with the default data options. + * + *

This method can only be used on NeoForge. + */ + @ApiStatus.Experimental + public void clientData() { + ModPlatform.assertForgeLike(getExtension(), () -> "RunConfigSettings.clientData() is only usable on NeoForge."); + environment("dataClient"); + forgeTemplate("dataClient"); + } + + /** + * Configure run config with the default data options. + * + *

This method can only be used on NeoForge. + */ + @ApiStatus.Experimental + public void serverData() { + ModPlatform.assertForgeLike(getExtension(), () -> "RunConfigSettings.serverData() is only usable on NeoForge."); + environment("dataServer"); + forgeTemplate("dataServer"); + } + /** * Applies a Forge run config template to these settings. * diff --git a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java index 624a2630..ce01ce1c 100644 --- a/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java +++ b/src/main/java/net/fabricmc/loom/configuration/providers/forge/ForgeRunTemplate.java @@ -66,7 +66,13 @@ public record ForgeRunTemplate( public static final Codec> MAP_CODEC = Codec.unboundedMap(Codec.STRING, CODEC) .xmap( map -> { - final Map newMap = new HashMap<>(map); + final Map newMap = new HashMap<>(); + + // TODO: Remove this hack once we patch DLI to support clientData as env + for (Map.Entry entry : map.entrySet()) { + String name = entry.getKey().replaceAll("clientData", "dataClient").replaceAll("serverData", "dataServer"); + newMap.put(name, entry.getValue()); + } // Iterate through all templates and fill in empty names. // The NeoForge format doesn't include the name property, so we'll use the map keys