Tags
Creators
Details
v2.6
Compatibility
Required content
Changes
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%.
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:CyWijK8l:grGQkSBK"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:CyWijK8l:grGQkSBK"
}

