COWMODSКаталог модов

VoxelUI

Modern UI framework for Minecraft NeoForge with XML layouts, MCSS styling, reusable components, theming, and developer tooling.

Автор: AlexandreGRZ12041обновлён 30 апр. 2026 г.
БиблиотекиТехнологииУтилиты

Описание

VoxelUI

VoxelUI is a modern UI framework for Minecraft NeoForge 1.21.1.

It is built for mod developers who want to create rich, maintainable, native Minecraft interfaces without relying on large PNG-based UI sheets.

Beta release notice

VoxelUI is currently in public beta.

This release is meant to:

  • validate the framework in real modding use cases
  • collect bug reports
  • identify weak spots in the API and component system
  • stabilize the engine before a future stable release

You should expect:

  • bugs
  • incomplete or rough behavior in some components
  • API changes between beta versions
  • layout or rendering regressions in edge cases

If you test VoxelUI and report issues, that is extremely useful for getting the project to a stable release.

What VoxelUI provides

  • XML-based screen layouts
  • MCSS styling system with cascade support
  • reusable UI components
  • centralized theming
  • modern layout containers
  • Minecraft-specific UI components
  • developer tooling for inspection and iteration

Core features

Layout and composition

  • Panel
  • Grid
  • Stack
  • Tabs
  • ScrollPanel
  • ListView

Interactive components

  • Button
  • TextInput
  • Checkbox
  • Slider
  • Dropdown

Minecraft-oriented components

  • ItemStackView
  • InventoryGrid
  • ItemSlot

Styling and tooling

  • XML UI loader
  • inline and external MCSS stylesheets
  • style cascade with computed styles
  • UI inspector
  • hot reload in development environment
  • safe XML error fallback panels
  • animated UI transitions such as hover and smooth scrolling

Use cases

VoxelUI is designed for building interfaces such as:

  • configuration screens
  • quest logs
  • custom inventories
  • shops
  • admin panels
  • HUD overlays
  • data-driven UI screens

Philosophy

VoxelUI does not try to embed a browser inside Minecraft.

Instead, it brings a more modern UI workflow to native Minecraft rendering:

  • declarative
  • modular
  • themeable
  • reusable
  • renderer-native

Current status

VoxelUI is a framework/library mod, not a standalone content mod.

Release builds disable internal showcase and debug tooling by default. Development builds keep them available for iteration and inspection.

This project is not presented as fully stable yet. The goal of this beta phase is to harden the framework through real-world feedback before locking down a more stable API surface.

Compatibility

  • Minecraft: 1.21.1
  • Loader: NeoForge
  • Java: 21

For developers

VoxelUI is intended to be used as a base for other mods that need structured UI systems.

It includes:

  • a measure -> layout -> render pipeline
  • XML-driven screen construction
  • reusable runtime bindings
  • MCSS styling
  • native Minecraft rendering integration

Feedback wanted

If you use this beta, the most useful feedback is:

  • reproducible bugs
  • broken layouts
  • rendering issues
  • unclear or frustrating API design
  • missing features that block real usage
  • unexpected behavior between XML, MCSS, and runtime bindings

License

Apache License 2.0

Галерея

Second ExempleFirst ExempleinspectorViewError In Xml or MCSS exemple

Последние версии

Все версии →
alpha

VoxelUI 0.3.0

