Step 4 of #8, the first version before the 1.21.9 render queue.
versions/1.21.8/src is gone; 1.21.8 builds from src/ as :1.21.8.
API differences behind version comments (<1.21.9 / >=1.21.9):
- Player cosmetics: FeatureRenderer.render takes a VertexConsumerProvider
instead of the render queue. The cloak, hat and OBJ renderers name the
render target "output" in both, so only the parameter type and the final
draw call differ; the OBJ face loop moved into drawGroup.
- PlayerEntityRenderer.updateRenderState's entity type, the cape texture
accessor, GameProfile getName()/getId() vs name()/id(), fonts in
TextMixin, EntityRenderDispatcher vs EntityRenderManager, Screen input
events (Click/KeyInput), and KeyBinding categories and isKeyPressed.
Features 1.21.9+ lacks stay on 1.21.8, with a TODO for 1.21.9+:
- NametagsMixin moves into src/. It hooks renderLabelIfPresent with a
VertexConsumerProvider, which 1.21.9 changed, so on 1.21.9+ its body is
empty; it stays registered, so features.mixins.json is the same for
every version.
- The splash screen's loading-bar border, and the real drag deltas in
SaturnScreenFabric.mouseDragged.
- Status effect icons keep 1.21.8's GUI atlas sprite; 1.21.9+ draws the
texture instead (getIconId), as before.
Behaviour changes on 1.21.8: the cloak and hat read the Saturn player from
the render state (set by PlayerEntityRendererMixin, by UUID) instead of
looking it up by name, and the display-name null check applies.
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]>