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 Derecho en E-Dash.

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.json for 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-Click for E-Dash.
Ver actualización completa →View full update →
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 en impl.client.*. Previene ClassNotFoundException en Servidores Dedicados.
  • State<T>: Reubicado en com.x4yi.x4ui.common para uso seguro en servidores. Employa CopyOnWriteArrayList y deduplicación de valores por Objects.equals().
  • NetworkSyncHelper: Permite vincular propiedades de Container (vía IContainerListener) a objetos State<Integer>, State<Boolean> y State<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): OpenALAudioSink para 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() y requestRender() 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 GuiPanel directamente. 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, padding y margin.
  • Propagación de Eventos: Iteración en orden inverso de render (componente de mayor capa primero). Retorno true detiene la propagación.
  • Gestión de Foco: Modelo de foco único almacenado en el componente raíz. requestFocus(), clearFocus(), isFocused().
  • Sistema de Capas: Componente layer entero 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 H264Decoder de 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 in impl.client.*. Prevents ClassNotFoundException on Dedicated Servers.
  • State<T>: Relocated to com.x4yi.x4ui.common for safe server-side usage. Uses CopyOnWriteArrayList and value deduplication via Objects.equals().
  • NetworkSyncHelper: Binds Container properties (via IContainerListener) to State<Integer>, State<Boolean>, and State<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): OpenALAudioSink for 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() and requestRender() 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. DefaultTheme provides a dark theme with Material Design colors.
  • GuiBuilder<T>: Fluent API for declarative component construction with chainable setters.
  • Native Tooltips: Tooltip system rewritten using GuiPanel directly. 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, and margin.
  • Event Propagation: Reverse render order iteration (highest-layer component first). Returning true stops propagation.
  • Focus Management: Single-focus model stored on root component. requestFocus(), clearFocus(), isFocused().
  • Layer System: Integer layer property 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.
Ver actualización completa →View full update →
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 GuiScrollPanel donde los eventos de teclado (keyTyped) y el arrastre prolongado del ratón (mouseClickMove y mouseReleased) 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 GuiScrollPanel where keyboard events (keyTyped) and prolonged mouse dragging (mouseClickMove and mouseReleased) 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.
Ver actualización completa →View full update →

Historiales por ProyectoProject Histories

Buscar en XHubSearch XHub