0.3.0
30 апр. 2026 г.145Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog ## [0.3.0] - Unreleased ### Added - `maxHeight` / `max-height` support across XML mapping and `UINode`, including fluent API accessors and layout/runtime height clamping for screen roots and children - offline SDF text pipeline based on `msdf-atlas-gen` assets with `roboto_mono_sdf.png/json` - `SdfFontAtlas` resource loading and `SdfUiTextRenderer` as the primary UI text path, with compatibility fallback kept as safety - frame-level text command batching with `UiTextCommand`, `UiTextRenderService`, and runtime text flush integration - clip-aware text rendering so batched text respects `ScrollPanel`, `ListView`, and other viewport constraints - phase showcases dedicated to migration progress, including phase 4 coverage for `ItemSlot` - explicit dropdown sub-part styling hooks for header, menu, option, and hover-related visual states - partial-corner support in the shape shader path, enabling menu/tab indicators to follow parent rounding more closely - refactored `ItemSlot` as a standalone interactive slot widget with states such as `selected`, `disabled`, `highlighted`, `empty`, optional badges, empty labels, and tooltip overlay handling - reusable UI shader rendering subsystem with `UiRenderService`, `UiShaderPipeline`, `UiShaderManager`, render commands, layers, and CPU fallback renderers - shader resources for procedural UI shapes and masked textures under `assets/voxelui/shaders/core` - `Hero` component with hexagonal rendering, masked image slot, accent line, XML support, and showcase examples - shared shader-based rendering path for `Badge` - unit coverage for `Hero` and the shader pipeline fallback/service flow - generic render style hooks on `UINode` for shape, border, fill, accent, mask shape, corner style, and shader variant resolution - lightweight writable XML bindings through `UiWritableBinding`, including bidirectional `selected-index` synchronization for components such as `Dropdown`, `Tabs`, and `InventoryGrid` - framework-wide reactive state primitives through `UiObservableValue<T>`, `UiWritableValue<T>`, and `UiState` - node-level invalidation APIs on `UINode` with `invalidateRender()`, `invalidateLayout()`, and `invalidateMeasure()` - XML-exposed `dialog` support, including reactive `visible="{{...}}"` integration with the existing modal layer - protected `notify(...)` helpers on `XmlUIScreen` for toast-like overlay notifications from XML screen actions - `<if condition="...">` structural XML tag for conditional rendering; wraps its children in a transparent panel whose visibility reacts to the bound condition without rebuilding the layout tree - optional `<else>` child inside `<if>` for a two-branch conditional; the two branches are toggled reactively when the condition changes - `findById(String id)` and `findById(String id, Class<T> type)` methods on `XmlUIScreen`, backed by a recursive tree search on `UINode`; removes the need for manual tree traversal in `afterBuildUi(...)` - `id` attribute set on `UINode` during XML mapping so any node declared with `id="foo"` in XML is immediately findable via `findById` - host-agnostic `UiRuntime` / `UiHost` runtime layer shared between `UIScreen` and global overlays - global overlay system with `GlobalUiOverlayManager`, `GlobalUiOverlayOptions`, and `VoxelUiOverlays` - public APIs for global `showToast(...)`, `showOverlay(...)`, `showModal(...)`, `close(...)`, and `closeAll()` - demo XML resources for a global overlay and a global modal under `assets/voxelui/ui` - client dev commands `/voxelui toast`, `/voxelui overlay`, `/voxelui modal`, `/voxelui closeall`, and `/voxelui reload` - `UiOverlayContext` and `UiXmlDialogController` abstractions to keep modals and notifications on one coherent system - public extension point for third-party mods to register custom XML components via `ComponentMapper`, `MappingContext`, and `ComponentMapperRegistry` - `BoxDecoration` and `VisualEffects` in `com.alexandregrz.voxelui.client.ui.core` - `UINode.decoration()`, `UINode.effects()`, `UINode.hasDecoration()`, and `UINode.hasEffects()` for lazy decoration/effect diagnostics - expanded `/docs` coverage for XML custom components, mapper-supported MCSS propagation, and shared render/effect attributes ### Changed - the default custom text path is now SDF-backed rather than bitmap- or software-generated - `UiXmlMapper` has been internally refactored from a monolithic switch-based class into registry-backed per-tag `ComponentMapper` implementations while preserving the public entry points - major layout and control surfaces now render through the shader pipeline instead of `GuiGraphics.fill()`, including `Divider`, `Grid`, `Stack`, `ScrollPanel`, `Checkbox`, `Dropdown`, `Slider`, `Tabs`, `KeybindDisplay`, `Chart`, `ListView`, and `InventoryGrid` - `ScrollPanel` scrolling was retuned for smoother inertial motion and frame-aligned visual layout, reducing the earlier choppy feel during wheel scrolling - dropdown menu hover rendering now supports parent-aware clipping and sub-part styling instead of relying on hardcoded fallback geometry - tab selection indicators now follow the selected tab silhouette rather than drawing as detached rectangular bars - `ItemSlot` tooltips now render in the runtime overlay pass, ensuring vanilla item tooltips stay above neighboring UI cards and overlays - VoxelUI now compensates for Minecraft `gui scale` at the screen level so custom UI stays readable without being truncated when the player increases the game GUI scale - `UIScreen` now renders the UI in a virtual layout space with consistent mouse coordinate remapping, overlay layering, and centered root layout resolution - many base components now scale more consistently with the UI system, including `Button`, `Checkbox`, `Dialog`, `Divider`, `Dropdown`, `Grid`, `Label`, `NumberInput`, `Panel`, `ProgressBar`, `ScrollPanel`, `TextInput`, and notifications - buttons now support dynamic sizing, percentage widths, size presets, and XML-driven width values such as `15%` - the XML mapper now accepts more reusable UI attributes, including button sizing fields and generic render/shader-related style properties - XML screen action registration now accepts typed handlers, allowing XML events to resolve either `Runnable` callbacks or `Consumer<T>` listeners depending on the component event payload - `UIScreen.ensureLayoutCurrent()` now reacts to dirty nodes in the existing tree instead of relying only on screen-wide layout dirtiness - XML bindings can now subscribe directly to observable values and invalidate the mapped component without rebuilding the whole screen - `UiWritableBinding` is now aligned with the new observable state API instead of being a standalone binding model - value-driven updates on `Label`, `TextInput`, `NumberInput`, `Checkbox`, `Slider`, `Dropdown`, `Tabs`, `ProgressBar`, and `InventoryGrid` now use local invalidation rather than full layout reloads - dialogs declared in XML are now mounted outside the normal layout flow and synchronized automatically with `UIScreen.showModal(...)` - `Dialog` now supports XML-driven custom content without forcing the built-in confirm/cancel button row - the showcase screen and MCSS demo content were expanded to cover dynamic button sizing and hero visual variants - the hero rendering geometry was consolidated so the shader, content layout, image placement, and accent line all use the same computed bounds - `UINode` now stores its declared `id` and exposes `setId`, `getId`, and `findById` for programmatic node lookup - `UINode` internal decoration storage has been refactored: shape, fill, border, accent, and visual effect data now live in lazily allocated `BoxDecoration` and `VisualEffects` instances while preserving the existing fluent setters and getters - `UIScreen` now delegates layout, render, notifications, modal management, and input dispatch to the shared `UiRuntime` - `XmlUIScreen` now reuses the shared runtime and synchronizes XML `<dialog>` nodes through `UiXmlDialogController` - `Modal` and `Notification` now target a shared overlay context instead of depending directly on `UIScreen` - `Hero` now renders without the former decorative top accent line so hex surfaces stay visually clean in showcase and production layouts - developer-facing Javadocs and inline comments in the touched XML/UI core areas have been standardized to English ### Fixed - catastrophic FPS loss from the earlier per-string software SDF prototype by replacing it with batched GPU text rendering - multiple SDF integration issues around atlas polarity, UV convention, sampler declaration, and top-origin atlas coordinates - missing clipping for batched text inside scrolling containers - `Dropdown` hover/selection layering issues where internal highlights broke the perceived parent radius - `Tabs` active indicator mismatch against rounded tab shells - `ItemSlot` tooltip z-order so vanilla Minecraft tooltips no longer appear under adjacent cards - UI clipping and inconsistent perceived sizing across higher Minecraft `gui scale` values - root layout centering drift that made some screens appear to shift horizontally as the GUI scale changed - missing and limited XML change-event support on interactive inputs; `Dropdown`, `TextInput`, `NumberInput`, `Checkbox`, and `Slider` can now propagate typed values directly from XML-declared handlers - the previous limitation where common Java state changes required `reloadLayout()` even for simple value updates; observable bindings can now trigger targeted relayouts on existing nodes - the previous XML gap where confirmation dialogs required `afterBuildUi(...)` and manual Java wiring even for simple modal flows - XML validation gaps for newer component attributes such as button `size`, `height`, and percentage width fields - several hero rendering issues around hexagon proportions, content overlap, internal insets, and top/bottom truncation - shader/log noise caused by uniforms declared or pushed inconsistently between the pipeline and shader JSON definitions - ghost white borders caused by component default styles using `unset` values that were incorrectly resolved as opaque white in shader-rendered surfaces - `ProgressBar` fill rendering so generic fill and gradient styles apply only to the active fill band instead of leaking onto the full-width track - shader border masking on shared shape rendering, which previously produced overly strong contour artifacts and exaggerated hex borders - default `Hero` border thickness after the generic fill migration, bringing hex outlines back to a thinner visual weight ## [0.1.0] - Initial public beta First public beta release of the VoxelUI framework. This release is intended to expose the framework to real usage, collect bug reports, and stabilize the API before a future stable release. ### Added - core UI engine with the `measure() -> layout() -> render()` pipeline - foundational components: `Panel`, `Label`, `Button`, `ProgressBar`, `Spacer`, `Divider` - advanced layout components: `Grid`, `Stack`, `Tabs`, `ScrollPanel`, `ListView` - input components: `TextInput`, `Checkbox`, `Slider`, `Dropdown` - Minecraft-oriented components: `ItemStackView`, `InventoryGrid`, `ItemSlot` - centralized theming through `Theme` - XML UI support via `UiXmlParser`, `UiXmlMapper`, and `UiXmlResourceLoader` - runtime bindings for XML-driven screens - inline and external MCSS stylesheet support - computed style tracking and style inspection - UI inspector and development-only debug tooling - hot reload for XML and MCSS in development mode - safe XML / MCSS error fallback panels - basic UI animations such as hover transitions, smooth scroll, and screen entrance - unit tests and early integration coverage ### Notes - this is a **beta** release, not a stable API freeze - bugs, rough edges, and breaking changes between beta versions are still expected - development-only showcase and debug tooling are disabled by default in release builds - some parts of the public API are still explicitly marked `BETA` or `EXPERIMENTAL`
alpha

