From eb365f93bd8ea7568dd8c294cfbbfb3a5f7de68f Mon Sep 17 00:00:00 2001 From: Paint_Ninja Date: Wed, 19 Aug 2026 20:55:08 +0100 Subject: [PATCH] Support Gradle's Isolated Projects feature in EnhancedPluginAdditions#rootProjectDirectory() --- .../gradleutils/shared/EnhancedPlugin.java | 2 +- .../gradleutils/shared/EnhancedPluginAdditions.java | 10 ++++++---- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPlugin.java b/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPlugin.java index bd7d692..231a1c5 100644 --- a/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPlugin.java +++ b/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPlugin.java @@ -221,7 +221,7 @@ private DirectoryProperty makeRootProjectDirectory() { try { var rootProjectDirectory = this.getObjects().directoryProperty(); if (target instanceof Project project) { - return rootProjectDirectory.value(project.getRootProject().getLayout().getProjectDirectory()); + return rootProjectDirectory.value(project.getIsolated().getRootProject().getProjectDirectory()); } else if (target instanceof Settings) { return rootProjectDirectory.value(this.getBuildLayout().getRootDirectory()); } else { diff --git a/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPluginAdditions.java b/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPluginAdditions.java index 5a3bb30..16cf478 100644 --- a/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPluginAdditions.java +++ b/gradleutils-shared/src/main/java/net/minecraftforge/gradleutils/shared/EnhancedPluginAdditions.java @@ -38,10 +38,12 @@ public sealed interface EnhancedPluginAdditions permits EnhancedPlugin, Enhanced /// Gets the root project directory to be used for this plugin. /// - /// This directory is either the [org.gradle.api.file.ProjectLayout#getProjectDirectory()] of - /// [org.gradle.api.Project#getRootProject()] or the [org.gradle.api.file.BuildLayout#getRootDirectory()] of the - /// [org.gradle.api.initialization.Settings]. Attempting to call this when the plugin target is neither type will - /// throw an exception. + /// This directory is either the root project's [org.gradle.api.project.IsolatedProject#getProjectDirectory()] + /// (via [org.gradle.api.Project#getIsolated()]) or the [org.gradle.api.file.BuildLayout#getRootDirectory()] of the + /// [org.gradle.api.initialization.Settings]. The isolated view is used instead of + /// [org.gradle.api.Project#getRootProject()] so this remains compatible with Isolated Projects without treating the + /// settings directory as the root project directory. Attempting to call this when the plugin target is neither type + /// will throw an exception. /// /// @return The root project directory /// @throws RuntimeException If this plugin cannot access the root project directory (i.e. the target is not