Skip to main content

Documentation 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.

Sable registers a /sable command tree that requires operator permission level 2. The commands cover the full lifecycle of sub-levels at runtime: assembling structures from world blocks, inspecting and teleporting sub-levels, applying physics impulses, managing load tickets, and searching on-disk storage. All commands that accept a sub-level selector use SubLevelArgumentType, which resolves sub-levels by UUID, display name, or a selector expression.
These top-level sub-commands are registered directly on /sable.

/sable paused [true|false]

Toggles or explicitly sets the physics pause state for the current level’s physics system.
  • No argument — toggles between paused and unpaused.
  • true / false — sets the pause state explicitly.
/sable paused
/sable paused true
/sable paused false

/sable engage_gizmo

Pauses physics and sends the executing player into the physics gizmo client mode, which provides interactive handles for repositioning and rotating sub-levels.
/sable engage_gizmo

/sable forceload add <sub_level>

Adds a COMMAND_FORCED load ticket for each matched sub-level, preventing it from unloading while the ticket is held.
/sable forceload add <sub_level>

/sable forceload remove <sub_level>

Removes the COMMAND_FORCED load ticket from each matched sub-level.
/sable forceload remove <sub_level>

/sable info <sub_level>

Prints a summary for each matched sub-level including its display name, position, orientation (quaternion), mass, linear velocity, and angular velocity. The name component is clickable and generates a /execute in … tp command to the sub-level’s current position.
/sable info <sub_level>
Registered under /sable assemble. These commands convert world blocks into sub-levels (assemble) or split existing sub-levels back into individual per-block sub-levels (shatter).

Assemble commands

SyntaxDescription
/sable assemble area <from> <to>Assembles all blocks in the rectangular region into a single sub-level
/sable assemble connected [<from>] [<capacity>]Flood-fills from <from> (defaults to one block below the executor) and assembles all connected blocks, up to <capacity> (default 256,000)
/sable assemble sphere <radius> [<origin>]Assembles all non-air blocks within <radius> blocks of <origin> (defaults to executor position) into a single sub-level
/sable assemble cube <range> [<origin>]Assembles all blocks in a cube of half-side <range> centered on <origin> into a single sub-level

Shatter commands

Shatter splits each solid block in the target region into its own individual single-block sub-level.
SyntaxDescription
/sable assemble shatter sub_level <sub_level>Shatters each matched sub-level that contains more than one solid block
/sable assemble shatter connected [<from>] [<capacity>]Flood-fills from <from> and shatters all connected blocks
/sable assemble shatter sphere <radius> [<origin>]Shatters all solid blocks within <radius> of <origin>
/sable assemble shatter cube <range> [<origin>]Shatters all solid blocks in a cube of half-side <range> centered on <origin>
/sable assemble shatter area <from> <to>Shatters all solid blocks in the rectangular region
The shatter sub_level variant skips any sub-level that contains only a single solid block, since shattering it would produce an identical structure.
Registered under /sable name. Display names are used by SubLevelArgumentType for selector resolution and appear in /sable info output.
SyntaxDescription
/sable name set <sub_level> <name>Assigns a display name to each matched sub-level
/sable name clear <sub_level>Clears the display name from each matched sub-level
/sable name get <sub_level>Prints the display name of a single matched sub-level; fails if the sub-level has no name
Registered under /sable teleport. Resets velocity before teleporting.
SyntaxDescription
/sable teleport <targets> <destination>Teleports each matched sub-level to <destination>, preserving current orientation
/sable teleport <targets> <destination> <angle>Teleports each matched sub-level to <destination> and sets orientation from the Minecraft rotation argument (yaw/pitch)
Registered under /sable remove. Permanently removes each matched sub-level from the container.
/sable remove <targets>
Registered under /sable physics. All vector arguments that accept global / local modifiers default to global space.

Impulse

SyntaxDescription
/sable physics impulse <sub_level> linear <impulse> [global|local]Applies a linear impulse to each matched sub-level in global (default) or local space
/sable physics impulse <sub_level> angular <impulse> [global|local]Applies an angular impulse to each matched sub-level in global (default) or local space

Rotation

SyntaxDescription
/sable physics rotation <sub_level> add entity <rotation> [global|local]Adds a yaw/pitch rotation to each matched sub-level
/sable physics rotation <sub_level> add axis <axis> <angle> [global|local]Adds a rotation around <axis> by <angle> degrees
/sable physics rotation <sub_level> set entity <rotation>Sets the orientation of each matched sub-level from a yaw/pitch rotation
/sable physics rotation <sub_level> set axis <axis> <angle>Sets the orientation of each matched sub-level to a rotation around <axis> by <angle> degrees

Translation

SyntaxDescription
/sable physics translation <sub_level> add <translation> [global|local]Offsets each matched sub-level’s position by <translation> in global (default) or local space
/sable physics translation <sub_level> set <translation>Sets the absolute position of each matched sub-level
Registered under /sable spawn. These commands are primarily intended for testing and debugging.
SyntaxDescription
/sable spawn block [<block>] [<name>]Spawns a single-block sub-level at the executor’s position (default: stone)
/sable spawn platform <size> [<block>] [<name>]Spawns a flat square platform of half-side <size> (default: stone)
/sable spawn sphere <radius> [<block>] [<name>]Spawns a solid sphere of radius <radius> (default: stone)
/sable spawn grid <sideLength> [<block>] [<name>]Spawns a sideLength³ grid of single-block sub-levels
/sable spawn jenga <height> [<name>]Spawns a Jenga tower of <height> layers
/sable spawn clone <sub_level> [<name>]Clones an existing sub-level, spawning the copy above the original
/sable spawn schematic <name>Loads an .nbt schematic from the schematics/ folder and spawns it as a sub-level
/sable spawn slope_test [<name>]Spawns a 10×10 grid of platforms at varying yaw and pitch orientations
/sable spawn joint_testSpawns two stone blocks connected by a rotary constraint
/sable spawn rope_testSpawns a 10-segment rope anchored at the executor’s position

The <sub_level> selector

Wherever a command accepts a <sub_level> argument, it uses SubLevelArgumentType to resolve one or more ServerSubLevel instances. The argument type supports:
  • UUID — the unique ID of the sub-level (e.g. 550e8400-e29b-41d4-a716-446655440000)
  • Display name — the name assigned via /sable name set
  • Selector syntax — a selector expression that matches multiple sub-levels at once
Commands that use SubLevelArgumentType.singleSubLevel() (such as /sable name get and /sable spawn clone) require the selector to resolve to exactly one sub-level.

Build docs developers (and LLMs) love