VoxelUI 0.1.5

0.1.5
21 апр. 2026 г.29Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog ## [0.1.5] ### Added - reusable UI shader rendering subsystem with `UiRenderService`, `UiShaderPipeline`, `UiShaderManager`, render commands, layers, and CPU fallback renderers - shader resources for procedural UI shapes and masked textures under `assets/voxelui/shaders/core` - `Hero` component with hexagonal rendering, masked image slot, accent line, XML support, and showcase examples - shared shader-based rendering path for `Badge` - unit coverage for `Hero` and the shader pipeline fallback/service flow - generic render style hooks on `UINode` for shape, border, fill, accent, mask shape, corner style, and shader variant resolution - lightweight writable XML bindings through `UiWritableBinding`, including bidirectional `selected-index` synchronization for components such as `Dropdown`, `Tabs`, and `InventoryGrid` - framework-wide reactive state primitives through `UiObservableValue<T>`, `UiWritableValue<T>`, and `UiState` - node-level invalidation APIs on `UINode` with `invalidateRender()`, `invalidateLayout()`, and `invalidateMeasure()` - XML-exposed `dialog` support, including reactive `visible="{{...}}"` integration with the existing modal layer - protected `notify(...)` helpers on `XmlUIScreen` for toast-like overlay notifications from XML screen actions - `<if condition="...">` structural XML tag for conditional rendering; wraps its children in a transparent panel whose visibility reacts to the bound condition without rebuilding the layout tree - optional `<else>` child inside `<if>` for a two-branch conditional; the two branches are toggled reactively when the condition changes - `findById(String id)` and `findById(String id, Class<T> type)` methods on `XmlUIScreen`, backed by a recursive tree search on `UINode`; removes the need for manual tree traversal in `afterBuildUi(...)` - `id` attribute set on `UINode` during XML mapping so any node declared with `id="foo"` in XML is immediately findable via `findById` - host-agnostic `UiRuntime` / `UiHost` runtime layer shared between `UIScreen` and global overlays - global overlay system with `GlobalUiOverlayManager`, `GlobalUiOverlayOptions`, and `VoxelUiOverlays` - public APIs for global `showToast(...)`, `showOverlay(...)`, `showModal(...)`, `close(...)`, and `closeAll()` - demo XML resources for a global overlay and a global modal under `assets/voxelui/ui` - client dev commands `/voxelui toast`, `/voxelui overlay`, `/voxelui modal`, `/voxelui closeall`, and `/voxelui reload` - `UiOverlayContext` and `UiXmlDialogController` abstractions to keep modals and notifications on one coherent system ### Changed - VoxelUI now compensates for Minecraft `gui scale` at the screen level so custom UI stays readable without being truncated when the player increases the game GUI scale - `UIScreen` now renders the UI in a virtual layout space with consistent mouse coordinate remapping, overlay layering, and centered root layout resolution - many base components now scale more consistently with the UI system, including `Button`, `Checkbox`, `Dialog`, `Divider`, `Dropdown`, `Grid`, `Label`, `NumberInput`, `Panel`, `ProgressBar`, `ScrollPanel`, `TextInput`, and notifications - buttons now support dynamic sizing, percentage widths, size presets, and XML-driven width values such as `15%` - the XML mapper now accepts more reusable UI attributes, including button sizing fields and generic render/shader-related style properties - XML screen action registration now accepts typed handlers, allowing XML events to resolve either `Runnable` callbacks or `Consumer<T>` listeners depending on the component event payload - `UIScreen.ensureLayoutCurrent()` now reacts to dirty nodes in the existing tree instead of relying only on screen-wide layout dirtiness - XML bindings can now subscribe directly to observable values and invalidate the mapped component without rebuilding the whole screen - `UiWritableBinding` is now aligned with the new observable state API instead of being a standalone binding model - value-driven updates on `Label`, `TextInput`, `NumberInput`, `Checkbox`, `Slider`, `Dropdown`, `Tabs`, `ProgressBar`, and `InventoryGrid` now use local invalidation rather than full layout reloads - dialogs declared in XML are now mounted outside the normal layout flow and synchronized automatically with `UIScreen.showModal(...)` - `Dialog` now supports XML-driven custom content without forcing the built-in confirm/cancel button row - the showcase screen and MCSS demo content were expanded to cover dynamic button sizing and hero visual variants - the hero rendering geometry was consolidated so the shader, content layout, image placement, and accent line all use the same computed bounds - `UINode` now stores its declared `id` and exposes `setId`, `getId`, and `findById` for programmatic node lookup - `UIScreen` now delegates layout, render, notifications, modal management, and input dispatch to the shared `UiRuntime` - `XmlUIScreen` now reuses the shared runtime and synchronizes XML `<dialog>` nodes through `UiXmlDialogController` - `Modal` and `Notification` now target a shared overlay context instead of depending directly on `UIScreen` ### Fixed - UI clipping and inconsistent perceived sizing across higher Minecraft `gui scale` values - root layout centering drift that made some screens appear to shift horizontally as the GUI scale changed - missing and limited XML change-event support on interactive inputs; `Dropdown`, `TextInput`, `NumberInput`, `Checkbox`, and `Slider` can now propagate typed values directly from XML-declared handlers - the previous limitation where common Java state changes required `reloadLayout()` even for simple value updates; observable bindings can now trigger targeted relayouts on existing nodes - the previous XML gap where confirmation dialogs required `afterBuildUi(...)` and manual Java wiring even for simple modal flows - XML validation gaps for newer component attributes such as button `size`, `height`, and percentage width fields - several hero rendering issues around hexagon proportions, content overlap, internal insets, and top/bottom truncation - shader/log noise caused by uniforms declared or pushed inconsistently between the pipeline and shader JSON definitions
alpha

