Accueil / Tutoriels / Modifier Minecraft / [Tutoriel] Apprenez à créer vos propres progrès
Apprenez à créer vos propres progrès

[Tutoriel] Apprenez à créer vos propres progrès

[Tutoriel] Apprenez à créer vos propres progrès
4.9(97.5%) 16 votes

Arrivés lors de la beta 1.4 de Minecraft, les succès nous ont quittés lors de la sortie de la version 1.12 du jeu… pour laisser place au(x) progrès ! Mauvaise blague mise à part, laissez-moi vous présenter ce que sont ces fameux progrès et comment vous pouvez (oui, vous !) en ajouter, en retirer ou les modifier.

En fin d’article, vous retrouverez plusieurs exemples que vous pourrez télécharger et tester.

divider

Les progrès, qu’est-ce que c’est ?

Ils remplacent les anciens succès du jeu. Leur objectif principal est de guider le joueur dans son aventure en donnant quelques indications (minez de l’obsidienne, construisez un portail, suivez un œil de l’end…). C’était déjà ce que faisaient les succès auparavant mais ils sont désormais beaucoup plus nombreux et donnent plus d’indications.

Fenêtre montrant les progrès
Première fenêtre montrant les progrès (tous déverrouillés ici)

Les progrès, c’est aussi ce qui sert à faire apparaître les recettes dans le livre apparu avec la version 1.12. À chaque fois que vous collectez les bons ingrédients, un progrès se déclenche pour vous donner la recette associée.

La plupart des progrès sont visibles en appuyant sur ‘L‘ en jeu (ou en faisant échap -> progrès). Les progrès permettant de débloquer les recettes sont, quant à eux, masqués (il y en aurait beaucoup trop et l’arborescence serait compliquée à faire).

divider

Ajouter un progrès ?

Le principal avantage de ce nouveau système, c’est qu’il est entièrement modifiable par les mods/serveurs/maps. On va voir dans un premier temps comment ajouter un nouvel onglet à la fenêtre des progrès.

  • Première étape, créez un dossier et appelez-le comme vous voulez (évitez de mettre des espaces dans le nom).
  • Deuxième étape, créez un fichier texte dans ce dossier et nommez-le comme bon vous semble.
  • Troisième étape, changez l’extension du fichier (.txt) par .json
  • Quatrième étape, remplir ce fichier avec votre éditeur de texte favori.

Pour remplir le fichier, commencez par ouvrir une accolade { au début du fichier, sautez quelques lignes et fermez l’accolade }. Tout ce que vous allez écrire doit aller entre ces deux accolades.

Voici ensuite les différents éléments que vous pouvez/devez mettre dans le fichier.


Définir l’affichage des progrès

Si vous souhaitez que le joueur puisse voir le progrès dans le menu correspondant, vous devez définir l’affichage (la texture au fond, l’icône…). On va donc ajouter une clé “display”:{}

Dans cette clé, on peut ajouter plusieurs éléments (chaque élément doit être séparé par une virgule) :

  • “background”:”” – permet de spécifier la texture à utiliser dans le fond de la fenêtre, vous ne devez le mettre que pour le premier progrès (exemple: “background”: “minecraft:textures/blocks/planks_oak.png” pour la texture des planches de chêne)
  • “hidden”:[true/false] – permet de masquer le progrès tant qu’il n’est pas obtenu
  • “show_toast”:[true/false] – va indiquer si on veut que le progrès s’affiche à l’écran lorsqu’il est obtenu (défaut : true)
  • “announce_to_chat”:[true/false] – va indiquer si on veut une annonce dans le chat lorsque le succès est obtenu (défaut : true)
  • “icon”:{} – dans cette clé, on va indiquer quel est l’objet à afficher (exemple: “icon”:{“item”:”minecraft:wool”,”data”:4} pour un bloc de laine jaune)
  • “title”:”” – va permettre de choisir le titre du progrès
  • “description”:”” – va permettre de mettre une description quand on passe la souris sur le progrès
  • “frame”:[goal/challenge/task] – va permettre de changer la forme du cadre (ovale, avec picots ou, valeur par défaut, carré)

