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 is a library mod for Minecraft (Fabric & NeoForge) that lets you build interactive, moving block structures called sub-levels. A sub-level is a self-contained Minecraft region — complete with chunks, block entities, and entities — that exists at a dynamic position and orientation within a level, driven by a full rigid-body physics simulation. If your mod needs ships, trains, moving platforms, contraptions, or any other structure that moves through the world, Sable handles the hard parts: physics integration, collision, entity tracking, chunk management, and cross-platform support.

Installation

Add Sable to your mod’s build.gradle for Fabric or NeoForge.

Core Concepts

Understand sub-levels, the plot grid, and how Sable structures the world.

Developer Guides

Practical guides for block physics, entities, events, and datapacks.

API Reference

Full Java API reference for SubLevelContainer, PhysicsPipeline, and more.

What you can build

Sable provides the foundation for any Minecraft mod that needs moving block structures with realistic physics. Common use cases include ships and vehicles, moving platforms, rotating machinery, contraptions that respond to in-game forces, and structures that dynamically assemble and disassemble.

Physics simulation

Rapier-based rigid-body physics with gravity, drag, buoyancy, friction, and restitution — configurable per block via datapacks.

Entity tracking

Players and entities standing on sub-levels move with them automatically, including log-out/log-in position persistence.

Constraint joints

Connect sub-levels together with fixed, free, rotary, and generic constraint joints to build complex multi-part machines.

Get started in three steps

1

Add Sable to your mod

Add the RyanHCode Maven repository and declare a modApi or api dependency on Sable in your build.gradle. See Installation for the exact snippets for Fabric and NeoForge.
2

Assemble a sub-level

Use SubLevelAssemblyHelper.assembleBlocks() or gatherConnectedBlocks() to dynamically pull blocks from the world into a new physics-enabled sub-level at runtime.
3

React to physics events

Implement BlockEntitySubLevelActor on your block entities to receive per-tick and per-physics-tick callbacks, apply forces, and hook into constraint creation.
Sable makes extensive use of Mixins and is an intrusive library. Review the compatibility warning before adding it as a hard dependency.

Build docs developers (and LLMs) love