Adds 26.3, the last released version in #39. 26.4 isn't out yet, so #39 stays open for it.
Input
26.3 replaces GLFW with SDL, which numbers keys (scancodes), modifiers and mouse buttons differently. Saturn keeps GLFW's numbers, which common uses and the config's keybinds store, so saved keybinds keep working and the config needs no migration.
A new impl.provider.Keys converts at the boundary on 26.3: key events, modifiers and mouse buttons coming into Saturn's screens, and key codes going to InputConstants. On older versions it passes everything through.
Its table pairs GLFW's codes with 26.3's InputConstants of the same name. The only exception is Super, which 26.3 calls GUI.
On 26.3, key names come from the game, so the keybind selector shows "Right Shift" instead of "Key 344".
Rendering
Blaze3D's API moved to com.mojang.renderpearl, which Stonecutter replacements cover. PoseStack's quaternion mulPose is now rotate. TextureTarget takes a depth format instead of a flag.
26.3 compiles shaders through SPIR-V and reorders DynamicTransforms. glass.fsh takes explicit locations and the new order behind two defines that GlassRenderer sets on 26.3.
The unlit cosmetics pipeline declares its colour target, which 26.3 requires. Without it, rendering the player (F5) crashed.
Checked
All versions compile. A Stonecutter round trip through 26.3 leaves src/ unchanged, and src/ compiles with 26.3 active.
A script found no missing mixin target names in the 26.3 game jar.
Tested in game on 26.3: cosmetics in third person, keybinds, typing, mouse input, the glass UI and the rest of the mods.
The version guide covers the key conversion, the SPIR-V shader rule, and the fact that replacements work both ways.
Adds 26.3, the last released version in #39. 26.4 isn't out yet, so #39 stays open for it.
## Input
26.3 replaces GLFW with SDL, which numbers keys (scancodes), modifiers and mouse buttons differently. Saturn keeps GLFW's numbers, which `common` uses and the config's keybinds store, so **saved keybinds keep working** and the config needs no migration.
- A new `impl.provider.Keys` converts at the boundary on 26.3: key events, modifiers and mouse buttons coming into Saturn's screens, and key codes going to `InputConstants`. On older versions it passes everything through.
- Its table pairs GLFW's codes with 26.3's `InputConstants` of the same name. The only exception is Super, which 26.3 calls GUI.
- On 26.3, key names come from the game, so the keybind selector shows "Right Shift" instead of "Key 344".
## Rendering
- Blaze3D's API moved to `com.mojang.renderpearl`, which Stonecutter replacements cover. `PoseStack`'s quaternion `mulPose` is now `rotate`. `TextureTarget` takes a depth format instead of a flag.
- 26.3 compiles shaders through SPIR-V and reorders `DynamicTransforms`. `glass.fsh` takes explicit locations and the new order behind two defines that `GlassRenderer` sets on 26.3.
- The unlit cosmetics pipeline declares its colour target, which 26.3 requires. Without it, rendering the player (F5) crashed.
## Checked
- All versions compile. A Stonecutter round trip through 26.3 leaves `src/` unchanged, and `src/` compiles with 26.3 active.
- A script found no missing mixin target names in the 26.3 game jar.
- Tested in game on 26.3: cosmetics in third person, keybinds, typing, mouse input, the glass UI and the rest of the mods.
The version guide covers the key conversion, the SPIR-V shader rule, and the fact that replacements work both ways.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Adds 26.3 as a Stonecutter version, the last step of #39.
Input: 26.3 replaces GLFW with SDL, which numbers keys (scancodes),
modifiers and mouse buttons differently. Saturn keeps GLFW's numbers,
which common uses and the config's keybinds store, so saved keybinds
stay valid. The new Keys class converts at the boundary: key events,
modifiers and mouse buttons coming into Saturn's screens, and key codes
going to InputConstants. Its table pairs GLFW's codes with 26.3's
InputConstants of the same name. Key names come from the game on 26.3,
and version-specific code uses InputConstants' key constants rather
than GLFW's.
Rendering: Blaze3D's API moved to renderpearl, which Stonecutter
replacements cover. PoseStack's quaternion mulPose became rotate, and
TextureTarget takes a depth format instead of a flag. 26.3 compiles
shaders through SPIR-V and reorders the transforms block, so glass.fsh
takes explicit locations and the new order behind defines that
GlassRenderer sets, and the unlit cosmetics pipeline declares its
color target, which 26.3 requires.
OptionsScreen no longer takes whether a world is open.
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.
Adds 26.3, the last released version in #39. 26.4 isn't out yet, so #39 stays open for it.
Input
26.3 replaces GLFW with SDL, which numbers keys (scancodes), modifiers and mouse buttons differently. Saturn keeps GLFW's numbers, which
commonuses and the config's keybinds store, so saved keybinds keep working and the config needs no migration.impl.provider.Keysconverts at the boundary on 26.3: key events, modifiers and mouse buttons coming into Saturn's screens, and key codes going toInputConstants. On older versions it passes everything through.InputConstantsof the same name. The only exception is Super, which 26.3 calls GUI.Rendering
com.mojang.renderpearl, which Stonecutter replacements cover.PoseStack's quaternionmulPoseis nowrotate.TextureTargettakes a depth format instead of a flag.DynamicTransforms.glass.fshtakes explicit locations and the new order behind two defines thatGlassRenderersets on 26.3.Checked
src/unchanged, andsrc/compiles with 26.3 active.The version guide covers the key conversion, the SPIR-V shader rule, and the fact that replacements work both ways.
🤖 Generated with Claude Code