A toolkit for viewing and editing save files for the mobile game The Blockheads.
Note
There are no pre-built releases yet. To use these tools, you will need to compile them yourself. This requires having the Rust toolchain and uv installed.
Warning
The tools are experimental as we don't fully understand every detail of the game save format yet. Always back up your save files and use the tools at your own risk.
-
Explore your game world dynamically using a viewer on desktop or web.
-
Use Python scripts to automate tasks such as modifying blocks, or changing blockhead inventories.
Check out docs for installation instructions, tutorials, examples, and guides.
- MVP of modifing blocks & saving MVP: ui exposing drop menu for block type
- Dynamic world editing UI & python bindings
- Ergonomic block editing
If you're interested in how the tools are built or want to learn more about the save file format, here is a breakdown of the workspace components:
crates/lib: The core Rust library for parsing and manipulating game data.crates/gui: The 3D world viewer and editor, powered byeframe.crates/web_gui: The WebAssembly (WASM) version of the GUI crate, allowing the viewer to run in a web browser.crates/py_bindings: Python bindings with type stubs, bridging the Rust core to Python for ease of scripting.crates/lmdb_rs: A custom LMDB parser and builder specifically built to handle the databases in the save files.- Goal: Parse and build both 32-bit and 64-bit databases natively.
- Non-Goal: Feature-complete LMDB implementation. It does not support concurrent reading/writing or random writes.
crates/chunk_gen: A standalone binary for generate all chunks of a world on a server by fabricating chunk requests.
The Python examples in the docs has real source files in crates/py_bindings/examples/, and are type-checked with ty and are actually executed by github workflow to get output, which helps enforcing the docs to always be up-to-date.
Warning
The codebase is highly unstable and we recommend you to not create PRs for now as the code can get obsolete quickly.



