LogoLogo
JavaDocsVersions
  • Introduction
  • Getting started
    • Dependencies
    • Your first server
  • Feature
    • Adventure
    • Player capabilities
    • Events
      • Implementation
      • Server list ping
    • Items
    • Entities
      • AI
    • Tags
    • Schedulers
    • Commands
    • Inventories
    • Player UUID
    • Player skin
    • Permissions
    • Advancements
    • Map rendering
      • GLFWMapRendering
    • Query system
    • Open to LAN
  • Thread Architecture
    • Thread safety in the JVM
    • Acquirable API
      • The inside
  • World
    • Instances
    • Chunk management
      • Anvil Loader
    • Blocks
    • Coordinates
    • Generation
    • Batch
  • Extension System
    • Extensions
Powered by GitBook
On this page
  • AdvancementTab
  • Advancement

Was this helpful?

Export as PDF
  1. Feature

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.

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 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.

Advancement#setAchieved(Boolean);

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

PreviousPermissionsNextMap rendering

Last updated 1 year ago

Was this helpful?