Headless tooling for Minecraft asset pipelines. A small family of libraries that cover the path from raw client JARs all the way to finished fonts, text renders, block icons, and NBT payloads - no live game client, no launcher, no AWT.
Important
Every project in this organization operates on copyrighted assets and formats owned by Mojang AB (a Microsoft subsidiary). Mojang assets are never committed to any repository here - they are downloaded at runtime from the official Piston API or extracted from a user-supplied client JAR. You are responsible for ensuring your use of the generated output complies with the Minecraft EULA and Minecraft Usage Guidelines.
| Project | Language | What it does |
|---|---|---|
| font-generator | Python 3.10+ | Converts Minecraft's bitmap font glyphs into OpenType (.otf) or TrueType (.ttf) files. Fetches any Minecraft version via the Piston API, slices bitmap sheets, traces pixel contours into vector outlines, and ships BMP + SMP cmap tables. |
| text | Java 21 | Models Minecraft's chat text system - colour codes, formatting, segment trees, click/hover payloads - and renders it to pixel buffers using the generated OTFs. Runtime-bootstraps font-generator when no fonts ship on the classpath. |
| asset-renderer | Java 21 | Headless renderer for blocks, items, entities, fluids, portals, player skins, and tooltip text. Isometric or flat 2D output as static PNG or animated frames. Uses the JDK incubator Vector API for SIMD matrix math. |
| nbt-factory | Java 21 | Clean-room NBT (Named Binary Tag) reader/writer. Every tag type, every wire format (raw binary, gzip, SNBT, JSON, base64), every I/O surface (byte[], File, InputStream, URL). |
font-generator (Python, OTF/TTF builder)
|
| .otf files (bootstrapped at runtime
v or generated by the `fonts` Gradle task)
text (Java, chat model + glyph rasterizer)
|
v
asset-renderer (Java, block/item/entity renders)
nbt-factory (Java, standalone - no sibling deps)
textcan run withoutfont-generatorif a downstream artifact already bundles the OTFs; it just won't be able to regenerate them.asset-rendererpullstextfor itsTextRenderer(tooltip, lore, stack-count output). Block / item / entity / fluid / portal rendering does not require fonts.nbt-factoryis deliberately decoupled - it's useful for any Minecraft-adjacent Java project that needs to read or write NBT, whether or not it touches the rendering side.