Skip to content
MC Command Generator

Advancement Generator

Beta

Give your advancement a title, icon and frame, pick what the player has to do and what they get, and see the toast, the tab and the chat message. You get the JSON for your Java version, a data pack and a command to grant it.

Describe it — AI writes the command

Type what you want in plain words. The AI fills the form below, so you can see it and change anything. It follows the edition and version you picked.

Checking the AI…

Display
Frame
Place in the tree
Criteriawhat the player has to do
Rewards
Goal Reached!Diamond Hunter
Diamond Hunter
Hold five diamonds at once
Get an item · +50 xp
Steve has reached the goal [Diamond Hunter]
What players see when they earn it: the toast, the advancement in its tab and the chat message.

Your command · Java 26.3

100 characters
/advancement grant @p only my_pack:diamond_hunter
/advancement revoke @p only my_pack:diamond_hunter
data/my_pack/advancement/diamond_hunter.json
{
  "parent": "minecraft:story/mine_diamond",
  "display": {
    "icon": {
      "id": "minecraft:diamond"
    },
    "title": {
      "text": "Diamond Hunter"
    },
    "description": {
      "text": "Hold five diamonds at once"
    },
    "frame": "goal"
  },
  "criteria": {
    "five_diamonds": {
      "trigger": "minecraft:inventory_changed",
      "conditions": {
        "items": [
          {
            "items": "minecraft:diamond",
            "count": {
              "min": 5
            }
          }
        ]
      }
    }
  },
  "rewards": {
    "experience": 50
  }
}
  • Test it: the first line grants the advancement (toast and chat message included), the second takes it back so you can try again.
  • Put the file in your data pack (or press Download data pack), drop the pack in your world's datapacks folder, then run /reload.

Raw editor

Read only — this generator writes files, edit them with the form.

How it works

An advancement has a display (title, description, icon, frame), a parent that places it in a tab, and criteria that the game checks. Leave the parent empty to start a new tab; that root advancement needs a background.

Java 1.17 to 1.20.4

{"parent": "minecraft:story/mine_diamond",
 "display": {"icon": {"item": "minecraft:diamond"},
   "title": {"text": "Diamond Hunter"}, "description": {"text": "Hold five diamonds at once"},
   "frame": "goal"},
 "criteria": {"five_diamonds": {"trigger": "minecraft:inventory_changed",
   "conditions": {"items": [{"items": ["minecraft:diamond"], "count": {"min": 5}}]}}}}

Before 1.17 the item check is a single "item" instead of an "items" list.

Java 1.20.5 to 26.2

The icon is {"id": "minecraft:diamond"} and item checks take a single ID: "items": "minecraft:diamond". Biome and structure checks became biomes and structures. From 1.21 the folder is advancement, and from 1.21.5 the tab background drops textures/ and .png. In 26.2 entity checks use minecraft:entity_type instead of type.

Java 26.3

Mob and location checks are one condition object with a type, no longer a list:

"conditions": {"entity": {"type": "minecraft:entity_properties", "entity": "this",
  "predicate": {"minecraft:entity_type": "minecraft:wither"}}}

Testing it

After /reload, /advancement grant @p only my_pack:diamond_hunter gives it to you with the toast and chat message, and /advancement revoke @p only my_pack:diamond_hunter takes it back so the real criteria can fire. Bedrock has no custom advancements, so this generator is Java only.

FAQ

What is the difference between task, goal and challenge?

Only the look: a task has a square frame and says “Advancement Made!”, a goal has a rounded frame and says “Goal Reached!”, and a challenge has a spiky frame, a purple chat message and says “Challenge Complete!”.

Why doesn't my advancement show up?

Check that its parent exists (a typo in the parent hides it), that the file is in advancements before Java 1.21 and advancement from 1.21, and that the format matches your version. Run /reload and look for errors in the log.

How do I make a new advancement tab?

Leave the parent empty. The advancement becomes the root of a new tab with the background you pick, and its children use it as their parent.

Can an advancement run a command when completed?

Yes, through a reward function. Put your commands in a function (for example my_pack:reward) and enter it under Rewards; it runs as the player who earned the advancement.

How do I make an advancement that only my commands can give?

Use the “Only by command” trigger (minecraft:impossible). It never completes on its own; grant it with /advancement grant from a command block or function.