Part of #30: the five small gaps. Nametags on 1.21.9+ and the panorama/blur on 1.21.6+ get their own PRs.
Gap
Versions
Fix
World age (TPS feature, day counter)
1.21.11
World.getTime() was a shortcut for getLevelProperties().getTime(), which every version has. getWorldAge now uses that everywhere, with no version condition. It returned 0 on 1.21.11.
Screen resize
1.21.11
Override the new resize(int, int).
Splash loading-bar border
1.21.9+
drawBorder was renamed drawStrokedRectangle.
Drag deltas in Saturn screens
1.21.9+
mouseDragged(Click, offsetX, offsetY) gets the deltas as offsetX/offsetY (vanilla's Mouse computes them before building the Click). Saturn's screens got 0.0, 0.0.
Role icon in player names
1.21.4–1.21.7
Only storing the player in the render state needs Fabric API's render state data (1.21.8+). The updateRenderState hook now runs on every version, and only the setData call is limited to 1.21.8+. #30 said 1.21.6–1.21.7, but 1.21.4 and 1.21.5 lacked it too.
VERSION_GUIDE.md's TODO examples now point at the two gaps still open.
Checks
Builds:compileJava passes for all 8 versions.
Switching: round trips on 1.21.4 and 1.21.9 leave src/ unchanged.
In game: 1.21.4, 1.21.7 and 1.21.11 start.
Needs an in-game check:
the role icon in names on 1.21.4–1.21.7
dragging in Saturn screens (sliders, HUD editor) on 1.21.9+
the splash border on 1.21.9+
resizing the window with a Saturn screen open on 1.21.11
Part of #30: the five small gaps. Nametags on 1.21.9+ and the panorama/blur on 1.21.6+ get their own PRs.
| Gap | Versions | Fix |
|---|---|---|
| World age (TPS feature, day counter) | 1.21.11 | `World.getTime()` was a shortcut for `getLevelProperties().getTime()`, which every version has. `getWorldAge` now uses that everywhere, with no version condition. It returned 0 on 1.21.11. |
| Screen resize | 1.21.11 | Override the new `resize(int, int)`. |
| Splash loading-bar border | 1.21.9+ | `drawBorder` was renamed `drawStrokedRectangle`. |
| Drag deltas in Saturn screens | 1.21.9+ | `mouseDragged(Click, offsetX, offsetY)` gets the deltas as `offsetX`/`offsetY` (vanilla's `Mouse` computes them before building the `Click`). Saturn's screens got `0.0, 0.0`. |
| Role icon in player names | **1.21.4–1.21.7** | Only storing the player in the render state needs Fabric API's render state data (1.21.8+). The `updateRenderState` hook now runs on every version, and only the `setData` call is limited to 1.21.8+. #30 said 1.21.6–1.21.7, but 1.21.4 and 1.21.5 lacked it too. |
`VERSION_GUIDE.md`'s `TODO` examples now point at the two gaps still open.
## Checks
- **Builds:** `compileJava` passes for all 8 versions.
- **Switching:** round trips on 1.21.4 and 1.21.9 leave `src/` unchanged.
- **In game:** 1.21.4, 1.21.7 and 1.21.11 start.
**Needs an in-game check:**
- the role icon in names on 1.21.4–1.21.7
- dragging in Saturn screens (sliders, HUD editor) on 1.21.9+
- the splash border on 1.21.9+
- resizing the window with a Saturn screen open on 1.21.11
- the TPS and day counter on 1.21.11
🤖 Generated with [Claude Code](https://claude.com/claude-code)
- World age on 1.21.11: World.getTime() was a shortcut for
getLevelProperties().getTime(), which every version has, so
getWorldAge uses that everywhere (the TPS feature and day counter got 0
on 1.21.11).
- Screen resize on 1.21.11: override resize(int, int), the new signature.
- Splash loading-bar border on 1.21.9+: drawBorder was renamed
drawStrokedRectangle.
- Drag deltas on 1.21.9+: mouseDragged(Click, offsetX, offsetY) gets the
deltas as offsetX/offsetY; Saturn's screens got 0.0 before.
- Role icon in player names on 1.21.4-1.21.7: only storing the player in
the render state needs Fabric API's render state data (1.21.8+). The
updateRenderState hook now runs on every version and only the setData
call is limited to 1.21.8+.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Part of #30: the five small gaps. Nametags on 1.21.9+ and the panorama/blur on 1.21.6+ get their own PRs.
World.getTime()was a shortcut forgetLevelProperties().getTime(), which every version has.getWorldAgenow uses that everywhere, with no version condition. It returned 0 on 1.21.11.resize(int, int).drawBorderwas renameddrawStrokedRectangle.mouseDragged(Click, offsetX, offsetY)gets the deltas asoffsetX/offsetY(vanilla'sMousecomputes them before building theClick). Saturn's screens got0.0, 0.0.updateRenderStatehook now runs on every version, and only thesetDatacall is limited to 1.21.8+. #30 said 1.21.6–1.21.7, but 1.21.4 and 1.21.5 lacked it too.VERSION_GUIDE.md'sTODOexamples now point at the two gaps still open.Checks
compileJavapasses for all 8 versions.src/unchanged.Needs an in-game check:
🤖 Generated with Claude Code