Tutoriel Minecraft Java
Les progrès personnalisés permettent d’ajouter des objectifs, des quêtes ou des étapes de progression à un monde Minecraft Java. Ils peuvent déclencher une notification, donner de l’expérience, déverrouiller une recette ou lancer une fonction de datapack après une action précise du joueur.
Ce guide explique comment créer un premier arbre de progrès avec les formats actuels de Minecraft Java 26.2. L’ancien emplacement data/advancements/, les dossiers sans namespace et plusieurs syntaxes utilisées avant 1.21 ne sont plus adaptés : un progrès personnalisé se place désormais dans un datapack, avec une structure précise.
📚 À lire aussi : comment débloquer les progrès dans Minecraft et notre outil pour générer des progrès.

Table des matières
- Progrès et succès : quelle différence ?
- Ce qui a changé pour les progrès personnalisés
- Créer la base du datapack
- Créer la racine de votre onglet
- Ajouter un premier progrès
- Comprendre l’affichage
- Critères et déclencheurs
- Plusieurs conditions avec requirements
- Récompenses et fonctions
- Installer, tester et corriger
- Utiliser la commande /advancement
- Questions fréquentes
Progrès et succès : quelle différence ?
Les anciens succès ont été remplacés par les progrès dans Minecraft Java à partir de la version 1.12. Les progrès servent toujours de repères pour avancer dans une partie, mais leur fonctionnement est plus souple : ils sont organisés en arbres, peuvent rester cachés, proposer plusieurs chemins et attribuer des récompenses.
Les progrès affichés avec la touche L sont ceux du jeu de base. Un datapack peut ajouter ses propres onglets, prolonger un arbre existant ou créer des objectifs invisibles utilisés uniquement en arrière-plan. C’est ce qui les rend utiles pour une map aventure, un serveur à quêtes ou un monde survie avec des défis supplémentaires.
À noter : Ce tutoriel concerne exclusivement Minecraft Java Edition. Bedrock Edition possède son propre système d’achievements et ne charge pas les progrès Java au format datapack.
Ce qui a changé pour les progrès personnalisés
Les principes restent les mêmes, mais l’organisation d’un datapack a évolué. Un progrès ne se dépose plus directement dans le dossier de sauvegarde comme dans les très anciens tutoriels. Il doit être placé dans un datapack reconnu par le jeu, avec un fichier pack.mcmeta à sa racine et un namespace dans le dossier data. Pour voir cette structure appliquée à un autre système, consultez aussi notre tutoriel pour créer des recettes personnalisées avec un datapack.
- Le dossier des progrès est désormais
advancement, au singulier. - Les fonctions de datapack se placent dans
function, au singulier depuis Minecraft 1.21. - Les icônes utilisent la représentation récente des objets, avec
"id"plutôt que l’ancienne clé"item"dans les nouveaux exemples. - Le format de datapack doit correspondre à la version ciblée. Pour Minecraft Java 26.2, utilisez
107.1.
Attention : Évitez de reprendre les anciens exemples qui utilisent data/advancements, data/functions ou "item":"minecraft:...". Ces formats peuvent empêcher le chargement correct du pack ou produire des avertissements selon la version jouée.
Créer la base du datapack
Commencez par créer un dossier, par exemple mes_progres, dans le répertoire .minecraft/saves/nom_de_votre_monde/datapacks/. Sur un serveur, placez-le dans le dossier datapacks du monde concerné. Vous pouvez aussi utiliser un fichier ZIP, à condition que pack.mcmeta soit directement à sa racine.
Pour suivre les exemples, nous utiliserons le namespace exemple. Évitez les espaces, accents et majuscules dans les noms de dossiers, fichiers et identifiants.
mes_progres/
├── pack.mcmeta
└── data/
└── exemple/
├── advancement/
│ ├── root.json
│ └── premiere_etincelle.json
└── function/
└── recompense.mcfunction
À la racine, créez le fichier pack.mcmeta. Il indique à Minecraft que le dossier est bien un datapack et précise le format visé.
{
"pack": {
"pack_format": 107.1,
"description": {
"text": "Mes progrès personnalisés"
}
}
}
Le nombre 107.1 est adapté à Minecraft Java 26.2. Si vous créez un pack pour une autre version, changez uniquement cette valeur après avoir vérifié le format de datapack correspondant. Un format incorrect peut laisser le pack se charger, mais Minecraft affichera un avertissement de compatibilité.
Créer la racine de votre onglet
Chaque arbre a besoin d’un premier progrès, souvent nommé root.json. C’est lui qui crée l’onglet dans l’interface et définit son arrière-plan. Il ne possède pas de parent. Dans cet exemple, le critère minecraft:tick permet de le valider dès que le joueur entre dans le monde, afin que l’onglet soit visible immédiatement.
{
"display": {
"icon": {
"id": "minecraft:compass"
},
"title": {
"text": "Mes objectifs"
},
"description": {
"text": "Un arbre de progrès personnalisé"
},
"background": "minecraft:textures/gui/advancements/backgrounds/adventure.png",
"frame": "task",
"show_toast": false,
"announce_to_chat": false
},
"criteria": {
"demarrer": {
"trigger": "minecraft:tick"
}
}
}

