Files
SableGravity/README.md
T

52 lines
2.8 KiB
Markdown

# Sable Gravity 0.7.4
Sable Gravity is a multidimensional gravity-frame kernel for moving and arbitrarily rotated
Sable ships. A frame owns a dimension-qualified identity, a local coordinate system, a rigid
pose and a local `-Y` gravity direction.
## Physics model
- Players use an oriented body and plot-local feet anchor. Crouching, standing, jumping,
creative flight, edge sneaking and wall sliding are resolved in the ship frame without using
the parent-world AABB as the source of truth.
- Entities always remain in physical parent-world coordinates. Sable is the only owner of their
OBB collision, tracking and packet conversion; Sable Gravity rotates gravity, locomotion and
drag into the selected frame without exposing the hidden plot grid to entity networking.
- Non-player entities keep their ordinary parent-world/network position. Their oriented body is
foot-anchored only inside Sable's collision transform, so items and mobs do not need a spawn-time
coordinate rebase and cannot leak plot coordinates into packets.
- Client particle attachment and packet conversion remain on Sable's native path. This mod does
not install a second universal particle lifecycle on top of Sable's particle mixins.
- For the local player, plot-local feet position and relative velocity are authoritative. A
translating or rotating ship is reconstructed from them every tick instead of accumulating pose
deltas.
## Dimensions and Cosmonautics
`GravityFrameId` contains provider, dimension and local UUID. Frame lookup is always performed in
the entity's current `Level`, so an identical SubLevel UUID in another dimension cannot alias the
old ship. A recreated destination frame is resolved again from that level's Sable container.
Gravity magnitude comes from the final parent-world `Entity#getGravity()` result while the entity
stays physical. Dimension/altitude modifiers such as Cosmonautics therefore compose with Sable
direction and never evaluate against the plot's synthetic Y coordinate.
There is no hardcoded list of planets, dimensions or entity types. The built-in provider accepts
Sable SubLevels from any `Level`, including Cosmonautics dimensions. Other mods can register a
higher-priority `GravityFrameProvider` through `SableGravityApi` for directional gravity and frame
consumers; arbitrary-orientation ship collision additionally requires a Sable-backed frame.
## Development
The development client loads Create, Aeronautics, Cosmonautics and the local Minecraft MCP bridge.
The bridge is configured for `127.0.0.1:8765` only; it is not packaged into the release jar.
Build with:
```powershell
.\gradlew.bat build
```
Player controls remain available through `/sablegravity enable|disable`,
`/sablegravity strength <value>` and `/sablegravity test <state|frame|support|all>`.