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.

Files

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.

Outline JSON

{
  "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.

Generating the pair

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.

⚠️ **GitHub.com Fallback** ⚠️