Voici les différents cadres qui vont apparaître en fonction de ce que vous mettez dans “frame”:

task (tâche)

  icône progrès non complétéicône progrès complété

goal (objectif)

 icône objectif non complétéicône objectif complété

challenge (défi)

icône pour les challenge  icône challenge complété

Notez que lorsqu’un challenge est complété, le son suivant est joué :

Ce son fait écho à l’expérience qui est obtenu lorsque vous remplissez un challenge. Sinon, lorsque vous remplissez une tâche ou un objectif, vous aurez simplement un petit bruit de glissement lorsque la notification apparaît et disparaît.

Votre fichier devrait ressembler à quelque chose comme ceci maintenant :

{display:{“background”:”minecraft:textures/blocks/planks_oak.png”,

“show_toast”:true,    “announce_to_chat”:false,

“icon”:{“item”:”minecraft:fire_charge”},

“title”:”Mon premier progrès”,

“description”:”Et j’en suis fier”,

“frame”:”goal”}}

Maintenant, il faut définir une condition pour débloquer le progrès. On va donc définir les critères.


Critères pour débloquer un progrès

La clé que l’on va utiliser pour ceci s’appelle “criteria”:{} et va fonctionner de la manière suivante: “criteria”:{“critère_1″:{},”critère_2”:{}}. Vous pouvez donner le nom que vous voulez à “critère_1” et “critère_2” (et même ne mettre qu’une seule condition ou 30 en répétant le motif).

Chaque condition se construit de la manière suivante: “critère_1“:{“trigger”:”nom du déclencheur“}

Le déclencheur, c’est ce qui va valider le critère et potentiellement valider le progrès. Il est possible d’utiliser les déclencheurs suivants :

Nom du déclencheurSe déclenche quand :Conditions
minecraft:bred_animalsLe joueur fait s'accoupler des animauxparent, partner, child
minecraft:brewed_potionLe joueur fabrique une potionpotion
minecraft:changed_dimensionLe joueur entre dans un portailto, from
minecraft:construct_beaconLe joueur fabrique une baliselevel
minecraft:consume_itemLe joueur consomme un objetitem
minecraft:cured_zombie_villagerLe joueur soigne un zombie-villageoiszombie, villager
minecraft:effects_changedLe joueur reçoit un effeteffects
minecraft:enchanted_itemLe joueur enchante un objetitem, levels
minecraft:enter_blockLe joueur entre dans un blocblock, state
minecraft:entity_hurt_playerLe joueur se fait taper par un mobdamage
minecraft:entity_killed_playerLe joueur se fait tuer par un mobentity
minecraft:impossibleJamais, uniquement via commandeAucune
minecraft:inventory_changedLl'inventaire du joueur changeitem, items, slots
minecraft:item_durability_changedLa durabilité d'un objet changeitem, durability, delta
minecraft:levitationLe joueur est sous l'effet de lévitationduration, distance
minecraft:locationLe joueur arrive quelque partposition, biome, feature
minecraft:nether_travelLe joueur sort du Netherdistance
minecraft:placed_blockLe joueur pose un blocblock, state, location
minecraft:player_hurt_entityLe joueur frappe un mobdamage, entity
minecraft:player_kill_entityLe joueur tue un mobentity, killing_blow
minecraft:recipe_unlockedLe joueur débloque une recetterecipe
minecraft:slept_in_bedLe joueur dortlocation
minecraft:summoned_entityLe joueur invoque un mobentity
minecraft:tame_animalLe joueur apprivoise un animalentity
minecraft:tickAutomatiquement tous les ticksAucune
minecraft:used_ender_eyeLe joueur utilise un oeil de l'enddistance
minecraft:used_totemLe joueur utilise un totemitem
minecraft:villager_tradeLe joueur commerce avec un villageoisvillager, item

