From c8f27278c1bbcdf4e7aa296dbb9c352ea49b6d23 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Tue, 12 Nov 2024 00:13:37 -0500 Subject: [PATCH 01/17] WIP 1.12 support --- .../gtnhgradle/UpdateableConstants.java | 9 +++- .../gtnhgradle/modules/MixinModule.java | 14 +++++- .../gtnhgradle/modules/ModernJavaModule.java | 26 ++++++++--- .../gtnhgradle/modules/ToolchainModule.java | 44 ++++++++++++++----- .../tasks/RunHotswappableMinecraftTask.java | 9 ++++ 5 files changed, 83 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java index 8228e8b1..f706e037 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java @@ -16,9 +16,12 @@ public class UpdateableConstants { // https://github.com/GTNewHorizons/ExampleMod1.7.10/releases public static final @NotNull String NEWEST_BLOWDRYER_TAG = "0.2.2"; - /** Latest version of UniMixins */ + /** Latest version of UniMixins for 1.7.10 */ public static final String NEWEST_UNIMIXINS = "io.github.legacymoddingmc:unimixins:0.1.18"; + /** Latest version of MixinBooter for 1.12.2 */ + public static final String NEWEST_MIXINBOOTER = "zone.rong:mixinbooter:9.1"; + /** Latest version of Jabel for modern Java support */ public static final @NotNull String NEWEST_JABEL = "com.github.bsideup.jabel:jabel-javac-plugin:1.0.1"; /** Latest version of GTNHLib for modern Java support */ @@ -26,7 +29,9 @@ public class UpdateableConstants { public static final @NotNull String NEWEST_GTNH_LIB = "com.github.GTNewHorizons:GTNHLib:0.5.18"; /** Latest version of GTNHLib for modern Java support */ // https://github.com/GTNewHorizons/lwjgl3ify/releases - public static final @NotNull String NEWEST_LWJGL3IFY = "com.github.GTNewHorizons:lwjgl3ify:2.1.4"; + public static final @NotNull String NEWEST_LWJGL3IFY_1710 = "com.github.GTNewHorizons:lwjgl3ify:2.1.4"; + /** Latest version of lwjgl3ify for modern Java support on 1.12 */ + public static final @NotNull String NEWEST_LWJGL3IFY_1122 = "io.github.twilightflower:lwjgl3ify:1.0.0"; /** Latest version of GTNHLib for modern Java support */ // https://github.com/GTNewHorizons/Hodgepodge/releases public static final @NotNull String NEWEST_HODGEPODGE = "com.github.GTNewHorizons:Hodgepodge:2.5.74"; diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index 91c272a6..d7ed1662 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -47,8 +47,18 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project } } - final String mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_UNIMIXINS; - final String mixinProviderSpec = mixinProviderSpecNoClassifer + ":dev"; + String mixinProviderSpecNoClassifer; + String mixinProviderSpec; + if (gtnh.configuration.minecraftVersion.equals("1.7.10")) { + mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_UNIMIXINS; + mixinProviderSpec = mixinProviderSpecNoClassifer + ":dev"; + } else if (gtnh.configuration.minecraftVersion.equals("1.12.2")) { + mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_MIXINBOOTER; + mixinProviderSpec = mixinProviderSpecNoClassifer; + } else { + throw new IllegalArgumentException("Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); + } + project.getExtensions() .getExtraProperties() .set("mixinProviderSpec", mixinProviderSpec); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java index 5dcc63ac..120e71f1 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java @@ -100,22 +100,38 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project }); ext.set("java17PatchDependenciesCfg", java17PatchDependenciesCfg); + String mixinSpec = ""; + String lwjgl3ifySpec = ""; + + if (gtnh.configuration.minecraftVersion.equals("1.7.10")) { + mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; + lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY_1710; + } else if (gtnh.configuration.minecraftVersion.equals("1.12.2")) { + mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; + lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY_1122; + } else { + throw new IllegalArgumentException("Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); + } + if (!gtnh.configuration.modId.equals("lwjgl3ify")) { - deps.add(java17DependenciesCfg.getName(), UpdateableConstants.NEWEST_LWJGL3IFY); + deps.add(java17DependenciesCfg.getName(), lwjgl3ifySpec); ((ModuleDependency) deps - .add(java17PatchDependenciesCfg.getName(), UpdateableConstants.NEWEST_LWJGL3IFY + ":forgePatches")) + .add(java17PatchDependenciesCfg.getName(), lwjgl3ifySpec + ":forgePatches")) .setTransitive(false); } - if (!gtnh.configuration.modId.equals("hodgepodge")) { + + if (!gtnh.configuration.modId.equals("hodgepodge") && gtnh.configuration.minecraftVersion.equals("1.7.10")) { final ModuleDependency hodgepodge = (ModuleDependency) deps .add(java17DependenciesCfg.getName(), UpdateableConstants.NEWEST_HODGEPODGE); if (gtnh.configuration.modId.equals("gtnhlib")) { hodgepodge.exclude(ImmutableMap.of("module", "GTNHLib")); } } + deps.getConstraints() - .add(java17DependenciesCfg.getName(), UpdateableConstants.NEWEST_UNIMIXINS) - .because("Use latest UniMixins known to GTNHGradle."); + .add(java17DependenciesCfg.getName(), mixinSpec) + .because("Use latest UniMixins or MixinBooter known to GTNHGradle."); + final List java17JvmArgs = new ArrayList<>(Arrays.asList(JAVA_17_ARGS)); final List hotswapJvmArgs = new ArrayList<>(Arrays.asList(HOTSWAP_JVM_ARGS)); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java index 0eb52a53..06cfe6c0 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java @@ -45,6 +45,8 @@ import javax.inject.Inject; import java.nio.charset.StandardCharsets; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -97,6 +99,18 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project c.includeGroup("org.lwjgl"); }); }); + repos.maven(mvn -> { + mvn.setName("Cleanroom Maven"); + mvn.setUrl("https://maven.cleanroommc.com"); + }); + repos.maven(mvn -> { + mvn.setName("GTCEu Maven"); + mvn.setUrl("https://maven.gtceu.com"); + }); + repos.maven(mvn -> { + mvn.setName("BlameJared Maven"); + mvn.setUrl("https://maven.blamejared.com/"); + }); // Provide a runtimeOnlyNonPublishable configuration final ConfigurationContainer cfg = project.getConfigurations(); @@ -224,6 +238,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project final ModUtils modUtils = project.getExtensions() .getByType(ModUtils.class); + minecraft.getMcVersion().set(gtnh.configuration.minecraftVersion); + // Tag injection if (!gtnh.configuration.replaceGradleTokenInFile.isEmpty()) { for (final String f : gtnh.configuration.replaceGradleTokenInFile.split(",")) { @@ -351,10 +367,10 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .provider( () -> Objects.requireNonNull(project.getVersion()) .toString()); - props.put("minecraftVersion", minecraft.getMcVersion()); + props.put(gtnh.configuration.minecraftVersion.equals("1.7.10") ? "minecraftVersion" : "mcversion", minecraft.getMcVersion()); props.put("modId", gtnh.configuration.modId); props.put("modName", gtnh.configuration.modName); - props.put("modVersion", modVersion); + props.put(gtnh.configuration.minecraftVersion.equals("1.7.10") ? "modVersion" : "version", modVersion); } tasks.named("processResources", ProcessResources.class) @@ -385,14 +401,22 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project manifest.attributes(ImmutableMap.of("FMLCorePlugin", props.modGroup + "." + props.coreModClass)); } if (props.usesMixins) { - manifest.attributes( - ImmutableMap.of( - "TweakClass", - "org.spongepowered.asm.launch.MixinTweaker", - "MixinConfigs", - "mixins." + props.modId + ".json", - "ForceLoadAsMod", - !props.containsMixinsAndOrCoreModOnly)); + final Path output = project.file( + "src/" + modUtils.mixinSourceSet.get().getName() + + "/resources/mixins." + + gtnh.configuration.modId + + ".json") + .toPath(); + if (Files.exists(output)) { + manifest.attributes( + ImmutableMap.of( + "TweakClass", + "org.spongepowered.asm.launch.MixinTweaker", + "MixinConfigs", + "mixins." + props.modId + ".json", + "ForceLoadAsMod", + !props.containsMixinsAndOrCoreModOnly)); + } } }); project.getExtensions() diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java index aeab1d2f..95e8f25d 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java @@ -97,6 +97,7 @@ public void setup(Project project, GTNHGradlePlugin.GTNHExtension gtnh) { mcpTasks.getTaskPackagePatchedMc(), "jar"); getMainClass().set((side == Distribution.CLIENT) ? "GradleStart" : "GradleStartServer"); + getMcVersion().set(gtnh.configuration.minecraftVersion); getUsername().set(minecraft.getUsername()); getUserUUID().set(minecraft.getUserUUID()); if (side == Distribution.DEDICATED_SERVER) { @@ -108,6 +109,14 @@ public void setup(Project project, GTNHGradlePlugin.GTNHExtension gtnh) { systemProperty("gradlestart.bouncerServer", "com.gtnewhorizons.retrofuturabootstrap.Main"); if (gtnh.configuration.usesMixins) { + String mixinSpec; + if (gtnh.configuration.minecraftVersion.equals("1.7.10")) { + mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; + } else if (gtnh.configuration.minecraftVersion.equals("1.12.2")) { + mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; + } else { + throw new IllegalArgumentException("Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); + } this.getExtraJvmArgs() .addAll(project.provider(() -> { final Configuration mixinCfg = project.getConfigurations() From 19d62b026320002f08bdb466085e721378c02977 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Tue, 12 Nov 2024 00:35:38 -0500 Subject: [PATCH 02/17] Use newest versions of mixinbooter and lwjgl3ify --- .../com/gtnewhorizons/gtnhgradle/UpdateableConstants.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java index f706e037..8c1da7e6 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java @@ -20,7 +20,7 @@ public class UpdateableConstants { public static final String NEWEST_UNIMIXINS = "io.github.legacymoddingmc:unimixins:0.1.18"; /** Latest version of MixinBooter for 1.12.2 */ - public static final String NEWEST_MIXINBOOTER = "zone.rong:mixinbooter:9.1"; + public static final String NEWEST_MIXINBOOTER = "zone.rong:mixinbooter:9.3"; /** Latest version of Jabel for modern Java support */ public static final @NotNull String NEWEST_JABEL = "com.github.bsideup.jabel:jabel-javac-plugin:1.0.1"; @@ -31,7 +31,7 @@ public class UpdateableConstants { // https://github.com/GTNewHorizons/lwjgl3ify/releases public static final @NotNull String NEWEST_LWJGL3IFY_1710 = "com.github.GTNewHorizons:lwjgl3ify:2.1.4"; /** Latest version of lwjgl3ify for modern Java support on 1.12 */ - public static final @NotNull String NEWEST_LWJGL3IFY_1122 = "io.github.twilightflower:lwjgl3ify:1.0.0"; + public static final @NotNull String NEWEST_LWJGL3IFY_1122 = "io.github.twilightflower:lwjgl3ify:1.0.1"; /** Latest version of GTNHLib for modern Java support */ // https://github.com/GTNewHorizons/Hodgepodge/releases public static final @NotNull String NEWEST_HODGEPODGE = "com.github.GTNewHorizons:Hodgepodge:2.5.74"; From 7d4be5d12a9b72513df790176f87859cdda2a937 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Tue, 12 Nov 2024 11:57:05 -0500 Subject: [PATCH 03/17] enum for MC version, more conditional 1.12 maven repos --- .../gtnhgradle/GTNHGradlePlugin.java | 26 ++++++++++++++++++ .../gtnhgradle/PropertiesConfiguration.java | 6 ++++- .../gtnhgradle/UpdateableConstants.java | 2 +- .../gtnhgradle/modules/MixinModule.java | 4 +-- .../gtnhgradle/modules/ModernJavaModule.java | 8 +++--- .../gtnhgradle/modules/ToolchainModule.java | 27 +++++++++---------- .../modules/WellKnownRepositoriesModule.java | 7 +++++ .../tasks/RunHotswappableMinecraftTask.java | 4 +-- 8 files changed, 60 insertions(+), 24 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java index 05edeaf7..00b6469e 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java @@ -94,6 +94,8 @@ public static abstract class GTNHExtension implements ExtensionAware { /** Logging service used by the plugin */ public final @NotNull Logger logger; + public final @NotNull MinecraftVersion minecraftVersion; + /** Parsed properties associated with this project */ public @NotNull PropertiesConfiguration configuration; @@ -142,6 +144,7 @@ public static abstract class GTNHExtension implements ExtensionAware { public GTNHExtension(final Project project) { logger = Logging.getLogger(GTNHGradlePlugin.class); configuration = PropertiesConfiguration.GradleUtils.makePropertiesFrom(project); + minecraftVersion = MinecraftVersion.getByVersionString(configuration.minecraftVersion); } /** @@ -194,4 +197,27 @@ public void applyAllModules(final Project project) { @Inject public abstract @NotNull ExecOperations getExecOperations(); } + + public enum MinecraftVersion { + ARCHAIC("1.7.10"), VINTAGE("1.12.2"); + + private final String version; + + MinecraftVersion(String version) { + this.version = version; + } + + public String getVersion() { + return version; + } + + public static MinecraftVersion getByVersionString(String version) { + for (MinecraftVersion v : MinecraftVersion.values()) { + if (v.getVersion().equals(version)) { + return v; + } + } + throw new IllegalArgumentException("Invalid Minecraft Version" + version); + } + } } diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index 0c6ef3da..10c0cfad 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -549,7 +549,10 @@ Enables using modern Java syntax (up to version 17) via Jabel, while still targe preferPopulated = true, required = false, docComment = """ - Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories. + Adds the following well-known repositories: + CurseMaven + Modrinth + BlameJared(1.12.2 only) """) public boolean includeWellKnownRepositories = true; @@ -564,6 +567,7 @@ Enables using modern Java syntax (up to version 17) via Jabel, while still targe list of strings, with the acceptable keys being(case does not matter): cursemaven modrinth + blamejared """) public @NotNull String excludeWellKnownRepositories = ""; diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java index 8c1da7e6..1e9dba56 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java @@ -29,7 +29,7 @@ public class UpdateableConstants { public static final @NotNull String NEWEST_GTNH_LIB = "com.github.GTNewHorizons:GTNHLib:0.5.18"; /** Latest version of GTNHLib for modern Java support */ // https://github.com/GTNewHorizons/lwjgl3ify/releases - public static final @NotNull String NEWEST_LWJGL3IFY_1710 = "com.github.GTNewHorizons:lwjgl3ify:2.1.4"; + public static final @NotNull String NEWEST_LWJGL3IFY = "com.github.GTNewHorizons:lwjgl3ify:2.1.4"; /** Latest version of lwjgl3ify for modern Java support on 1.12 */ public static final @NotNull String NEWEST_LWJGL3IFY_1122 = "io.github.twilightflower:lwjgl3ify:1.0.1"; /** Latest version of GTNHLib for modern Java support */ diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index d7ed1662..99e28050 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -49,10 +49,10 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project String mixinProviderSpecNoClassifer; String mixinProviderSpec; - if (gtnh.configuration.minecraftVersion.equals("1.7.10")) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_UNIMIXINS; mixinProviderSpec = mixinProviderSpecNoClassifer + ":dev"; - } else if (gtnh.configuration.minecraftVersion.equals("1.12.2")) { + } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_MIXINBOOTER; mixinProviderSpec = mixinProviderSpecNoClassifer; } else { diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java index 120e71f1..cde816d4 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java @@ -103,10 +103,10 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project String mixinSpec = ""; String lwjgl3ifySpec = ""; - if (gtnh.configuration.minecraftVersion.equals("1.7.10")) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; - lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY_1710; - } else if (gtnh.configuration.minecraftVersion.equals("1.12.2")) { + lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY; + } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY_1122; } else { @@ -120,7 +120,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .setTransitive(false); } - if (!gtnh.configuration.modId.equals("hodgepodge") && gtnh.configuration.minecraftVersion.equals("1.7.10")) { + if (!gtnh.configuration.modId.equals("hodgepodge") && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { final ModuleDependency hodgepodge = (ModuleDependency) deps .add(java17DependenciesCfg.getName(), UpdateableConstants.NEWEST_HODGEPODGE); if (gtnh.configuration.modId.equals("gtnhlib")) { diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java index 06cfe6c0..1f2b559b 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java @@ -99,18 +99,17 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project c.includeGroup("org.lwjgl"); }); }); - repos.maven(mvn -> { - mvn.setName("Cleanroom Maven"); - mvn.setUrl("https://maven.cleanroommc.com"); - }); - repos.maven(mvn -> { - mvn.setName("GTCEu Maven"); - mvn.setUrl("https://maven.gtceu.com"); - }); - repos.maven(mvn -> { - mvn.setName("BlameJared Maven"); - mvn.setUrl("https://maven.blamejared.com/"); - }); + + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { + repos.maven(mvn -> { + mvn.setName("Cleanroom Maven"); + mvn.setUrl("https://maven.cleanroommc.com"); + }); + repos.maven(mvn -> { + mvn.setName("GTCEu Maven"); + mvn.setUrl("https://maven.gtceu.com"); + }); + } // Provide a runtimeOnlyNonPublishable configuration final ConfigurationContainer cfg = project.getConfigurations(); @@ -367,10 +366,10 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .provider( () -> Objects.requireNonNull(project.getVersion()) .toString()); - props.put(gtnh.configuration.minecraftVersion.equals("1.7.10") ? "minecraftVersion" : "mcversion", minecraft.getMcVersion()); + props.put(gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "minecraftVersion" : "mcversion", minecraft.getMcVersion()); props.put("modId", gtnh.configuration.modId); props.put("modName", gtnh.configuration.modName); - props.put(gtnh.configuration.minecraftVersion.equals("1.7.10") ? "modVersion" : "version", modVersion); + props.put(gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "modVersion" : "version", modVersion); } tasks.named("processResources", ProcessResources.class) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java index 34ae2f6c..f5559242 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java @@ -48,5 +48,12 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project ec.filter(f -> { f.includeGroup("maven.modrinth"); }); }); } + + if (!excludes.contains("BLAMEJARED") && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { + repos.maven(mvn -> { + mvn.setName("BlameJared Maven"); + mvn.setUrl("https://maven.blamejared.com"); + }); + } } } diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java index 95e8f25d..c647273d 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java @@ -110,9 +110,9 @@ public void setup(Project project, GTNHGradlePlugin.GTNHExtension gtnh) { if (gtnh.configuration.usesMixins) { String mixinSpec; - if (gtnh.configuration.minecraftVersion.equals("1.7.10")) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; - } else if (gtnh.configuration.minecraftVersion.equals("1.12.2")) { + } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; } else { throw new IllegalArgumentException("Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); From b9cacdf059555b05e912f2501d2501a0ca001ceb Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Tue, 12 Nov 2024 12:06:09 -0500 Subject: [PATCH 04/17] spotless --- .../gtnhgradle/GTNHGradlePlugin.java | 7 +++++-- .../gtnhgradle/modules/ModernJavaModule.java | 9 ++++----- .../gtnhgradle/modules/ToolchainModule.java | 19 +++++++++++-------- .../tasks/RunHotswappableMinecraftTask.java | 3 ++- 4 files changed, 22 insertions(+), 16 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java index 00b6469e..d02d9005 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java @@ -199,7 +199,9 @@ public void applyAllModules(final Project project) { } public enum MinecraftVersion { - ARCHAIC("1.7.10"), VINTAGE("1.12.2"); + + ARCHAIC("1.7.10"), + VINTAGE("1.12.2"); private final String version; @@ -213,7 +215,8 @@ public String getVersion() { public static MinecraftVersion getByVersionString(String version) { for (MinecraftVersion v : MinecraftVersion.values()) { - if (v.getVersion().equals(version)) { + if (v.getVersion() + .equals(version)) { return v; } } diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java index cde816d4..654daec0 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java @@ -115,12 +115,12 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project if (!gtnh.configuration.modId.equals("lwjgl3ify")) { deps.add(java17DependenciesCfg.getName(), lwjgl3ifySpec); - ((ModuleDependency) deps - .add(java17PatchDependenciesCfg.getName(), lwjgl3ifySpec + ":forgePatches")) - .setTransitive(false); + ((ModuleDependency) deps.add(java17PatchDependenciesCfg.getName(), lwjgl3ifySpec + ":forgePatches")) + .setTransitive(false); } - if (!gtnh.configuration.modId.equals("hodgepodge") && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { + if (!gtnh.configuration.modId.equals("hodgepodge") + && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { final ModuleDependency hodgepodge = (ModuleDependency) deps .add(java17DependenciesCfg.getName(), UpdateableConstants.NEWEST_HODGEPODGE); if (gtnh.configuration.modId.equals("gtnhlib")) { @@ -132,7 +132,6 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .add(java17DependenciesCfg.getName(), mixinSpec) .because("Use latest UniMixins or MixinBooter known to GTNHGradle."); - final List java17JvmArgs = new ArrayList<>(Arrays.asList(JAVA_17_ARGS)); final List hotswapJvmArgs = new ArrayList<>(Arrays.asList(HOTSWAP_JVM_ARGS)); ext.set("java17JvmArgs", java17JvmArgs); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java index 1f2b559b..7055e6e1 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java @@ -237,7 +237,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project final ModUtils modUtils = project.getExtensions() .getByType(ModUtils.class); - minecraft.getMcVersion().set(gtnh.configuration.minecraftVersion); + minecraft.getMcVersion() + .set(gtnh.configuration.minecraftVersion); // Tag injection if (!gtnh.configuration.replaceGradleTokenInFile.isEmpty()) { @@ -366,10 +367,14 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .provider( () -> Objects.requireNonNull(project.getVersion()) .toString()); - props.put(gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "minecraftVersion" : "mcversion", minecraft.getMcVersion()); + props.put( + gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "minecraftVersion" : "mcversion", + minecraft.getMcVersion()); props.put("modId", gtnh.configuration.modId); props.put("modName", gtnh.configuration.modName); - props.put(gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "modVersion" : "version", modVersion); + props.put( + gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "modVersion" : "version", + modVersion); } tasks.named("processResources", ProcessResources.class) @@ -400,11 +405,9 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project manifest.attributes(ImmutableMap.of("FMLCorePlugin", props.modGroup + "." + props.coreModClass)); } if (props.usesMixins) { - final Path output = project.file( - "src/" + modUtils.mixinSourceSet.get().getName() - + "/resources/mixins." - + gtnh.configuration.modId - + ".json") + final Path output = project.file( + "src/" + modUtils.mixinSourceSet.get() + .getName() + "/resources/mixins." + gtnh.configuration.modId + ".json") .toPath(); if (Files.exists(output)) { manifest.attributes( diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java index c647273d..6869804d 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java @@ -115,7 +115,8 @@ public void setup(Project project, GTNHGradlePlugin.GTNHExtension gtnh) { } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; } else { - throw new IllegalArgumentException("Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); + throw new IllegalArgumentException( + "Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); } this.getExtraJvmArgs() .addAll(project.provider(() -> { From 4505a6ed99952df084af535c3587c9294c172f7e Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Tue, 12 Nov 2024 13:45:50 -0500 Subject: [PATCH 05/17] Use full version names --- .../com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java | 7 +++++-- .../com/gtnewhorizons/gtnhgradle/modules/MixinModule.java | 4 ++-- .../gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java | 6 +++--- .../gtnewhorizons/gtnhgradle/modules/ToolchainModule.java | 6 +++--- .../gtnhgradle/modules/WellKnownRepositoriesModule.java | 2 +- .../gtnhgradle/tasks/RunHotswappableMinecraftTask.java | 4 ++-- 6 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java index d02d9005..fbb69fb7 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java @@ -198,10 +198,13 @@ public void applyAllModules(final Project project) { public abstract @NotNull ExecOperations getExecOperations(); } + /** + * The enum stored in the GTNHExtension object representing the selected MC version + */ public enum MinecraftVersion { - ARCHAIC("1.7.10"), - VINTAGE("1.12.2"); + V1_7_10("1.7.10"), + V1_12_2("1.12.2"); private final String version; diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index 99e28050..a24e7d4c 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -49,10 +49,10 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project String mixinProviderSpecNoClassifer; String mixinProviderSpec; - if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_UNIMIXINS; mixinProviderSpec = mixinProviderSpecNoClassifer + ":dev"; - } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { + } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_MIXINBOOTER; mixinProviderSpec = mixinProviderSpecNoClassifer; } else { diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java index 654daec0..5036f1fe 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java @@ -103,10 +103,10 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project String mixinSpec = ""; String lwjgl3ifySpec = ""; - if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY; - } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { + } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY_1122; } else { @@ -120,7 +120,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project } if (!gtnh.configuration.modId.equals("hodgepodge") - && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { + && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { final ModuleDependency hodgepodge = (ModuleDependency) deps .add(java17DependenciesCfg.getName(), UpdateableConstants.NEWEST_HODGEPODGE); if (gtnh.configuration.modId.equals("gtnhlib")) { diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java index 7055e6e1..6868e4a8 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java @@ -100,7 +100,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project }); }); - if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { repos.maven(mvn -> { mvn.setName("Cleanroom Maven"); mvn.setUrl("https://maven.cleanroommc.com"); @@ -368,12 +368,12 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project () -> Objects.requireNonNull(project.getVersion()) .toString()); props.put( - gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "minecraftVersion" : "mcversion", + gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10 ? "minecraftVersion" : "mcversion", minecraft.getMcVersion()); props.put("modId", gtnh.configuration.modId); props.put("modName", gtnh.configuration.modName); props.put( - gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC ? "modVersion" : "version", + gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10 ? "modVersion" : "version", modVersion); } diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java index f5559242..aef68e18 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/WellKnownRepositoriesModule.java @@ -49,7 +49,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project }); } - if (!excludes.contains("BLAMEJARED") && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { + if (!excludes.contains("BLAMEJARED") && gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { repos.maven(mvn -> { mvn.setName("BlameJared Maven"); mvn.setUrl("https://maven.blamejared.com"); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java index 6869804d..d0cfa563 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java @@ -110,9 +110,9 @@ public void setup(Project project, GTNHGradlePlugin.GTNHExtension gtnh) { if (gtnh.configuration.usesMixins) { String mixinSpec; - if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.ARCHAIC) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; - } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.VINTAGE) { + } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; } else { throw new IllegalArgumentException( From 6d3b3e1d96ff8ad7a82d0c6c72c922ca355daaf5 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 22:56:02 -0500 Subject: [PATCH 06/17] Better handling of forge/mappings/mixin/3ify versions between MC versions --- .../gtnhgradle/GTNHGradlePlugin.java | 36 +++++++++++++++++-- .../gtnhgradle/PropertiesConfiguration.java | 24 ------------- .../gtnhgradle/UpdateableConstants.java | 2 +- .../gtnhgradle/modules/MixinModule.java | 9 ++--- .../gtnhgradle/modules/ModernJavaModule.java | 14 ++------ .../gtnhgradle/modules/UtilityModule.java | 23 ++++++------ .../tasks/RunHotswappableMinecraftTask.java | 12 ++----- 7 files changed, 53 insertions(+), 67 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java index fbb69fb7..d707e3d9 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java @@ -203,19 +203,49 @@ public void applyAllModules(final Project project) { */ public enum MinecraftVersion { - V1_7_10("1.7.10"), - V1_12_2("1.12.2"); + V1_7_10("1.7.10", "10.13.4.1614", "stable", "12", UpdateableConstants.NEWEST_UNIMIXINS, UpdateableConstants.NEWEST_LWJGL3IFY), + V1_12_2("1.12.2", "14.23.5.2847", "stable", "39", UpdateableConstants.NEWEST_MIXINBOOTER, UpdateableConstants.NEWEST_LWJGL3IFY_1122); private final String version; + private final String forgeVersion; + private final String mappingsChannel; + private final String mappingsVersion; + private final String mixinProviderSpec; + private final String lwjgl3ifySpec; - MinecraftVersion(String version) { + MinecraftVersion(String version, String forgeVersion, String mappingsChannel, String mappingsVersion, String mixinProviderSpec, String lwjgl3ifySpec) { this.version = version; + this.forgeVersion = forgeVersion; + this.mappingsChannel = mappingsChannel; + this.mappingsVersion = mappingsVersion; + this.mixinProviderSpec = mixinProviderSpec; + this.lwjgl3ifySpec = lwjgl3ifySpec; } public String getVersion() { return version; } + public String getForgeVersion() { + return forgeVersion; + } + + public String getMappingsChannel() { + return mappingsChannel; + } + + public String getMappingsVersion() { + return mappingsVersion; + } + + public String getMixinProviderSpec() { + return mixinProviderSpec; + } + + public String getLwjgl3ifySpec() { + return lwjgl3ifySpec; + } + public static MinecraftVersion getByVersionString(String version) { for (MinecraftVersion v : MinecraftVersion.values()) { if (v.getVersion() diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index 10c0cfad..6c8d29f6 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -281,30 +281,6 @@ ExampleMod tag to use as Blowdryer (Spotless, etc.) settings version, leave empt """) public @NotNull String minecraftVersion = "1.7.10"; - /** See annotation */ - @Prop(name = "forgeVersion", isSettings = false, preferPopulated = true, required = false, docComment = """ - Version of Minecraft Forge to target - """) - public @NotNull String forgeVersion = "10.13.4.1614"; - - /** See annotation */ - @Prop(name = "channel", isSettings = false, preferPopulated = true, required = false, docComment = """ - Specify an MCP channel for dependency deobfuscation and the deobfParams task. - """) - public @NotNull String channel = "stable"; - - /** See annotation */ - @Prop(name = "mappingsVersion", isSettings = false, preferPopulated = true, required = false, docComment = """ - Specify an MCP mappings version for dependency deobfuscation and the deobfParams task. - """) - public @NotNull String mappingsVersion = "12"; - - /** See annotation */ - @Prop(name = "remoteMappings", isSettings = false, preferPopulated = true, required = false, docComment = """ - Defines other MCP mappings for dependency deobfuscation. - """) - public @NotNull String remoteMappings = "https://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/"; - /** See annotation */ @Prop( name = "developmentEnvironmentUserName", diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java index 1e9dba56..d82b5cc9 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java @@ -30,7 +30,7 @@ public class UpdateableConstants { /** Latest version of GTNHLib for modern Java support */ // https://github.com/GTNewHorizons/lwjgl3ify/releases public static final @NotNull String NEWEST_LWJGL3IFY = "com.github.GTNewHorizons:lwjgl3ify:2.1.4"; - /** Latest version of lwjgl3ify for modern Java support on 1.12 */ + /** Latest version of lwjgl3ify for modern Java support on 1.12.2 */ public static final @NotNull String NEWEST_LWJGL3IFY_1122 = "io.github.twilightflower:lwjgl3ify:1.0.1"; /** Latest version of GTNHLib for modern Java support */ // https://github.com/GTNewHorizons/Hodgepodge/releases diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index a24e7d4c..1a6d1865 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -47,16 +47,13 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project } } - String mixinProviderSpecNoClassifer; + final String mixinProviderSpecNoClassifer = gtnh.minecraftVersion.getMixinProviderSpec(); String mixinProviderSpec; + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { - mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_UNIMIXINS; mixinProviderSpec = mixinProviderSpecNoClassifer + ":dev"; - } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { - mixinProviderSpecNoClassifer = UpdateableConstants.NEWEST_MIXINBOOTER; - mixinProviderSpec = mixinProviderSpecNoClassifer; } else { - throw new IllegalArgumentException("Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); + mixinProviderSpec = mixinProviderSpecNoClassifer; } project.getExtensions() diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java index 5036f1fe..1d57e0b6 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java @@ -100,18 +100,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project }); ext.set("java17PatchDependenciesCfg", java17PatchDependenciesCfg); - String mixinSpec = ""; - String lwjgl3ifySpec = ""; - - if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { - mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; - lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY; - } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { - mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; - lwjgl3ifySpec = UpdateableConstants.NEWEST_LWJGL3IFY_1122; - } else { - throw new IllegalArgumentException("Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); - } + final String mixinSpec = gtnh.minecraftVersion.getMixinProviderSpec(); + final String lwjgl3ifySpec = gtnh.minecraftVersion.getLwjgl3ifySpec(); if (!gtnh.configuration.modId.equals("lwjgl3ify")) { deps.add(java17DependenciesCfg.getName(), lwjgl3ifySpec); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java index bce2b8eb..daeae05d 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java @@ -3,6 +3,7 @@ import com.gtnewhorizons.gtnhgradle.GTNHGradlePlugin; import com.gtnewhorizons.gtnhgradle.GTNHModule; import com.gtnewhorizons.gtnhgradle.PropertiesConfiguration; +import com.gtnewhorizons.gtnhgradle.UpdateableConstants; import com.gtnewhorizons.retrofuturagradle.modutils.ModUtils; import com.gtnewhorizons.retrofuturagradle.shadow.org.apache.commons.io.FileUtils; import com.gtnewhorizons.retrofuturagradle.shadow.org.apache.commons.lang3.StringUtils; @@ -74,15 +75,15 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project final PropertiesConfiguration props = gtnh.configuration; final String mcpDir = project.getGradle() .getGradleUserHomeDir() + "/caches/minecraft/de/oceanlabs/mcp/mcp_" - + props.channel + + gtnh.minecraftVersion.getMappingsChannel() + "/" - + props.mappingsVersion; + + gtnh.minecraftVersion.getMappingsVersion(); final String mcpZIP = mcpDir + "/mcp_" - + props.channel + + gtnh.minecraftVersion.getMappingsChannel() + "-" - + props.mappingsVersion + + gtnh.minecraftVersion.getMappingsVersion() + "-" - + props.minecraftVersion + + gtnh.minecraftVersion.getVersion() + ".zip"; final String paramsCSV = mcpDir + "/params.csv"; @@ -91,17 +92,17 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project download.run(ds -> { try { ds.src( - "https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_" + props.channel + "https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_" + gtnh.minecraftVersion.getMappingsChannel() + "/" - + props.mappingsVersion + + gtnh.minecraftVersion.getMappingsVersion() + "-" - + props.minecraftVersion + + gtnh.minecraftVersion.getVersion() + "/mcp_" - + props.channel + + gtnh.minecraftVersion.getMappingsChannel() + "-" - + props.mappingsVersion + + gtnh.minecraftVersion.getMappingsVersion() + "-" - + props.minecraftVersion + + gtnh.minecraftVersion.getVersion() + ".zip"); } catch (MalformedURLException e) { throw new RuntimeException(e); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java index d0cfa563..26fafaa6 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java @@ -109,21 +109,13 @@ public void setup(Project project, GTNHGradlePlugin.GTNHExtension gtnh) { systemProperty("gradlestart.bouncerServer", "com.gtnewhorizons.retrofuturabootstrap.Main"); if (gtnh.configuration.usesMixins) { - String mixinSpec; - if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { - mixinSpec = UpdateableConstants.NEWEST_UNIMIXINS; - } else if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { - mixinSpec = UpdateableConstants.NEWEST_MIXINBOOTER; - } else { - throw new IllegalArgumentException( - "Unsupported Minecraft Version: " + gtnh.configuration.minecraftVersion); - } + final String mixinSpec = gtnh.minecraftVersion.getMixinProviderSpec(); this.getExtraJvmArgs() .addAll(project.provider(() -> { final Configuration mixinCfg = project.getConfigurations() .detachedConfiguration( project.getDependencies() - .create(UpdateableConstants.NEWEST_UNIMIXINS)); + .create(mixinSpec)); mixinCfg.setCanBeConsumed(false); mixinCfg.setCanBeResolved(true); mixinCfg.setTransitive(false); From 25c2c7c0714071912656a10b82735f4c0fecffb6 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 23:13:27 -0500 Subject: [PATCH 07/17] small changes and docstrings --- .../gtnhgradle/GTNHGradlePlugin.java | 90 +++++++++++-------- .../gtnhgradle/modules/MixinModule.java | 2 +- .../gtnhgradle/modules/ModernJavaModule.java | 4 +- .../gtnhgradle/modules/PublishingModule.java | 8 +- .../gtnhgradle/modules/UtilityModule.java | 22 ++--- .../tasks/RunHotswappableMinecraftTask.java | 2 +- 6 files changed, 74 insertions(+), 54 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java index d707e3d9..c5c99f61 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java @@ -94,6 +94,7 @@ public static abstract class GTNHExtension implements ExtensionAware { /** Logging service used by the plugin */ public final @NotNull Logger logger; + /** The MinecraftVersion enum associated with this project */ public final @NotNull MinecraftVersion minecraftVersion; /** Parsed properties associated with this project */ @@ -203,53 +204,72 @@ public void applyAllModules(final Project project) { */ public enum MinecraftVersion { - V1_7_10("1.7.10", "10.13.4.1614", "stable", "12", UpdateableConstants.NEWEST_UNIMIXINS, UpdateableConstants.NEWEST_LWJGL3IFY), - V1_12_2("1.12.2", "14.23.5.2847", "stable", "39", UpdateableConstants.NEWEST_MIXINBOOTER, UpdateableConstants.NEWEST_LWJGL3IFY_1122); + /** Minecraft 1.7.10 */ + V1_7_10("1.7.10", "10.13.4.1614", "stable", "12", UpdateableConstants.NEWEST_UNIMIXINS, UpdateableConstants.NEWEST_LWJGL3IFY, "unimixins", "unimixins"), - private final String version; - private final String forgeVersion; - private final String mappingsChannel; - private final String mappingsVersion; - private final String mixinProviderSpec; - private final String lwjgl3ifySpec; + /** Minecraft 1.12.2 */ + V1_12_2("1.12.2", "14.23.5.2847", "stable", "39", UpdateableConstants.NEWEST_MIXINBOOTER, UpdateableConstants.NEWEST_LWJGL3IFY_1122, "mixinbooter", "mixin-booter"); - MinecraftVersion(String version, String forgeVersion, String mappingsChannel, String mappingsVersion, String mixinProviderSpec, String lwjgl3ifySpec) { - this.version = version; - this.forgeVersion = forgeVersion; - this.mappingsChannel = mappingsChannel; - this.mappingsVersion = mappingsVersion; - this.mixinProviderSpec = mixinProviderSpec; - this.lwjgl3ifySpec = lwjgl3ifySpec; - } + /** + * Minecraft Version + */ + public final String version; - public String getVersion() { - return version; - } + /** + * Forge Version + */ + public final String forgeVersion; - public String getForgeVersion() { - return forgeVersion; - } + /** + * Obfuscation Mappings Channel + */ + public final String mappingsChannel; - public String getMappingsChannel() { - return mappingsChannel; - } + /** + * Obfuscation Mappings Versions + */ + public final String mappingsVersion; - public String getMappingsVersion() { - return mappingsVersion; - } + /** + * The full dependency spec for the version's Mixin provider(e.g. unimixins or mixinbooter) + */ + public final String mixinProviderSpec; - public String getMixinProviderSpec() { - return mixinProviderSpec; - } + /** + * The full dependency spec for the version's lwjgl3ify + */ + public final String lwjgl3ifySpec; + + /** + * The modrinth project slug for the version's mixin provider. Used to create relation on Modrinth publishing + */ + public final String modrinthMixinSlug; + + /** + * The curseforge project slug for the version's mixin provider. Used to create relation on Curseforge publishing + */ + public final String curseMixinSlug; - public String getLwjgl3ifySpec() { - return lwjgl3ifySpec; + MinecraftVersion(String version, String forgeVersion, String mappingsChannel, String mappingsVersion, String mixinProviderSpec, String lwjgl3ifySpec, String modrinthMixinSlug, String curseMixinSlug) { + this.version = version; + this.forgeVersion = forgeVersion; + this.mappingsChannel = mappingsChannel; + this.mappingsVersion = mappingsVersion; + this.mixinProviderSpec = mixinProviderSpec; + this.lwjgl3ifySpec = lwjgl3ifySpec; + this.modrinthMixinSlug = modrinthMixinSlug; + this.curseMixinSlug = curseMixinSlug; } + /** + * Find a MinecraftVersion based on the MC version string, e.g. "1.7.10" or "1.12.2" + * + * @param version The minecraft version string + * @return The matching MinecraftVersion enum + */ public static MinecraftVersion getByVersionString(String version) { for (MinecraftVersion v : MinecraftVersion.values()) { - if (v.getVersion() - .equals(version)) { + if (v.version.equals(version)) { return v; } } diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index 1a6d1865..63f5504a 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -47,7 +47,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project } } - final String mixinProviderSpecNoClassifer = gtnh.minecraftVersion.getMixinProviderSpec(); + final String mixinProviderSpecNoClassifer = gtnh.minecraftVersion.mixinProviderSpec; String mixinProviderSpec; if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java index 1d57e0b6..07635208 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ModernJavaModule.java @@ -100,8 +100,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project }); ext.set("java17PatchDependenciesCfg", java17PatchDependenciesCfg); - final String mixinSpec = gtnh.minecraftVersion.getMixinProviderSpec(); - final String lwjgl3ifySpec = gtnh.minecraftVersion.getLwjgl3ifySpec(); + final String mixinSpec = gtnh.minecraftVersion.mixinProviderSpec; + final String lwjgl3ifySpec = gtnh.minecraftVersion.lwjgl3ifySpec; if (!gtnh.configuration.modId.equals("lwjgl3ify")) { deps.add(java17DependenciesCfg.getName(), lwjgl3ifySpec); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java index a899f664..95ed9891 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java @@ -114,7 +114,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project mr.getAdditionalFiles() .set(project.provider(() -> getSecondaryArtifacts(project, gtnh))); mr.getGameVersions() - .add(gtnh.configuration.minecraftVersion); + .add(gtnh.minecraftVersion.version); mr.getLoaders() .add("forge"); mr.getDebugMode() @@ -133,7 +133,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project } } if (gtnh.configuration.usesMixins) { - addModrinthDep(project, "required", "project", "unimixins"); + addModrinthDep(project, "required", "project", gtnh.minecraftVersion.modrinthMixinSlug); } project.getTasks() .named("modrinth") @@ -169,7 +169,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project artifact.changelog = changelogFile; } artifact.releaseType = modVersion.map(v -> v.endsWith("-pre") ? "beta" : "release"); - artifact.addGameVersion(gtnh.configuration.minecraftVersion, "Forge"); + artifact.addGameVersion(gtnh.minecraftVersion.version, "Forge"); artifact.addModLoader("Forge"); if (!gtnh.configuration.curseForgeRelations.isEmpty()) { @@ -184,7 +184,7 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project } } if (gtnh.configuration.usesMixins) { - artifact.addRelation("unimixins", "requiredDependency"); + artifact.addRelation(gtnh.minecraftVersion.curseMixinSlug, "requiredDependency"); } for (final Object secondary : getSecondaryArtifacts(project, gtnh)) { diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java index daeae05d..f9ad686c 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java @@ -75,15 +75,15 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project final PropertiesConfiguration props = gtnh.configuration; final String mcpDir = project.getGradle() .getGradleUserHomeDir() + "/caches/minecraft/de/oceanlabs/mcp/mcp_" - + gtnh.minecraftVersion.getMappingsChannel() + + gtnh.minecraftVersion.mappingsChannel + "/" - + gtnh.minecraftVersion.getMappingsVersion(); + + gtnh.minecraftVersion.mappingsVersion; final String mcpZIP = mcpDir + "/mcp_" - + gtnh.minecraftVersion.getMappingsChannel() + + gtnh.minecraftVersion.mappingsChannel + "-" - + gtnh.minecraftVersion.getMappingsVersion() + + gtnh.minecraftVersion.mappingsVersion + "-" - + gtnh.minecraftVersion.getVersion() + + gtnh.minecraftVersion.version + ".zip"; final String paramsCSV = mcpDir + "/params.csv"; @@ -92,17 +92,17 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project download.run(ds -> { try { ds.src( - "https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_" + gtnh.minecraftVersion.getMappingsChannel() + "https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_" + gtnh.minecraftVersion.mappingsChannel + "/" - + gtnh.minecraftVersion.getMappingsVersion() + + gtnh.minecraftVersion.mappingsVersion + "-" - + gtnh.minecraftVersion.getVersion() + + gtnh.minecraftVersion.version + "/mcp_" - + gtnh.minecraftVersion.getMappingsChannel() + + gtnh.minecraftVersion.mappingsChannel + "-" - + gtnh.minecraftVersion.getMappingsVersion() + + gtnh.minecraftVersion.mappingsVersion + "-" - + gtnh.minecraftVersion.getVersion() + + gtnh.minecraftVersion.version + ".zip"); } catch (MalformedURLException e) { throw new RuntimeException(e); diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java index 26fafaa6..757fe7bd 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java @@ -109,7 +109,7 @@ public void setup(Project project, GTNHGradlePlugin.GTNHExtension gtnh) { systemProperty("gradlestart.bouncerServer", "com.gtnewhorizons.retrofuturabootstrap.Main"); if (gtnh.configuration.usesMixins) { - final String mixinSpec = gtnh.minecraftVersion.getMixinProviderSpec(); + final String mixinSpec = gtnh.minecraftVersion.mixinProviderSpec; this.getExtraJvmArgs() .addAll(project.provider(() -> { final Configuration mixinCfg = project.getConfigurations() From 5c06a0c1db4a3dddc9cc8d44ab8997f46d26717b Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 23:17:39 -0500 Subject: [PATCH 08/17] Update mixinbooter --- .../java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java index d82b5cc9..a8c908ce 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java @@ -20,7 +20,7 @@ public class UpdateableConstants { public static final String NEWEST_UNIMIXINS = "io.github.legacymoddingmc:unimixins:0.1.18"; /** Latest version of MixinBooter for 1.12.2 */ - public static final String NEWEST_MIXINBOOTER = "zone.rong:mixinbooter:9.3"; + public static final String NEWEST_MIXINBOOTER = "zone.rong:mixinbooter:10.2"; /** Latest version of Jabel for modern Java support */ public static final @NotNull String NEWEST_JABEL = "com.github.bsideup.jabel:jabel-javac-plugin:1.0.1"; From 246117ed671dff3ead3cb3d84ae87da65fcc7d8a Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 23:24:50 -0500 Subject: [PATCH 09/17] Handle strip-forge-requirements dep for 1.12 --- .../gtnhgradle/PropertiesConfiguration.java | 16 ++++++++++++++++ .../gtnhgradle/UpdateableConstants.java | 3 +++ .../gtnhgradle/modules/MixinModule.java | 6 ++++++ 3 files changed, 25 insertions(+) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index 6c8d29f6..4106dd98 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -317,6 +317,22 @@ Enables using modern Java syntax (up to version 17) via Jabel, while still targe """) public boolean enableGenericInjection = false; + /** See annotation */ + @Prop( + name = "stripForgeRequirements", + isSettings = false, + preferPopulated = true, + required = false, + docComment = """ + 1.12.2 ONLY + Some mods require a specific forge version to launch in. When you need to use one of those mods as a dependency, + and cannot launch with the forge version required, enable this to strip the forge version requirements from that mod. + This will add 'strip-latest-forge-requirements' as 'runtimeOnlyNonPublishable'. + Requires useMixins or forceEnableMixins to be true, as the mod uses mixins to function. + """ + ) + public boolean stripForgeRequirements = false; + /** See annotation */ @Prop( name = "generateGradleTokenClass", diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java index a8c908ce..cb452129 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java @@ -55,4 +55,7 @@ public class UpdateableConstants { /** Latest Industrial Craft 2 version */ public static final @NotNull String NEWEST_IC2_SPEC = "curse.maven:ic2-242638:2353971"; + + /** Latest strip-latest-forge-requirements for 1.12.2 */ + public static final @NotNull String NEWEST_STRIP_FORGE_REQUIREMENTS = "com.cleanroommc:strip-latest-forge-requirements:1.0"; } diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index 63f5504a..86dfd606 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -135,6 +135,12 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project deps.add("runtimeOnlyNonPublishable", mixinProviderSpec); } + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { + if ((gtnh.configuration.usesMixins || gtnh.configuration.forceEnableMixins) && gtnh.configuration.stripForgeRequirements) { + deps.add("runtimeOnlyNonPublishable", UpdateableConstants.NEWEST_STRIP_FORGE_REQUIREMENTS); + } + } + // Replace old mixin mods with unimixins // https://docs.gradle.org/8.0.2/userguide/resolution_rules.html#sec:substitution_with_classifier project.getConfigurations() From 35b9170f2baab2ad13f2c96a56621cc8e12656d0 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 23:30:49 -0500 Subject: [PATCH 10/17] Handle space separated and comma-separated AT file lists --- .../com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java | 3 ++- .../gtnhgradle/modules/AccessTransformerModule.java | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index 4106dd98..0b0d76be 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -423,8 +423,9 @@ Enables using modern Java syntax (up to version 17) via Jabel, while still targe required = false, docComment = """ Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/ - There can be multiple files in a space-separated list. + There can be multiple files in a space-separated or comma-separated list. Example value: mymodid_at.cfg nei_at.cfg + Example value: mymodid_at.cfg,nei_at.cfg """) public @NotNull String accessTransformersFile = ""; diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java index febaf593..1682a149 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java @@ -40,7 +40,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project final ConfigurableFileCollection atList = mcpTasks.getDeobfuscationATs(); if (!gtnh.configuration.accessTransformersFile.isEmpty()) { - for (String atFile : gtnh.configuration.accessTransformersFile.split(" ")) { + String commaSeparated = gtnh.configuration.accessTransformersFile.replaceAll("\\s+(\\s*)", ",$1"); + for (String atFile : commaSeparated.split(",")) { final Path targetFile = metaInf.resolve(atFile.trim()); if (!Files.exists(metaInf.resolve(targetFile))) { throw new GradleException( From 8d029bd855f867651df944cdea0f929b5e81c02c Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 23:31:17 -0500 Subject: [PATCH 11/17] spotless --- .../gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java | 12 ++++++++---- .../gtnhgradle/PropertiesConfiguration.java | 3 +-- .../gtnhgradle/modules/MixinModule.java | 3 ++- .../gtnhgradle/modules/UtilityModule.java | 4 ++-- .../tasks/RunHotswappableMinecraftTask.java | 1 - 5 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java index c5c99f61..290b44b0 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/GTNHGradlePlugin.java @@ -205,10 +205,12 @@ public void applyAllModules(final Project project) { public enum MinecraftVersion { /** Minecraft 1.7.10 */ - V1_7_10("1.7.10", "10.13.4.1614", "stable", "12", UpdateableConstants.NEWEST_UNIMIXINS, UpdateableConstants.NEWEST_LWJGL3IFY, "unimixins", "unimixins"), + V1_7_10("1.7.10", "10.13.4.1614", "stable", "12", UpdateableConstants.NEWEST_UNIMIXINS, + UpdateableConstants.NEWEST_LWJGL3IFY, "unimixins", "unimixins"), /** Minecraft 1.12.2 */ - V1_12_2("1.12.2", "14.23.5.2847", "stable", "39", UpdateableConstants.NEWEST_MIXINBOOTER, UpdateableConstants.NEWEST_LWJGL3IFY_1122, "mixinbooter", "mixin-booter"); + V1_12_2("1.12.2", "14.23.5.2847", "stable", "39", UpdateableConstants.NEWEST_MIXINBOOTER, + UpdateableConstants.NEWEST_LWJGL3IFY_1122, "mixinbooter", "mixin-booter"); /** * Minecraft Version @@ -246,11 +248,13 @@ public enum MinecraftVersion { public final String modrinthMixinSlug; /** - * The curseforge project slug for the version's mixin provider. Used to create relation on Curseforge publishing + * The curseforge project slug for the version's mixin provider. Used to create relation on Curseforge + * publishing */ public final String curseMixinSlug; - MinecraftVersion(String version, String forgeVersion, String mappingsChannel, String mappingsVersion, String mixinProviderSpec, String lwjgl3ifySpec, String modrinthMixinSlug, String curseMixinSlug) { + MinecraftVersion(String version, String forgeVersion, String mappingsChannel, String mappingsVersion, + String mixinProviderSpec, String lwjgl3ifySpec, String modrinthMixinSlug, String curseMixinSlug) { this.version = version; this.forgeVersion = forgeVersion; this.mappingsChannel = mappingsChannel; diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index 0b0d76be..6c53b9e9 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -329,8 +329,7 @@ Enables using modern Java syntax (up to version 17) via Jabel, while still targe and cannot launch with the forge version required, enable this to strip the forge version requirements from that mod. This will add 'strip-latest-forge-requirements' as 'runtimeOnlyNonPublishable'. Requires useMixins or forceEnableMixins to be true, as the mod uses mixins to function. - """ - ) + """) public boolean stripForgeRequirements = false; /** See annotation */ diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index 86dfd606..5163713a 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -136,7 +136,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project } if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_12_2) { - if ((gtnh.configuration.usesMixins || gtnh.configuration.forceEnableMixins) && gtnh.configuration.stripForgeRequirements) { + if ((gtnh.configuration.usesMixins || gtnh.configuration.forceEnableMixins) + && gtnh.configuration.stripForgeRequirements) { deps.add("runtimeOnlyNonPublishable", UpdateableConstants.NEWEST_STRIP_FORGE_REQUIREMENTS); } } diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java index f9ad686c..b2b4a59b 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/UtilityModule.java @@ -3,7 +3,6 @@ import com.gtnewhorizons.gtnhgradle.GTNHGradlePlugin; import com.gtnewhorizons.gtnhgradle.GTNHModule; import com.gtnewhorizons.gtnhgradle.PropertiesConfiguration; -import com.gtnewhorizons.gtnhgradle.UpdateableConstants; import com.gtnewhorizons.retrofuturagradle.modutils.ModUtils; import com.gtnewhorizons.retrofuturagradle.shadow.org.apache.commons.io.FileUtils; import com.gtnewhorizons.retrofuturagradle.shadow.org.apache.commons.lang3.StringUtils; @@ -92,7 +91,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project download.run(ds -> { try { ds.src( - "https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_" + gtnh.minecraftVersion.mappingsChannel + "https://maven.minecraftforge.net/de/oceanlabs/mcp/mcp_" + + gtnh.minecraftVersion.mappingsChannel + "/" + gtnh.minecraftVersion.mappingsVersion + "-" diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java index 757fe7bd..7e695e6d 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/tasks/RunHotswappableMinecraftTask.java @@ -1,7 +1,6 @@ package com.gtnewhorizons.gtnhgradle.tasks; import com.gtnewhorizons.gtnhgradle.GTNHGradlePlugin; -import com.gtnewhorizons.gtnhgradle.UpdateableConstants; import com.gtnewhorizons.retrofuturagradle.MinecraftExtension; import com.gtnewhorizons.retrofuturagradle.mcp.MCPTasks; import com.gtnewhorizons.retrofuturagradle.minecraft.MinecraftTasks; From 3fc872190677299ded56e94e220d6af2b9a59095 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 23:50:00 -0500 Subject: [PATCH 12/17] Handle AT files outside of META-INF --- .../modules/AccessTransformerModule.java | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java index 1682a149..bbdf5ec5 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/AccessTransformerModule.java @@ -33,6 +33,9 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .resolve("main") .resolve("resources") .resolve("META-INF"); + final Path resources = projectRoot.resolve("src") + .resolve("main") + .resolve("resources"); final SourceSetContainer sourceSets = project.getExtensions() .getByType(JavaPluginExtension.class) @@ -42,10 +45,16 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project if (!gtnh.configuration.accessTransformersFile.isEmpty()) { String commaSeparated = gtnh.configuration.accessTransformersFile.replaceAll("\\s+(\\s*)", ",$1"); for (String atFile : commaSeparated.split(",")) { - final Path targetFile = metaInf.resolve(atFile.trim()); - if (!Files.exists(metaInf.resolve(targetFile))) { - throw new GradleException( - "Could not resolve \"accessTransformersFile\"! Could not find " + targetFile); + atFile = atFile.trim(); + final Path targetFile; + final Path targetFileResources = resources.resolve(atFile); + final Path targetFileMetaInf = metaInf.resolve(atFile); + if (Files.exists(resources.resolve(targetFileResources))) { + targetFile = targetFileResources; + } else if (Files.exists(metaInf.resolve(targetFileMetaInf))) { + targetFile = targetFileMetaInf; + } else { + throw new GradleException("Could not resolve \"accessTransformersFile\"! Could not find " + atFile); } atList.from(projectRoot.relativize(targetFile)); } From 030c24767845e96a4677b9157a18ecc5d06101aa Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Wed, 20 Nov 2024 23:55:28 -0500 Subject: [PATCH 13/17] Allow renaming of mixin refmap --- .../gtnhgradle/PropertiesConfiguration.java | 11 +++++++++++ .../gtnewhorizons/gtnhgradle/modules/MixinModule.java | 4 +++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index 6c53b9e9..e9e9af57 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -470,6 +470,17 @@ Enables using modern Java syntax (up to version 17) via Jabel, while still targe """) public @NotNull String mixinsPackage = ""; + /** See annotation */ + @Prop( + name = "mixinConfigRefmap", + isSettings = false, + preferPopulated = true, + required = false, + docComment = """ + Location of the mixin config refmap. If left, blank, defaults to "mixins.${modId}.refmap.json". Target file must have the "json" extension. + """) + public @NotNull String mixinConfigRefmap = ""; + /** See annotation */ @Prop( name = "coreModClass", diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java index 5163713a..e31ab7ab 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/MixinModule.java @@ -60,7 +60,9 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .getExtraProperties() .set("mixinProviderSpec", mixinProviderSpec); - final String mixingConfigRefMap = "mixins." + gtnh.configuration.modId + ".refmap.json"; + final String mixingConfigRefMap = gtnh.configuration.mixinConfigRefmap.isEmpty() + ? "mixins." + gtnh.configuration.modId + ".refmap.json" + : gtnh.configuration.mixinConfigRefmap; final String mixinSourceSetName = gtnh.configuration.separateMixinSourceSet.trim(); final SourceSetContainer sourceSets = project.getExtensions() .getByType(JavaPluginExtension.class) From c984a2624f9c4be82a4ca5a58ce5c7761616acb2 Mon Sep 17 00:00:00 2001 From: Darren Eberly Date: Fri, 22 Nov 2024 10:33:19 -0500 Subject: [PATCH 14/17] Fix manifest handling for mixins --- .../gtnhgradle/modules/ToolchainModule.java | 13 +++---------- 1 file changed, 3 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java index 6868e4a8..59f39411 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/ToolchainModule.java @@ -45,8 +45,6 @@ import javax.inject.Inject; import java.nio.charset.StandardCharsets; -import java.nio.file.Files; -import java.nio.file.Path; import java.util.Map; import java.util.Objects; import java.util.Set; @@ -405,20 +403,15 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project manifest.attributes(ImmutableMap.of("FMLCorePlugin", props.modGroup + "." + props.coreModClass)); } if (props.usesMixins) { - final Path output = project.file( - "src/" + modUtils.mixinSourceSet.get() - .getName() + "/resources/mixins." + gtnh.configuration.modId + ".json") - .toPath(); - if (Files.exists(output)) { + if (gtnh.minecraftVersion == GTNHGradlePlugin.MinecraftVersion.V1_7_10) { manifest.attributes( ImmutableMap.of( "TweakClass", "org.spongepowered.asm.launch.MixinTweaker", "MixinConfigs", - "mixins." + props.modId + ".json", - "ForceLoadAsMod", - !props.containsMixinsAndOrCoreModOnly)); + "mixins." + props.modId + ".json")); } + manifest.attributes(ImmutableMap.of("ForceLoadAsMod", !props.containsMixinsAndOrCoreModOnly)); } }); project.getExtensions() From 01b8f209e5bd94c3f1f5e22ad01df6e523f96dd3 Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers <31759736+ALongStringOfNumbers@users.noreply.github.com> Date: Tue, 26 Nov 2024 10:12:17 -0700 Subject: [PATCH 15/17] Add a release version property (#28) --- .../gtnhgradle/PropertiesConfiguration.java | 14 ++++++++++ .../gtnhgradle/modules/PublishingModule.java | 26 ++++++++++++++++--- 2 files changed, 37 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index e9e9af57..1a9369e9 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -743,6 +743,20 @@ Uncomment this to disable Checkstyle checks (currently wildcard import check). This is meant to be set in $HOME/.gradle/gradle.properties. """) public boolean ideaCheckSpotlessOnBuild = true; + + @Prop( + name = "releaseType", + isSettings = false, + preferPopulated = false, + required = false, + defaultInComment = "release", + docComment = """ + This project's release type on CurseForge and/or Modrinth. + Alternatively this can be set with the 'RELEASE_TYPE' environment variable. + Allowed types: release, beta, alpha + Leave blank to use the old release type, with -pre designations + """) + public String releaseType = "release"; // // diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java index 95ed9891..db4ea2fa 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/PublishingModule.java @@ -102,8 +102,19 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project .set(gtnh.configuration.modrinthProjectId); mr.getVersionNumber() .set(modVersion); - mr.getVersionType() - .set(modVersion.map(v -> v.endsWith("-pre") ? "beta" : "release")); + String versionType = System.getenv("RELEASE_TYPE"); + if (versionType != null) { + mr.getVersionType() + .set(versionType); + } else { + if (!gtnh.configuration.releaseType.isEmpty()) { + mr.getVersionType() + .set(gtnh.configuration.releaseType); + } else { + mr.getVersionType() + .set(modVersion.map(v -> v.endsWith("-pre") ? "beta" : "release")); + } + } if (changelogFile.exists()) { final String contents = new String(Files.readAllBytes(changelogFile.toPath()), StandardCharsets.UTF_8); mr.getChangelog() @@ -168,7 +179,16 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project artifact.changelogType = "markdown"; artifact.changelog = changelogFile; } - artifact.releaseType = modVersion.map(v -> v.endsWith("-pre") ? "beta" : "release"); + String versionType = System.getenv("RELEASE_TYPE"); + if (versionType != null) { + artifact.releaseType = versionType; + } else { + if (!gtnh.configuration.releaseType.isEmpty()) { + artifact.releaseType = gtnh.configuration.releaseType; + } else { + artifact.releaseType = modVersion.map(v -> v.endsWith("-pre") ? "beta" : "release"); + } + } artifact.addGameVersion(gtnh.minecraftVersion.version, "Forge"); artifact.addModLoader("Forge"); From ed851945c039305fc8af21615d090b2b374f517c Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers <31759736+ALongStringOfNumbers@users.noreply.github.com> Date: Sun, 29 Dec 2024 11:42:55 -0700 Subject: [PATCH 16/17] Minor property description fixes (#32) --- .../gtnhgradle/PropertiesConfiguration.java | 10 +++++++--- .../gtnewhorizons/gtnhgradle/UpdateableConstants.java | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index 1a9369e9..d52cf0a1 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -421,7 +421,8 @@ Enables using modern Java syntax (up to version 17) via Jabel, while still targe preferPopulated = true, required = false, docComment = """ - Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/ + Specify the configuration file for Forge's access transformers here. + It can be placed into /src/main/resources/META-INF/ or /src/main/resources There can be multiple files in a space-separated or comma-separated list. Example value: mymodid_at.cfg nei_at.cfg Example value: mymodid_at.cfg,nei_at.cfg @@ -582,6 +583,7 @@ list of strings, with the acceptable keys being(case does not matter): required = false, hidden = true, docComment = """ + [1.7.10 only] Adds a dependency override rule to use RFG-deobfuscated https://www.curseforge.com/minecraft/mc-mods/industrial-craft/files/2353971 instead of net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev """) public boolean useIC2FromCurseforge = true; @@ -627,7 +629,8 @@ list of strings, with the acceptable keys being(case does not matter): type can be one of [project, version], and the name is the Modrinth project or version slug/id of the other mod. Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech - Note: GTNH Mixins is automatically set as a required dependency if usesMixins = true + Note: on 1.7.10, UniMixins is automatically set as a required dependency if usesMixins = true + On 1.12.2, MixinBooter is automatically set as a required dependency """) public @NotNull String modrinthRelations = ""; @@ -652,7 +655,8 @@ list of strings, with the acceptable keys being(case does not matter): Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible], and the name is the CurseForge project slug of the other mod. Example: requiredDependency:railcraft;embeddedLibrary:cofhlib;incompatible:buildcraft - Note: UniMixins is automatically set as a required dependency if usesMixins = true. + Note: On 1.7.10, UniMixins is automatically set as a required dependency if usesMixins = true. + On 1.12.2, MixinBooter is automatically set as a required dependency """) public @NotNull String curseForgeRelations = ""; diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java index cb452129..6bbd0386 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/UpdateableConstants.java @@ -27,12 +27,12 @@ public class UpdateableConstants { /** Latest version of GTNHLib for modern Java support */ // https://github.com/GTNewHorizons/GTNHLib/releases public static final @NotNull String NEWEST_GTNH_LIB = "com.github.GTNewHorizons:GTNHLib:0.5.18"; - /** Latest version of GTNHLib for modern Java support */ + /** Latest version of lwjgl3ify for modern Java support */ // https://github.com/GTNewHorizons/lwjgl3ify/releases public static final @NotNull String NEWEST_LWJGL3IFY = "com.github.GTNewHorizons:lwjgl3ify:2.1.4"; /** Latest version of lwjgl3ify for modern Java support on 1.12.2 */ public static final @NotNull String NEWEST_LWJGL3IFY_1122 = "io.github.twilightflower:lwjgl3ify:1.0.1"; - /** Latest version of GTNHLib for modern Java support */ + /** Latest version of Hodgepodge for modern Java support */ // https://github.com/GTNewHorizons/Hodgepodge/releases public static final @NotNull String NEWEST_HODGEPODGE = "com.github.GTNewHorizons:Hodgepodge:2.5.74"; /** Latest version of LWJGL3 for modern Java support */ From 1932f64058f551bd60b704cf7af1fb3c74bd28fd Mon Sep 17 00:00:00 2001 From: ALongStringOfNumbers <31759736+ALongStringOfNumbers@users.noreply.github.com> Date: Sun, 29 Dec 2024 11:46:57 -0700 Subject: [PATCH 17/17] Add Property for separate run directories (#29) --- .../gtnhgradle/PropertiesConfiguration.java | 12 ++++++++++++ .../gtnhgradle/modules/IdeIntegrationModule.java | 10 ++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java index d52cf0a1..d91d91ed 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/PropertiesConfiguration.java @@ -761,6 +761,18 @@ Uncomment this to disable Checkstyle checks (currently wildcard import check). Leave blank to use the old release type, with -pre designations """) public String releaseType = "release"; + + @Prop( + name = "separateRunDirs", + isSettings = false, + preferPopulated = false, + required = false, + defaultInComment = "false", + docComment = """ + Separate run directories into "run/client" for runClient task, and "run/server" for runServer task. + Useful for debugging a server and client simultaneously. If not enabled, it will be in the standard location "run/" + """) + public boolean separateRunDirs = false; // // diff --git a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/IdeIntegrationModule.java b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/IdeIntegrationModule.java index f4612bb1..6b189d2d 100644 --- a/src/main/java/com/gtnewhorizons/gtnhgradle/modules/IdeIntegrationModule.java +++ b/src/main/java/com/gtnewhorizons/gtnhgradle/modules/IdeIntegrationModule.java @@ -177,9 +177,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project final RunMinecraftTask runClient = tasks.named("runClient", RunMinecraftTask.class) .get(); final var run = ijClientRun.get(); - run.setWorkingDirectory( - runClient.getWorkingDir() - .getAbsolutePath()); + File clientFile = new File(runClient.getWorkingDir(), gtnh.configuration.separateRunDirs ? "client" : ""); + run.setWorkingDirectory(clientFile.getAbsolutePath()); run.setProgramParameters(quotedJoin(runClient.calculateArgs())); run.setJvmArgs( quotedJoin(runClient.calculateJvmArgs()) + ' ' + quotedPropJoin(runClient.getSystemProperties())); @@ -192,9 +191,8 @@ public void apply(GTNHGradlePlugin.@NotNull GTNHExtension gtnh, @NotNull Project final RunMinecraftTask runServer = tasks.named("runServer", RunMinecraftTask.class) .get(); final var run = ijServerRun.get(); - run.setWorkingDirectory( - runServer.getWorkingDir() - .getAbsolutePath()); + File serverFile = new File(runServer.getWorkingDir(), gtnh.configuration.separateRunDirs ? "server" : ""); + run.setWorkingDirectory(serverFile.getAbsolutePath()); run.setProgramParameters(quotedJoin(runServer.calculateArgs())); run.setJvmArgs( quotedJoin(runServer.calculateJvmArgs()) + ' ' + quotedPropJoin(runServer.getSystemProperties()));