UltimateAdvancementAPI 2.0.0

A powerful API to create custom advancements for your minecraft server.

  1. fren_gor
    Native Minecraft Version:
    Tested Minecraft Versions:
    • 1.15
    • 1.16
    • 1.17
    Source Code:
    fren_gor, EscanorTargaryen

    Wiki Issues Javadoc GitHub Discord


    To report a bug write a post on the discussion page or open an issue on GitHub.

    Simple - Create advancements for your server with ease
    Async - Every operation is packet based. This means no lag for the server!
    Advancement Visibility - Easy visibility system to customize advancement visibilities
    Advancements for teams - The player progression is synchronized between members of the same team
    Offline Player Support - Extensive and complete API to modify offline players progressions
    Toasts - Send custom toast notifications
    Database system - Fast and reliable savings wherever you want (SQLite, MySQL, ...)
    Disable vanilla advancements - Completely disable vanilla advancements without touching the server jar

    This is a plugin for developers. If a plugin you use needs it, just download the correct version for you server and drop it into your plugins folder.

    Add the dependency with maven to you project and start coding.
    Check out the wiki to learn how to use the API.

    There is also a shadeable version, see the related wiki page to know more about it.
    Code (HTML5):


    Fully customizable - Make your own advancement tree
    Easy to use via code - Complete and well-documented API
    Support team of players - Let more people collaborate together
    Maven and shadeable version - API is distributed with maven and it can be shaded into your plugin

    /ultimateadvancementapi <progression|grant|revoke> ...
    Permission: ultimateadvancementapi.command

    /ultimateadvancementapi grant <all|tab|one> ...
    Permission: ultimateadvancementapi.grant

    /ultimateadvancementapi grant all <player> [giveRewards]
    Permission: ultimateadvancementapi.grant.all

    /ultimateadvancementapi grant tab <advancementTab> [player] [giveRewards]
    Permission: ultimateadvancementapi.grant.tab

    /ultimateadvancementapi grant one <advancement> [player] [giveRewards]
    Permission: ultimateadvancementapi.grant.one

    /ultimateadvancementapi revoke <all|tab|one> ...
    Permission: ultimateadvancementapi.revoke

    /ultimateadvancementapi revoke all <player> [hideTab]
    Permission: ultimateadvancementapi.revoke.all

    /ultimateadvancementapi revoke tab <advancementTab> [player] [hideTab]
    Permission: ultimateadvancementapi.revoke.tab

    /ultimateadvancementapi revoke one <advancement> [player]
    Permission: ultimateadvancementapi.revoke.one

    /ultimateadvancementapi progression <get|set> ...
    Permission: ultimateadvancementapi.progression

    /ultimateadvancementapi progression get <advancement> [player]
    Permission: ultimateadvancementapi.progression.get

    /ultimateadvancementapi progression set <advancement> <progression> [player] [giveRewards]
    Permission: ultimateadvancementapi.progression.set

    [​IMG] [​IMG]
    Code (Java):
    // Creates an advancement called "Example" with the description:
    // - "A random"
    // - "description."
    public class MainClass extends JavaPlugin implements Listener {

        private AdvancementTab advancementTab;
        private UltimateAdvancementAPI api;

        public void onEnable() {
            api = UltimateAdvancementAPI.getInstance(this);

            advancementTab = api.createAdvancementTab("your_tab_name");

            AdvancementDisplay rootDisplay = new AdvancementDisplay(Material.GRASS_BLOCK, "Example", AdvancementFrameType.TASK, true, true, 0, 0, "A random", "description.");

            RootAdvancement root = new RootAdvancement(advancementTab, "root", rootDisplay, "textures/block/stone.png");


            Bukkit.getPluginManager().registerEvents(this, this);

        public void onJoin(PlayerLoadingCompletedEvent e) {
            // Called after a player has successfully been loaded by the API
            Player p = e.getPlayer();
            // Here you can show tabs to players

    emanon, anhcraft and EscanorTargaryen like this.

Recent Reviews

  1. CroaBeast
    Version: 2.0.0
    Usefull API, love it < 3
  2. LoreSchaeffer
    Version: 1.0.0
    Very useful API, complete and with a lot of nice features. Easy to use and with support and resources