Mods ship data, not code
The central RSMM rule, and the biggest departure from Minecraft modding:
A mod’s deliverable is data — a
manifest.tomlplus assets the SDK emits — never a bespoke script.
This is the data-pack / datagen philosophy taken all the way. Minecraft splits mods into “code mods” (Forge/Fabric jars) and “data packs”; RSMM aims to make everything expressible as data, with scripted behaviour as the narrow exception (Lua via the loader).
What this means in practice
Section titled “What this means in practice”- A finished mod is a
manifest.tomlwith[[content]]/[[patch]]blocks plus cooked assets — produced byrsmm apply, not by a script you ship. - One-off Python to reverse a byte layout is fine as throwaway discovery,
but the capability must then graduate into
rsmm.sdk(a kind builder, an engine cooker, or the apply pipeline) and the mod re-expressed declaratively. rsmm lintenforces this: any*.pyin a mod that isn’t a sanctioned lifecycle hook (e.g.on_disable.py) fails CI.
flowchart LR
D["throwaway discovery script<br/>(reverse a byte layout)"] -->|"graduate"| S["rsmm.sdk capability<br/>(kind / cooker / pipeline)"]
S --> M["declarative manifest.toml"]
M -->|"rsmm apply"| G["cooked assets installed"]
Common problems
Section titled “Common problems”See Authoring mods and the SDK design notes.