Le nom du fichier détermine l’identifiant du progrès. Ici, data/exemple/advancement/root.json devient exemple:root. Les sous-dossiers font aussi partie de l’identifiant : un fichier placé dans advancement/quetes/nether.json serait appelé avec exemple:quetes/nether.
Ajouter un premier progrès
Créez maintenant data/exemple/advancement/premiere_etincelle.json. Ce progrès dépend de la racine et se débloque lorsque le joueur possède un diamant dans son inventaire. L’exemple est volontairement simple : il permet de vérifier facilement que le datapack fonctionne avant de créer des critères plus complexes.
{
"parent": "exemple:root",
"display": {
"icon": {
"id": "minecraft:diamond"
},
"title": {
"text": "Une première trouvaille"
},
"description": {
"text": "Obtenir un diamant"
},
"frame": "goal",
"show_toast": true,
"announce_to_chat": true
},
"criteria": {
"diamant": {
"trigger": "minecraft:inventory_changed",
"conditions": {
"items": [
{
"items": [
"minecraft:diamond"
]
}
]
}
}
},
"rewards": {
"experience": 10
}
}
Le champ parent relie ce progrès à l’onglet créé auparavant. Sans parent, le jeu considère le fichier comme une nouvelle racine et crée potentiellement un autre onglet. Le nom du critère, ici diamant, est libre : il sert surtout à vous repérer dans le fichier et à construire les conditions avancées.
Comprendre l’affichage
Le bloc display est facultatif. Sans lui, un progrès peut tout de même fonctionner en arrière-plan, mais il n’apparaît pas dans le menu. C’est utile pour les étapes techniques d’une map, moins pour un objectif destiné à être suivi par les joueurs.
| Clé | Rôle |
|---|---|
icon | L’objet affiché sur le progrès. Dans les formats actuels, utilisez un objet avec id. |
title | Le nom affiché au survol de l’icône. |
description | Le texte d’explication visible au survol. |
frame | Le type de cadre : task, goal ou challenge. |
background | L’arrière-plan de l’onglet. Cette clé n’agit que sur une racine. |
hidden | Cache le progrès et ses enfants tant qu’il n’est pas validé. |
show_toast | Active ou désactive la notification à l’écran. |
announce_to_chat | Active ou désactive le message envoyé dans le chat. |
Les trois types de cadre ne changent pas la logique du progrès. Ils servent à indiquer son importance et à ajuster l’apparence de l’icône. Les défis sont généralement réservés aux objectifs longs ou difficiles et peuvent attribuer une récompense plus importante.
| Type | Non terminé | Terminé | Usage conseillé |
|---|---|---|---|
| Tâche | ![]() | ![]() | Étape simple ou découverte. |
| Objectif | ![]() | ![]() | Étape importante d’une branche. |
| Défi | ![]() | ![]() | Objectif difficile, caché ou récompensé. |
Critères et déclencheurs
Un progrès est validé lorsqu’un ou plusieurs critères sont remplis. Chaque critère utilise un déclencheur, appelé trigger, qui écoute une action particulière. Les conditions permettent ensuite de limiter ce qui compte réellement : un objet précis, une dimension, une créature, un bloc ou une distance.
| Déclencheur | Utilisation courante |
|---|---|
minecraft:inventory_changed | Débloquer un progrès lorsqu’un objet entre dans l’inventaire. |
minecraft:changed_dimension | Réagir à l’entrée dans le Nether, l’End ou l’Overworld. |
minecraft:placed_block | Détecter la pose d’un bloc, éventuellement dans un biome ou une dimension précise. |
minecraft:player_killed_entity | Récompenser la mort d’une créature donnée. |
minecraft:consume_item | Détecter la consommation d’un aliment, d’une potion ou d’un autre objet consommable. |
minecraft:using_item | Réagir à l’utilisation d’un objet compatible. |
minecraft:tick | Déclencher une vérification à chaque tick pour le joueur ; utile avec prudence pour les racines ou la logique technique. |
minecraft:impossible | Créer un progrès qui ne peut être accordé que par commande ou fonction. |
Voici un exemple de progrès qui se valide à l’entrée dans le Nether. Vous pouvez l’utiliser comme enfant du fichier précédent en remplaçant le parent par l’identifiant qui vous convient.
{
"parent": "exemple:premiere_etincelle",
"display": {
"icon": {
"id": "minecraft:netherrack"
},
"title": {
"text": "Un pas en enfer"
},
"description": {
"text": "Entrer dans le Nether"
},
"frame": "challenge"
},
"criteria": {
"nether": {
"trigger": "minecraft:changed_dimension",
"conditions": {
"to": "minecraft:the_nether"
}
}
},
"rewards": {
"experience": 25
}
}
Le jeu propose beaucoup d’autres déclencheurs. Pour des conditions complexes, notamment sur les entités, les composants d’objets ou les dégâts, vérifiez toujours la documentation de votre version plutôt que de recopier un ancien JSON. Les formats des prédicats d’objets ont changé plusieurs fois depuis les versions 1.20.5 et 1.21.
Plusieurs conditions avec requirements
Si le bloc requirements est absent, tous les critères définis doivent être validés. Vous pouvez l’ajouter pour accepter plusieurs chemins. Chaque sous-liste correspond à un groupe où au moins un critère doit être rempli, et tous les groupes doivent être satisfaits.
[["diamant"], ["nether"]]signifie : obtenir un diamant et entrer dans le Nether.[["diamant", "nether"]]signifie : obtenir un diamant ou entrer dans le Nether.[["diamant", "blaze"], ["nether", "blaze"]]signifie : obtenir un diamant et entrer dans le Nether, ou tuer un blaze.
Cette logique devient vite difficile à relire. Gardez des noms de critères courts mais explicites, comme trouver_diamant, entrer_nether ou tuer_blaze. Cela évite les erreurs au moment de modifier un progrès plusieurs semaines plus tard.
Récompenses et fonctions
Le bloc rewards permet d’attribuer de l’expérience, de déverrouiller des recettes, de générer un butin ou d’exécuter une fonction. La fonction est particulièrement pratique pour transformer un progrès en déclencheur de quête : elle peut donner un objet, afficher un message, modifier un score ou lancer une série de commandes.
"rewards": {
"experience": 20,
"function": "exemple:recompense"
}
La fonction appelée ci-dessus doit être placée dans data/exemple/function/recompense.mcfunction. Elle utilise les mêmes bases que les commandes Minecraft, mais elles sont exécutées depuis le datapack. Par exemple :
give @s minecraft:torch 16
tellraw @s {"text":"Récompense obtenue !","color":"gold"}
Une fonction liée à un progrès est exécutée pour le joueur qui vient de le valider. Gardez les récompenses cohérentes avec la difficulté demandée et évitez de distribuer des objets rares dès une tâche très simple. Dans une map, les fonctions peuvent aussi retirer l’avancement avec advancement revoke afin de réutiliser le même déclencheur plus tard.
Conseil : Pour déverrouiller une recette, utilisez la clé recipes avec une liste d’identifiants. L’ancienne clé unique recipe utilisée dans de vieux tutoriels n’est plus la forme à privilégier.
Installer, tester et corriger
Une fois les fichiers enregistrés, entrez dans votre monde puis utilisez la commande suivante :
/reload
Le rechargement lit à nouveau les datapacks. Vérifiez ensuite que votre pack est actif. Notre guide sur les commandes dans Minecraft peut aussi servir de référence pour les commandes de test :
/datapack list enabled
Ouvrez ensuite le menu des progrès avec L. La racine créée avec le déclencheur minecraft:tick doit faire apparaître le nouvel onglet après quelques instants. Testez le premier progrès avec un diamant obtenu ou donné par commande.
Si rien ne s’affiche : Consultez le fichier logs/latest.log. Minecraft y indique généralement le chemin du fichier JSON incorrect, une virgule oubliée, un identifiant mal écrit ou un dossier placé au mauvais endroit.
Les problèmes les plus fréquents viennent d’un fichier nommé .json.txt, d’un namespace différent entre le parent et l’enfant, d’un pack.mcmeta placé dans un sous-dossier du ZIP, ou de l’utilisation des anciens dossiers au pluriel. Rechargez le pack après chaque modification et testez d’abord un critère très simple avant d’ajouter des conditions avancées.
Utiliser la commande /advancement
La commande /advancement permet d’accorder ou retirer les progrès du jeu et ceux de votre datapack. Elle est pratique pour tester un arbre sans refaire chaque action, ou pour remettre une quête à zéro.
| Commande | Effet |
|---|---|
/advancement grant @s only exemple:premiere_etincelle | Accorde uniquement le progrès indiqué au joueur. |
/advancement revoke @s only exemple:premiere_etincelle | Retire uniquement le progrès indiqué. |
/advancement grant @s until exemple:premiere_etincelle | Accorde la branche depuis la racine jusqu’au progrès ciblé. |
/advancement grant @s from exemple:premiere_etincelle | Accorde le progrès ciblé et ses enfants. |
/advancement grant @s through exemple:premiere_etincelle | Accorde le chemin des parents et les enfants reliés au progrès ciblé. |
/advancement grant @s everything | Accorde tous les progrès chargés ; à réserver aux tests. |

