Versiones
v1.0.1
Changelog
Registro de cambios entre versiones de EventUI. Cada entrada documenta bugs corregidos, mejoras y nuevas features.
v1.0.1
2026 — En progreso latest
Sistema de Tooltips Avanzados
-
NEW
Nuevos tipos de sección de receta:
FURNACE_RECIPE,SMITHING_RECIPE,ANVIL_RECIPE,BREWING_RECIPE— cada uno con su textura de interfaz vanilla incluida en el mod -
NEW
CUSTOM_RECIPE— tipo genérico donde el admin define su propia textura y las coordenadas X,Y de cada slot en el YAML, para recetas de mods -
NEW
Soporte para override de textura de frame desde el YAML con
section_1_recipe_frame— compatible con resource packs -
NEW
RecipeCache— las recetas se cachean tras la primera búsqueda, eliminando búsquedas O(n) en elRecipeManagercada frame -
NEW
inventory_preview— overlay oscuro en ingredientes que el jugador no tiene en su inventario (opcional, activar coninventory_preview: true) -
NEW
show_tooltip_background— controla si se muestra el cuadro morado/negro del tooltip. Poner en false para mostrar solo la receta sin fondo - NEW Cycling de items en todos los tipos de receta — múltiples items separados por coma se rotan automáticamente cada segundo
-
IMPROVED
show_grid_frameahora funciona correctamente en Shaped/Shapeless (mostraba el frame aunque estuviera en false) -
FIX
FURNACE_RECIPE,SMITHING_RECIPE,ANVIL_RECIPEyBREWING_RECIPEno se reconocían comoSectionTypeválidos (el catch delvalueOfhacía fallback silencioso aRECIPE)
Sistema de guardado de progreso
- NEW Guardado inmediato al completar un objetivo, evento, o auto-inicio — ya no hay que esperar al auto-save periódico para eventos importantes
-
NEW
Guardado inmediato en cambios de estado desde
/evy desde el bridge - IMPROVED Auto-save periódico reducido de 5 minutos a 2 minutos
- IMPROVED Sistema de throttle/coalescing por jugador — si llegan múltiples solicitudes de guardado juntas, se agrupan en una sola escritura
-
FIX
Validación al cargar playerdata: estado inválido → fallback a
AVAILABLE, evento inexistente → ignorado con warning, values fuera de rango → clamping
Sistema de mensajería del mod
-
FIX
EVENT_RELOAD_NOTIFICATIONera sobreescrito silenciosamente porEventViewModel(Map<MessageType, MessageHandler>hacíaput()en vez deadd()) — la reconstrucción de UI tras/ev reloadnunca se ejecutaba -
IMPROVED
MessageHandlercambiado aMap<MessageType, List<MessageHandler>>conCopyOnWriteArrayList— múltiples handlers por tipo de mensaje -
NEW
removeHandler(type, handler)para remover un handler específico sin afectar a los demás (patrónMessageHandler[]handlerRef para auto-remoción)
Caché de UI en el cliente
-
FIX
cachedUIModeycachedScreenId(campos static) sobrevivían entre reconexiones — al reconectar a un servidor con UI distinta, el cliente seguía mostrando la UI anterior -
FIX
Cambiar
screenIdenconfig.ymlen caliente no actualizaba la UI en el cliente porque el handler deEVENT_RELOAD_NOTIFICATIONera sobreescrito (ver fix deMessageHandlerarriba) -
NEW
invalidateCache()llamado automáticamente enClientPlayConnectionEvents.JOINyDISCONNECT— cada conexión nueva siempre pide el modo de UI fresco
Objetivos y tracking
-
FIX
BREW_POTION: el handler deInventoryClickEventno detectaba pociones completadas cuando el jugador cerraba la GUI antes de que terminara el brewing — migrado aBrewEventde Bukkit -
FIX
tryAutoStart()tenía la lógica de retorno completamente invertida en las tres ramas — afectaba a TODOS los tipos de objetivo, haciendo que los eventosIN_PROGRESSsiempre se saltaran enprocessAction() -
FIX
/ev abandonconectado al switch de comandos (existía el handler pero nunca se llamaba — el cliente enviaba "abandon_event" sin elevent_id) -
FIX
Cliente enviaba action: "abandon_event" sin concatenar el
event_id— ahora envía "abandon_event:{eventId}" como esperabaPluginEventBridge
Toolchain y build
-
FIX
fabric-loommigrado de1.8-SNAPSHOTa1.12.7(getDependencyProject()removido en Gradle 8.14+) -
FIX
Shadow plugin migrado de
com.github.johnrengelman.shadow:8.1.1acom.gradleup.shadow:9.4.2(StubbedFileCopyDetails.moderemovido en Gradle 8.14)
Renderizado, UI State y Textos
-
NEW
ENTITY_RENDERfollow_mousemode — nuevo modo de rotación que hace que las entidades sigan al cursor del mouse de forma suave, similar al inventario del jugador -
NEW
ENTITY_RENDERidle animations — las entidades renderizadas ahora muestran sus animaciones de reposo (idle) automáticamente -
IMPROVED
ENTITY_RENDERrotation modes — el modo "fixed" ahora es un alias válido de "static" -
FIX
ENTITY_RENDERorientation — las entidades ya no se renderizan boca abajo o mirando hacia atrás -
NEW
TEXTline_spacingyparagraph_spacing— control de espaciado entre líneas y párrafos -
NEW
TEXTfont_size— control de tamaño de fuente -
NEW
TEXTanchor_offset_x/y— desplazamiento adicional para anclas -
IMPROVED
Text rendering — mejoras en el procesamiento de párrafos y word wrapping con soporte para saltos de línea suaves (
\n) y dobles (\n\n) - FIX Text breaking — corregido problema donde el texto se rompía después del procesamiento de párrafos
-
NEW
visible_if=operator — soporte para operador de igualdad simple (=) además de==en condicionesvisible_if -
NEW
UI State persistence — variables de UI establecidas con
/ev setuivarahora persisten al reiniciar el servidor (guardadas enplayerstate/{uuid}.yml) - NEW Click animations — animaciones de clic para UI elements (punch, shake, bounce, flash)
- NEW Hover sounds — sonidos de hover para UI elements y skill tree nodes
Sistema de Skill Trees
- NEW Exclusive branches — sistema de grupos exclusivos y ramas, los jugadores seleccionan una rama por grupo exclusivo
- NEW Branch selection tooltips — tooltips que muestran información de selección de rama
-
NEW
Multi-type point distribution — soporte para
point_distributionmap con múltiples tipos de puntos - NEW Bukkit tag checking — multiplicadores basados en tags de entity, block e item
- NEW Playtime timer system — sistema de timer de playtime con daily cap
- NEW Attribute operations add/multiply/add_scalar/add_percent — nuevas operaciones para efectos de atributos
- NEW New attribute effects — GENERIC_REGENERATION, MOVEMENT_SPEED, ARMOR, ARMOR_TOUGHNESS, KNOCKBACK_RESISTANCE, LUCK
- NEW PointTypeResolver — mapeo de nombres amigables a IDs internos de tipos de puntos
- IMPROVED Connection visuals — visuales de conexión configurables con optimizaciones de rendimiento
Hot Reload
- NEW EventFileWatcher — hot reload automático de eventos usando WatchService
- IMPROVED UIFileWatcher y SkillTreeFileWatcher — optimizados con WatchService (fallback a polling)
- NEW Selective reload — solo recarga archivos modificados en lugar de todo el sistema
- FIX Duplicate reload message — corregido mensaje duplicado en /ev reload
- FIX Event objectives not reloading — corregido problema donde objetivos no recargaban target_amount en /ev reload