1. Wiki
  2. /Entidades
  3. /Tu primera criatura personalizada

Tu primera criatura personalizada

Crea una criatura pasiva sencilla para Minecraft Bedrock que camina por ahí, mira a los jugadores y tiene su propio huevo generador.

En esta guía vas a crear un Critter: una criatura pequeña y simpática de cuatro patas que deambula, te mira y sale corriendo cuando le hacen daño. Tiene un modelo 3D, una piel (skin), un huevo generador y puede aparecer sola sobre la hierba.

Las criaturas son el tipo de objeto de complemento más grande, porque viven en los dos paquetes: el paquete de comportamiento dice qué hace la criatura, y el paquete de recursos dice cómo se ve.

La forma rápida: GodCraft

Hacer un modelo a mano significa escribir coordenadas de cubos. En GodCraft, en cambio, le das forma con los dedos.

  1. Abre el Taller y añade una Criatura a tu complemento.
  2. Construye el cuerpo en el editor de modelos 3D y luego pinta su piel con el pintor de modelos.
  3. Ajusta su vida, su velocidad y sus comportamientos, y añade un Huevo generador.
  4. Toca Exportar. Obtienes un .mcaddon con todos los archivos de abajo ya escritos, incluidos manifiestos, UUID y nombres.

A mano

Empieza con un paquete de comportamiento (BP) y un paquete de recursos (RP) de Preparar el proyecto. Usamos el espacio de nombres myname, así que nuestra criatura es myname:critter.

ArchivoPaqueteQué hace
entities/critter.jsonBPVida, movimiento y comportamientos
spawn_rules/critter.jsonBPDónde aparece de forma natural
entity/critter.entity.jsonRPQué modelo, piel y animaciones usa
models/entity/critter.geo.jsonRPEl modelo 3D
textures/entity/critter.pngRPLa piel
texts/en_US.langRPLos nombres de la criatura y de su huevo

Paso 1: el archivo de comportamiento

BP/entities/critter.json
{
  "format_version": "1.26.50",
  "minecraft:entity": {
    "description": {
      "identifier": "myname:critter",
      "is_spawnable": true,
      "is_summonable": true
    },
    "components": {
      "minecraft:type_family": {
        "family": ["critter", "mob"]
      },
      "minecraft:health": {
        "value": 8,
        "max": 8
      },
      "minecraft:physics": {},
      "minecraft:collision_box": {
        "width": 0.6,
        "height": 0.7
      },
      "minecraft:movement": {
        "value": 0.25
      },
      "minecraft:movement.basic": {},
      "minecraft:navigation.walk": {
        "avoid_water": true,
        "avoid_damage_blocks": true
      },
      "minecraft:jump.static": {},
      "minecraft:pushable_by_entity": {},
      "minecraft:pushable_by_block": {},
      "minecraft:breathable": {
        "total_supply": 15,
        "suffocate_time": 0
      },
      "minecraft:behavior.float": {
        "priority": 0
      },
      "minecraft:behavior.panic": {
        "priority": 1,
        "speed_multiplier": 1.4
      },
      "minecraft:behavior.random_stroll": {
        "priority": 4,
        "speed_multiplier": 0.8
      },
      "minecraft:behavior.look_at_player": {
        "priority": 5,
        "look_distance": 6.0,
        "probability": 0.02
      },
      "minecraft:behavior.random_look_around": {
        "priority": 6
      }
    }
  }
}

La description:

  • identifier es el ID de la criatura, el que usa /summon myname:critter.
  • is_spawnable permite que tenga huevo generador y que aparezca de forma natural.
  • is_summonable te permite usar /summon con ella.

Los componentes básicos:

  • minecraft:type_family da a la criatura etiquetas que otras criaturas y los comandos pueden comprobar, como @e[family=critter].
  • minecraft:health: value es la vida inicial y max la máxima que puede tener. Cada corazón son 2 puntos.
  • minecraft:physics le da gravedad y colisiones. Sin él, la criatura flota en el sitio.
  • minecraft:collision_box es la caja invisible que choca con las cosas, medida en bloques.

El trío del movimiento (los tres hacen falta para caminar):

minecraft:jump.static le permite subir de un salto un bloque. Los componentes pushable_by_entity y pushable_by_block dejan que los jugadores y los pistones la empujen, y minecraft:breathable controla el aire bajo el agua.

Comportamientos y prioridad

Los componentes que empiezan por behavior. son el "cerebro" de la criatura. Cada uno tiene una priority: gana el número más bajo. Cuando el Critter recibe daño, panic (prioridad 1) se impone a random_stroll (prioridad 4).

Paso 2: el modelo

El modelo está hecho de huesos, y cada hueso contiene cubos. Las unidades son píxeles: 16 forman un bloque.

