Sable stores physics-related properties per block state. You define them through JSON files in a datapack under theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ryanhcode/sable/llms.txt
Use this file to discover all available pages before exploring further.
physics_block_properties folder. Any datapack — including a mod’s built-in
data — can contribute these files, and multiple definitions for the same block are resolved by
priority.
Available properties
Mass of the block in kilopascal-grams (kpg). Heavier blocks resist movement and impart more force
on collision.
Inertia multiplier along each axis in kpg·m². Multiplied by the block’s mass before use.
Controls resistance to rotational acceleration around each axis.
Volume of the block in m³. Used for buoyancy calculations — blocks with a smaller volume displace
less fluid.
Bounciness of the block, from
0.0 (no bounce) to 1.0 (perfectly elastic). Values above 0.5
produce noticeably springy collisions.Friction multiplier applied when this block slides against another surface.
0.0 is frictionless.When
true, the block breaks on impact rather than bouncing or sliding.Resource location of the floating block material to assign. Determines buoyancy behaviour when
the block is submerged.
Multiplier applied to the floating block material’s buoyancy force.
JSON structure
Place definition files anywhere inside a datapack at the pathdata/<namespace>/physics_block_properties/<name>.json.
| Field | Required | Description |
|---|---|---|
selector | Yes | A block ID (e.g. examplemod:example_block) or a tag prefixed with # (e.g. #examplemod:example_blocks). Tags apply the definition to every member block. |
priority | No | Integer, default 1000. Definitions are applied in ascending order — a higher number wins over a lower one. Sable’s built-in definitions use 1000, so use 1001 or higher to override them. |
properties | No | Object mapping property names to values. Applied to all block states matched by selector. |
overrides | No | Object whose keys are block-state conditions (e.g. "lit=true"). Each value is an object of properties applied on top of properties for matching states. |
Examples
A block that bounces:Built-in tags
Sable ships a built-in datapack with pre-defined block tags for the most common physics configurations. Adding your block to one of these tags is the fastest way to apply standard properties without writing a custom definition file.| Tag | Effect |
|---|---|
#sable:super_light | mass = 0.25 |
#sable:light | mass = 0.5 |
#sable:heavy | mass = 2.0 |
#sable:super_heavy | mass = 4.0 |
#sable:half_volume | volume = 0.5 |
#sable:quarter_volume | volume = 0.25 |
#sable:slippery | friction = 0.0 |
#sable:bouncy | restitution = 0.5 |
