Features missing on newer Minecraft versions (from the Stonecutter migration) #30

Closed
opened 2026-09-27 04:49:12 +00:00 by selimaj-dev · 0 comments
Owner

Moving every version to one shared src/ with Stonecutter (#8) kept each version's behaviour. Where a newer version left out something an older one implements, the older code stays behind a version condition, and the newer side is marked with a TODO. These are the gaps it found, newest-versions-first:

  • Custom nametags on 1.21.9+. NametagsMixin hooks EntityRenderer.renderLabelIfPresent(…, VertexConsumerProvider, …). 1.21.9 moved label rendering to the render queue, so the mixin is empty there and NametagsMod does nothing. (impl/features/mixins/misc/NametagsMixin.java)
  • Splash screen loading-bar border on 1.21.9+. context.drawBorder is only called before 1.21.9. (saturnclient/mixin/SplashOverlayMixin.java)
  • Drag deltas on 1.21.9+. SaturnScreenFabric.mouseDragged passes 0.0, 0.0 to Saturn's screens; 1.21.8 passes the real deltas. Check whether offsetX/offsetY are the same values. (impl/ui/SaturnScreenFabric.java)
  • Screen resize on 1.21.11. The resize override is only hooked before 1.21.11, where Screen.resize changed signature. (impl/ui/SaturnScreenFabric.java)
  • World age on 1.21.11. WorldFeatureImpl.getWorldAge returns 0 on 1.21.11; older versions use world.getTime(). It's used by the TPS feature and the day counter. (impl/features/world/WorldFeatureImpl.java)
  • Title panorama and background blur on 1.21.6+. Saturn screens draw the rotating panorama and blur it by screen.backgroundBlur only before 1.21.6's GUI rewrite. Related to #23. (impl/ui/SaturnScreenFabric.java)
  • Role icon in player names on 1.21.6 and 1.21.7. It's added in PlayerEntityRendererMixin.updateRenderState by storing the player in the render state, which needs Fabric API's RenderStateDataKey (1.21.8+). 1.21.6/1.21.7 would need another way to pass the player to the name. (saturnclient/mixin/PlayerEntityRendererMixin.java)

Search src/ for TODO to find each spot. Once one is fixed, remove its version condition so every version runs the same code.

Moving every version to one shared `src/` with Stonecutter (#8) kept each version's behaviour. Where a newer version left out something an older one implements, the older code stays behind a version condition, and the newer side is marked with a `TODO`. These are the gaps it found, newest-versions-first: - [x] **Custom nametags on 1.21.9+.** `NametagsMixin` hooks `EntityRenderer.renderLabelIfPresent(…, VertexConsumerProvider, …)`. 1.21.9 moved label rendering to the render queue, so the mixin is empty there and `NametagsMod` does nothing. (`impl/features/mixins/misc/NametagsMixin.java`) - [x] **Splash screen loading-bar border on 1.21.9+.** `context.drawBorder` is only called before 1.21.9. (`saturnclient/mixin/SplashOverlayMixin.java`) - [x] **Drag deltas on 1.21.9+.** `SaturnScreenFabric.mouseDragged` passes `0.0, 0.0` to Saturn's screens; 1.21.8 passes the real deltas. Check whether `offsetX`/`offsetY` are the same values. (`impl/ui/SaturnScreenFabric.java`) - [x] **Screen resize on 1.21.11.** The `resize` override is only hooked before 1.21.11, where `Screen.resize` changed signature. (`impl/ui/SaturnScreenFabric.java`) - [x] **World age on 1.21.11.** `WorldFeatureImpl.getWorldAge` returns 0 on 1.21.11; older versions use `world.getTime()`. It's used by the TPS feature and the day counter. (`impl/features/world/WorldFeatureImpl.java`) - [x] **Title panorama and background blur on 1.21.6+.** Saturn screens draw the rotating panorama and blur it by `screen.backgroundBlur` only before 1.21.6's GUI rewrite. Related to #23. (`impl/ui/SaturnScreenFabric.java`) - [x] **Role icon in player names on 1.21.6 and 1.21.7.** It's added in `PlayerEntityRendererMixin.updateRenderState` by storing the player in the render state, which needs Fabric API's `RenderStateDataKey` (1.21.8+). 1.21.6/1.21.7 would need another way to pass the player to the name. (`saturnclient/mixin/PlayerEntityRendererMixin.java`) Search `src/` for `TODO` to find each spot. Once one is fixed, remove its version condition so every version runs the same code.
selimaj-dev added the area/modsarea/renderingarea/uiarea/versions
type
bug
labels 2026-09-27 04:49:12 +00:00
selimaj-dev added this to the Saturn Client project 2026-09-27 04:52:45 +00:00
selimaj-dev moved this to In Progress in Saturn Client on 2026-09-27 04:52:54 +00:00
selimaj-dev moved this to Done in Saturn Client on 2026-09-27 05:35:20 +00:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: saturnclientmc/saturnclient#30