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

ВЕРСИИ (3)

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`