From 1c3a4469a95bdb84a8979906a6f92967eb4c81c1 Mon Sep 17 00:00:00 2001 From: "Claude (Chronicler #83 - The Compiler)" Date: Sun, 12 Apr 2026 14:30:10 +0000 Subject: [PATCH] =?UTF-8?q?docs(consultation):=20Gemini=20response=20?= =?UTF-8?q?=E2=80=94=20Rules=20Mod=20build=20strategy=20confirmed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Key findings: - moddev 2.0.74-beta valid, NeoForge 21.1.65 stable target - Cannot bypass Gradle (reobfuscation required) - 1.16.5 needs Java 8, HttpURLConnection, StringTextComponent - SDKMAN for Java version management - Official MDK bases for each Forge version Claude (Chronicler #83 - The Compiler) --- ...gemini-rules-mod-compilation-2026-04-12.md | 40 +++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/docs/consultations/gemini-rules-mod-compilation-2026-04-12.md b/docs/consultations/gemini-rules-mod-compilation-2026-04-12.md index c0b3b25..dd20005 100644 --- a/docs/consultations/gemini-rules-mod-compilation-2026-04-12.md +++ b/docs/consultations/gemini-rules-mod-compilation-2026-04-12.md @@ -89,3 +89,43 @@ The NeoForge 1.21.1 source uses APIs that changed significantly across versions: Thanks Gemini! This is Holly's top priority — she wants the servers to feel like home, and `/rules` is part of that. 🔥❄️ — Michael + Claude (Chronicler #83 — The Compiler) + +--- + +## Gemini's Response (April 12, 2026) + +**Summary:** Full validation of approach + detailed port guide for all 3 versions. No shortcuts — must use Gradle toolchain due to reobfuscation requirement. + +### Key Answers: + +1. **NeoForge 1.21.1:** `moddev 2.0.74-beta` is valid. Use NeoForge version `21.1.65` (stable). + +2. **Forge 1.20.1 port:** Namespace swap `net.neoforged.*` → `net.minecraftforge.*`. `ModConfigSpec` → `ForgeConfigSpec`. Meta file: `mods.toml` (not `neoforge.mods.toml`). + +3. **Forge 1.16.5 port (heaviest lift):** + - **Must target Java 8** (many servers run Java 8) + - `Component.literal()` → `new StringTextComponent()` + - `java.net.http.HttpClient` → `java.net.HttpURLConnection` (HttpClient is Java 11+) + - Config: `ForgeConfigSpec`, meta: `mods.toml` + +4. **Gradle versions:** 1.21.1 needs Gradle 8.6+/Java 21. 1.20.1 needs Gradle 8.x/Java 17. 1.16.5 needs Gradle 7.x/Java 8. + +5. **Cannot simplify with raw javac** — Forge uses **reobfuscation** (reobfJar) during build. Code is written with mapped readable names but server runs obfuscated SRG names. Gradle translates between them. Raw javac output would crash the server. + +### Build Strategy: +- Use SDKMAN to swap Java versions (21, 17, 8) +- Use official MDK bases for 1.20.1 and 1.16.5 (don't downgrade the 1.21.1 build.gradle) +- Upload via WebDAV to NextCloud + +--- + +## Conclusion + +Gemini confirmed the approach is sound. Three separate project scaffolds needed, each with its own Gradle wrapper and MDK base. The 1.16.5 port requires HttpURLConnection rewrite and StringTextComponent swap. + +**Next Steps:** +1. Install SDKMAN + Java 17 + Java 8 +2. Build NeoForge 1.21.1 first (closest to existing code) +3. Download Forge 1.20.1 MDK, port code +4. Download Forge 1.16.5 MDK, port code with HTTP rewrite +5. Upload all 3 jars to NextCloud via WebDAV