Drawing Outlines - mess1re/axiomata GitHub Wiki
A blueprint appears in the drawing table only when it has an outline: one with the same ID, or the one its outline field names. Borrowing an existing outline needs no files of your own; see Blueprint Data.
A new drawing needs two files: the outline data, which the server sends to clients, and a guide texture, which is a client asset. A data pack alone cannot add the texture; ship it in a resource pack or a mod.
For blueprint example:machine:
data/example/blueprint_outlines/machine.json
assets/example/textures/blueprint/machine.png
Subdirectories are supported and must match between the blueprint and outline IDs.
{
"texture": "example:textures/blueprint/machine.png",
"resolution": 128,
"cells": 2200,
"mask": "<base64 bit mask>"
}| Field | Meaning |
|---|---|
texture |
Client-side 256×256 transparent guide texture |
resolution |
Square mask resolution; positive multiple of 8 |
cells |
Number of set bits expected in the mask |
mask |
Base64 bytes, one bit per cell in row-major order |
The decoded mask length must be resolution × resolution ÷ 8 bytes. An empty mask is rejected. A wrong cells value logs a warning but the counted mask value is used.
Do not write the base64 mask by hand. The Axiomata source repository includes a generator; it is not part of the mod jar:
tools/build_blueprint_outlines.py
It converts black ink on white paper into:
- a transparent 256×256 guide texture;
- a 128×128 server mask;
- the outline JSON with the correct cell count and namespace.
It requires Pillow and takes the source directory, texture output directory, data output directory and namespace:
python tools/build_blueprint_outlines.py <source> <textures> <data> <namespace>
Subdirectories under <source> are preserved in both outputs.
The texture and mask must come from the same source image or the visible guide and server scoring will disagree.