Update v1.8.0 – Smarter GUI Flow, Confirm Menus, Session Expiry & Empty States
 
 April 2025 – Major infrastructure & UX improvements
 
✨ New Features
 
✅ Confirm Menu System
 • Added 
ConfirmMenuManager for confirmation workflows (accept/cancel)
 • Fully integrated with 
SelectGamemodeMenuManager and session tracking
 • Customizable title, layout, filler from 
confirmGUI.yml
 • Supports:
 - 
setConfirmContext(...) in 
DuelBuilderSession
 - 
ConfirmMenuManager.reopen(...) to go back if needed
 
 Empty State Item Support
 • When no players are online, a custom "no players" icon is displayed in the top row
 • Configurable via 
menu.empty-item in 
challengeGUI.yml
 • Supports material, MiniMessage title, lore, enchantment, sound & particles
 
 Seamless Menu Navigation
 • Confirm Cancel button now returns to Gamemode Selector (with delay fix)
 • "Back" buttons use 
BukkitScheduler.runTaskLater for smooth reopening
 • Session tracking retains previous page when switching menus
 
 Internal Improvements
 
 Centralized Session Expiration
 • New async cleanup task via 
DuelBuilderManager.expireStaleSessions()
 • Automatically removes stale 
DuelBuilderSession objects
 • Configurable via 
gui-settings.timeout-seconds in your 
config.yml
 
⚙️ Improved GUI Parsing
 • 
DuelBuildingManager now cleanly parses:
 - 
menu.empty-item
 - 
menu.sounds
 - 
menu.navigation.layout
 - 
menu.filler-item
 • All GUI metadata now stored in 
DuelMenuMeta
 
 ItemBuilder Enhancements
 • Material parsing now logs invalid types and defaults to 
BARRIER
 • Filler and button slots only update if empty (null or AIR)
 
 Config Changes
 
challengeGUI.yml
 Make sure 
empty-item is under 
menu:
 
 
 
  Code (YAML):
 
 
 
  
 menu
  :
   
  ...
  
   empty-item:
  
     enabled
  : true
  
     material
  : SKELETON_SKULL
  
     name
  : 
  "<gray>No players found"
  
     lore
  :
       - 
  "<dark_gray>Try again later."
  
     enchanted
  : false
  
  
 
 
 
config.yml
 Set the global GUI timeout (in seconds):
 
 
 
  Code (YAML):
 
 
 
  
 gui-settings:
  
   timeout-seconds
  : 60
  
  
 
 
 
 Developer Notes
 • Compatible with older GUI configs 
 • Uses full MiniMessage support for titles, lore 
 • Works with PlaceholderAPI (%player_name%, etc.) 
 • Reload menus anytime with 
/duel reload
 
✅ Ready for smoother menu navigation, confirmation control, and cleaner sessions!