1.21.5 is the first version before the 1.21.6 GUI rewrite, which moved
GUI drawing from vertex consumers and a MatrixStack to render states and
a 2D Matrix3x2fStack.
- RenderScopeImpl and EntityDrawerImpl have two whole implementations,
one per side of 1.21.6 (a single >=1.21.6 / else split), instead of
conditionals scattered through them. Callers use RenderScopeImpl(context)
in every version; 1.21.5's did the same thing through its
(matrices, vertexConsumers) constructor.
- MatrixStackMixin (MatrixStack as a MatrixStackRef) is real before 1.21.6
and empty from 1.21.6, registered everywhere like NametagsMixin.
- DrawContextAccessor exposes the vertex consumers before 1.21.6 and the
GUI render state from it.
- Smaller changes: fog (BackgroundRenderer vs FogRenderer), the end
portal texture arguments (ShaderUtils, now a flat three-way chain), the
status effect sprite manager, and getIconId only from 1.21.6.
Features 1.21.6+ lacks stay on 1.21.5, with a TODO: the title panorama
behind Saturn screens and the background blur (screen.backgroundBlur,
see #23).
The 1.21.5 jar differs from the old one only in the helpers from earlier
steps, the RenderScopeImpl(context) calls, the empty SaturnRenderState
and unused Matrix3x2fStackRef, and 1.21.5's dead NameTagMixin (never
registered) being gone. 1.21.6-1.21.11 only gain the empty
MatrixStackMixin and its impl.mixins.json entry.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Step 1 of #8. 1.21.11's version-specific code moves from versions/1.21.11/src
to the top-level src/, built by Stonecutter as the project :1.21.11. The other
versions still build from their own copies as :mc-<v> until they're folded in.
- settings.gradle: applies Stonecutter (Groovy controller) with
stonecutterVersions = ["1.21.11"] and skips those folders when including
the old mc-<v> projects.
- The old root build.gradle becomes stonecutter.gradle (the root project's
script, with the shared repositories, common wiring and buildAll), and
1.21.11's build.gradle becomes the root build.gradle that Stonecutter runs
for each version. versions/1.21.11 keeps its gradle.properties and run/.
- The jar has the same 415 entries, fabric.mod.json and mixin configs as
before; the only class differences also appear when rebuilding an
untouched version today.
- scripts/port.sh treats src/ as the active Stonecutter version, so changes
port between it and the old copies both ways.
- README and VERSION_GUIDE describe the layout, version comments and how to
add a version.
Co-Authored-By: Claude Opus 5.5 <[email protected]>