Vous pouvez aussi accorder un seul critère d’un progrès qui en contient plusieurs. Il suffit d’ajouter le nom du critère à la fin de la commande :
/advancement grant @s only exemple:premiere_etincelle diamant
Questions fréquentes
Peut-on créer des progrès personnalisés sans mod ?
Oui. Les progrès sont gérés par des fichiers JSON dans un datapack. Aucun mod n’est nécessaire sur Minecraft Java Edition.
Pourquoi mon onglet de progrès n’apparaît-il pas ?
Vérifiez que le progrès racine possède un bloc display, qu’il n’a pas de parent et qu’il peut être validé. Un critère minecraft:tick est pratique pour tester rapidement la visibilité de l’onglet.
Où placer le fichier JSON d’un progrès ?
Dans un datapack, au chemin data/votre_namespace/advancement/nom_du_progres.json. Le datapack lui-même doit être dans le dossier datapacks du monde ou du serveur.
Les anciens tutoriels de Minecraft 1.12 fonctionnent-ils encore ?
Le principe reste proche, mais plusieurs chemins, noms de dossiers et formats de données sont devenus obsolètes. Il vaut mieux partir d’un exemple récent, puis adapter les critères à la version ciblée.
Peut-on empêcher un joueur de terminer un progrès ?
Oui. Le déclencheur minecraft:impossible ne se valide pas naturellement. Vous pouvez alors l’accorder uniquement avec une commande ou une fonction de datapack.
Comment remettre un progrès à zéro pour le tester ?
Utilisez /advancement revoke @s only namespace:identifiant. Pour un progrès à plusieurs critères, vous pouvez aussi retirer seulement le critère concerné avec la même commande suivie de son nom.
Créer des progrès personnalisés dans Minecraft Java
Les progrès personnalisés sont une base solide pour créer un système de quêtes sans mod. Avec une racine, quelques critères simples et une fonction de récompense, un datapack peut déjà guider les joueurs dans une map ou proposer une progression différente en survie.
Commencez par un objectif facile à tester, comme l’obtention d’un diamant ou l’entrée dans le Nether. Une fois la structure validée, vous pourrez ajouter des conditions plus précises, des récompenses et des branches cachées. Pour éviter les erreurs de syntaxe, notre générateur de progrès reste utile pour préparer un premier fichier JSON avant de le personnaliser.








