Advancements

The advancement API is based around AdvancementTabs which represent a tree of Advancements for one or more players. Each player viewing a single AdvancementTab will see the same progress as all of the others. If per player Advancements are needed, individual AdvancementTabs will need to be created.

Advancements represent a completable advancement in an AdvancementTab.

AdvancementTab

AdvancementTabs can be created and retrieved from the AdvancementManager.

// Create
AdvancementManager#createTab(String /* namespaced id */, AdvancementRoot);

// Retrieve
AdvancementManager#getTab(String /* namespaced id */);

Namespaced IDs follow the format of namespace:id, and may not have any upper case letters.

An AdvancementRoot is the origin Advancement for a tab, and has the same creation method as a regular Advancement (see below) with the exception of the background. A background is a reference to a texture file on the client, for example minecraft:textures/block/stone.png for stone block.

AdvancementRoot#<init>(Component, Component, Material, FrameType, int, int, String /* background */);

Once created, an AdvancementTab may be added and removed from players as follows:

AdvancementTab#addViewer(Player);
AdvancementTab#removeViewer(Player);

Advancement

Advancements can be created with their constructor and added to an AdvancementTab with an associated parent.

The parent of an Advancement may not be null, and it must have been added to the tab already. The AdvancementRoot is a valid parent.

Once an Advancement is registered, it can be completed.

To make an advancement show a toast, use Advancement#showToast(Boolean) before setting it to achieved.

Last updated

Was this helpful?