Description
AtomLib
Skija & Yoga for Minecraft.
AtomLib is a client-side UI library for Minecraft mods. It bundles the three things a mod would otherwise rebuild: Skija vector drawing, Yoga box layout, and the render bridge that puts both inside the Minecraft frame, plus an optional control set on top.
It exists so a mod can ship a real interface — rounded cards, live sliders, modals, correctly wrapped Chinese text, blurred panels — without owning its own renderer, layout engine and font pipeline. The host keeps its screens, business state and lifecycle; AtomLib owns the geometry, the draw calls and the input plumbing underneath. AtomChat is the reference consumer.
It is not a content mod. No blocks, items, commands or UI of its own, and a dedicated server never loads it. Install it only when a mod requires it.
🎨 Rendering & layout- One render bridge draws Skija inside the Minecraft frame: a draw pass for the interface, an explicit vanilla pass for game content, and a leased canvas when a mod needs to prepare resources. - Yoga box trees handle margins, padding, aspect ratio and alignment. A single immutable `PresentationFrame` feeds drawing, clipping and hit testing, so what is drawn is exactly what can be clicked. - A slim GL state snapshot guards every Skija pass, cutting native state queries from about 854 to about 495 per frame in 0.4.0. |
![]() |
🧩 Optional controls- Buttons, sliders, toggles, segmented choices, disclosure rows, one vertical scroll viewport and dialogs, including composable modals whose content the host supplies. - Gestures, focus, capture and modal isolation live in the library. Values, actions and page structure stay in the host. - A settings shell provides grouped cards, page-entrance motion and spring toggles. Item icons can be rendered into control slots. |
![]() |
🪟 Materials, text & icons- Optional backdrop blur with original GLSL, rounded-SDF compositing, and a solid material fallback when the shader path is unavailable. - 12 AtomDefault palettes or your own skin. A subsetted Noto Sans SC ships in the JAR, so Chinese renders out of the box. - Grapheme-safe wrapping, word and CJK line-break policies, an opt-in ICU paragraph service, and vanilla item icons for control slots. |
![]() |
✅ Compatibility
| Minecraft | Loader | Java | Client natives |
|---|---|---|---|
| 1.20.1 |
Forge 47.x.x |
17 | Windows x64, Windows ARM64 |
| 1.21.1 | Fabric Loader 0.16.x | 21 | Windows x64, Windows ARM64 |
| 1.21.1 | NeoForge 21.1.x | 21 | Windows x64, Windows ARM64 |
These are build targets, not a promise that every loader build or GPU combination has been tested. Windows ARM64 is packaged but not yet validated in game; Linux and macOS client natives are not bundled. Skija, Yoga and LWJGL natives ship with AtomLib — host mods must not bundle a second copy.
📦 Install
- Match your Minecraft version and loader, then put the AtomLib JAR from the releases page and the mod that needs it into
mods/. - Use the AtomLib version that mod asks for. A matching version number alone does not guarantee API compatibility.
- Developers: declare the matching
com.atom.libcoordinate from a local Maven input. There is no public Maven repository yet.
⚙️ Configuration
AtomLib has no config file, no command and no settings screen of its own; every option belongs to the host mod. Two JVM switches exist for diagnostics:
| Switch | Effect |
|---|---|
-Datomlib.glscope.slim=false |
Forces the full GL state snapshot boundary. |
-Datomlib.glscope.verify=true |
Checks the state families the slim snapshot omits. |
⚠️ Known limitations
- Early development candidate: the API is not a stability commitment yet, and host adoption is still limited.
- Text is plain left-to-right UI text. No bidirectional layout, no IME, no rich-text engine. Yoga exposes no absolute positioning or relative offsets.
- Item icons and backdrop blur have strict render-state and lifetime contracts. Offscreen and hidden-GL tests are not proof of compatibility with every renderer; Iris, OptiFine and shader-pack combinations are not validated.
- GUI scales, long-running GPU lifecycles, ARM64 hardware and multi-mod coexistence still need real-game testing.
❓ FAQ
-
Do I need AtomLib on its own? No. It renders nothing by itself; install it only as a dependency of a mod that requires it.
-
Does the server need it? No. It is a client dependency; a dedicated server neither loads nor initialises it.
-
Can I include AtomLib in a modpack? Yes, under Apache-2.0. Keep the NOTICE and third-party licenses with the distributed files; some AtomChat-derived code remains MIT.
-
Where do I change settings? In the host mod. AtomLib ships no config file, command or screen.