![[Tutoriel] La commande /attribute [1.16+] commande attribute](https://www.minecraft-france.fr/wp-content/uploads/2023/10/commande_attribute.avif)
Salut petite question, y a t’il un moyen de trigger le inventory_changed lorsqu’un certain nombre de blocs du même type sont récupérés, par exemple lorsque le joueur obtient 10 blocs de planches?
merci
Est ce qu’on peut jouer le son de quand on réalise un progrès avec le /playsound
Peut on mettre dans un certain ordre des progrès qui on un seul est même parent ?
super j’ai un autre problème … je vois le début des progrès mais pas la suite j’ai copier colle le même code quand je prend se qu’il faut pour faire le progrès sa me le mais ‘-‘
j’aurais besoin d’aide j’arrive pas a faire en sorte qu’il faut faire le progrès “A” pour faire le progrès “B” merci d’avance pour l’aide :)
{
“display”: {
“icon”: {
“item”: “minecraft:wooden_pickaxe”
},
“title”: {
“translate”: “pioche de debutant”
},
“description”: {
“translate”: “crée une pioche en bois”
}
},
“parent”: “skyblock:bucheron”,
“criteria”: {
“log”: {
“trigger”: “minecraft:inventory_changed”,
“conditions”: {
“items”: [
{
“item”: “minecraft:wooden_pickaxe”
}
]
}
}
}
}
J’ai l’impression que cela ne marche plus en 1.13 alors cela vient il de moi ou est ce effectivement le cas ? Si cest le cas comment peut on faire pour rajouter des succès 1.13 ? Merci d’avance pour votre aide ;)
Merci @49836 pour ton aide mais… sa fonctionne toujours pas…
donc bon… le parent fonctionne lui mais je sais pas pour quoi l’autre non. On va dire que c’est la snapshot.
@guest_74578 Là, comme ça, après quelques mois sans avoir trop toucher au truc, je dirais que c’est ton “criteria” qui est mal définit. Il lui manque un nom. Et il n’y a pas le bon nombre d’accolade. Voici la correction.
{
“display”: {
“icon”: {
“item”: “minecraft:water_bucket”
},
“title”: {
“translate”: “La BOMB”
},
“description”: {
“translate”: “Fair un plongeon dant l’eau”
},
“show_toast”: true,
“frame”: “task”,
“hidden”: false,
“announce_to_chat”: true
},
“parent”: “custom:a”,
“criteria”: {
“un_nom”: {
“trigger”: “minecraft:minecraft:enter_block”,
“conditions”: {
“block”: “minecraft:water”
}
}
}
}
Help !
sa fait des heures que je suis dessus et sa marche pas !
le jeu ne le trouve pas…
est ce que le grand @49836 pourrait m’aider svp
je suis en snapshot 1.13 18w16a
{
“display”: {
“icon”: {
“item”: “minecraft:water_bucket”
},
“title”: {
“translate”: “La BOMB”
},
“description”: {
“translate”: “Fair un plongeon dant l’eau”
},
“show_toast”:true,
“frame”:”task”,
“hidden”:false,
“announce_to_chat”:true
},
“parent”:”custom:a”,
“criteria”: {
“trigger”:”minecraft:minecraft:enter_block”,
“conditions”:{“block”:”minecraft:water”
}
}
très bon tuto merci
@iliannrns Je t’invite à poser ta question sur le forum de Minecraft-France. https://forum.minecraft-france.fr/forums/commands-blocks-redstone.118/
Hey!
J’ai créer un advencement, que voici :
{display:{“background”:”minecraft:textures/blocks/planks_acacia.png”,”hidden”:false,”show_toast”:true,”announce_to_chat”:true,”icon”:{“item”:”minecraft:coal”},”title”:”CHARBON MGL”,”description”:”le charbon c’est le sang de la veine donc ramasses-en”,”frame”:”task”},criteria:{“chercher_charbon”{“trigger”:”minecraft:inventory_changed”,”conditions”:{“items”:{“item”:”minecraft:coal”}}}
Cela ne marche pas et je trouve pas le problème :( Et puis aussi j’ai télécharger un des advencement et j’ai vu qu’il y avait des présentation un peu bizarre, avec des alinéas, etc. C’est nécéssaire?
En fait c’est beaucoup trop difficile pour moi, je suis perdu au truc des fonctions mais c’est pas grave je vais essayer de trouver des progrès directement fait sur internet. En fait, ce que je recherchais c’était, tuer 1 shulker puis 10 puis 50 puis 200 puis 500 puis 1000, je vais continuer de faire des progrès mais des plus simples, et puis peut-être que comme des map/mod etc, les progrès seront proposer de plus en plus. Sinon super article bien mieux expliquer que sur d’autres sites !
@Genemo : Dès que tu as besoin de conditions qui ne sont pas offertes par le site, tu vas devoir passer par des commandes. Ce que je te conseille, c’est de créer un succès “technique”, invisible (donc sans mettre de parent ni de display) qui est “tuer un Shulker”. Et dans la récompense “rewards”, tu utilises une fonction avec deux commandes : une qui retire ce succès technique et une uatre qui donne le succès “Tuer 50 Shulkers” si le joueur a bien tué plus de 50 shulkers. Pour savoir si le joueur a tué plus de 50 Shulkers, il faut au préalable créer un objectif permettant de savoir combien de Shulker chaque joueur tue. Ça peut se faire dans le fichier fonction déjà créé ou via un autre fichier fonction par le biais d’un advancement donné à la connexion du joueur.
Super pratique, merci, j’ai trop de mal a faire ça du coup j’utilises le site ^^
Par contre j’ai un soucis, sur le site j’ai moyen de demander de tuer un Shulker pour avoir un progrès, mais ce que j’aimerais c’est que les conditions soient : tuer 50 Shulker. Est-ce possible ? merci.
Très bon article, j’ai jamais autant eu le sentiment d’être un assisté x)
Sans rire, si vous êtes un mapmaker de talent et que vous voulez avoir des progrès personnalisé, je ne puis que vous conseiller cet article :ok:
@Mlakuss C’est bon, ça fonctionne maintenant, je n’ai plus les progrès. Merci beaucoup, et merci pour ce tutoriel très utile ^^
@Hardel : Tu as deux solutions. La première, c’est de mettre dans ton second succès les conditions du progrès 1 et du progrès 2. Puis dans le 3ème, les conditions du progrès 1, 2 et 3. Tu arrives avec des progrès long à la fin. L’autre solution, c’est de mettre un critère impossible dans tous les succès. Quand un succès est terminé, il faut ajouter une fonction permettant de valider le critère impossible dans le progrès suivant. C’est utilisé dans l’exemple 3 avec la quêtes des élytres si tu veux des fichiers pour t’inspirer.
Pour aller plus loin, si tu as un progrès avec comme critère “manger_une_pomme”, tu ajoutes un critère impossible “progrès_précédent”. Et dans le progrès précédent, il faut une fonction qui fera la commande: /advancement grant @s only dossier:progrès progrès_précédent
comment faire pour que les progrès ce suivent j’ai envie que le joueur fasse les progrès 1 a 1 dans odre
je veut que le joueur ait le premier Progrès avant le second ect…
@Overtek Vérifie bien que dans data, tu aies “data/advancement/minecraft/(n’importe quel dossier)/root.json. Il manquait le dossier “advancements”, le lien est corrigé.
Le dossier pour bloquer l’arbre des progrès ne fonctionne pas. J’ai bien mis le dossier “Data” que contenait l’archive dans le dossier de ma map, mais quand je vais sur mon monde j’ai toujours les progrès qui s’activent (par exemple quand je mine de la cobble avec une pioche en bois). C’est normal ? :/
Super merci Mlakuss
c’est tellement bien de pouvoir faire sa
Yeah merci !