From 9ab8fed59bd2b4f54516304cebb0ececdb81e96c Mon Sep 17 00:00:00 2001 From: Luke Bemish Date: Mon, 9 Jun 2025 17:23:40 -0500 Subject: [PATCH 1/3] Add legacy repositories plugin --- build.gradle | 7 ++++ .../boot/LegacyRepositoriesPlugin.java | 9 +++++ .../moddevgradle/boot/RepositoriesPlugin.java | 4 +- .../internal/LegacyForgeModDevPlugin.java | 12 ++---- .../internal/LegacyRepositoriesPlugin.java | 40 +++++++++++++++++++ 5 files changed, 61 insertions(+), 11 deletions(-) create mode 100644 src/java8/java/net/neoforged/moddevgradle/boot/LegacyRepositoriesPlugin.java create mode 100644 src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java diff --git a/build.gradle b/build.gradle index 94286af8..1c4b94b9 100644 --- a/build.gradle +++ b/build.gradle @@ -215,6 +215,13 @@ gradlePlugin { description = "This plugin adds the repositories needed for developing Minecraft mods. It is applied automatically by the moddev plugin, but can be applied manually in settings.gradle to make use of Gradle dependency management." tags = ["minecraft", "neoforge", "java", "mod"] } + legacyrepositories { + id = 'net.neoforged.moddev.legacyforge.repositories' + implementationClass = 'net.neoforged.moddevgradle.boot.LegacyRepositoriesPlugin' + displayName = "Mod Development Repositories Plugin for Legacy Forge" + description = "This plugin adds the repositories needed for developing Minecraft mods for legacy forge. It is applied automatically by the legacyforge plugin, but can be applied manually in settings.gradle to make use of Gradle dependency management." + tags = ["minecraft", "neoforge", "forge", "java", "mod"] + } } } diff --git a/src/java8/java/net/neoforged/moddevgradle/boot/LegacyRepositoriesPlugin.java b/src/java8/java/net/neoforged/moddevgradle/boot/LegacyRepositoriesPlugin.java new file mode 100644 index 00000000..d749e50f --- /dev/null +++ b/src/java8/java/net/neoforged/moddevgradle/boot/LegacyRepositoriesPlugin.java @@ -0,0 +1,9 @@ +package net.neoforged.moddevgradle.boot; + +import org.gradle.api.plugins.PluginAware; + +public class LegacyRepositoriesPlugin extends TrampolinePlugin { + public LegacyRepositoriesPlugin() { + super("net.neoforged.moddevgradle.legacyforge.internal.LegacyRepositoriesPlugin"); + } +} diff --git a/src/java8/java/net/neoforged/moddevgradle/boot/RepositoriesPlugin.java b/src/java8/java/net/neoforged/moddevgradle/boot/RepositoriesPlugin.java index 2b1c9b0f..79271d15 100644 --- a/src/java8/java/net/neoforged/moddevgradle/boot/RepositoriesPlugin.java +++ b/src/java8/java/net/neoforged/moddevgradle/boot/RepositoriesPlugin.java @@ -1,8 +1,8 @@ package net.neoforged.moddevgradle.boot; -import org.gradle.api.Project; +import org.gradle.api.plugins.PluginAware; -public class RepositoriesPlugin extends TrampolinePlugin { +public class RepositoriesPlugin extends TrampolinePlugin { public RepositoriesPlugin() { super("net.neoforged.moddevgradle.internal.RepositoriesPlugin"); } diff --git a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java index b86a6062..9c62f471 100644 --- a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java +++ b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java @@ -61,20 +61,14 @@ public void apply(Project project) { project.getPlugins().apply(MinecraftDependenciesPlugin.class); project.getPlugins().apply(JarJarPlugin.class); - // TODO: Introduce a LegacyRepositoryPLugin to still allow repo management in settings.gradle // Do not apply the repositories automatically if they have been applied at the settings-level. // It's still possible to apply them manually, though. - if (!project.getGradle().getPlugins().hasPlugin(RepositoriesPlugin.class)) { - project.getPlugins().apply(RepositoriesPlugin.class); + if (!project.getGradle().getPlugins().hasPlugin(LegacyRepositoriesPlugin.class)) { + project.getPlugins().apply(LegacyRepositoriesPlugin.class); } else { - LOG.info("Not enabling NeoForged repositories since they were applied at the settings level"); + LOG.info("Not enabling legacy repositories since they were applied at the settings level"); } - project.getRepositories().maven(repo -> { - repo.setName("MinecraftForge"); - repo.setUrl(URI.create("https://maven.minecraftforge.net/")); - }); - // This module is for supporting NeoForge 1.20.1, which is technically the same as Legacy Forge 1.20.1 project.getDependencies().getComponents().withModule("net.neoforged:forge", LegacyForgeMetadataTransform.class); project.getDependencies().getComponents().withModule("net.minecraftforge:forge", LegacyForgeMetadataTransform.class); diff --git a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java new file mode 100644 index 00000000..835b8f11 --- /dev/null +++ b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java @@ -0,0 +1,40 @@ +package net.neoforged.moddevgradle.legacyforge.internal; + +import net.neoforged.moddevgradle.internal.RepositoriesPlugin; +import org.gradle.api.GradleException; +import org.gradle.api.Plugin; +import org.gradle.api.Project; +import org.gradle.api.artifacts.dsl.RepositoryHandler; +import org.gradle.api.initialization.Settings; +import org.gradle.api.invocation.Gradle; +import org.gradle.api.plugins.PluginAware; + +import java.net.URI; + +/** + * Like {@link net.neoforged.moddevgradle.internal.RepositoriesPlugin}, this plugin acts differently depending on where + * it is applied. It also applies {@link net.neoforged.moddevgradle.internal.RepositoriesPlugin} no matter where it is applied. + */ +public class LegacyRepositoriesPlugin implements Plugin { + @Override + public void apply(PluginAware target) { + target.getPluginManager().apply(RepositoriesPlugin.class); + if (target instanceof Project project) { + applyRepositories(project.getRepositories()); + } else if (target instanceof Settings settings) { + applyRepositories(settings.getDependencyResolutionManagement().getRepositories()); + settings.getGradle().getPlugins().apply(getClass()); // Add a marker to Gradle + } else if (target instanceof Gradle gradle) { + // Do nothing + } else { + throw new GradleException("This plugin does not support being applied to " + target); + } + } + + private void applyRepositories(RepositoryHandler repositories) { + repositories.maven(repo -> { + repo.setName("MinecraftForge"); + repo.setUrl(URI.create("https://maven.minecraftforge.net/")); + }); + } +} From 37265626af950f6934fe8fb40815412800d39e21 Mon Sep 17 00:00:00 2001 From: Luke Bemish Date: Mon, 9 Jun 2025 17:31:42 -0500 Subject: [PATCH 2/3] Fix immaculate --- .../legacyforge/internal/LegacyForgeModDevPlugin.java | 2 -- .../legacyforge/internal/LegacyRepositoriesPlugin.java | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java index 9c62f471..2b0e8035 100644 --- a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java +++ b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyForgeModDevPlugin.java @@ -1,6 +1,5 @@ package net.neoforged.moddevgradle.legacyforge.internal; -import java.net.URI; import java.util.stream.Stream; import javax.inject.Inject; import net.neoforged.minecraftdependencies.MinecraftDependenciesPlugin; @@ -10,7 +9,6 @@ import net.neoforged.moddevgradle.internal.ModDevArtifactsWorkflow; import net.neoforged.moddevgradle.internal.ModDevRunWorkflow; import net.neoforged.moddevgradle.internal.ModdingDependencies; -import net.neoforged.moddevgradle.internal.RepositoriesPlugin; import net.neoforged.moddevgradle.internal.jarjar.JarJarPlugin; import net.neoforged.moddevgradle.internal.utils.ExtensionUtils; import net.neoforged.moddevgradle.internal.utils.VersionCapabilitiesInternal; diff --git a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java index 835b8f11..20e5d2a7 100644 --- a/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java +++ b/src/legacy/java/net/neoforged/moddevgradle/legacyforge/internal/LegacyRepositoriesPlugin.java @@ -1,5 +1,6 @@ package net.neoforged.moddevgradle.legacyforge.internal; +import java.net.URI; import net.neoforged.moddevgradle.internal.RepositoriesPlugin; import org.gradle.api.GradleException; import org.gradle.api.Plugin; @@ -9,8 +10,6 @@ import org.gradle.api.invocation.Gradle; import org.gradle.api.plugins.PluginAware; -import java.net.URI; - /** * Like {@link net.neoforged.moddevgradle.internal.RepositoriesPlugin}, this plugin acts differently depending on where * it is applied. It also applies {@link net.neoforged.moddevgradle.internal.RepositoriesPlugin} no matter where it is applied. From c7cd2a3aa6d7d56cc99d27e5c53227f1b8ac8b13 Mon Sep 17 00:00:00 2001 From: Luke Bemish Date: Thu, 12 Jun 2025 11:56:25 -0500 Subject: [PATCH 3/3] Update build.gradle Co-authored-by: shartte --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 1c4b94b9..c40a5e1d 100644 --- a/build.gradle +++ b/build.gradle @@ -219,7 +219,7 @@ gradlePlugin { id = 'net.neoforged.moddev.legacyforge.repositories' implementationClass = 'net.neoforged.moddevgradle.boot.LegacyRepositoriesPlugin' displayName = "Mod Development Repositories Plugin for Legacy Forge" - description = "This plugin adds the repositories needed for developing Minecraft mods for legacy forge. It is applied automatically by the legacyforge plugin, but can be applied manually in settings.gradle to make use of Gradle dependency management." + description = "This plugin adds the repositories needed for developing Minecraft mods using the Forge platform, up to 1.20.1. It is applied automatically by the legacyforge plugin, but can be applied manually in settings.gradle to make use of Gradle dependency management." tags = ["minecraft", "neoforge", "forge", "java", "mod"] } }