Les déclencheurs peuvent avoir des conditions. Je vous invite à aller sur cette page si vous souhaitez voir toutes les conditions et des exemples pour chaque déclencheur. Si vous avez besoin d’aide pour lire les arbres, je vous conseille cet article. Les conditions s’écrivent de la manière suivante : “critère”:{“trigger”:”déclencheur”,“conditions”:{“…”:”…”}}

Voici quelques exemples pour voir comment fonctionnent ces conditions.

Obtenir un objet dans l’inventaire (charbon)

“trouve_charbon”:{“trigger”:”minecraft:inventory_changed”,”conditions”:{“items”:[{“item”:”minecraft:coal”}]}}

Placer un bloc à un certain endroit (lit dans le Nether)

“lit_dans_nether”:{“trigger”:”minecraft:placed_block”,”conditions”:{“location”:{“dimension”:”the_nether”}, “block”:”minecraft:bed” }}

Entrer dans un bloc (sauter dans de la lave)

“dans_lave”:{“trigger”:”minecraft:enter_block”,”conditions”:{“block”:”minecraft:lava” }}

Invoquer un golem

“golem”:{“trigger”:”minecraft:summoned_entity”,”conditions”:{“entity”:{“type”:”iron_golem”}}}

Tirer une flèche sur un zombie dans le Nether à plus de 30 mètres

“fleche_zombie_nether”:{“trigger”:”minecraft:player_hurt_entity”,”conditions”:{“damage”:{“type”:{“direct_entity”:{“type”:”arrow”}}}, “entity”:{“type”:”zombie”,”distance”:{“min”:30},”location”:{“dimension”:”the_nether”}} }}

Pour mon premier progrès, j’ai décidé de le donner dès que le joueur utilise un briquet, il ressemble donc à ceci désormais:

{display:{“background”:”minecraft:textures/blocks/planks_oak.png”,    “show_toast”:true,    “announce_to_chat”:false,    “icon”:{“item”:”minecraft:fire_charge”},    “title”:”Mon premier progrès”,    “description”:”Et j’en suis fier”,    “frame”:”goal”},

criteria:{“use_briquet”:{

“trigger”:”minecraft:item_durability_changed”,

“conditions”:{

“item”:{“item”:”minecraft:flint_and_steel”}}}}}

Ce progrès est maintenant fonctionnel. Vous pouvez le tester mais pour cela, il va falloir le placer dans une de vos sauvegardes. Pour cela, copiez le dossier que vous avez créé et collez-le dans votre_monde/data/advancements/

Si votre jeu était déjà lancé, faites /reload, sinon, il devrait déjà apparaître dès que vous utiliserez un briquet (en mode survie pour qu’il s’abîme).


Définir un parent

Vous l’aurez probablement remarqué, mais les succès sont placés dans un arbre avec des branches. Pour que vos succès puissent se ranger correctement, il faut définir quel est le succès qui doit venir avant celui que vous créez (ce n’est pas nécessaire pour le tout premier). Pour cela, on ajoute une clé “parent”:””. Dans cette chaîne de caractère, vous devez simplement indiquer le dossier suivi du nom du fichier parent.

Exemple, mon dossier dans lequel je mets les progrès s’appelle “tutoriel”. Mon premier progrès se nomme “briquet.json”, je mets donc dans mon second progrès “parent”:”tutoriel:briquet”. Le premier dossier est séparé avec deux-points. Si vous mettez des dossier dans ce dossier, il faudra utiliser un slash (ex: “tutoriel:dossier/briquet”).

Mon second progrès ressemblerait alors à ceci:

