The advancement API is based around
AdvancementTabs which represent a tree of
Advancements for one or more players. Each player viewing a single
AdvancementTabwill 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
AdvancementTabs can be created and retrieved from the
AdvancementManager#createTab(String /* namespaced id */, AdvancementRoot);
AdvancementManager#getTab(String /* namespaced id */);
Namespaced IDs follow the format of
namespace:id, and may not have any upper case letters.
AdvancementRootis the origin
Advancementfor 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.pngfor stone block.
AdvancementRoot#<init>(Component, Component, Material, FrameType, int, int, String /* background */);
Once created, an
AdvancementTabmay be added and removed from players as follows:
Advancements can be created with their constructor and added to an
AdvancementTabwith an associated parent.
Advancement#<init>(Component /* title */, Component /* description */, Material, FrameType, int /* x */, int /* y */);
AdvancementTab#createAdvancement(String /* namespaced id */, Advancement /* to add */, Advancement /* parent */);
The parent of an
Advancementmay not be null, and it must have been added to the tab already. The
AdvancementRootis a valid parent.
Advancementis registered, it can be completed.
To make an advancement show a toast, use
Advancement#showToast(Boolean)before setting it to achieved.