RP/models/entity/critter.geo.json
{
  "format_version": "1.12.0",
  "minecraft:geometry": [
    {
      "description": {
        "identifier": "geometry.myname.critter",
        "texture_width": 64,
        "texture_height": 32,
        "visible_bounds_width": 2,
        "visible_bounds_height": 1.5,
        "visible_bounds_offset": [0, 0.5, 0]
      },
      "bones": [
        {
          "name": "body",
          "pivot": [0, 4, 0],
          "cubes": [{ "origin": [-3, 4, -4], "size": [6, 5, 8], "uv": [0, 0] }]
        },
        {
          "name": "head",
          "parent": "body",
          "pivot": [0, 8, -4],
          "cubes": [{ "origin": [-2.5, 6, -8.5], "size": [5, 5, 5], "uv": [0, 13] }]
        },
        { "name": "leg0", "parent": "body", "pivot": [-2, 4, 3], "cubes": [{ "origin": [-3, 0, 2], "size": [2, 4, 2], "uv": [28, 0] }] },
        { "name": "leg1", "parent": "body", "pivot": [2, 4, 3], "cubes": [{ "origin": [1, 0, 2], "size": [2, 4, 2], "uv": [28, 0] }] },
        { "name": "leg2", "parent": "body", "pivot": [-2, 4, -3], "cubes": [{ "origin": [-3, 0, -4], "size": [2, 4, 2], "uv": [28, 0] }] },
        { "name": "leg3", "parent": "body", "pivot": [2, 4, -3], "cubes": [{ "origin": [1, 0, -4], "size": [2, 4, 2], "uv": [28, 0] }] }
      ]
    }
  ]
}

Los huesos se llaman head y de leg0 a leg3 a propósito: las animaciones de caminar y mirar del juego base mueven huesos con exactamente esos nombres, así que podemos reutilizarlas gratis.

Paso 3: la piel

Pinta un PNG de 64x32 y guárdalo como RP/textures/entity/critter.png. El uv de cada cubo le dice al juego qué parte de la imagen lo envuelve. Pintar a mano la distribución UV es delicado, y por eso un pintor de modelos ayuda tanto. Consulta Texturas pixeladas para ver consejos.

Paso 4: la entidad de cliente

Este archivo conecta el ID con el modelo, la piel, las animaciones y el huevo generador:

RP/entity/critter.entity.json
{
  "format_version": "1.10.0",
  "minecraft:client_entity": {
    "description": {
      "identifier": "myname:critter",
      "materials": { "default": "entity_alphatest" },
      "textures": { "default": "textures/entity/critter" },
      "geometry": { "default": "geometry.myname.critter" },
      "animations": {
        "walk": "animation.quadruped.walk",
        "look_at_target": "animation.common.look_at_target"
      },
      "scripts": {
        "animate": [
          { "walk": "query.modified_move_speed" },
          "look_at_target"
        ]
      },
      "render_controllers": ["controller.render.default"],
      "spawn_egg": {
        "base_color": "#c98a4b",
        "overlay_color": "#5a3a1e"
      }
    }
  }
}
  • materials: entity_alphatest hace que los píxeles totalmente transparentes de la piel se vean a través.
  • render_controllers: controller.render.default es un controlador del juego base que dibuja la geometría default con la textura y el material default. Perfecto para una criatura con una sola piel.
  • scripts.animate: la animación de caminar va tan rápido como se mueve la criatura, gracias a la consulta de Molang query.modified_move_speed (consulta Consultas de Molang).
  • spawn_egg: los dos colores del huevo. En su lugar puedes usar "texture" con un nombre corto de item_texture.json.

Paso 5: los nombres

RP/texts/en_US.lang
entity.myname:critter.name=Critter
item.spawn_egg.entity.myname:critter.name=Critter Spawn Egg

Paso 6: aparición natural (opcional)

Sin este archivo, la criatura solo aparece con su huevo o con /summon. Con él, los Critters aparecen sobre la hierba con luz de día, en grupos pequeños:

BP/spawn_rules/critter.json
{
  "format_version": "1.8.0",
  "minecraft:spawn_rules": {
    "description": {
      "identifier": "myname:critter",
      "population_control": "animal"
    },
    "conditions": [
      {
        "minecraft:spawns_on_surface": {},
        "minecraft:spawns_on_block_filter": "minecraft:grass_block",
        "minecraft:brightness_filter": { "min": 7, "max": 15, "adjust_for_weather": false },
        "minecraft:weight": { "default": 8 },
        "minecraft:herd": { "min_size": 1, "max_size": 3 },
        "minecraft:biome_filter": { "test": "has_biome_tag", "operator": "==", "value": "animal" }
      }
    ]
  }
}

weight indica con qué frecuencia se elige en comparación con otras criaturas. population_control: animal hace que comparta el límite de animales del mundo, así que no puede inundar tu mundo.

Prueba tu criatura

  1. Instala los dos paquetes (Exportar e instalar) y actívalos en un mundo.
  2. Busca el Critter Spawn Egg en el inventario creativo, o ejecuta /summon myname:critter.
  3. Mira cómo deambula y te mira. Golpéalo una vez: debería salir corriendo.

Criatura invisible o solo una sombra

El juego encontró el archivo de comportamiento, pero no el modelo o la piel. Comprueba que el identifier sea el mismo en los dos paquetes, que el nombre de la geometría coincida exactamente con geometry.myname.critter y que la ruta de la textura no lleve .png.

  • La criatura no se mueve. Hacen falta las tres partes del movimiento: movement, movement.basic y navigation.walk, además de al menos un comportamiento para caminar.
  • La criatura atraviesa el suelo o flota. Comprueba que esté minecraft:physics.

Consulta Solución de problemas para más ayuda.

Siguientes pasos

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