{display:{“show_toast”:true,    “announce_to_chat”:true,    “icon”:{“item”:”minecraft:netherrack”},    “title”:”Un pas en enfer”,    “description”:”Aller dans le Nether”,    “frame”:”challenge”},criteria:{“entrer_nether”:{“trigger”:”minecraft:changed_dimension”,”conditions”:{“to”:”the_nether”}}},

“parent”:”tutoriel:briquet”}


Limiter les critères

Pour le moment, vous avez vu comment mettre plusieurs critères, mais pas comment déterminer lesquels sont nécessaires. Par défaut, il faudra remplir tous les critères pour déverrouiller le progrès, mais vous pouvez indiquer “déverrouiller le progrès si critère 1 ou critère 2″. Pour cela on ajoute une nouvelle clé (c’est l’avant-dernière), “requirements”:[].

Si vous voulez donner le progrès si A et B sont respecté, vous devrez l’écrire comme ceci: “requirements”:[[“A”],[“B”]]. Si vous voulez A ou B, ça sera “requirements”:[[“A”,”B”]]. Et si vous voulez (A et B) ou C, ça sera “requirements”:[[“A”,”C”],[“B”,”C”]]…

Les lettres “A”, “B” et “C” utilisées pour l’exemple correspondent aux textes que vous mettez dans les critères. Si je reprends le dernier exemple en ajoutant le requirement, ça donnerait ceci :

{display:{“show_toast”:true,    “announce_to_chat”:true,    “icon”:{“item”:”minecraft:netherrack”},    “title”:”Un pas en enfer”,    “description”:”Aller dans le Nether”,    “frame”:”challenge”},criteria:{“entrer_nether”:{“trigger”:”minecraft:changed_dimension”,”conditions”:{“to”:”the_nether”}}},”parent”:”tutoriel:briquet”,

“requirements”:[[“enter_nether”]]}


Récompenser le joueur

Le joueur fait des progrès, c’est bien. Il est peut être temps de le récompenser ? Pour cela, une dernière clé “rewards”:{} va vous permettre de donner au joueur: de l’expérience, une fonction, une recette ou des objets provenant d’une table de butin. Dans les progrès vanilla, tous les défis donnent de l’expérience par exemple.

La clé s’écrit de la manière suivante: “rewards”:{“function”:”une_fonction”,”experience”:valeur,”loot”:”votre_table_de_butin”,”recipe”:”une_recette”}

Exemple, mon progrès doit me donner les objets que l’on trouve dans un coffre du Nether :

{display:{“show_toast”:true,    “announce_to_chat”:true,    “icon”:{“item”:”minecraft:netherrack”},    “title”:”Un pas en enfer”,    “description”:”Aller dans le Nether”,    “frame”:”challenge”},criteria:{“entrer_nether”:{“trigger”:”minecraft:changed_dimension”,”conditions”:{“to”:”the_nether”}}},”parent”:”tutoriel:briquet”,

“rewards”:{“loot”:”minecraft:chests/nether_bridge”}}


C’est fini !

onglet avec progrès créé par un joueur
Exemple d’onglet pouvant être créé (lien dans la dernière section)

Vous avez découvert comment ajouter un nouvel onglet avec de nouveaux progrès. Si vous voulez tester par vous même, je vous laisse télécharger cet exemple. Dans le fichier téléchargeable, j’ai repris des exemples du dessus et en ai ajoutés quelques-uns. Le premier se débloque automatiquement (“trigger”:”minecraft:tick”). Ainsi, vous pouvez être sûr de voir l’onglet s’afficher.

Télécharger l’exemple

Il s’agit d’une sauvegarde, vous avez juste à la coller dans votre dossier saves (tutoriel en fin d’article). N’hésitez pas à fouiller les fichiers pour voir comment ça fonctionne.

divider

Modifier/Retirer des progrès

Maintenant qu’on a vu comment ajouter des onglets, vous avez peut être envie de retirer ceux qui existent déjà ? Qu’à cela ne tienne ! Même si on ne peut pas vraiment les retirer, il est possible de les modifier en ré-écrivant les progrès déjà existant. Et si on change le déclencheur en mettant quelque chose d’impossible, les progrès ne se déverrouilleront jamais.

