
Premium Advancements | Custom Achievements
Create unlimited custom advancements/achievements with a clean editor or GUI. Vault • +45 Triggers • MySQL • MiniMessage & Hex colors • Webhooks • 1.21+ Support
Premium Advancements | Custom Achievements v2.6
Список изменений
Changelog
v2.6
Features
-
Global vanilla advancement broadcast - New
vanilla-advancementssection inconfig.yml:enabled: Global toggle for the default broadcast message (per-advancement overrides invanilla-messages.ymlstill work independently via/padv gui)message: Default broadcast format for all vanilla advancements, supports all color formats (&#RRGGBB,<gradient>,&codes, MiniMessage), PlaceholderAPI (%hexnicks_nick_mm%etc.), and%player%/%advancement%/%description%placeholders
-
Namespace-based webhook filtering — New
webhook.namespacessection inconfig.yml:enabled: Toggle namespace filtering (default:true)allowed: List of namespace prefixes allowed to send Discord webhooks (default:["minecraft:"])- When enabled, only advancements belonging to allowed namespaces send webhooks
- Works for both custom advancements (via tab namespace) and vanilla advancements (
minecraft:prefix) - When disabled, all advancements can send webhooks (v2.5 behavior)
-
Placeholder condition for any trigger — The existing
placeholder/placeholderOperator/placeholderValuefields now work as an optional condition on any trigger type (not justPLACEHOLDER). When set, the advancement only progresses if the PlaceholderAPI placeholder meets the condition. Example:trigger: BREAK_BLOCK+placeholder: %player_y%+placeholderOperator: <=+placeholderValue: 100restricts the advancement to below Y=100. Configured via web editor (v2.6+ gated) or directly in YML.
Bug Fixes
-
UserNotLoadedExceptioncrash on/padv reload- Fixed a major race condition where UAA (UltimateAdvancementAPI) would throwUserNotLoadedExceptionwhen the plugin tried to interact with players too soon after a reload. Added three layers of protection:- UAA pending guard: Players are tracked in a pending set on join/reload;
onPlayerMovesilently skips them until UAA finishes loading - Safety timeout: Pending entries auto-expire after 15 seconds to prevent players from getting stuck
- Tab show retry:
showTab()retries up to 5 times with exponential backoff (10 → 20 → 40 → 80 → 160 ticks) if UAA hasn't loaded the player yet
- UAA pending guard: Players are tracked in a pending set on join/reload;
-
UserNotLoadedExceptioncrash onPlayerMoveEvent- All UAA API calls insideonPlayerMove(isGranted,getProgression,incrementProgression) are now fully protected, eliminating spammy stack traces after join or reload -
NoClassDefFoundErrorwhen WorldGuard not installed - FixedREGION_ENTERtrigger crashing withNoClassDefFoundError: com/sk89q/worldguard/WorldGuardon servers without WorldGuard. Added plugin presence guard at method entry and changedcatch (Exception)tocatch (Throwable)sinceNoClassDefFoundErrorextendsError, notException -
ConfigUpdater duplicated
vanilla-tab-orderkeys — Fixed a bug wherevanilla-prefixed tab order keys (vanilla_story,vanilla_nether) were incorrectly added alongside the correct keys during config updates. The updater now skipsvanilla-tab-order(user data, not config schema) and migrates any existing corrupted keys to their correct names. -
Webhook avatar missing for custom advancements — Fixed
author.icon_url/thumbnail.urlin webhook.yml not falling back to the default player avatar when PlaceholderAPI replacements leave unresolved placeholders (e.g.,%skinsrestorer_texture_id_or_steve%). Now auto-fills with player head if the resolved URL still contains%.