VoxelUI 0.1.0

0.1.0
18 апр. 2026 г.30Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog ## [0.1.0] - Initial public beta First public beta release of the VoxelUI framework. This release is intended to expose the framework to real usage, collect bug reports, and stabilize the API before a future stable release. ### Added - core UI engine with the `measure() -> layout() -> render()` pipeline - foundational components: `Panel`, `Label`, `Button`, `ProgressBar`, `Spacer`, `Divider` - advanced layout components: `Grid`, `Stack`, `Tabs`, `ScrollPanel`, `ListView` - input components: `TextInput`, `Checkbox`, `Slider`, `Dropdown` - Minecraft-oriented components: `ItemStackView`, `InventoryGrid`, `ItemSlot` - centralized theming through `Theme` - XML UI support via `UiXmlParser`, `UiXmlMapper`, and `UiXmlResourceLoader` - runtime bindings for XML-driven screens - inline and external MCSS stylesheet support - computed style tracking and style inspection - UI inspector and development-only debug tooling - hot reload for XML and MCSS in development mode - safe XML / MCSS error fallback panels - basic UI animations such as hover transitions, smooth scroll, and screen entrance - unit tests and early integration coverage ### Notes - this is a **beta** release, not a stable API freeze - bugs, rough edges, and breaking changes between beta versions are still expected - development-only showcase and debug tooling are disabled by default in release builds - some parts of the public API are still explicitly marked `BETA` or `EXPERIMENTAL`