Un exemple de progrès impossible à réaliser :

{ “display”: { “icon”: { “item”: “minecraft:command_block” }, “title”: { “translate”: “Succès impossible” }, “description”: { “translate”: “Ne sera jamais fait sauf via commande” }, “show_toast”: false, “announce_to_chat”: false }, “criteria”: { “non_realisable”: { “trigger”: “minecraft:impossible”} } }

 

Une autre solution pour bloquer un arbre complet est de rendre un des progrès illisible par le jeu. Si vous le souhaitez, voici un dossier qui bloquera tous les progrès par défaut dans le jeu : télécharger le dossier. Pour vous en servir, copiez le dossier “data” et collez-le dans la sauvegarde à modifier.

Et pour empêcher les joueurs de débloquer les recettes en obtenant juste les ingrédients, sachez que ces recettes s’obtiennent via des progrès. Afin de les retirer, vous pouvez soit bloquer ces progrès avec le dossier ci-dessus soit donner tous ceux du dossier “recipes” au joueur avant de retirer toutes les recettes. Ainsi, il ne pourront plus les débloquer.

Les commandes pour faire ceci sont les suivantes :

/advancement grant @a from minecraft:recipes/root
/recipe take @a *

Pour voir à quoi ressemblent les progrès par défaut, ils sont dans .minecraft/versions/1.12/1.12.jar/advancements/(…). Il vous suffit de reproduire la même arborescence dans le dossier data/advancements/ de votre sauvegarde pour pouvoir agir sur ces progrès déjà existant.

divider

Mon progrès ne marche pas, que faire ?

Dans votre dossier .minecraft, il existe un dossier logs. Vous pouvez regarder le fichier appelé “latest.txt” et regarder si votre progrès apparaît dans un des messages d’erreur, ça pourrait vous aider à cibler le problème. Vous pouvez aussi essayer cette commande :

/advancement grant @s everything

Si votre succès apparaît après ça, c’est que votre déclencheur n’est pas correct.

divider

C’est trop compliqué pour moi, y a pas un logiciel ?

Oui. Comme toujours, il existe des petits sites et des softs permettant de faire le travail pour vous. Ils auront néanmoins des limitations.

Le site ci-dessous vous permettra de créer des succès assez facilement. Il prend en compte un grand nombre de paramètre et devrait vous permettre d’accomplir la plus grande partie de vos tâches. Ce qu’il ne sera pas possible de faire en revanche, c’est déclencher un “entity_hurt_player”, sans entité source (alors que ce déclencheur s’active quelque soit la source des dégâts). Ou encore, il ne vous sera pas possible de faire de mise en forme avancée avec cet outil.

Accéder à Commandcreator

divider

La commande /advancement

Pour aller un peu plus loin et ne pas oublier la base, sachez que les progrès peuvent être donnés ou retirés aux joueurs par le biais de la commande /advancement.

/advancement <grant|revoke> <player> <only|until|from|through> <advancement>

Quelques petites explications:

Les premiers arguments grant et revoke veulent respectivement dire “donner” et “prendre”. Only ne donnera que le progrès que vous spécifiez ensuite. Until donnera tous les succès en partant de la racine jusqu’à atteindre l’objectif spécifié, from donnera tous les progrès situés après celui spécifié tandis que though donnera tous les progrès situés dans l’arbre du progrès spécifié.

Visualisation de l'effet des différents arguements
Ce que donnent les différents arguments en ciblant le progrès central

Lorsque vous utilisez only, vous pouvez aussi ajouter un autre nom derrière, le nom d’un critère à valider. Ainsi, ça ne donne qu’une partie du progrès. Exemple :

/advancement grant @a only minecraft:adventure/kill_all_mobs vex

