diff --git a/build.gradle b/build.gradle index caff81b..1d07a40 100644 --- a/build.gradle +++ b/build.gradle @@ -30,6 +30,7 @@ repositories { maven { url "https://maven.fabricmc.net/" } maven { url "https://files.minecraftforge.net/maven/" } maven { url "https://dl.bintray.com/shedaniel/cloth/" } + gradlePluginPortal() } apply plugin: 'java-gradle-plugin' @@ -42,6 +43,7 @@ dependencies { implementation gradleApi() implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.72" implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.72" + implementation "gradle.plugin.org.jetbrains.gradle.plugin.idea-ext:gradle-idea-ext:0.10" implementation "me.shedaniel:forgified-fabric-loom:$loom_version" runtime "me.shedaniel:forgified-fabric-loom:$loom_version" implementation "net.fabricmc:tiny-remapper:0.3.0.70" diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt index 343517f..b8d874b 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPlugin.kt @@ -4,6 +4,9 @@ import me.shedaniel.architect.plugin.transformers.* import net.fabricmc.loom.util.LoggerFilter import org.gradle.api.Plugin import org.gradle.api.Project +import org.gradle.api.plugins.ExtensionAware +import org.gradle.plugins.ide.idea.model.IdeaModel +import org.jetbrains.gradle.ext.ActionDelegationConfig import java.net.URI class ArchitectPlugin : Plugin { @@ -23,10 +26,21 @@ class ArchitectPlugin : Plugin { mapOf( "plugin" to "java", "plugin" to "eclipse", - "plugin" to "idea" + "plugin" to "idea", + "plugin" to "org.jetbrains.gradle.plugin.idea-ext" ) ) + project.afterEvaluate { + val ideaModel = project.extensions.getByName("idea") as IdeaModel + val idea = ideaModel.project as? ExtensionAware + val settings = idea?.extensions?.getByName("settings") as? ExtensionAware + (settings?.extensions?.getByName("delegateActions") as? ActionDelegationConfig)?.apply { + delegateBuildRunToGradle = true + testRunner = ActionDelegationConfig.TestRunner.GRADLE + } + } + project.extensions.create("architectury", ArchitectPluginExtension::class.java, project) project.tasks.register("transformProductionFabric", TransformingTask::class.java) { diff --git a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt index a1b5eb2..8a6ffa6 100644 --- a/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt +++ b/src/main/kotlin/me/shedaniel/architect/plugin/ArchitectPluginExtension.kt @@ -21,7 +21,6 @@ open class ArchitectPluginExtension(val project: Project) { fun platformSetupLoomIde() { val loomExtension = project.extensions.getByType(LoomGradleExtension::class.java) loomExtension.autoGenIDERuns = true - loomExtension.addTaskBeforeRun("\$PROJECT_DIR\$/${project.name}:build") } fun common(forgeEnabled: Boolean) { @@ -67,6 +66,8 @@ open class ArchitectPluginExtension(val project: Project) { it.outputs.upToDateWhen { false } } as TransformingTask + transformProductionFabricTask.dependsOn(transformDevelopmentFabricTask) + val remapJarTask = project.tasks.getByName("remapJar") { it as RemapJarTask @@ -103,6 +104,8 @@ open class ArchitectPluginExtension(val project: Project) { it.outputs.upToDateWhen { false } } as TransformingTask + transformProductionForgeTask.dependsOn(transformDevelopmentForgeTask) + transformProductionForgeTask.archiveFile.get().asFile.takeUnless { it.exists() }?.createEmptyJar() transformDevelopmentForgeTask.archiveFile.get().asFile.takeUnless { it.exists() }?.createEmptyJar()