1. Wiki
  2. /Objets
  3. /Nourriture personnalisée

Nourriture personnalisée

Crée une pomme de rubis que les joueurs peuvent manger dans Minecraft Bedrock : faim, saturation, durée et animation de consommation, plus des effets avec un petit script.

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.

  1. Ouvre l'Atelier et ajoute une Nourriture à ton add-on.
  2. Dessine l'icône dans l'éditeur de pixels.
  3. Règle les points de faim, la saturation et les effets que tu veux.
  4. 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 :

BP/items/ruby_apple.json
{
  "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.

  • nutrition indique combien de points de faim il rend. Un pilon sur la barre de faim vaut 2 points, donc 6 remplit trois pilons. Une pomme vanilla donne 4, un steak donne 8.
  • saturation_modifier règle la "satiété" cachée qui empêche ta barre de faim de descendre. Le jeu ajoute nutrition x saturation_modifier x 2 de 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_eat permet de le manger même avec une barre de faim pleine. Ne le mets pas (il vaut false par 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 :

Dans minecraft:food
"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_duration est le temps de consommation en secondes. La nourriture vanilla prend 1,6 seconde. Les algues séchées, environ la moitié.
  • movement_modifier ralentit le joueur pendant qu'il mange. 0.35 est la valeur vanilla, et 1 veut dire aucun ralentissement.

Animation et tags

  • minecraft:use_animation ré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:tags avec minecraft:is_food le 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) :

RP/textures/item_texture.json
"myname_ruby_apple": {
  "textures": "textures/items/ruby_apple"
}

Enregistre un PNG de 16x16 dans RP/textures/items/ruby_apple.png, puis ajoute le nom :

RP/texts/en_US.lang
item.myname:ruby_apple.name=Ruby Apple

Maintenant, 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 :

BP/items/ruby_apple.json (dans components)
"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 :

BP/scripts/main.js
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 :

  1. Au démarrage du monde, le script indique au jeu ce que signifie myname:eat_effect.
  2. onConsume s'exécute chaque fois qu'un joueur finit de manger un objet qui possède ce composant.
  3. params est 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.
  4. Dans les scripts, la durée des effets est en ticks, et il y a 20 ticks par seconde. C'est pour ça que seconds est multiplié par 20.
  5. amplifier 0 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_eat pour 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 voisCause la plus probable
Impossible de la mangerminecraft:use_modifiers est absent ou use_duration vaut 0
Tu peux la manger, mais seulement quand tu as faimC'est normal. Ajoute can_always_eat pour changer ça
Aucun effet après l'avoir mangéeLe 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 effectsTu as utilisé l'ancien champ : passe au composant personnalisé ci-dessus

Tu trouveras plus d'aide dans Dépannage. Ensuite : Armes et outils.

Objets: Guides

We use cookies to improve your experience and analyse site traffic. Learn more