← All news

Stratum 1.22.7-stratum.2 is out

Posted by Trevor · September 6, 2026

Stratum 1.22.7-stratum.2 is now available.

This release closes several griefing exploits, gets boats and rafts responding to controls again, and fixes the kit editor. There is also another round of performance work in terrain generation, cave carving, lighting, and server animations.

For public server owners, the security fixes are the main reason to update. They apply even when Stratum’s optional anticheat is disabled.

Download 1.22.7-stratum.2

Griefing fixes

Recent attacks on multiplayer servers exposed ways for a client to interfere with other players and bypass normal block-breaking checks. This update closes those paths at the server’s packet handlers.

Players can no longer change another player’s view distance. Invalid block action modes are rejected instead of falling through into a block break that skips the normal logging and abuse checks.

Following up with these also tightened several related interactions:

These are ordinary server correctness checks, so you don’t have to worry about enabling them.

Boats and rafts respond again

Boats and rafts could stop responding to controls because the server’s deferred shape loading left required shape data unavailable during entity initialization.

Entities that need server poses now request their shape before that first setup step. The same handling covers behaviors that start requiring poses later. This restores the information used by seats, attachment points, and selection boxes while keeping other entity shapes loaded on demand.

The kit editor works, with a choice of what to save

Every /kitedit action could fail with an incomplete-command registration error before reaching Stratum’s handler. That registration is fixed, along with argument validation and usage messages.

There is also a new per-kit snapshot scope. The default all scope captures the hotbar and character inventory, including worn equipment. The hotbar scope captures the hotbar and offhand without copying worn armor or clothing.

For an existing kit, use:

/kitedit setscope starter_kit hotbar
/kitedit create starter_kit

The scope applies the next time you run create. Changing it does not remove items from a saved kit by itself. For a new kit, create it first, set its scope, then run create again to replace the captured items.

Less repeated work during world generation

Terrain generation now shares a dedicated pool of workers for its inner column work and spends less time scanning landforms that contribute nothing to a column. Nested generation also restores the correct instance’s buffers, and the vanilla fallback is protected from concurrent calls overwriting shared state. Mods that replace the vanilla terrain generator keep that fallback.

Cave carving batches block changes per affected subchunk and reuses its temporary buffers. The accompanying fixes preserve lava when a block layer is initialized and synchronize scheduled light updates between generation stages. The /dev gencaves command uses its own generator state and locked writes when changing chunks that are already loaded.

Terrain post-processing now reads from local chunk snapshots instead of repeatedly unpacking block palettes during its scan. It also checks missing chunk data and unusual column heights before indexing those snapshots.

Bulk lighting writes gained vectorized paths, and the existing AVX2 and AVX-512 block and light decoding paths do less branching.

The contributor benchmarks used 31,417 chunk columns and six generation threads. These are reductions in the profiled methods’ execution time across that workload, not total pregen time:

Work measuredBeforeAfterReduction
Cave carving60.20 s55.83 s7.3%
Terrain post-processing5.49 s3.45 s37.2%
Bulk lighting writes6.02 s3.45 s42.7%

Each row is the average of three runs reported in its PR. Results will vary with hardware and world settings.

Server animations update when needed

The server previously rebuilt pose matrices every tick for entities that require server poses, even when nothing read them. It now marks them stale and refreshes them when a pose getter is called. Boats, ropes, and other systems using those getters still receive current poses.

This is enabled by default through Performance.EntityTicking.LazyServerPoses. A mod that reads server pose matrices directly instead of using the getters may need this setting changed to false.

The contributor’s equivalence check compared 1,842 attachment-point reads over 6,000 frames and found no matrix differences. A separate one-player server comparison measured about 20% less player entity tick time on that machine. The PR has the test details.

Updating

The new exploit checks apply automatically, existing kits retain the default all scope, and lazy server poses are enabled by default.

Developer tooling also received kit-command regression checks and a corrected Linux smoke-test working directory so mod dependencies resolve from the server directory.

Thanks to tehtelev, Michael Andrzejewski, and Zaldaryon for their contributions, and to the server owners who reported the griefing attacks and gameplay problems.

Full changelog

This list includes direct commits as well as pull requests. Follow-up commits are grouped under the PR that contains them.

Full commit comparison: v1.22.7-stratum.1.1…v1.22.7-stratum.2