Progrès personnalisés

Depuis Minecraft 1.12 les succès ont été remplacés par les progrès. Ils sont personnalisables depuis l’apparition des datapack en 1.13.

Pour ce premier article, j’expliquerai les principes de base des progrès. Nous verrons dans les prochaines semaines comment créer des progrès aux mécaniques originales : progrès répétables, progrès communs à tous les joueurs du serveur, …

Mise en place du datapack

Si tu n’es pas à l’aise avec le concept de datapack, je te conseille vivement de lire l’article de création de datapack.

Dans le dossier data/mangarmor, ajoutons un dossier advancements. Il contiendra les fichiers Json des progrès. Pour nos premiers progrès nous utiliserons ceux déjà présents en jeu. Nous verrons par la suite comment ajouter un onglet contenant nos propres progrès.

Progrès : du pain sur la planche

Commençons dès maintenant par un exemple concret : la mise en place de progrès issus de l’édition Bedrock et de succès disparus en 1.12 avec l’introduction des progrès.

Succès Du pain sur la planche

Pour ce progrès, nous allons détecter si le joueur obtient l’objet pain dans son inventaire. Un progrès se compose de plusieurs éléments :

  • display qui permet de configurer les éléments visibles à l’écran comme le nom du progrès
  • parent qui est le progrès précédent celui-ci
  • criteria qui liste les actions nécessaires pour débloquer le progrès
  • requirements qui complète criteria en précisent si toutes les actions sont nécessaires ou seulement l’une d’entre elles
  • rewards qui liste les récompenses. Il peut s’agir d’une fonction, d’une table de loot, d’une recette ou d’XP.

Display

Commençons par les éléments à afficher dans les progrès. Nous choisissons l’icone qui représentera le progrès, ici, l’icone du pain. On précise ensuite le titre et la description.

				
					"display": {
        "icon": {
            "item": "minecraft:bread"
        },
        "title": "Du pain sur la planche",
        "description": "Faire du pain avec du blé",
        "frame": "task",
        "show_toast": true,
        "announce_to_chat": true,
        "hidden": false
}
				
			

Nous continuons en précisant la forme du cadre du progrès. Trois formes sont disponibles. Si aucune forme n’est précisée, la forme task sera utilisée.

Les différentes formes de frame possibles

Il est ensuite possible de préciser si le progrès doit-être affiché dans les notifications et dans le chat quand il est débloqué par un joueur. Enfin, hidden permet de cacher un progrès jusqu’à qu’il soit débloqué.

Parent

Continuons en indiquant le progrès parent. Cela permettra au jeu de créer un arbre avec une certaine hiérarchie des progrès.

				
					"parent": "minecraft:husbandry/plant_seed"

				
			

Criteria

Concernant les critères, nous testons si le joueur a un pain en inventaire. Chaque critère se compose d’un nom (qui sera utilisé par la suite dans les requirements), d’un trigger (un évènement, une action) et de conditions.

La liste des déclencheurs et de leurs conditions est consultable sur le wiki officiel.

				
					"criteria": {
        "bread": {
            "trigger": "minecraft:inventory_changed",
            "conditions": {
                "items": [
                    {
                        "item": "minecraft:bread"
                    }
                ]
            }
        }
}
				
			

Requirements

Si requirements n’est pas précisé, tous les critères devront être résolus pour débloquer le progrès. Dans le cas contraire, il nous faut indiquer un tableau qui contiendra d’autres tableaux. Le premier contient des conditions ET, les autres des conditions OU. Voici un exemple avec le progrès vanilla Prends-en de la graine !.

				
					{"parent":"minecraft:husbandry\/root","display":{"icon":{"item":"minecraft:wheat"},"title":{"translate":"advancements.husbandry.plant_seed.title"},"description":{"translate":"advancements.husbandry.plant_seed.description"},"frame":"task","show_toast":true,"announce_to_chat":true,"hidden":false},"criteria":{"wheat":{"trigger":"minecraft:placed_block","conditions":{"block":"minecraft:wheat"}},"pumpkin_stem":{"trigger":"minecraft:placed_block","conditions":{"block":"minecraft:pumpkin_stem"}},"melon_stem":{"trigger":"minecraft:placed_block","conditions":{"block":"minecraft:melon_stem"}},"beetroots":{"trigger":"minecraft:placed_block","conditions":{"block":"minecraft:beetroots"}},"nether_wart":{"trigger":"minecraft:placed_block","conditions":{"block":"minecraft:nether_wart"}}},"requirements":[["wheat","pumpkin_stem","melon_stem","beetroots","nether_wart"]]}
				
			

Ici, le progrès nécessite de planter une des cinq graines. Dans le cas où nous voudrions que le joueur doive planter les cinq graines pour débloquer le succès, nous utiliserons ce tableau :

				
					"requirements": [
    ["wheat"],
    ["pumpkin_stem"],
    ["melon_stem"],
    ["beetroots"],
    ["nether_wart"]
]
				
			

Nous pouvons donc indiquer les requirements suivants :

				
					"requirements" : [
        ["bread"]
 ]
				
			

Rewards

Pour ce progrès aucune récompense. Il est toutefois possible de préciser une recette à débloquer, une table de loots, un montant d’expérience et même une fonction. Cette dernière offre énormément de possibilité car nous pouvons exécuter n’importe quelle commande une fois le progrès débloqué.

Voici le code complet de notre progrès :

				
					{"display":{"icon":{"item":"minecraft:bread"},"title":"Du pain sur la planche","description":"Faire du pain avec du bl\u00e9","frame":"task","show_toast":true,"announce_to_chat":true,"hidden":false},"parent":"minecraft:husbandry\/plant_seed","criteria":{"bread":{"trigger":"minecraft:inventory_changed","conditions":{"items":[{"item":"minecraft:bread"}]}}},"requirements":[["bread"]]}
				
			

Progrès : L'éponge cramée

Succès L'éponge cramée

Pour ce progrès, nous faisons comme le précédent, à la différence que nous détectons la présence d’une éponge dans l’inventaire.

				
					{"display":{"icon":{"item":"minecraft:wet_sponge"},"title":"L'\u00e9ponge cram\u00e9e","description":"S\u00e9cher une \u00e9ponge dans un four","frame":"task","show_toast":true,"announce_to_chat":true,"hidden":false},"parent":"minecraft:adventure\/root","criteria":{"sponge":{"trigger":"minecraft:inventory_changed","conditions":{"items":[{"item":"minecraft:sponge"}]}}},"requirements":[["sponge"]]}
				
			

Téléchargement

Voici le datapack contenant les deux progrès de cet article.

Pour aller plus loin

Voici d’autres articles qui pourraient t’intéresser :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.

Sommaire

Partager

Facebook
Twitter