Visual web editor for HoloUI menu configurations. Build holographic menus on a calibrated canvas, edit every field the plugin actually parses, and export menus/<id>.json files (plus an images.zip) that drop straight into plugins/holoui/.
Version 3.0.0 — a from-scratch rewrite in arcane_jaspr (Dart, compiled to a fully static site). Replaces the retired Next.js editor.
- Visual canvas in block space: zoom/pan, grid + snapping, drag components, selection, keyboard nudge. Renders text (legacy
&codes and MiniMessage, in the Minecraft font), item sprites, pixel-art image icons and animated icons at the exact in-game metrics (0.21875 blocks per text line,uiScalesemantics, hitbox overlays matching the plugin'sdebugHitbox). - Full format coverage as the plugin's Gson actually reads it — all three component types (button / decoration / toggle), all four authorable icon types (text / textImage / animatedTextImage / item), both actions (command / sound with all 10 sound categories), toggle conditions,
maxDistance,closeOnDeath,closeOnTeleport,customModelValue(the real key — not thecustomModelDatathe old schema documented). - Code view with two-way sync, plus split view.
- Validation engine encoding the plugin's real parsing rules (lowercase registry keys, required action sources, silent-zero pitfalls like
volume: 0, the&n/&klegacy-code trap, hitbox overlap warnings). - Image library: upload pixel art, preview exactly as the plugin rasterizes it, export
images.ziplaid out forplugins/holoui/images/. - Workspace: multiple menus, autosave to browser storage, undo/redo, templates, searchable item/sound catalogs.
Everything runs client-side. No server, no accounts, no network calls beyond loading the static assets.
Requires Dart ≥ 3.10 and a checkout of arcane_jaspr at .deps/arcane_jaspr (a symlink to a local clone works):
git clone https://github.com/ArcaneArts/arcane_jaspr .deps/arcane_jaspr # or: ln -s /path/to/arcane_jaspr .deps/arcane_jaspr
dart pub get
dart run jaspr_cli:jaspr serve # dev server on :8080
dart test # core-logic test suite
dart run jaspr_cli:jaspr build # static output in build/jaspr/HoloUI self-hosts this editor: /holoui builder start downloads the latest GitHub release asset named exactly builder_static.zip (with index.html at the ZIP root) and serves it from the game server. The release tag must be bare semver (3.0.0, never v3.0.0 — the plugin's semver parser rejects a v prefix).
- Locally:
tool/package_builder_static.shbuilds and packages the ZIP. - CI: pushing a bare-semver tag runs
.github/workflows/release.yml, which builds, attachesbuilder_static.zipto the release, and deploys GitHub Pages (https://holoui.volmit.com/). The workflow needs anARCANE_JASPR_TOKENrepository secret with read access toArcaneArts/arcane_jaspr.
lib/model/ HoloUI JSON data model + codec (parser-truth, round-trip lossless)
lib/logic/ validation rules, Minecraft text parser, viewport math, hitbox geometry
lib/services/ localStorage, image library, catalogs, file transfer, clipboard
lib/state/ EditorStore (undo/redo, autosave), multi-doc workspace
lib/components/ shell (top bar, shortcuts, palette), canvas, inspector, panels, dialogs
web/assets/ fonts (Geist, lucide, Minecraft), item/sound catalogs, backdrop, brand
tool/ builder_static.zip packaging
The format contract was derived from the plugin's Java parsing code (art.arcane.holoui.config.* via VolmLib's Gson setup), not from the shipped JSON schema, which has drifted. Where the two disagree, this editor follows the code.