Dans ce guide, tu vas créer une pomme de rubis : un en-cas qui remplit une bonne partie de la barre de faim, qui peut se manger même quand tu es rassasié, et qui donne un petit coup de vitesse. Tu vas apprendre comment fonctionnent la faim et la saturation, et combien de temps dure la consommation.
Ce guide s'appuie sur Ton premier objet personnalisé. Si tu n'as pas encore créé d'objet, commence par là : les étapes pour l'icône, la texture et le nom sont exactement les mêmes.
La méthode rapide : GodCraft
GodCraft propose un élément Nourriture avec des curseurs pour tout ce qui suit, et il écrit le script d'effet pour toi.
- Ouvre l'Atelier et ajoute une Nourriture à ton add-on.
- Dessine l'icône dans l'éditeur de pixels.
- Règle les points de faim, la saturation et les effets que tu veux.
- Appuie sur Exporter et mange-la en jeu.
Tu veux voir les fichiers que l'appli génère ? Les voici.
À la main
On utilise l'espace de noms myname. Remplace-le partout par le tien.
Étape 1 : l'objet nourriture
Crée ce fichier dans ton pack de comportements :
{
"format_version": "1.26.30",
"minecraft:item": {
"description": {
"identifier": "myname:ruby_apple",
"menu_category": {
"category": "items"
}
},
"components": {
"minecraft:icon": {
"textures": {
"default": "myname_ruby_apple"
}
},
"minecraft:display_name": {
"value": "item.myname:ruby_apple.name"
},
"minecraft:max_stack_size": 16,
"minecraft:food": {
"nutrition": 6,
"saturation_modifier": 0.8,
"can_always_eat": true
},
"minecraft:use_modifiers": {
"use_duration": 1.6,
"movement_modifier": 0.35
},
"minecraft:use_animation": "eat",
"minecraft:tags": {
"tags": ["minecraft:is_food"]
}
}
}
}Les nouveautés, ce sont les quatre derniers composants. Regardons-les un par un.
Le composant food
minecraft:food rend l'objet comestible.
nutritionindique combien de points de faim il rend. Un pilon sur la barre de faim vaut 2 points, donc6remplit trois pilons. Une pomme vanilla donne 4, un steak donne 8.saturation_modifierrègle la "satiété" cachée qui empêche ta barre de faim de descendre. Le jeu ajoutenutrition x saturation_modifier x 2de saturation. Les valeurs basses (environ 0.1 à 0.3) donnent un en-cas, 0.6 c'est normal, et 0.8 ou plus, c'est un repas copieux.can_always_eatpermet de le manger même avec une barre de faim pleine. Ne le mets pas (il vautfalsepar défaut) pour une nourriture normale.
Il y a un autre champ qui pourrait te plaire : using_converts_to. Il donne au joueur un autre objet après l'avoir mangé, comme un bol après une soupe :
"using_converts_to": "minecraft:bowl"Combien de temps dure la consommation
La nourriture a besoin de minecraft:use_modifiers, sinon le joueur ne peut pas maintenir le bouton d'utilisation pour la manger.
use_durationest le temps de consommation en secondes. La nourriture vanilla prend 1,6 seconde. Les algues séchées, environ la moitié.movement_modifierralentit le joueur pendant qu'il mange.0.35est la valeur vanilla, et1veut dire aucun ralentissement.
Animation et tags
minecraft:use_animationréglé sur"eat"affiche l'animation de mastication et les particules de miettes. Utilise"drink"pour quelque chose comme une potion ou un smoothie.minecraft:tagsavecminecraft:is_foodle marque comme nourriture, de la même façon que les aliments vanilla.
Étape 2 : texture et nom
Ça fonctionne exactement comme dans le premier guide. Ajoute la texture à ton item_texture.json existant (dans texture_data, à côté de tes autres entrées) :
"myname_ruby_apple": {
"textures": "textures/items/ruby_apple"
}Enregistre un PNG de 16x16 dans RP/textures/items/ruby_apple.png, puis ajoute le nom :
item.myname:ruby_apple.name=Ruby AppleMaintenant, tape /give @s myname:ruby_apple et croque dedans. Consulte /give si tu as besoin d'un rappel.
Ajouter des effets quand on la mange
Les anciens add-ons donnaient des effets à la nourriture avec une liste effects dans minecraft:food. Ce champ ne fait plus partie du format d'objet actuel. Si tu l'ajoutes dans un fichier avec un format_version récent, le jeu l'ignore et affiche un avertissement dans le Content Log.
Aujourd'hui, la bonne méthode est un composant personnalisé : ton objet utilise un composant que tu inventes, et un petit script décide de ce qu'il fait. Ça a l'air effrayant, mais ça tient en 15 lignes environ.
Étape 1 : ajouter le composant à l'objet
Ajoute ceci dans les components de ruby_apple.json. Le nom, c'est toi qui le choisis, et l'objet contient tes propres réglages :
"myname:eat_effect": {
"effect": "speed",
"seconds": 10,
"amplifier": 1
}Étape 2 : écrire le script
Pour ça, le manifeste de ton pack de comportements a besoin d'un module script. La création du projet explique comment en ajouter un. Ensuite, crée le script :
import { system } from "@minecraft/server";
system.beforeEvents.startup.subscribe(({ itemComponentRegistry }) => {
itemComponentRegistry.registerCustomComponent("myname:eat_effect", {
onConsume(event, { params }) {
event.source.addEffect(params.effect, params.seconds * 20, {
amplifier: params.amplifier,
});
},
});
});Comment ça marche :
- Au démarrage du monde, le script indique au jeu ce que signifie
myname:eat_effect. onConsumes'exécute chaque fois qu'un joueur finit de manger un objet qui possède ce composant.paramsest l'objet que tu as écrit dans le fichier de l'objet, donc tu peux réutiliser ce même script pour plein d'aliments avec des effets différents.- Dans les scripts, la durée des effets est en ticks, et il y a 20 ticks par seconde. C'est pour ça que
secondsest multiplié par 20. amplifier0 correspond au niveau I, 1 au niveau II, et ainsi de suite.
Noms des effets
Utilise les mêmes identifiants d'effet que la commande /effect, comme speed, regeneration, night_vision, absorption ou fire_resistance.
GodCraft s'occupe de toute cette partie pour toi : choisis les effets dans l'éditeur de nourriture, et il ajoute le composant et le script à l'export.
Conseils pour une nourriture équilibrée
- Inspire-toi du vanilla. Un en-cas, c'est 2 à 4 de nutrition, un repas 6 à 8. Des valeurs très élevées rendent toutes les autres nourritures inutiles.
- Les effets doivent se mériter. Un effet puissant, c'est amusant sur une nourriture rare, pas sur une qu'on fabrique avec de la terre. Associe-le à une recette difficile (voir Recettes d'artisanat et de four).
- Garde
can_always_eatpour les cas spéciaux. Le jeu vanilla ne l'utilise que pour des choses comme les pommes dorées, pour que ça ressemble à une récompense. - La taille des piles compte. Des piles plus petites (16) rendent la nourriture puissante plus difficile à stocker en masse.
Quand quelque chose ne va pas
| Ce que tu vois | Cause la plus probable |
|---|---|
| Impossible de la manger | minecraft:use_modifiers est absent ou use_duration vaut 0 |
| Tu peux la manger, mais seulement quand tu as faim | C'est normal. Ajoute can_always_eat pour changer ça |
| Aucun effet après l'avoir mangée | Le module script n'est pas dans le manifeste, ou le nom du composant ne correspond pas entre l'objet et le script |
Un avertissement à propos de effects | Tu as utilisé l'ancien champ : passe au composant personnalisé ci-dessus |
Tu trouveras plus d'aide dans Dépannage. Ensuite : Armes et outils.