Skip to content

AdvancementDisplay

fren_gor edited this page Nov 22, 2021 · 25 revisions

AdvancementDisplay

The AdvancementDisplay class stores information about the advancement graphic aspects. It stores:

Value Description
Icon The itemstack that will be shown on the advancement GUI
Title The title of the advancement, shown when a player hovers the advancement in the advancement GUI
Description The description of the advancement, shown when a player hovers the advancement in the advancement GUI
Frame Type The shape of advancement in the advancement GUI
x The x coordinate of the advancement in the advancement GUI
y The y coordinate of the advancement in the advancement GUI
Show Toast Whether to show the toast when a player grants the advancement
Announce Chat Whether to show the announce message on the chat when a player grants the advancement

Let's see them in detail.

Advancement Coordinates

Advancements are displayed inside the advancement GUI based on two coordinates: x and y.
The advancement GUI can be thought as a positive Cartesian Plane (so x >= 0 and y >= 0), where the origin is fixed in the upper-left corner of the advancement GUI.

Advancement GUI Coordinate System

Note that the y-axis is going downwards

Frame Types

There are three possible frame types, enumerated in AdvancementFrameType:

Frame Type Result
Task Task
Goal Goal
Challange Challange

Toast Notification

A toast is a notification that comes out at the top-right of the player screen when they complete an advancement:

A toast message.

Through the API it's also possible to send custom toast using UltimateAdvancementAPI#displayCustomToast(...).

Announce Message

The announce message is sent to all online players on the server when someone completes an advancement. It is handled in the Advancement class by the method Advancement#getAnnounceMessage(Player player). It prints a message which is like the vanilla one:

Message

When it gets hovered the title and description of the advancement will be displayed:

Message Hover

Advancement#getAnnounceMessage(Player player) uses AdvancementDisplay#getChatTitle() and AdvancementDisplay#getChatDescription() to get the title and description to be displayed.

AdvancementDisplay vs FancyAdvancementDisplay

In addition to AdvancementDisplay, UltimateAdvancementAPI contains also the FancyAdvancementDisplay class, which should provide a fancier advancement.
The main differeces are:

Feature AdvancementDisplay FancyAdvancementDisplay Description
Title default color Depends on the frame type White (§f) In vanilla, the advancement title color is lime (§a) for tasks and goals, purple (§5) for challenges. FancyAdvancementDisplay sets it to white, while AdvancementDisplay follows vanilla. Default color doesn't obviously matter if the title line starts with a color code.
Description default color Depends on the frame type Light gray (§7) In vanilla, the advancement description color is lime (§a) for tasks and goals, purple (§5) for challenges. FancyAdvancementDisplay sets it to light gray, while AdvancementDisplay follows vanilla. Default color doesn't obviously matter if every description line starts with a color code.
Empty line between title and description No empty line is added An empty line is added if there isn't one already Title and description can be separated by an empty line. That is automatically added by FancyAdvancementDisplay, while AdvancementDisplay never adds it.