Links
Tags
Creators
Details
r1.0b3
Compatibility
Changes
X4UI r1.0b3
[ES]
Resumen de Cambios
Actualización de la arquitectura interna de renderizado y eventos, introduciendo soporte nativo de Z-Index, interpolaciones basadas en DeltaTime, y gestión segura de recortes OpenGL anidados, además de una gran cantidad de nuevos componentes interactivos.
Arquitectura y Núcleo
- Soporte Z-Index: Implementada la propiedad
layerpara componentes, proporcionando un ordenamiento determinista para el renderizado y la propagación de eventos (bubbling). - Animaciones DeltaTime: Integrada lógica de DeltaTime en todo el framework para lograr animaciones e interpolaciones independientes de los FPS.
- Seguridad de Memoria: Implementado
FontWidthCachecon política de limpieza LRU para mitigar fugas de memoria durante el análisis de textos complejos (ej. Markdown). - Recorte OpenGL Anidado: Implementado
ScissorHelperpara gestionar de manera robusta el uso deGL_SCISSOR_TESTen componentes anidados. - Construcción Fluida: Añadida la clase de utilidad
GuiBuilderque proporciona una API fluida (Fluent API) para facilitar la construcción de interfaces. - Reactividad: Integrado un sistema de gestión de estado reactivo (
State).
Componentes y Funcionalidades
- Arrastrar y Soltar (Drag & Drop): Añadida capacidad de arrastre nativa a
GuiComponentcon límites configurables (DragConstraint.NONE,DragConstraint.PARENT_BOUNDS). - Tooltips Integrados: Añadido soporte nativo de renderizado de Tooltips en
GuiBaseScreenyGuiBaseContainermediantesetTooltip(). - Diseños FlexWrap: Añadida la funcionalidad
flexWrapaGuiPanelpara el ajuste automático y multilínea de elementos en diseños horizontales y verticales. - Nuevos Componentes:
GuiDropdownpara menús desplegables.GuiImageyGuiSpritepara la renderización flexible de texturas.GuiTextInputpara campos de entrada de texto avanzados.GuiSlotpara gestionar inventarios y stacks de ítems dentro del DOM.GuiSlidery sus variantes (GuiSliderDouble,GuiSliderFloat,GuiSliderInt).GuiModelRenderpara soporte de renderizado de entidades 3D e ítems.GuiVideopara reproducción de vídeo in-game.
Mejoras y Correcciones
- Refactorización de GuiScrollPanel:
- Migración a
ScissorHelperpara la resolución adecuada de recortes anidados. - Implementado descarte de componentes (culling) para omitir la renderización y procesamiento de eventos de elementos fuera del área visible.
- Resueltos los problemas de jerarquía de propagación de eventos, permitiendo que los paneles de scroll anidados funcionen correctamente y de manera independiente.
- Migración a
- Solucionada la fuga de memoria en
GuiBaseContainercausada por la adición duplicada de áreas enjeiRecipeAreasal redimensionar la ventana. - Refactorizado
GuiMarkdownpara utilizarFontWidthCache, mejorando notablemente el rendimiento. - Estandarizadas las animaciones en
GuiButton,GuiToggleyGuiScrollPanelpara escalar con DeltaTime en lugar de ticks en crudo. - Expuestos los métodos
getGuiLeft()ygetGuiTop()enGuiBaseContainer. - Reestructurada y completada la documentación técnica en el directorio
Docs/(Disponible en inglés y español).
[/ES]
[EN]
Changelog Summary
Core rendering and event architecture update, introducing native Z-Index support, DeltaTime-based interpolations, and safe management of nested OpenGL clipping, along with a massive batch of new interactive components.
Architecture & Core
- Z-Index Support: Implemented the
layerproperty for components, providing deterministic sorting for rendering and event bubbling priorities. - DeltaTime Animations: Integrated DeltaTime logic throughout the framework for FPS-independent animations and transitions.
- Memory Safety: Implemented
FontWidthCacheincorporating an LRU eviction policy to mitigate memory leaks during intensive text parsing tasks (e.g. Markdown rendering). - Nested OpenGL Clipping: Implemented
ScissorHelperto robustly manage nestedGL_SCISSOR_TESTapplications. - Fluent Construction: Added
GuiBuilderutility class providing a fluent API to streamline interface construction. - Reactivity: Integrated a reactive
Statemanagement system.
Components & Features
- Drag & Drop: Added native drag-and-drop capability to
GuiComponentwith flexible boundaries (DragConstraint.NONE,DragConstraint.PARENT_BOUNDS). - Native Tooltips: Added internal Tooltip rendering support to
GuiBaseScreenandGuiBaseContainerviasetTooltip(). - FlexWrap Layouts: Added
flexWrapfunctionality toGuiPanelfor automatic multi-line wrapping of elements in horizontal and vertical configurations. - New Components:
GuiDropdownfor standard dropdown menu structures.GuiImageandGuiSpritecomponents for flexible texture and sprite rendering.GuiTextInputfor advanced text input fields.GuiSlotcomponent to integrate and manage item stacks and inventories within the DOM.GuiSliderarchitecture with specific implementations (GuiSliderDouble,GuiSliderFloat,GuiSliderInt).GuiModelRenderto support 3D entity and item rendering directly inside the user interface.GuiVideofor in-game video playback support.
Fixes & Improvements
- GuiScrollPanel Refactor:
- Migrated from raw GL calls to
ScissorHelperfor proper nested clipping resolution. - Implemented strict component culling to skip rendering and event processing for elements outside the visible viewport.
- Resolved event bubbling hierarchy issues, enabling nested scroll panels to function correctly independently of parent containers.
- Migrated from raw GL calls to
- Resolved memory leak in
GuiBaseContainercaused by duplicate instances appending tojeiRecipeAreasupon window resize. - Refactored
GuiMarkdownto utilizeFontWidthCachefor significantly improved parsing and rendering performance. - Standardized animations in
GuiButton,GuiToggle, andGuiScrollPanelto scale consistently with DeltaTime instead of raw ticks. - Exposed
getGuiLeft()andgetGuiTop()withinGuiBaseContainerfor external utility consumption. - Restructured and populated the
Docs/directory with comprehensive technical documentation in English (en-us) and Spanish (es-latam).
[/EN]
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:83rsEHHQ:mo4xxCl9"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:83rsEHHQ:mo4xxCl9"
}