La commande ci-dessus permet de dire “tous les joueurs valident la condition Tuer un Vex dans la progrès Tuer tous les monstres“. Cela validera le défi pour les joueurs qui n’avaient plus que le Vex à tuer. Pour les autres, ça fera juste progresser légèrement le défi.

divider

Quelques packs de progrès pour tester

Si vous souhaitez voir des exemples bien concrets comme il faut, voici quelques “packs”. Ce sont des dossiers data que vous devez coller dans une de vos sauvegardes directement (à côté du fichier level.dat).

Le premier va ajouter des progrès dans les arbres existants par défaut et va déplacer quelques progrès afin de faire de la place.

Télécharger le pack de progrès

Le second pack va ajouter un nouvel onglet qui ne s’affichera que lorsque vous placerez un coffre. Ensuite, vous devrez réaliser des actions spéciales (poser une bibliothèque, un Jukebox, obtenir un tête, un colorant…) pour afficher les branches de l’arbres. C’est principalement basé sur les propriétés du tag “hidden”.

Télécharger le pack de progrès

Un dernier pack bien plus poussé va vous permettre d’ajouter un nouvel onglet qui s’affichera soit lorsque vous irez haut dans le ciel, soit en apprivoisant un perroquet, soit en tuant le dragon. La suite des progrès est une sorte de quête permettant à tous les joueurs de fabriquer une paire d’élytres. Vous aurez des phases de recherches, de collectes, des actions à accomplir. Ce pack utilise des fonctions (des fichiers textes contenant des commandes) afin d’empêcher les joueur de griller les étapes et pour retirer les ingrédients une fois collectés.

Télécharger le pack de progrès

N’hésitez pas à laisser vos questions en commentaire et amusez-vous bien !

Accéder aux sauvegardes / Installer une map

Téléchargez la map ou un des dossiers dans l’article. Puis trouvez votre dossier .minecraft :

Windows : Allez dans le menu Démarrer, puis rendez-vous dans Exécuter. Sinon, faites Touche Windows + R. Ensuite, tapez %appdata% dans la barre de recherche, puis allez dans le dossier .minecraft.
Linux : Appuyez en même temps sur ALT + F2. Ensuite, vous devriez normalement avoir votre .minecraft.
Si vous ne le voyez pas, activez les dossiers cachés avec la combinaison CTRL + H.
Mac : Votre dossier minecraft se trouve dans Utilisateur > Bibliothèque > Application Support.
Si vous ne trouvez pas Application Support, faites Finder > Barre des menus : Aller + Maintenir ALT > Bibliothèque.

Pour la map, ouvrez l’archive et transférez le dossier dans le dossier saves qui se trouve dans votre .minecraft.

Pour les dossiers contenant des progrès, ouvrez l’archive et transférez le dossier data dans le dossier correspondant à la sauvegarde que vous voulez modifier. Le dossier minecraft doit se placer dans le dossier advancements situé dans le dossier data de la sauvegarde à modifier.

Lancez le jeu, et amusez-vous bien !

A propos de Mlakuss

Créateur de map aventure depuis déjà trop longtemps, j'erre sur les forum pour venir en aide à ceux qui en ont besoin. Sinon, j'aime faire des crêpes.

Ceci vous intéresse peut être

Choisir, configurer et installer un VPS

Nous allons apprendre à choisir, configurer et installer un VPS pour pouvoir y installer divers services, tels que des serveurs Minecraft.

Rédiger une réponse

12 Commentaires sur "[Tutoriel] Apprenez à créer vos propres progrès"

Prévenez moi :
avatar
 
Trier par:   Commentaires récents | Commentaires ancients | Les mieux notés
Genemo
Invité

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
Invité

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.

Sp3ct3r
Membre

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:

Overtek
Membre

Mlakuss C’est bon, ça fonctionne maintenant, je n’ai plus les progrès. Merci beaucoup, et merci pour ce tutoriel très utile ^^

wpDiscuz