LogoReliable Advancements

Advancements Guide

This page explains how Minecraft advancement JSON files work, covering the display block, criteria, triggers, requirements, and rewards. This knowledge applies both to the in-game editor and to writing advancement datapacks by hand.

File Location

An advancement is a JSON file at:

data/<namespace>/advancement/<path>.json

For example, data/mypack/advancement/story/first_diamond.json has the resource location mypack:story/first_diamond.

Basic Structure

{
"display": {
"icon": { "id": "minecraft:diamond" },
"title": { "text": "A Shiny Rock" },
"description": { "text": "Pick up a diamond" },
"frame": "task"
},
"parent": "minecraft:story/mine_stone",
"criteria": {
"get_diamond": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [{ "items": ["minecraft:diamond"] }]
}
}
}
}

The display Block

FieldTypeDescription
iconObjectItem icon: { "id": "minecraft:diamond" }
titleText ComponentName shown in the advancement
descriptionText ComponentTooltip description
frameStringtask, goal, or challenge
backgroundStringBackground texture path for root advancements only
show_toastBooleanShow a toast notification on completion (default true)
announce_to_chatBooleanAnnounce completion in chat (default true)
hiddenBooleanHide the advancement until it is earned (default false)

Frame types:

  • task — Standard square frame, yellow name
  • goal — Rounded frame, green name
  • challenge — Spiked/ornate frame, pink name; awards bonus XP by default

Text Components

title and description accept Minecraft text components. The simplest form:

"title": { "text": "My Advancement" }

With color and formatting:

"title": {
"text": "My Advancement",
"color": "gold",
"bold": true
}

Named colors include black, dark_blue, dark_green, dark_aqua, dark_red, dark_purple, gold, gray, dark_gray, blue, green, aqua, red, light_purple, yellow, and white. Hex colors ("#RRGGBB") are also supported.

Criteria

Criteria are named conditions the player must satisfy. An advancement is complete when enough criteria are met (see Requirements below).

"criteria": {
"my_criterion": {
"trigger": "minecraft:player_killed_entity",
"conditions": {
"entity": {
"type": "minecraft:creeper"
}
}
}
}

The criterion name ("my_criterion") is a key you choose. It's used in the requirements field and in progress tracking.

Triggers

A trigger fires when a specific event happens. Only triggers whose conditions match will advance progress.

TriggerFires When
minecraft:impossibleNever — for advancements granted only via /advancement grant
minecraft:tickEvery game tick
minecraft:inventory_changedThe player's inventory changes
minecraft:player_killed_entityThe player kills an entity
minecraft:entity_killed_playerAn entity kills the player
minecraft:player_hurt_entityThe player deals damage to an entity
minecraft:item_used_on_blockAn item is used on a block
minecraft:placed_blockThe player places a block
minecraft:consume_itemThe player eats or drinks an item
minecraft:crafted_itemThe player crafts an item
minecraft:recipe_unlockedA recipe is unlocked
minecraft:enter_blockThe player is inside a specific block type
minecraft:locationChecked periodically based on player location
minecraft:changed_dimensionThe player travels to a different dimension
minecraft:bred_animalsThe player breeds two animals
minecraft:tame_animalThe player tames an animal
minecraft:fishing_rod_hookedA fishing rod catches something
minecraft:enchanted_itemThe player enchants an item
minecraft:fall_from_heightThe player falls from a height
minecraft:levitationThe player is levitating
minecraft:nether_travelBased on distance traveled in the Nether
minecraft:hero_of_the_villageAfter successfully defending a village
minecraft:voluntary_exileAfter triggering a Bad Omen
minecraft:using_itemWhile the player is using an item
minecraft:shot_crossbowThe player fires a crossbow
minecraft:thrown_item_picked_up_by_entityA thrown item is picked up
minecraft:lightning_strikeA lightning bolt strikes near the player
minecraft:kill_mob_near_sculk_catalystThe player kills a mob near a Sculk Catalyst
minecraft:allay_drop_item_on_blockAn Allay drops an item on a block

Condition Examples

Player has a specific item:

"conditions": {
"items": [
{ "items": ["minecraft:diamond"] }
]
}

Specific entity killed:

"conditions": {
"entity": {
"type": "minecraft:zombie"
}
}

Entity killed with a specific item:

"conditions": {
"entity": { "type": "minecraft:skeleton" },
"killing_blow": {
"direct_item": { "items": ["minecraft:bow"] }
}
}

