Releases: RenaudRl/Typewriter-OmniGUIExtension
Releases · RenaudRl/Typewriter-OmniGUIExtension
Release list
v0.8
Typewriter 0.9.0-beta-175 (Java 21).
New
- Seamless menu transitions — switching menus (GUI → GUI or from another extension like QuestCodex/Shops) no longer closes and reopens the inventory. Same-size menus are repainted in place (slot diff + live title), size changes swap the window in a single packet: the close/reopen flicker on every transition is gone.
Fixes
- Menus can no longer be looted when their session is lost. Every inventory the extension creates is now tagged with a marker holder, and click/drag/shift-move protection fails closed: a menu that lost its session (async reopen race, extension reload) stays locked down instead of degrading into an editable container whose items could be dragged into the player's inventory.
- Real containers are never mistaken for menus. The close handler uses the holder to distinguish our own reopen race (session kept) from a real chest (session dropped, contents untouched), and in-place repaints only ever target inventories the extension owns — a matching real chest open at transition time can no longer be painted over.
- No more
NoClassDefFoundErrorafter extension reloads. The drag service is now unregistered on shutdown (each reload used to leak a stale listener from the old classloader), and holder checks resolve by class name, which Paper can handle during event dispatch. - One canonical repetition implementation.
GuiSlotBuilder.expandPositionsis now the single source of truth forcount/direction/gap/repeatYexpansion, shared with QuestCodex and Shops — divergent private copies were how tagged markers stopped spreading.
Install: drop the JAR into your server's plugins/Typewriter/extensions/ folder.
Pairs with QuestCodex v2.4: https://github.com/RenaudRl/Typewriter-QuestCodexExtension-Public and Shops v1.0: https://github.com/RenaudRl/AdvancedShopsExtension
v0.7
Typewriter 0.9.0-beta-175 (Java 21).
Fixes
- Decorative/repeat items no longer collapse to a single slot. A
GuiItemDatawith an emptybuttonType(the default for plain decorative items) was being treated as a real button type, and unsetrepeatY/count(serialized as0by the editor) produced an empty0 until 0range — both silently dropped repeated items instead of spreading them across the layout. - GUI sessions no longer wipe or hijack real containers. The stale-session branch of
MenuSessionService.onCloseused to clear the player's current inventory unconditionally when a mismatched inventory was detected, which could wipe real chest contents opened right after a menu. It now just removes the stale session and cancels its refresh task, and never touches the inventory. - Item text renders upright by default. Item names and lore no longer need an explicit
<italic:false>/<!italic>tag to display upright.
Install: drop the JAR into your server's plugins/Typewriter/extensions/ folder.
Pairs with QuestCodex v2.3: https://github.com/RenaudRl/Typewriter-QuestCodexExtension-Public
v0.6
typewriter v0.9 beta 175
Fixes
- Menus can now be opened from async Typewriter contexts (
custom_commandtriggers, action handlers):MenuSessionService.registerhops onto the player's entity scheduler before firingGuiOpenEventand touching inventories — no moreGuiOpenEvent may only be triggered synchronouslyerrors with menus silently failing to open. Folia-safe.
Install: drop the JAR into your server's plugins/Typewriter/extensions/ folder.
Pairs with QuestCodex v2.2: https://github.com/RenaudRl/Typewriter-QuestCodexExtension-Public
v0.5
typewriter v0.9 beta 175
Fixes
- Clicks now fire everything they should: slot
commands, Typewritertriggersand factmodifiersare executed on click — pagination buttons, sliders and scroll buttons were previously unresponsive. One click sound per interaction. - Animations actually tick: animated sessions are registered with the ticker, and the scheduler is Folia-safe.
- Scroll rendering: title shift adjustment no longer compounds per element (single
<shift>prefix). - Cooldowns follow the button (virtual coordinates), not the physical slot.
- Focus tracking traverses wrapper layouts (
innerLayout). - Item safety: merchant trade inputs are returned on disconnect; ghost-mode copies are PDC-tagged and reclaimed on close/quit.
- Performance: differential repaint — only slots whose item changed are rewritten.
New features
- Menu states at runtime:
_gui_states(conditions + per-layer overrides, with inheritance) are now applied in game viaMenuStateService+StateAwareLayout. - Public Bukkit events:
GuiOpenEvent(cancellable),GuiClickEvent(cancellable),GuiCloseEvent. - New internal actions:
gui:refresh,gui:state <id>(force/clear a state),gui:sound <key>. autoRefreshTicksonopen_gui: periodic re-render for live counters/timers.- Menu templates:
baseMenuIdmerges a base menu'slayoutPoolunder yours (same ids override) withmainLayoutId/sizefallbacks. - Per-slot permissions:
viewPermission(hidden without it) andclickPermission(visible but inert). - Reactive widgets DSL:
toggle,progressBar,tabsbuilt onReactiveSlotwith click callbacks.