Skip to content

PremiumAdvancements v2.0

Latest

Choose a tag to compare

@XPaladiumyX XPaladiumyX released this 25 Jun 19:07
· 1 commit to main since this release
8b5694d

Changelog

v2.0

🎯 Major Features

📑 Multi-Tabs Support

Advancements are now organized into multiple tabs, each as a separate .yml file in the Advancements/ folder.

  • Tab System - Each file in Advancements/ creates one tab in the Minecraft advancement menu (L key)
  • Tab Selector GUI - /padv gui now shows a tab selection screen when multiple tabs exist. Click a tab to view/edit its advancements
  • Per-Tab Configuration - Each file has its own tab.namespace, root.icon, root.title, root.description, and root.background
  • Global IDs - Advancement IDs are unique across all tabs. Commands like /padv give, /padv take, /padv list work globally
  • Tab Placeholders - New placeholders: %premiumadvancements_tab_completed_<ns>%, _tab_total_<ns>%, _tab_percent_<ns>%

🔄 Auto-Migration (v1.70 → v2.0)

On first startup, if advancements.yml and/or adv-gui.yml are detected at the root:

  • Backup - Old files are copied to backups/migration_YYYY-MM-DD_HH-mm-ss/
  • Merge - A single Advancements/default.yml is created combining adv-gui.yml (tab config) + advancements.yml (advancements)
  • Rename - Old files are renamed to .migrated (never deleted)
  • Notification - Admins receive an in-game message with the backup path

🌐 Web Editor - Multi-Tab Support

The web editor now fully supports multiple tabs:

  • Tab Selector - Dropdown at the top of the sidebar to switch between tabs
  • Tab CRUD - Create, rename, configure, and delete tabs directly from the editor
  • Tab Settings - Configure namespace, title, description, root icon, and background per tab
  • Move Between Tabs - In the Advanced tab of each advancement, a "Tab" dropdown lets you move advancements between tabs
  • Version Gating - Multi-tab features are only visible for v2.0+ data (old v1.70 data shows a single-tab editor)
  • JSON Format - New {tabs: {namespace: {tab: {...}, advancements: {...}}}} format for upload/download

✨ Changes

  • /padv tabs - New command listing all tabs with namespace + advancement count
  • /padv wiki - New command opening the plugin wiki link
  • /padv info <id> - Now shows which tab the advancement belongs to
  • /padv reload - Now properly reloads all tabs (unregisters and re-registers all)
  • /padv apply - Reload completes in 1 tick instead of 20 ticks (near-instant UI update)
  • /padv gui - Opens the TabSelectorGUI first when multiple tabs exist
  • GUI: "← Back to Tabs" and "≡ Tabs" buttons in the advancement list
  • Advancements/ folder auto-created with a default.yml resource file if empty
  • config.yml editor section validation no longer checks for adv-gui.yml/advancements.yml
  • 45 trigger types - Added MANUAL (command-only) and PLACEHOLDER (PAPI-based) triggers
  • 14+ placeholders - Added per-tab placeholders (tab_completed, tab_total, tab_percent)
  • Web editor - Custom Minecraft-themed dropdowns and scrollbars now properly applied
  • Web editor - Trust code modal shown on first visit for browser authorization
  • Web editor - Advancement ID changes now properly update the map key in real-time
  • Language files - Added gui.back-to-tabs, help.commands.tabs, help.commands.wiki, PLACEHOLDER input prompts

🧩 Vanilla Advancement Integration

Minecraft's built-in advancements (Story, Adventure, Nether, End, Husbandry) are now loaded read-only:

  • Auto-loaded - All 125+ vanilla advancements loaded from Bukkit on startup
  • Read-only - Displayed in the web editor but cannot be edited or deleted
  • Proper display - Icons, titles, descriptions, and tree positions extracted via Paper API
  • Hidden toggle - Editor settings gear (⚙ in toolbar) lets you show/hide vanilla tabs in the dropdown
  • Connection lines - Vanilla parent-child tree structure preserved in the editor tree view
  • Hidden advancements - Properly filtered with the eye toggle in tree view
  • No file persistence - Vanilla tabs are never saved to .yml files, always reloaded from Bukkit

🖥️ Web Editor - Quality of Life

  • Editor settings modal - ⚙ gear button in toolbar opens settings with vanilla tabs ON/OFF toggle
  • Cache busting - Nginx ETag + no-cache headers so editor updates take effect without Ctrl+F5
  • version persistence - Editor version preserved in saved data so multi-tab mode survives Save → reload
  • Tab row layout - Improved button sizing and alignment in tab selector (⚙, +, vanilla toggle)
  • Lock icon - Vanilla advancements show a read-only lock indicator

🐛 Fixes

  • CRITICAL: AdvancementTab is already initialised error on reload - now reuses existing RootAdvancement
  • CRITICAL: /padv gui tab-filtered GUI not responding to clicks - fixed title collision with unfiltered GUI
  • CRITICAL: /padv apply deleting default.yml - file cleanup now checks YAML namespace, not just filename
  • CRITICAL: /padv apply failing with DuplicatedException - initSingleTab now catches all exceptions and falls back to getAdvancementTab()
  • CRITICAL: /padv apply creating vanilla .yml files on each apply - vanilla tabs are now properly flagged and excluded from file saves
  • CRITICAL: Web editor sidebar showed wrong trigger display - fixed Vue rendering with proper :key bindings
  • CRITICAL: Web editor advancement ID renames corrupted the map - now properly updates keys and tab lists
  • CRITICAL: Web editor applyCustomDropdowns and applyCustomScrollbar were never called - added lifecycle hooks
  • File Name - saveTabToFile() removes old files with matching YAML namespace but different filename (e.g. default.ymlpremium_advancements.yml)
  • Version now correctly shows 2.0 in plugin.yml and PlaceholderAPI expansion
  • gui.back-to-tabs added to en.yml and fr.yml language files
  • Missing help.commands.tabs added to both language files
  • ConfigUpdater: Fixed duplicated comments in config.yml (replaced broken comment re-insertion with backup+merge strategy)
  • ConfigUpdater: No longer creates adv-gui.yml on fresh installs (prevented unnecessary migration trigger)
  • Fresh installs: Advancements/default.yml now included as a JAR resource with 41 sample advancements
  • Vanilla advancement icons now properly display (GRASS_BLOCK fallback replaced with actual Minecraft item icons)
  • Vanilla advancement tree positions now correctly extracted via NMS reflection

💥 Breaking Changes

  • File Structure - Advancements are now in Advancements/*.yml instead of advancements.yml + adv-gui.yml
  • Migration - Automatic on first startup. Old files renamed to .migrated. Manual rollback possible from backups/
  • Paper 1.21.4+ - Plugin now requires Paper 1.21.4+ for the AdvancementDisplay API used in vanilla advancement extraction