Repository navigation
Update NeoForge 26.3 to stable; remove recompilation workaround - #57
Merged
Merged
Conversation
TimStewartJ
marked this pull request as ready for review
October 12, 2026 06:49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
neoforge_disable_recompilationproperty and its entire buildscript opt-out.CI=false, fresh NeoForm intermediates, Minecraft source recompilation, and compilation of the mod and both test companions. The check explicitly rejects disabled recompilation.neoforge.Investigation
NeoForge's authoritative Maven metadata lists
26.3.0.76as the release, and its Gradle module metadata identifies the artifact asrelease. The universal jar's SHA-256 matches the published metadata:02620022710df8f62038839b1743ef32033579762831b8b0bb84caee5b3b99de.The reference scanner checked the published 2.1.0 NeoForge 26.3 jar against both the old and new loader: 26/26 loader references resolve on both, with no broken references. The actual ModDevGradle 2.0.143 bytecode confirms that
CI=truedisables source recompilation by default, so an ordinary green build alone would not justify removing the local workaround.The claim needed a correction: a non-beta loader does not fix source recompilation by itself. Fresh CI reproduces
HolderSet$1.contents()attempting to override the now-publicHolderSet.Named.contents()with weaker access on both 26.3.0.6-beta and 26.3.0.76 with ModDevGradle 2.0.143. The loader's relevant access transformers are identical. The root cause is JavaSourceTransformer failing to apply access transformers to anonymous class members, fixed in neoforged/JavaSourceTransformer#67. ModDevGradle 2.0.148 supplies that fix through NeoForm Runtime 2.0.31.Checking the actual runtime caught a second trap: the first green matrix with the updated toolchain recompiled Minecraft successfully and ran the dev client/server on 26.3.0.76, but its packaged client silently reused cached 26.3.0.6-beta. The HeadlessMc initializer previously checked only Minecraft parent plus a loader substring, ignoring the requested loader version when a cache existed. This PR fixes that selection rather than invalidating the cache to hide the bug. The seven regression cases cover stale loaders, exact pins, old/new co-existence, wrong Minecraft parent, Forge versus NeoForge, and an installer that fails to provide the requested version.
Sources:
Validation
All positive results below are on 02f900a:
recompilecompleted in 32.77 s, then the mod and both test companions compiledVerify NeoForge source recompilationmightyarchitect-runtime-tests-26.3artifact; both server and packaged client logNeoForge mod loading, version 26.3.0.76, for MC 26.3Cached production loader matches the pinlive=falseNegative controls:
HolderSet$1.contents()with ModDevGradle 2.0.143.NeoForge 26.3 source recompilation must be enabledon the updated toolchain.cached different loader must install the pinned version: selected 'neoforge-26.3.0.6-beta', and the required aggregate failed too.Try it
Branch:
maintenance/neoforge-26.3-stableLocal worktree:
E:\TMA-neoforge-26.3-stableDownload the
mightyarchitect-26.3artifact from the final build above. Use the NeoForge jar on Minecraft 26.3 / NeoForge 26.3.0.76 / Java 25, replacing the existing Mighty Architectury jar rather than installing both. This is a trial build, not a new published release; its embedded mod version remains 2.1.0.Trial NeoForge jar SHA-256:
d1a3f4ea1d330f633f46dd25adba796d150499df7c4dfb6acfdef30109a6dc2f.Scope
This removes all of the beta-loader source-recompilation workaround, not Minecraft 26.3 compatibility code. SDL text input, shader variants,
StackShadowPages, and Xvfb/EGL support still address the game's own changes and must remain. Other Minecraft/loader pins, metadata minimums, and release channels are unchanged.ModDevGradle is shared by NeoForge and legacy Forge, so the full matrix verifies all of those targets too. No merge, mod version bump, tag, upload, or modification of the already-published 2.1.0 jars is part of this PR.