Список изменений
Slabbed's first Forge release! The mod has lived on Fabric and NeoForge
until now — this build brings the full 0.5.2 behavior set to Forge 1.20.1,
seeded from the NeoForge 1.21.1 0.5.2-alpha.2 release and verified by the
same test suite, grown to 265 tests on this line. The beta label reflects that
the shared alpha numbers 1-4 are spent and that this is a first public build
on a new loader.
Upgrade note
- Blocks that follow a lowered support but were placed before the flush-landing rule carry no stored height fact. Over deep supports these were previously clamped to a −1.0 offset; on first load in this version they seat flush on the real surface. This is a one-time visual shift to the intended permanent seating, not data loss.
Placement and persistence
- Placing onto a dirt path or farmland converts it to dirt first (maintainer ruling, 2026-09-01), so the placed block sits at normal height instead of settling onto the trampled block's slightly-lower face. Vanilla does this only for solid full blocks; Slabbed extends it to every placement it manages.
- Store the exact signed half-step chosen by a real placement, persist it with its chunk, synchronize it to clients, and keep it permanent through neighbor updates and support removal.
- Keep the legal interaction envelope at
−3.0and reject aims or prospective landings deeper than it before block, fact, item, event, or chunk-dirty mutation. A−2.5landing is inside the envelope and is accepted. - Guard server-world shape resolution off the server thread to prevent chunk loading from lighting and other background workers.
Rendering and physics
- Resolve model, outline, raycast, collision, culling, and client refresh from
one numeric placement height, including the legal
−3.0boundary. - Campfire crackle, smoke column, and cooking smoke emit from the campfire's drawn height, joining torches, levers, and candles.
- Item frames and glow item frames hang on their support's drawn face (maintainer ruling, 2026-09-01: hung decorations obey WYSIWYG). A frame aimed at a lowered block's visible face previously hung a full block above it. Paintings are not yet covered.
- Preserve inventory, custom-renderer, dynamic, and foreign composite model identity instead of wrapping models Slabbed does not own.
- Restore reciprocal fence, wall, and pane settlement immediately after a lowered placement without cascading unrelated neighbor updates.
- A chain hanging below an ordinary (non-slab) lowered block now follows that block's exact drop, matching what already hung correctly further down the same chain (maintainer ruling, 2026-09-01). Previously the chain segment itself stayed at grid height, so the lowered block above visibly descended into it. A chain under a lowered TOP/DOUBLE slab is unaffected: that case keeps its own dedicated flush treatment.
Compatibility and vanilla ownership
- Terrain Slabs slabs you place now act like their vanilla counterparts. A Terrain Slabs slab that a player places gets the same locked-in height as a vanilla slab: it seats on lowered supports, cantilevers at the matching height, stacks and descends once per course, supports what stands on it, and is no longer silently refused or left floating at grid. Natural Terrain Slabs terrain generated by the world is deliberately untouched — it never receives a placed height and keeps rendering exactly as Terrain Slabs made it, which is what protects terrain from see-through seams. Verified against the real Terrain Slabs 3.1.2 data: that mod applies no offset of its own to any slab, so there is nothing to collide with.
- Add isolated integration coverage for Terrain Slabs, Sable moving-world targeting, Snow! Real Magic composite rendering, and Smooth Steps movement and camera convergence.
- Preserve Create inventory-model identity while keeping world block-state models eligible for Slabbed rendering.
- Return redstone connection topology and free-floating chain survival to vanilla behavior, and prevent spawning on bottom-like slab surfaces.
Sight, projectiles, and blast
- Arrows, spectral arrows, and tridents strike the drawn shape of a lowered block instead of its original full-height box.
- Mob line of sight respects the drawn solid half of a lowered block: a mob no longer sees a target through geometry that is visibly solid.
- Explosion exposure is measured against drawn shapes, so cover from a lowered block matches what is rendered.
- The empty space a lowered block has visibly vacated is clear in return: arrows fly through it, mobs see through it, and explosions reach through it, instead of the block's original full-height box still acting solid there (maintainer ruling, 2026-08-31). A normal, unshifted block is unaffected.
- Independent kill switches:
-Dslabbed.arrowOffsetClip=falseand-Dslabbed.sightOffsetClip=false(the latter reverts sight and blast together without touching arrows). Each switch restores full vanilla behavior for its consumers — both the drawn-solid blocking and the vacated-band clearing.
Save-scoped deep mode
- Add explicit absent, disabled, enabled, and unknown-future consent states. New and legacy saves remain shallow by default; unknown data fails closed.
- Add the server-owned
/slabbed deep-mode status|enable|confirm|cancelflow with owner-level permission, a replay-safe confirmation window, and one-way save-wide activation. - Synchronize consent to clients, refresh the active renderer, reset to shallow behavior on logout, and retain the state through restart and save copies.
Known limitations
- Mob path planning, Breeze aim, long-jump clearance checks, and firework blasts still measure the unlowered box; they query block shape outside the compensated entry points.
- Fire burning on a lowered support still draws at grid height, floating above the visible surface. Present on every line.
- A deep placement can still show a sub-frame residual of the old visual snap when a mesh rebuild is already in flight at the moment of placement; the race itself is closed and the residual is a single stale frame at most.
Forge 1.20.1 port
- Replace NeoForge data attachments with a chunk capability and an explicit sync channel: whole marker buckets and the placement map on chunk watch, a constant-size delta per placement. Chunks with no Slabbed data send nothing, and every client-visible height fact is published to render workers under a single copy-on-write discipline.
- The sync channel is optional in both directions (maintainer ruling, 2026-09-01): a client with Slabbed joins vanilla and non-Slabbed servers, and a Slabbed server accepts vanilla clients. Without the channel no height facts arrive and every block resolves to its geometric height. Two Slabbed installs at different wire versions still refuse to pair.
- Persist deep-mode consent through the level's own saved data. A Forge level capability is never serialized by the engine, so the seeded design would have reset consent on every restart.
- Keep world generation alive when mob-spawn collision checks resolve heights near a generation region's edge; evidence outside the bounded region declines to flush instead of crashing the generator.
- Stop the wrapped Forge block registry allocating on every height resolution; the hot path now matches the reference line's allocation exactly.
- Ship MixinExtras inside the jar, which Forge 1.20.1 does not bundle.
- Terrain Slabs integration on this line targets releases up to 3.1.1, the newest 1.20.1 build publishing the block data the integration reads; newer 1.20.1 releases of that mod are documented as unsupported.
- The isolated physical-client proof routes for Sable, Snow! Real Magic, Smooth Steps, and deep-mode restart behavior are not carried to this line.
Verification
- Run the full 265-test server suite on Forge 1.20.1 with the independent suite-count gate and the closed-world placement-writer gate, all green from a clean run directory.
- Grow the shared test fixture so every deep test lane lies inside the region the framework isolates; the prior size let a neighboring test's structure satisfy an occlusion control for the wrong reason.
Placement permanence is governed by LAW.md.
Файлы
slabbed-0.5.2-beta.1+1.20.1-forge-all.jar(501.57 KiB)
ОсновнойМетаданные
Канал релиза
Beta
Номер версии
0.5.2-beta.1+1.20.1-forge
Загрузчики
Forge
Версии игры
1.20.1
Загрузок
436
Дата публикации
02.09.2026

