ActualizacionesUpdates
Historial centralizado de todos los proyectos.Centralized history of all projects.
Novedades RecientesRecent Novedades
LethalWeaponry r1.0b109/3/2026
LethalWeaponry r1.0b10
LethalWeaponry r1.0b10
Bug Fixes
- UI / Flags: Texturas actualizadas a RGBA puro para mejorar su calidad y renderizado.
- Changelog UI: Reposicionado el indicador de nueva versión y corregido el renderizado de tooltips.
- Config Menu: Solucionado el problema al editar o borrar valores en los sliders numéricos.
- HUD Cooldowns: Sincronización correcta de porcentajes basados en la configuración dinámica.
- HUD Essence (Scythe): Cálculo visual dinámico para soportar límites de esencia variables.
- HitscanSlash (Air): Solucionado error en el ataque de área al golpear al aire con Scythe/Katana. (creo, espero)
- Scythe Exploit: Eliminada la obtención de esencia mediante ataques a distancia.
- ChainBlade: Prevenida la sobreescritura accidental del aturdimiento largo del WarHammer.
- GUI / Scroll: Corregido error de renderizado que ocultaba elementos de configuración (Scythe, Chainblade).
- Scythe GUI: Agregadas las configuraciones de esencia faltantes (
maxEssence,essencePerKill,essencePerHit). - Config GUI: Solucionado el problema donde la barra de búsqueda perdía el foco al escribir debido a la recreación innecesaria de la interfaz.
Balance & Features
- WarHammer: El ataque de área ahora reduce armadura levemente, o aplica Severance en su totalidad si está encantado.
- WarHammer: Multiplicadores del Ground Slam ajustados al 50% del daño directo y caída.
- WarHammer: Densidad de partículas AOE aumentada por defecto (x2.0).
- Severance: Escala hasta Nivel III y funciona con todas las armas cuerpo a cuerpo (excepto proyectiles).
- Scythe: El E-Dash aplica invulnerabilidad nativa configurable (40 ticks por defecto), eliminando efectos de poción.
- Compatibilidad: Nueva configuración (
compat.json) para soporte dinámico con variantes de BetterCombat.
Audit & QoL
- GUI Config: Agregados tooltips descriptivos para Scythe y ChainBlade, y correcciones internas de sincronización.
- Tooltips & Manuales:
- Katana: Aclarado que Blood Pact requiere
Shift + Clic Derecho. - WarHammer: Skybreaker Leap ahora requiere
Shift + Mirar Abajo + Clic Derecho. Aclaración de Stun en golpes críticos. - Scythe: Cambiado “Strafe” por
Shift + Clic Derechoen E-Dash.
- Katana: Aclarado que Blood Pact requiere
Bug Fixes
- UI / Flags: Updated textures to pure RGBA for better quality and rendering.
- Changelog UI: Repositioned the new release indicator and fixed tooltip rendering.
- Config Menu: Fixed issues when editing or deleting values in numeric sliders.
- HUD Cooldowns: Corrected percentage synchronization based on dynamic skill configuration.
- HUD Essence (Scythe): Dynamic visual calculation to support variable essence limits.
- HitscanSlash (Air): Fixed area attack execution when swinging Scythe/Katana in the air. (I think, I hope)
- Scythe Exploit: Prevented essence gain from ranged attacks.
- ChainBlade: Prevented accidental overwriting of WarHammer’s long stun duration.
- GUI / Scroll: Fixed rendering bug that hid long configuration elements (Scythe, Chainblade).
- Scythe GUI: Added missing essence configurations (
maxEssence,essencePerKill,essencePerHit). - Config GUI: Fixed search box losing focus while typing caused by unnecessary screen-wide component reconstruction.
Balance & Features
- WarHammer: AOE attack applies minor armor reduction, or full Severance if enchanted.
- WarHammer: Ground Slam multipliers adjusted to 50% of direct hit damage and fall distance.
- WarHammer: Default AOE particle density increased (x2.0).
- Severance: Now scales up to Level III and works with all melee weapons (excluding projectiles).
- Scythe: E-Dash applies configurable native invulnerability (default 40 ticks), replacing potion effects.
- Compatibility: Added
compat.jsonfor dynamic support with BetterCombat forks.
Audit & QoL
- GUI Config: Added missing descriptive tooltips for Scythe and ChainBlade, plus internal sync fixes.
- Tooltips & Manuals:
- Katana: Clarified Blood Pact requires
Shift + Right-Click. - WarHammer: Skybreaker Leap now requires
Shift + Look Down + Right-Click. Stun only triggers on critical hits. - Scythe: Changed “Strafe” to
Shift + Right-Clickfor E-Dash.
- Katana: Clarified Blood Pact requires
X4UI r1.0b49/2/2026
X4UI Framework r1.0b4
X4UI r1.0b4
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
- FFmpegProcessDecoder: Subproceso FFmpeg con pipes NIO. Probes de metadatos vía
ffmpeg -i. DecoderThread con RingBuffer para frames BGRA. - JCodecVideoDecoder: Decodificador pure-Java usando
H264Decoderde JCodec. Demuxing MP4, decodificación de NALs H.264, conversión YUV420 a ARGB. - 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.
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
- FFmpegProcessDecoder: FFmpeg subprocess with NIO pipes. Metadata probing via
ffmpeg -i. Background DecoderThread with RingBuffer for BGRA frames. - JCodecVideoDecoder: Pure-Java decoder using JCodec’s
H264Decoder. MP4 demuxing, H.264 NAL decoding, YUV420 to ARGB conversion. - 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.
X4UI r1.0b3a8/28/2026
X4UI Framework r1.0b3a
X4UI r1.0b3a
Bug Fixes
- Sliders: Corregido un bug donde hacer click en el campo de texto de un slider antes del primer frame renderizado no permitía editar el valor. Adicionalmente se ha solucionado el problema de pérdida de foco y escritura cuando existen múltiples sliders en pantalla (ahora sólo puede haber un campo de texto activo globalmente).
- Scroll Panels (Estructural): Se arregló un bug severo en
GuiScrollPaneldonde los eventos de teclado (keyTyped) y el arrastre prolongado del ratón (mouseClickMoveymouseReleased) nunca se propagaban a los hijos del panel interno debido a una lista de renderizado vacía. Esto soluciona por completo la imposibilidad de usar el teclado en los campos de texto o arrastrar correctamente los sliders fuera de los márgenes del scroll.
Bug Fixes
- Sliders: Fixed a bug where clicking a slider’s text field before the first rendered frame prevented value editing. Additionally, resolved an issue where multiple slider text fields could be focused simultaneously, causing typing input to be redirected to off-screen sliders. Focus is now managed globally.
- Scroll Panels (Structural): Fixed a severe bug in
GuiScrollPanelwhere keyboard events (keyTyped) and prolonged mouse dragging (mouseClickMoveandmouseReleased) were never propagated to the internal panel’s children due to an empty render list. This completely resolves the inability to use the keyboard in text fields or drag sliders correctly outside the scroll margins.