From c6540ed6504fc0e574de50d16d4515c44c612f91 Mon Sep 17 00:00:00 2001 From: Deximus-Maximus Date: Sat, 20 Dec 2025 21:23:26 -0500 Subject: [PATCH 1/2] Support adding run configs in folders --- .../neoforged/moddevgradle/dsl/RunModel.java | 7 +++++ .../internal/IntelliJIntegration.java | 29 ++++++++++++++++++- testproject/build.gradle | 4 +++ 3 files changed, 39 insertions(+), 1 deletion(-) diff --git a/src/main/java/net/neoforged/moddevgradle/dsl/RunModel.java b/src/main/java/net/neoforged/moddevgradle/dsl/RunModel.java index db701542..ce73f3f8 100644 --- a/src/main/java/net/neoforged/moddevgradle/dsl/RunModel.java +++ b/src/main/java/net/neoforged/moddevgradle/dsl/RunModel.java @@ -65,6 +65,7 @@ public RunModel(String name, Project project, Iterable defaultMods) { ideName = project.getName() + " - " + ideName; } getIdeName().convention(ideName); + getIdeFolderName().convention(""); getSourceSet().convention(ExtensionUtils.getSourceSets(project).getByName(SourceSet.MAIN_SOURCE_SET_NAME)); } @@ -80,6 +81,12 @@ public String getName() { */ public abstract Property getIdeName(); + /** + * Name for the folder the run configuration is contained by in the IDE. + * If this is set to {@code ""}, no folder will be used. + */ + public abstract Property getIdeFolderName(); + /** * Directory that the game will run in. Defaults to {@code run/}. */ diff --git a/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java b/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java index 2c23eb6d..0db95a4d 100644 --- a/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java +++ b/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java @@ -4,6 +4,7 @@ import java.io.IOException; import java.nio.file.Files; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; @@ -175,7 +176,7 @@ private static void addIntelliJRunConfiguration(Project project, @Nullable Function outputDirectory, RunModel run, PrepareRun prepareTask) { - var appRun = new Application(run.getIdeName().get(), project); + var appRun = new ExtendedApplication(run.getIdeName().get(), project, getExtraIntelijRunProperties(run)); var sourceSets = ExtensionUtils.getSourceSets(project); var sourceSet = run.getSourceSet().get(); // Validate that the source set is part of this project @@ -269,4 +270,30 @@ private static String getIntellijModuleName(Project project, SourceSet sourceSet moduleName.append(sourceSet.getName()); return moduleName.toString(); } + + private static Map getExtraIntelijRunProperties(RunModel run) { + var extraProperties = new HashMap(); + if (run.getIdeFolderName().isPresent() && !run.getIdeFolderName().get().isEmpty()) { + extraProperties.put("folderName", run.getIdeFolderName().get()); + } + return extraProperties; + } + + private static class ExtendedApplication extends Application { + private final Map extraProperties; + + @Inject + public ExtendedApplication(String name, Project project, Map extraProperties) { + super(name, project); + this.extraProperties = extraProperties; + } + + @Override + public Map toMap() { + @SuppressWarnings("unchecked") + var m = (Map) super.toMap(); + m.putAll(extraProperties); + return m; + } + } } diff --git a/testproject/build.gradle b/testproject/build.gradle index 6b877ab8..140c170f 100644 --- a/testproject/build.gradle +++ b/testproject/build.gradle @@ -56,6 +56,10 @@ neoForge { client() programArguments.addAll('--username', 'Dev2') } + folderedClient { + client() + ideFolderName = "Neo Test Folder" + } clientAuth { client() devLogin = true From 1ff4171db162ec5c10bbd75526087f3d906d0838 Mon Sep 17 00:00:00 2001 From: Deximus-Maximus Date: Sun, 21 Dec 2025 07:28:37 -0500 Subject: [PATCH 2/2] Some removals --- .../neoforged/moddevgradle/internal/IntelliJIntegration.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java b/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java index 0db95a4d..50f08e80 100644 --- a/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java +++ b/src/main/java/net/neoforged/moddevgradle/internal/IntelliJIntegration.java @@ -273,7 +273,7 @@ private static String getIntellijModuleName(Project project, SourceSet sourceSet private static Map getExtraIntelijRunProperties(RunModel run) { var extraProperties = new HashMap(); - if (run.getIdeFolderName().isPresent() && !run.getIdeFolderName().get().isEmpty()) { + if (!run.getIdeFolderName().get().isEmpty()) { extraProperties.put("folderName", run.getIdeFolderName().get()); } return extraProperties; @@ -282,7 +282,6 @@ private static Map getExtraIntelijRunProperties(RunModel run) { private static class ExtendedApplication extends Application { private final Map extraProperties; - @Inject public ExtendedApplication(String name, Project project, Map extraProperties) { super(name, project); this.extraProperties = extraProperties;