Stonecutter step 2: build 1.21.10 from the shared src/ #25

Merged
selimaj-dev merged 1 commits from stonecutter-1.21.10 into stonecutter 2026-09-27 03:06:12 +00:00
Owner

Step 2 of #8, into the stonecutter integration branch. 1.21.10 now builds from src/ as :1.21.10, and versions/1.21.10/src is gone.

Version comments (API differences)

File 1.21.10 1.21.11
ShaderUtils RenderLayer.of(…, MultiPhaseParameters), RenderLayer.getEntityAlpha RenderSetup, RenderLayers.entityAlpha
CameraMixin Camera.update(BlockView, …) Camera.update(World, …)
RenderScopeImpl text render state without the extra flag, TextureSetup.withoutGlTexture extra flag, TextureSetup.of(view, sampler)
SplashOverlayMixin Screen.init(client, w, h) Screen.init(w, h)
SaturnRenderState no jspecify @NonNull

Logic: nothing lost, one fix

  • Features 1.21.11 leaves out stay on 1.21.10. Each has a TODO on the 1.21.11 side:
    • WorldFeatureImpl.getWorldAge (returns 0 on 1.21.11)
    • SaturnScreenFabric.resize (not hooked on 1.21.11)
    • EntityDrawerImpl clearing the hitbox
  • Hats now render on 1.21.10.
    • Before: its HatFeatureRenderer overrode the render-queue render(…) with an empty body, and the working code sat in an old VertexConsumerProvider method that nothing called.
    • Now: 1.21.10 uses 1.21.11's render-queue implementation (HatFeatureRenderer, ObjModel, ObjRenderer), which compiles unchanged on 1.21.10.
  • 1.21.10 also gets 1.21.11's null check on the player's display name in PlayerEntityRendererMixin.

Checks

  • 1.21.10 jar vs the old :mc-1.21.10 jar: same 415 entries, identical fabric.mod.json and mixin configs. Comparing bytecode (ignoring line numbers), only these classes differ: the three hat classes, PlayerEntityRendererMixin (the null check) and ShaderUtils (a new entityAlpha helper). Everything else compiles to the same bytecode.
  • 1.21.11 jar: only ShaderUtils differs (the same helper).
  • Switching versions: Set active project to 1.21.10 compiles, and Reset active project leaves src/ unchanged. The version comments are already in Stonecutter's own layout.
  • Builds: a cold buildAll --no-build-cache builds all 8 jars in 85 s, and compileJava passes.
  • In game: :1.21.10:runClient starts. Only 1.21.11's run folder has DevAuth, so the 1.21.10 dev client plays offline and can't log in to the Saturn server.

Needs an in-game check: hats on 1.21.10, with a logged-in account that owns one.

🤖 Generated with Claude Code

Step 2 of #8, into the `stonecutter` integration branch. 1.21.10 now builds from `src/` as `:1.21.10`, and `versions/1.21.10/src` is gone. ## Version comments (API differences) | File | 1.21.10 | 1.21.11 | |---|---|---| | `ShaderUtils` | `RenderLayer.of(…, MultiPhaseParameters)`, `RenderLayer.getEntityAlpha` | `RenderSetup`, `RenderLayers.entityAlpha` | | `CameraMixin` | `Camera.update(BlockView, …)` | `Camera.update(World, …)` | | `RenderScopeImpl` | text render state without the extra flag, `TextureSetup.withoutGlTexture` | extra flag, `TextureSetup.of(view, sampler)` | | `SplashOverlayMixin` | `Screen.init(client, w, h)` | `Screen.init(w, h)` | | `SaturnRenderState` | no jspecify | `@NonNull` | ## Logic: nothing lost, one fix - **Features 1.21.11 leaves out stay on 1.21.10.** Each has a `TODO` on the 1.21.11 side: - `WorldFeatureImpl.getWorldAge` (returns 0 on 1.21.11) - `SaturnScreenFabric.resize` (not hooked on 1.21.11) - `EntityDrawerImpl` clearing the hitbox - **Hats now render on 1.21.10.** - Before: its `HatFeatureRenderer` overrode the render-queue `render(…)` with an empty body, and the working code sat in an old `VertexConsumerProvider` method that nothing called. - Now: 1.21.10 uses 1.21.11's render-queue implementation (`HatFeatureRenderer`, `ObjModel`, `ObjRenderer`), which compiles unchanged on 1.21.10. - **1.21.10 also gets 1.21.11's null check** on the player's display name in `PlayerEntityRendererMixin`. ## Checks - **1.21.10 jar vs the old `:mc-1.21.10` jar:** same 415 entries, identical `fabric.mod.json` and mixin configs. Comparing bytecode (ignoring line numbers), only these classes differ: the three hat classes, `PlayerEntityRendererMixin` (the null check) and `ShaderUtils` (a new `entityAlpha` helper). Everything else compiles to the same bytecode. - **1.21.11 jar:** only `ShaderUtils` differs (the same helper). - **Switching versions:** `Set active project to 1.21.10` compiles, and `Reset active project` leaves `src/` unchanged. The version comments are already in Stonecutter's own layout. - **Builds:** a cold `buildAll --no-build-cache` builds all 8 jars in 85 s, and `compileJava` passes. - **In game:** `:1.21.10:runClient` starts. Only 1.21.11's run folder has DevAuth, so the 1.21.10 dev client plays offline and can't log in to the Saturn server. **Needs an in-game check:** hats on 1.21.10, with a logged-in account that owns one. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
selimaj-dev added 1 commit 2026-09-27 03:05:05 +00:00
Build 1.21.10 with Stonecutter from the shared src/
Check / compile (pull_request) Successful in 7m13s
95e4dff448
Step 2 of #8. versions/1.21.10/src is gone; 1.21.10 builds from src/ as
:1.21.10, with versions/1.21.10 keeping only gradle.properties and run/.

API differences go behind version comments: render layers (ShaderUtils),
Camera.update's World vs BlockView (CameraMixin), the text and textured-quad
render states (RenderScopeImpl), Screen.init (SplashOverlayMixin) and
jspecify's @NonNull (SaturnRenderState).

Features 1.21.11 leaves out stay on 1.21.10, with a TODO for 1.21.11:
WorldFeatureImpl.getWorldAge, SaturnScreenFabric.resize and
EntityDrawerImpl clearing the hitbox.

Hats now render on 1.21.10: its HatFeatureRenderer overrode the
render-queue method with an empty body, and the working code sat in an old
VertexConsumerProvider method nothing called. 1.21.10 now uses 1.21.11's
render-queue implementation (HatFeatureRenderer, ObjModel, ObjRenderer),
and also gets 1.21.11's null check on the player's display name.

The 1.21.10 jar has the same entries, fabric.mod.json and mixin configs as
before; only those four classes and ShaderUtils (a helper method for
entityAlpha) have different bytecode. The 1.21.11 jar only differs in
ShaderUtils.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
selimaj-dev added the area/buildarea/versions
type
refactor
labels 2026-09-27 03:05:10 +00:00
selimaj-dev merged commit 242653054d into stonecutter 2026-09-27 03:06:12 +00:00
selimaj-dev deleted branch stonecutter-1.21.10 2026-09-27 03:06:15 +00:00
Sign in to join this conversation.