World Engine 0.1.1 - Fabric 1.21.1
Curse Maven Snippet
What's new
World Engine 0.1.1
Fixes and optimizations
- Retain sleeping bodies' terrain support and wake them after support changes.
- Refresh exact query memberships when Sable updates a body's bounding box, including ballistic and sleeping bodies. Reproduce the ballistic query miss before the fix and retain it as a runtime regression.
- Preserve dimension-wide terrain coverage when one region releases its local copy, and check residency bounds relative to the region origin. Add a runtime regression for interacting bodies across a region boundary.
- Reuse terrain footprints, spatial cells, interaction edges, and traversal buffers.
- Avoid per-body interaction-graph iterator allocations by reusing primitive traversal buffers.
- Retain unchanged section memberships and reuse graph component traversal, with independent movement/removal checks and live exact-AABB filtering.
- Reuse immutable physics handles inside World Engine's tick loop and release them on body removal; preserve Sable's public fresh-handle factory.
- Retain exact interaction edges for unchanged bounds and reuse renewed hold deadlines during reconciliation. Release unrenewed deadlines while preserving expiry and region-migration checks.
- Reuse existing single-cell interaction candidates and avoid redundant component seeds; independently verify that edge splits retain every affected component.
- Retain exact graph edges during vertical movement only when all stored bounds cover one common Y plane and X/Z bounds are unchanged. Refresh cell membership and fall back when that proof no longer holds.
- Test each changed graph candidate once and reuse connected-component IDs until nodes or exact edges change. Validate components against independent all-pairs traversal across splits, removal and ID reuse.
- Scan stable bound records directly when spatial-bucket visits cost at least a whole-body scan; keep the grid path for sparse candidates. Verify dense/sparse transitions and record removal/reuse against independent overlap and component oracles.
- Drain collision effects into one reusable native-order buffer instead of allocating a Java array per region step. Preserve all 15 event fields and the existing 100-event limit; reject insufficient storage without consuming events.
- Preserve contact impulses only for matching voxel and collision-shape identities.
- Discard empty contact manifolds before solver and hook bookkeeping.
- Use an exact cuboid for eligible complete, homogeneous collections of solid unit cubes. Holes, partial shapes, fluids, custom hooks, and dynamic overrides retain per-voxel collision dispatch.
- Combine complete terrain rectangles of the same material into their exact collision shape, rebuilding from current terrain candidates after edits. Preserve holes and partial-height support.
- Fix the Java/Rust voxel-registration argument mismatch that could incorrectly mark static block shapes dynamic.
- Correct callback registry lookup for packed block IDs, so air and adjacent entries cannot misclassify the serial-stepping safety guard.
- Add independent spatial and terrain-reference tests, native geometry/cache tests, and runtime support-removal, center-hole, terrain-rectangle removal, and half-height slab tests.
- Add a paired dedicated-server benchmark against stock Sable with frozen inputs, physics checks, process CPU, and Java allocation measurements. See BENCHMARKS.md for its protocol and coverage limits.
Requirements
- Minecraft 1.21.1, Fabric or NeoForge, and Java 21.
- Sable 2.0.5 or newer.
This mod has no additional files

