Phase 10: implement neoforge-26_1 leaf (WS, deltas, chat, link, reconciliation, player tracking)
Ports the full feature set proven by the two legacy leaves to modern, post-Flattening NeoForge (loader assumption confirmed: NeoForge 26.1.2.94 is real and published). Neoforge261ChunkAdapter reads BlockState via LevelChunk/LevelChunkSection instead of raw id+meta, carrying the full packed state id in DeltaEvent#blockStateId (a lossless int, unlike the pre-Flattening 16-bit encoding) while documenting a known truncation caveat for SectionData's char[]-based 3D backfill on very large modded registries. MCMapperMod uses constructor-injected event buses (IEventBus/ModContainer) and NeoForge.EVENT_BUS instead of @Mod.EventHandler methods, ModConfigSpec instead of legacy Configuration, and LinkCommand is a Brigadier registration (no CommandBase in this era) fired from RegisterCommandsEvent. Tracks its own loaded-chunk set via ChunkEvent.Load/Unload rather than querying chunk provider internals (no stable public API for that in modern MC). Gets its own standalone Gradle wrapper + settings.gradle (Foojay toolchain resolver) since ModDevGradle needs Gradle 8+ and a Java 25 toolchain (MC itself now requires Java 25), incompatible with the legacy leaves' Gradle-7/JDK-8 pin in one invocation. Verified against real NeoForge 26.1.2.94 + decompiled MC 26.1.2 source via ./gradlew build from inside neoforge-26_1/ (two real API mismatches caught and fixed by the compiler: ChunkPos is now a record — x()/z() methods, not fields — and ResourceLocation was renamed to Identifier, ResourceKey#identifier() not #location()).
This commit is contained in:
+9
-5
@@ -17,8 +17,12 @@ include 'forge-1_12_2'
|
||||
// neoforge-26_1 is intentionally NOT included in the default build: both legacy leaves
|
||||
// (forge-1_7_10, forge-1_12_2) use anatawa12's ForgeGradle 1.2/2.3 forks, which need Gradle 7.6
|
||||
// and JDK 8 (see gradle.properties' org.gradle.java.home pin and this project's
|
||||
// gradle-wrapper.properties). ModDevGradle (used by neoforge-26_1) needs Gradle 8+ and JDK 17+
|
||||
// to even apply the plugin — incompatible with that daemon within one invocation. Until Phase 10
|
||||
// gives it a proper isolated build setup, it can only be built by pointing org.gradle.java.home
|
||||
// at a JDK 21+ install and invoking Gradle (8+) from inside the neoforge-26_1/ directory
|
||||
// directly, with its own wrapper. The module itself is fully scaffolded and ready.
|
||||
// gradle-wrapper.properties). ModDevGradle (used by neoforge-26_1) needs Gradle 8+ and a Java 25
|
||||
// toolchain (Minecraft itself now requires Java 25 as of the 26.x cycle) — incompatible with
|
||||
// that daemon within one invocation. Phase 10 gave it its own standalone build instead: it has
|
||||
// its own wrapper + settings.gradle (with the Foojay toolchain resolver, so Gradle
|
||||
// auto-provisions the JDK 25 toolchain rather than needing one pre-installed) — build it from
|
||||
// inside neoforge-26_1/ directly (`cd neoforge-26_1 && ./gradlew build`), pointing
|
||||
// org.gradle.java.home at a JDK 21+ install for the Gradle daemon itself via a separate
|
||||
// $GRADLE_USER_HOME (same mechanism as the legacy leaves' JDK 8 pin) — see neoforge-26_1's
|
||||
// README section for the full command.
|
||||
|
||||
Reference in New Issue
Block a user