▶️ ЗАБЕРИ СВОИ 8 ПОДАРКОВ 🎁 ПРИ СОЗДАНИИ СВОЕГО МАЙНКРАФТ СЕРВЕРА
Плагины/Premium Advancements | Custom Achievements
Premium Advancements | Custom Achievements

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

Оцените первым
1.2K
22
Все версииPremium Advancements | Custom Achievements v3.0

Premium Advancements | Custom Achievements v3.0

Release14.08.2026

Список изменений

Changelog

v3.0

Compatibility

  • Minecraft 1.20, 1.20.1, 1.20.2, 1.20.4, 1.20.5, 1.20.6 support - The plugin now loads and runs on Paper/Spigot/Purpur 1.20.4+ in addition to 1.21.x and 26.x:
    • plugin.yml - api-version lowered from 1.21 to 1.20, which unblocks loading on 1.20.x servers (Paper previously rejected the plugin at startup with Unsupported API version 1.21 while keeping all modern API behavior on newer servers).
    • pom.xml - the plugin is now compiled against paper-api 1.20.4-R0.1-SNAPSHOT (the lowest supported version), so any API usage missing on 1.20.4 becomes a compile error instead of a runtime NoSuchMethodError/NoSuchFieldError on older servers. All Paper-specific code (AdvancementDisplay, PlayerTradeEvent) already existed in 1.20.4 and remains guarded by runtime checks on plain Spigot.
    • AdvancementTriggerListener - Material.OMINOUS_BOTTLE (added in 1.20.5) was referenced directly in the static DRINKABLE_ITEMS initializer, crashing startup on 1.20.4 with NoSuchFieldError. The set is now built at runtime via Material.getMaterial("OMINOUS_BOTTLE"), so it is silently skipped on versions where it doesn't exist.
    • Java 17 bytecode - the plugin is now compiled with --release 17, so it also loads on Java 17 servers (the standard runtime for MC 1.20 - 1.20.4). MC 1.20.5+ still runs on Java 21+.
    • CI - the compat matrix now covers 1.20, 1.20.1, 1.20.2, 1.20.4, 1.20.5 and 1.20.6 across Paper/Spigot/Purpur (Java 17 image for 1.20 - 1.20.2, Java 21 for 1.20.4+), in addition to the existing 1.21.x and 26.x combinations.

Fixes

  • Plugin failing to load on Minecraft 1.21 - Fixed a NoSuchFieldError crash at startup on 1.21 servers: Material.PALE_OAK_LOG and other Pale Garden materials (added in 1.21.4) were referenced directly in static field initializers, which threw java.lang.NoSuchFieldError: Class org.bukkit.Material does not have member field 'org.bukkit.Material PALE_OAK_LOG' and prevented the plugin from enabling entirely.
    • AdvancementTriggerListener - the LOG_BLOCKS set (used by CHOP_TREE and the GUI validation) is now built at runtime via Material.getMaterial(name), so materials that don't exist on the running server are silently skipped instead of crashing the class initializer.
    • AdvancementManager - the same runtime resolution was applied to the block types auto-assigned to CHOP_TREE advancements when loading YAML files.
    • Result: the plugin now loads on 1.21, 1.21.4, 26.1 and 26.2 (Pale Oak simply doesn't count toward CHOP_TREE on versions where it doesn't exist).
  • Duplicate advancement grants (rewards given multiple times) - Fixed a critical bug where a player could receive the same advancement (and its rewards) repeatedly. Root cause: the 30-second PLACEHOLDER scheduler task ("Task #86") called isGranted() without a try/catch. When UltimateAdvancementAPI hadn't finished loading the player yet (asynchronous user loading, aggravated during the UAA 2.8 → 3.0.0-beta-3 migration), it threw a UserNotLoadedException that crashed the whole task and left the advancement looking "not granted". On subsequent cycles, forceComplete() re-granted and re-distributed rewards in a loop because it had no idempotency guard.
    • Scheduler (PremiumAdvancements) - isGranted() is now wrapped in a try/catch that skips the player's check silently when UserNotLoadedException (or any API error) is thrown, instead of crashing the task or treating the advancement as unearned.
    • TriggerService.completeAdvancementForced - added an idempotency guard (alreadyCompleted check + a database hasAdvancement re-check) before granting. Rewards are no longer given when the grant throws an exception; the player is skipped and a later cycle can retry once the user is loaded.
    • TriggerService.completeAdvancement - same defensive guards applied to the normal grant path, with UserNotLoadedException handled silently (no blocking error log, no reward).

Файлы

PremiumAdvancements-3.0.jar(17.54 MiB)
Основной
Скачать

Метаданные

Канал релиза

Release

Номер версии

v3.0

Загрузчики

Bukkit
Paper
Purpur
Spigot

Версии игры

1.20–26.2

Загрузок

283

Дата публикации

14.08.2026

Загрузил

ID версии

Главная