Location — player in a biome:

"conditions": {
"location": {
"biome": "minecraft:deep_dark"
}
}

Location — player at a certain height:

"conditions": {
"location": {
"y": { "min": 60 }
}
}

Player has a status effect:

"conditions": {
"player": {
"effects": {
"minecraft:speed": { "amplifier": { "min": 1 } }
}
}
}

Block placed is a specific type:

"conditions": {
"block": { "blocks": ["minecraft:diamond_block"] },
"location": { "y": { "max": 0 } }
}

Requirements

By default, all criteria must be satisfied to complete an advancement. The requirements field lets you define AND/OR logic.

requirements is an array of arrays. Each inner array is a group where at least one criterion must be satisfied (OR). Every group must be satisfied (AND).

Require A AND B (default behavior when omitted):

"requirements": [
["criterion_a"],
["criterion_b"]
]

Require A OR B:

"requirements": [
["criterion_a", "criterion_b"]
]

Require (A OR B) AND (C OR D):

"requirements": [
["criterion_a", "criterion_b"],
["criterion_c", "criterion_d"]
]

Example: Kill Any of Three Mobs

{
"display": {
"icon": { "id": "minecraft:bone" },
"title": { "text": "Monster Hunter" },
"description": { "text": "Kill a Zombie, Skeleton, or Creeper." },
"frame": "task"
},
"parent": "minecraft:adventure/root",
"criteria": {
"kill_zombie": {
"trigger": "minecraft:player_killed_entity",
"conditions": { "entity": { "type": "minecraft:zombie" } }
},
"kill_skeleton": {
"trigger": "minecraft:player_killed_entity",
"conditions": { "entity": { "type": "minecraft:skeleton" } }
},
"kill_creeper": {
"trigger": "minecraft:player_killed_entity",
"conditions": { "entity": { "type": "minecraft:creeper" } }
}
},
"requirements": [
["kill_zombie", "kill_skeleton", "kill_creeper"]
]
}

Example: Collect All Three Ores (must get each one)

{
"display": {
"icon": { "id": "minecraft:iron_ore" },
"title": { "text": "The Full Set" },
"description": { "text": "Pick up iron, gold, and diamond." },
"frame": "goal"
},
"parent": "minecraft:story/mine_stone",
"criteria": {
"get_iron": {
"trigger": "minecraft:inventory_changed",
"conditions": { "items": [{ "items": ["minecraft:iron_ingot"] }] }
},
"get_gold": {
"trigger": "minecraft:inventory_changed",
"conditions": { "items": [{ "items": ["minecraft:gold_ingot"] }] }
},
"get_diamond": {
"trigger": "minecraft:inventory_changed",
"conditions": { "items": [{ "items": ["minecraft:diamond"] }] }
}
}
}

Here requirements is omitted, so all three criteria must be satisfied.

Rewards

The optional rewards block defines what the player receives on completion.

"rewards": {
"experience": 100,
"loot": [
"minecraft:chests/simple_dungeon"
],
"recipes": [
"minecraft:saddle"
],
"function": "mypack:on_advancement_complete"
}
FieldTypeDescription
experienceIntegerXP points to award
lootArray of stringsLoot table resource locations to roll
recipesArray of stringsRecipe resource locations to unlock
functionStringA function to run as the player

Reward Claiming

If requireRewardClaiming is enabled in the Reliable Advancements config, rewards are not granted automatically. Players must click the advancement widgets in the UI to claim them.

Granting Advancements via Command

You can grant or revoke advancements with commands:

/advancement grant <player> only <advancement>
/advancement revoke <player> only <advancement>
/advancement grant <player> everything

Advancements with minecraft:impossible as their trigger are designed to be granted this way (they never fire on their own).

Full Example

An advancement that requires visiting the Nether while on fire:

{
"display": {
"icon": { "id": "minecraft:flint_and_steel" },
"title": { "text": "Hot Vacation" },
"description": { "text": "Enter the Nether while on fire." },
"frame": "challenge",
"announce_to_chat": true
},
"parent": "minecraft:story/enter_the_nether",
"criteria": {
"enter_nether_on_fire": {
"trigger": "minecraft:changed_dimension",
"conditions": {
"to": "minecraft:the_nether",
"player": {
"flags": { "is_on_fire": true }
}
}
}
},
"rewards": {
"experience": 100
}
}