Links
Tags
Creators
Details
Licensed GPL-3.0-only
Published 2 weeks ago
Updated 5 days ago
All versions
r1.0b4
Beta
r1.0b42 weeks ago 20
Compatibility
Minecraft: Java Edition
1.12.2
Platform
Forge
Supported environments
Client-side
Client and server
Changes
Changelog r1.0b4
date: 2026-09-03
[ES] Español
Arquitectura y Seguridad (Client/Server)
- Separación Estricta Cliente/Servidor: Reestructuración de la jerarquía de paquetes. Interfaces en
api.client.*, implementaciones enimpl.client.*. PrevieneClassNotFoundExceptionen Servidores Dedicados. - State<T>: Reubicado en
com.x4yi.x4ui.commonpara uso seguro en servidores. EmployaCopyOnWriteArrayListy deduplicación de valores porObjects.equals(). - NetworkSyncHelper: Permite vincular propiedades de
Container(víaIContainerListener) a objetosState<Integer>,State<Boolean>yState<Float>con escala configurable.
Assets y Multimedia
- RemoteResourceManager: Sistema de descarga asíncrona de recursos multimedia (imágenes, audio, vídeo) desde URLs HTTP/HTTPS. Caché local aislada por Mod ID con hash SHA-256.
- DownloadManager: Singleton con executor de 2 hilos. Transferencias NIO zero-copy en subprocesos de fondo sin penalizar rendimiento.
- Motor de Audio (OpenAL):
OpenALAudioSinkpara reproducción de audio con 8 buffers streaming y tracking de tiempo de reproducción por muestra. Integrado al ciclo de vida de la GUI. - GuiVideo - Decoder Dual: FFmpegProcessDecoder (nativo) como decodificador primario. JCodecVideoDecoder (pure-Java) como respaldo automático para Android (PojavLauncher) y sistemas sin ejecución de procesos.
- GuiImage/GuiVideo: Soporte para canal alfa (
setAlpha()) y tintes de color (setColor(r, g, b)).
Interfaz y Componentes
- Rediseño de la API Pública: Métodos renombrados para desvinculación de Mojang:
update()→tick(float),drawSelf()→renderSelf(int, int, float),mouseClicked→onMouseClick. - Sistema de Layout Optimizado: Flags
requestLayout()yrequestRender()para evitar recálculos costosos al mutar propiedades puramente visuales. - Insets: Clase inmutable para padding/margin con soporte asimétrico:
new Insets(top, right, bottom, left). - ITheme / DefaultTheme: Sistema de temas inyectable por componente. Estilos no son globales.
DefaultTheme提供 tema oscuro con colores Material Design. - GuiBuilder<T>: API fluent para construcción declarativa de componentes con chainable setters.
- Tooltips Nativos: Sistema de tooltips reescrito utilizando
GuiPaneldirectamente. Resolución por cadena de padres. Soporte para texto y componentes personalizados. - GuiDropdown<T>: Selector genérico con popup, enlace reactivo a
State<T>, y renderizado fuera de scissor. - GuiVirtualList<T>: Lista virtualizada que solo instancía componentes visibles en el viewport. Ventana/reciclaje automático al hacer scroll.
Layout y Eventos
- FlexLayout: Motor de layout tipo CSS Flexbox. Direcciones VERTICAL, HORIZONTAL, ABSOLUTE. Soporte para
gap,flexWrap,paddingymargin. - Propagación de Eventos: Iteración en orden inverso de render (componente de mayor capa primero). Retorno
truedetiene la propagación. - Gestión de Foco: Modelo de foco único almacenado en el componente raíz.
requestFocus(),clearFocus(),isFocused(). - Sistema de Capas: Componente
layerentero para orden Z. Los hijos se renderizan en orden ascendente de capa.
Multimedia y Decodificación
- API IMediaService: Servicio inyectable para pre-carga temprana (
preload) y evaluación perezosa (streamAsync) de medios. Reemplaza accesos estáticos rígidos para mayor escalabilidad. - DirectMemoryVideoDecoder (Zero-Copy): Decodificador de vídeo que mapea la salida en crudo de FFmpeg directamente a la memoria nativa (
DirectByteBuffer). Evita la instanciación de fotogramas en el Heap de Java, logrando 0 MB de overhead para el Garbage Collector y permitiendo resoluciones de hasta 1280x720 sin colapsar la RAM de Minecraft. - JCodecVideoDecoder: Decodificador pure-Java usando
H264Decoderde JCodec. Demuxing MP4, decodificación de NALs H.264, conversión YUV420 a ARGB. Fallback automático para Android (PojavLauncher). - GuiVideo - Optimización de GPU: Lógica de omisión de renderizado. Solo se envía la textura a OpenGL cuando el tiempo del fotograma (PTS) difiere del anterior, reduciendo drásticamente el ancho de banda del PCIe.
- MediaPlayer: Orquestador de reproducción con reloj maestro de audio y fallback a reloj del sistema.
Estado de Desarrollo
- GuiModelRender, GuiVideo, Sincronización Servidor-Cliente: Estos componentes se encuentran en una fase muy temprana de desarrollo. Su API es inestable y puede cambiar sin previo aviso en futuras versiones.
[/ES]
[EN] English
Architecture & Security (Client/Server)
- Strict Client/Server Separation: Refactored package hierarchy. Interfaces in
api.client.*, implementations inimpl.client.*. PreventsClassNotFoundExceptionon Dedicated Servers. - State<T>: Relocated to
com.x4yi.x4ui.commonfor safe server-side usage. UsesCopyOnWriteArrayListand value deduplication viaObjects.equals(). - NetworkSyncHelper: Binds
Containerproperties (viaIContainerListener) toState<Integer>,State<Boolean>, andState<Float>objects with configurable scale.
Assets & Multimedia
- RemoteResourceManager: Asynchronous media downloading from HTTP/HTTPS URLs. Local cache isolated by Mod ID with SHA-256 hashing.
- DownloadManager: Singleton with 2-thread executor pool. NIO zero-copy transfers on background threads without impacting game performance.
- Audio Engine (OpenAL):
OpenALAudioSinkfor audio playback with 8-buffer streaming and per-sample playback time tracking. Integrated with GUI lifecycle. - GuiVideo - Dual Decoder: FFmpegProcessDecoder (native) as primary decoder. JCodecVideoDecoder (pure-Java) as automatic fallback for Android (PojavLauncher) and systems without process execution.
- GuiImage/GuiVideo: Alpha channel support (
setAlpha()) and color tinting (setColor(r, g, b)).
Interface & Components
- Public API Redesign: Renamed methods for Mojang decoupling:
update()→tick(float),drawSelf()→renderSelf(int, int, float),mouseClicked→onMouseClick. - Optimized Layout System:
requestLayout()andrequestRender()flags to avoid expensive recalculations when mutating purely visual properties. - Insets: Immutable class for padding/margin with asymmetric support:
new Insets(top, right, bottom, left). - ITheme / DefaultTheme: Injectable theming system per component. Styles are no longer global.
DefaultThemeprovides a dark theme with Material Design colors. - GuiBuilder<T>: Fluent API for declarative component construction with chainable setters.
- Native Tooltips: Tooltip system rewritten using
GuiPaneldirectly. Resolution via parent chain. Support for text and custom component tooltips. - GuiDropdown<T>: Generic selector with popup, reactive binding to
State<T>, and rendering outside scissor bounds. - GuiVirtualList<T>: Virtualized list that only instantiates components visible in the viewport. Windowing/recycling during scroll.
Layout & Events
- FlexLayout: CSS Flexbox-like layout engine. VERTICAL, HORIZONTAL, ABSOLUTE directions. Supports
gap,flexWrap,padding, andmargin. - Event Propagation: Reverse render order iteration (highest-layer component first). Returning
truestops propagation. - Focus Management: Single-focus model stored on root component.
requestFocus(),clearFocus(),isFocused(). - Layer System: Integer
layerproperty for Z-ordering. Children render in ascending layer order.
Multimedia & Decoding
- IMediaService API: Injectable service for ahead-of-time preloading (
preload) and lazy evaluation (streamAsync) of media assets. Replaces rigid static registries for better scalability. - DirectMemoryVideoDecoder (Zero-Copy): Video decoder that maps FFmpeg's raw output directly into native memory (
DirectByteBuffer). Bypasses Java Heap frame instantiation, achieving 0 MB GC overhead and supporting up to 1280x720 resolutions without crashing Minecraft's RAM limit. - JCodecVideoDecoder: Pure-Java decoder using JCodec's
H264Decoder. MP4 demuxing, H.264 NAL decoding, YUV420 to ARGB conversion. Automatic fallback for Android (PojavLauncher). - GuiVideo - GPU Optimization: Render-skipping logic. The texture is only dispatched to OpenGL when the frame time (PTS) differs from the previous one, drastically reducing PCIe bandwidth usage.
- MediaPlayer: Playback orchestrator with audio master clock and system clock fallback.
Development Status
- GuiModelRender, GuiVideo, Server-Client Sync: These components are in a very early stage of development. Their API is unstable and may change without notice in future versions.
[/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:6mBX6PLG"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:83rsEHHQ:6mBX6PLG"
}

