How ryanhcode/sable works
Sable is a Minecraft library mod for interactive moving block structures (“sub-levels”) that contain ordinary chunks, entities, and block entities while moving independently in position and orientation. Its product workflow spans assembly and sub-level lifecycle, optional physics simulation, persistence, and integration of game interactions and rendering; commands expose management operations. The tree and README establish these capabilities, while sampled code confirms storage access and several interaction hooks. Wiring among unsampled runtime subsystems is therefore shown only where documented or directly evidenced.
Main entry points: SubLevelHelper.java Sub-level API · ServerSubLevelContainer.java Server container · SableStorageCommands.java Storage commands · PhysicsPipeline.java Physics pipeline API
Components 19
Sub-level lifecycle
- Sable entry
common/src/main/java/dev/ryanhcode/sable/Sable.java - Assembly helpers
common/src/main/java/dev/ryanhcode/sable/api/SubLevelAssemblyHelper.java - Sub-level containers
common/src/main/java/dev/ryanhcode/sable/api/sublevel/SubLevelContainer.java - Server container
common/src/main/java/dev/ryanhcode/sable/api/sublevel/ServerSubLevelContainer.java - Client container
common/src/main/java/dev/ryanhcode/sable/api/sublevel/ClientSubLevelContainer.java - Sub-level API
common/src/main/java/dev/ryanhcode/sable/api/SubLevelHelper.java
Physics simulation
- Physics pipeline API
common/src/main/java/dev/ryanhcode/sable/api/physics/PhysicsPipeline.java - Rapier pipeline
sable_rapier/src/main/java/dev/ryanhcode/sable/physics/impl/rapier/RapierPhysicsPipeline.java - Static pipeline
common/src/main/java/dev/ryanhcode/sable/physics/impl/none/StaticPhysicsPipeline.java
Persistence
- Storage service
common/src/main/java/dev/ryanhcode/sable/sublevel/storage/serialization/SubLevelStorage.java - Region storage file
common/src/main/java/dev/ryanhcode/sable/sublevel/storage/region/SubLevelStorageFile.java
Game integration
- Game mixins
common/src/main/java/dev/ryanhcode/sable/mixin - Particle integration
common/src/main/java/dev/ryanhcode/sable/mixin/particle/ParticleEngineMixin.java - Sound integration
common/src/main/java/dev/ryanhcode/sable/mixin/sublevel_sounds/SoundEngineMixin.java - Flywheel rendering
neoforge/src/main/java/dev/ryanhcode/sable/neoforge/mixin/compatibility/flywheel/BlockEntityStorageMixin.java - Flywheel light storage
neoforge/src/main/java/dev/ryanhcode/sable/neoforge/compatibility/flywheel/SableFlywheelLightStorage.java
User and developer access
- Management commands
common/src/main/java/dev/ryanhcode/sable/command/SableCommand.java - Storage commands
common/src/main/java/dev/ryanhcode/sable/command/SableStorageCommands.java
Other components
- Player / mod
Connections 18
- Player / mod → Management commands: runs commands
- Sable entry → Assembly helpers: exposes helpers
- Assembly helpers → Server container: assembles sub-levels
- Server container → Sub-level containers: implements lifecycle
- Client container → Sub-level containers: implements lifecycle
- Sub-level API → Server container: locates sub-levels
- Management commands → Storage commands: dispatches storage
- Storage commands → Server container: gets container
- Storage commands → Storage service: reads storage
- Storage service → Region storage file: uses file storage
- Physics pipeline API → Rapier pipeline: implemented by
- Physics pipeline API → Static pipeline: implemented by
- Particle integration → Sub-level API: finds containing level
- Sound integration → Sub-level API: finds containing level
- Flywheel rendering → Sub-level API: finds containing level
- Flywheel light storage → Sub-level API: finds containing level
- Game mixins → Particle integration: includes hook
- Game mixins → Sound integration: includes hook