Advancements
Advancements in Minecraft are a way to gradually guide new players into the game and give them challenges to complete. In Kore, advancements can be created using the advancement
builder.
**Note: ** For more detailed information about advancements in Minecraft, see the Minecraft Wiki - Advancement page.
Advancements can be completed in any game mode and are obtained and saved per world. They are independent of each other, an advancement can be completed without having completed the advancements "before" it. There are many advancements in vanilla Minecraft across 5 tabs: Minecraft, Nether, The End, Adventure, and Husbandry.
Advancement Structure
Advancements are stored as JSON files in data packs. For the complete technical specification, see the Minecraft Wiki - Advancement Definition page.
Basic Usage
To create a basic advancement:
Parent Advancements
You can specify a parent advancement for your advancement. This is done by setting the parent
property to an Advancement
object or an AdvancementArgument
object.
Here's an example:
Display
The display block allows you to customize how the advancement appears in-game. When an advancement is completed, a sliding toast notification appears in the top right corner, and a chat message is sent if the announceAdvancements
game rule is enabled.
Frame Types and Notifications
Different frame types produce different notification behaviors:
TASK
(Normal): Shows "Advancement Made!" with yellow header textGOAL
: Shows "Goal Reached!" with yellow header textCHALLENGE
: Shows "Challenge Complete!" with pink header text and plays music
Note: Root advancements (the leftmost advancement in each tab) do not cause notifications or chat messages to appear.
icon
: The icon of the advancement, defined by anAdvancementIcon
object which is an item + nbt data.title
: The title of the advancement, defined by aChatComponents
object.description
: The description of the advancement, defined by aChatComponents
object.frame
: The frame type of the advancement, which can beCHALLENGE
,GOAL
, orTASK
, defaults toTASK
.background
: The background texture of the advancement, specified as a string (optional).showToast
: Whether to show a toast notification when the advancement is achieved (optional).announceToChat
: Whether to announce the advancement in chat when it is achieved (optional).hidden
: Whether the advancement is hidden until it is achieved (optional).
Criteria
Criteria define the conditions that must be met to earn the advancement.
Each criterion can have predicate conditions that must be met for the criterion to be completed on top of its properties.
For a complete guide on predicates and their conditions, see the Predicates documentation.
You can add multiple criteria:
Available Triggers
Check the Triggers page for a list of available triggers.
Requirements
Requirements define which criteria must be completed to earn the advancement:
Rewards
You can define rewards for completing the advancement:
experience
: The amount of experience to give the player.function
: A function to run when the advancement is completed.loots
: A list of loot tables to give the player.recipes
: A list of recipes to unlock for the player.
Reward function
You can define a function to be executed when the advancement is completed in 3 ways:
- A generated function with a random name:
- A new function with a custom name:
- A referenced function
Telemetry
You can enable or disable telemetry for the advancement, defaults to false
:
Advancement Tabs and Organization
Advancements in Minecraft are organized into 5 tabs, each with a specific theme:
- Minecraft: Basic gameplay mechanics and progression (16 advancements)
- Nether: Nether-related challenges and exploration (23 advancements)
- The End: End dimension content and ender dragon (9 advancements)
- Adventure: Combat, exploration, and interaction challenges (46 advancements)
- Husbandry: Farming, breeding, and food-related tasks (30 advancements)
When creating custom advancements, you can organize them into existing tabs by setting a parent advancement from that tab, or create entirely new tabs by making root advancements.
Creating a Root Advancement (New Tab)
To create a new advancement tab, create an advancement without a parent and ensure it has display properties:
Managing Advancements with Commands
Advancements can be granted, revoked, and tested using the /advancement
command. For complete command documentation, see the Minecraft Wiki - /advancement command.
In Kore, you can use advancement commands within functions in two ways:
Method 1: Using the advancement
block
Method 2: Using target-specific advancement
blocks
Available Routes
Kore supports different advancement routes corresponding to the vanilla command options:
ONLY
: Grant/revoke only the specified advancementFROM
: Grant/revoke advancement and all its childrenTHROUGH
: Grant/revoke advancement, all parents, and all childrenUNTIL
: Grant/revoke advancement and all its parents
Best Practices
1. Logical Progression
Structure your advancements to follow a logical progression path, even though they're technically independent:
2. Meaningful Rewards
Consider giving meaningful rewards for challenging advancements:
3. Hidden Advancements
Use hidden advancements for surprise discoveries or secret content: