Host your Minecraft server on BisectHosting - get 25% off your first month with code MODRINTH.

Logo

WikiIssuesJavadocGitHubDiscordGeneratorFAQ

Advancement Tab Image

Bugs should be reported on Discord or opening an issue on GitHub.


Features

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, In-Memory)
Disable vanilla advancements - Completely disable vanilla advancements without touching the server jar

For server owners

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.

For developers

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

Maven
<repositories>
    <repository>
        <id>fren_gor</id>
        <url>https://nexus.frengor.com/repository/public/</url>
    </repository>
</repositories>

<dependency>
    <groupId>com.frengor</groupId>
    <artifactId>ultimateadvancementapi</artifactId>
    <version>2.2.8</version>
    <scope>provided</scope>
</dependency>

There is also a shadeable version, see the related wiki page to know more about it.

Why our API

Fully customizable - Make your own advancements
Easy to use - Complete and well-documented API
Support teams of players - Let more players collaborate together thanks to native support for teams
Maven and shadeable version - API is distributed with maven and it can be shaded into your plugins
Great support - Ask your questions on our Discord server
Online generator - The API comes with UltimateAdvancementGenerator, the official tool that helps you designing your advancements graphically

UltimateAdvancementGenerator

The official online tool to design your advancement graphically. The Java classes for your plugin are then generated by the tool automatically.

Try it now
UltimateAdvancementGenerator

Video tutorial



❗WARNING❗: The tool is still in BETA, please report bugs on GitHub.


Commands and permissions

Commands and Permissions

/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


Example

// Creates an advancement called "Example" with the description:
// - "A random"
// - "description."
public class MainClass extends JavaPlugin implements Listener {

    private AdvancementTab advancementTab;
    private UltimateAdvancementAPI api;

    @Override
    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");

        advancementTab.registerAdvancements(root);

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

    @EventHandler
    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
        advancementTab.showTab(p);
    }
}

Result:
Result of the example

Metrics

External resources



Project members

frengor

Owner

EscanorTargaryen

Owner


Technical information

License
LGPL-3.0-or-later
Project ID