1. Wiki
  2. /Objetos
  3. /Comida personalizada

Comida personalizada

Crea una manzana de rubí que los jugadores puedan comer en Minecraft Bedrock: hambre, saturación, tiempo y animación de comer, y efectos con un pequeño script.

En esta guía vas a hacer una manzana de rubí: un tentempié que llena buena parte de la barra de hambre, se puede comer aunque estés lleno y da un pequeño impulso de velocidad. Aprenderás cómo funcionan el hambre y la saturación, y cuánto se tarda en comer.

Esta guía parte de Tu primer objeto personalizado. Si todavía no has hecho ningún objeto, empieza por ahí: los pasos del icono, la textura y el nombre son exactamente los mismos.

La forma rápida: GodCraft

GodCraft tiene un objeto Comida con controles deslizantes para todo lo que verás a continuación, y escribe el script de efectos por ti.

  1. Abre el Taller y añade una Comida a tu complemento.
  2. Dibuja el icono en el editor de píxeles.
  3. Ajusta los puntos de hambre, la saturación y los efectos que quieras.
  4. Toca Exportar y cómetela en el juego.

¿Quieres ver los archivos que crea? Aquí los tienes.

A mano

Usamos el espacio de nombres myname. Cámbialo por el tuyo en todas partes.

Paso 1: el objeto de comida

Crea este archivo en tu paquete de comportamiento:

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"]
      }
    }
  }
}

Lo nuevo son los últimos cuatro componentes. Vamos a ver cada uno.

El componente de comida

minecraft:food hace que el objeto se pueda comer.

  • nutrition es cuántos puntos de hambre recupera. Cada muslo de la barra de hambre son 2 puntos, así que 6 llena tres muslos. Una manzana normal da 4 y un filete da 8.
  • saturation_modifier controla la "saciedad" oculta que evita que baje tu barra de hambre. El juego añade nutrition x saturation_modifier x 2 de saturación. Los valores bajos (entre 0.1 y 0.3, más o menos) son como un tentempié, 0.6 es lo normal y 0.8 o más es una comida que llena mucho.
  • can_always_eat permite comerlo aunque la barra de hambre esté llena. Omítelo (por defecto es false) para la comida normal.

Hay un campo más que te puede gustar: using_converts_to. Le da al jugador otro objeto después de comer, como el cuenco que queda tras la sopa:

Dentro de minecraft:food
"using_converts_to": "minecraft:bowl"

Cuánto se tarda en comer

La comida necesita minecraft:use_modifiers; si no, el jugador no puede mantener pulsado el botón de usar para comérsela.

  • use_duration es el tiempo que se tarda en comer, en segundos. La comida del juego base tarda 1.6 segundos. Las algas secas tardan más o menos la mitad.
  • movement_modifier ralentiza al jugador mientras come. 0.35 es el valor del juego base, y 1 significa que no se ralentiza nada.

Animación y etiquetas

  • minecraft:use_animation con el valor "eat" muestra la animación de masticar y las partículas de migas. Usa "drink" para algo como una poción o un batido.
  • minecraft:tags con minecraft:is_food lo marca como comida, igual que se marcan las comidas del juego base.

Paso 2: textura y nombre

Funcionan igual que en la primera guía. Añade la textura a tu item_texture.json (dentro de texture_data, junto a tus otras entradas):

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

Guarda un PNG de 16x16 en RP/textures/items/ruby_apple.png y luego añade el nombre:

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

Ahora usa /give @s myname:ruby_apple y dale un mordisco. Mira /give si necesitas un repaso.

Añadir efectos al comer

Los complementos antiguos daban efectos a la comida con una lista effects dentro de minecraft:food. Ese campo ya no forma parte del formato actual de los objetos. Si lo añades a un archivo con un format_version moderno, el juego lo ignora y muestra un aviso en el registro de contenido.

Hoy en día se hace con un componente personalizado: tu objeto nombra un componente que te inventas, y un pequeño script decide lo que hace. Suena difícil, pero son unas 15 líneas.

Paso 1: añade el componente al objeto

Añade esto a los components de ruby_apple.json. El nombre lo eliges tú, y el objeto contiene tus propios ajustes:

BP/items/ruby_apple.json (dentro de components)
"myname:eat_effect": {
  "effect": "speed",
  "seconds": 10,
  "amplifier": 1
}

Paso 2: escribe el script

Para esto, tu paquete de comportamiento necesita un módulo de script en su manifiesto. En Configurar el proyecto se explica cómo añadirlo. Después crea el 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,
      });
    },
  });
});

Cómo funciona:

  1. Cuando arranca el mundo, el script le dice al juego qué significa myname:eat_effect.
  2. onConsume se ejecuta cada vez que un jugador termina de comerse un objeto que tiene el componente.
  3. params es el objeto que escribiste en el archivo del objeto, así que puedes reutilizar este mismo script para muchas comidas con efectos distintos.
  4. En los scripts, la duración de los efectos va en ticks, y un segundo tiene 20 ticks. Por eso seconds se multiplica por 20.
  5. Un amplifier de 0 es el nivel I, 1 es el nivel II, y así sucesivamente.

Nombres de los efectos

Usa los mismos ID de efecto que el comando /effect, como speed, regeneration, night_vision, absorption o fire_resistance.

GodCraft hace toda esta parte por ti: elige los efectos en el editor de Comida y, al exportar, añade el componente y el script.

Consejos para una comida equilibrada

  • Imita al juego base. Un tentempié tiene entre 2 y 4 de nutrición, y una comida completa entre 6 y 8. Los números muy altos hacen que el resto de comidas no sirvan para nada.
  • Los efectos deberían costar algo. Un efecto potente es divertido en una comida rara, no en una que puedas fabricar con tierra. Átalo a una receta difícil (mira Recetas de fabricación y de horno).
  • Reserva can_always_eat para algo especial. El juego base solo lo usa en cosas como las manzanas doradas, para que se sienta como una recompensa.
  • El tamaño de la pila importa. Las pilas pequeñas (16) hacen que sea más difícil acumular comida potente.

Cuando algo falla

Lo que vesCausa más probable
No te lo puedes comer de ninguna formaFalta minecraft:use_modifiers o use_duration vale 0
Te lo puedes comer, pero solo con hambreEs lo normal. Añade can_always_eat para cambiarlo
No hay efecto después de comerEl módulo de script no está en el manifiesto, o el nombre del componente no coincide entre el objeto y el script
Un aviso sobre effectsHas usado el campo antiguo: cámbialo por el componente personalizado de arriba

Tienes más ayuda en Solución de problemas. Lo siguiente: Armas y herramientas.

Objetos: Guías

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