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.
- Abre el Taller y añade una Criatura a tu complemento.
- Construye el cuerpo en el editor de modelos 3D y luego pinta su piel con el pintor de modelos.
- Ajusta su vida, su velocidad y sus comportamientos, y añade un Huevo generador.
- Toca Exportar. Obtienes un
.mcaddoncon 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.
| Archivo | Paquete | Qué hace |
|---|---|---|
entities/critter.json | BP | Vida, movimiento y comportamientos |
spawn_rules/critter.json | BP | Dónde aparece de forma natural |
entity/critter.entity.json | RP | Qué modelo, piel y animaciones usa |
models/entity/critter.geo.json | RP | El modelo 3D |
textures/entity/critter.png | RP | La piel |
texts/en_US.lang | RP | Los nombres de la criatura y de su huevo |
Paso 1: el archivo de comportamiento
{
"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:
identifieres el ID de la criatura, el que usa/summon myname:critter.is_spawnablepermite que tenga huevo generador y que aparezca de forma natural.is_summonablete permite usar /summon con ella.
Los componentes básicos:
minecraft:type_familyda a la criatura etiquetas que otras criaturas y los comandos pueden comprobar, como@e[family=critter].minecraft:health:valuees la vida inicial ymaxla máxima que puede tener. Cada corazón son 2 puntos.minecraft:physicsle da gravedad y colisiones. Sin él, la criatura flota en el sitio.minecraft:collision_boxes la caja invisible que choca con las cosas, medida en bloques.
El trío del movimiento (los tres hacen falta para caminar):
minecraft:movementfija la velocidad. 0.25 es más o menos la velocidad de una vaca.minecraft:movement.basices el tipo de movimiento: caminar normal por el suelo.minecraft:navigation.walkle permite planear rutas por tierra. Aquí evita el agua y cosas como el fuego.
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).
behavior.float: nada hacia arriba en el agua para no ahogarse.behavior.panic: huye más rápido después de recibir daño.behavior.random_stroll: deambula por ahí.behavior.look_at_player: gira la cabeza hacia los jugadores cercanos.behavior.random_look_around: mira a su alrededor cuando no hace nada.
Paso 2: el modelo
El modelo está hecho de huesos, y cada hueso contiene cubos. Las unidades son píxeles: 16 forman un bloque.
{
"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:
{
"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_alphatesthace que los píxeles totalmente transparentes de la piel se vean a través.render_controllers:controller.render.defaultes un controlador del juego base que dibuja la geometríadefaultcon la textura y el materialdefault. 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 Molangquery.modified_move_speed(consulta Consultas de Molang).spawn_egg: los dos colores del huevo. En su lugar puedes usar"texture"con un nombre corto deitem_texture.json.
Paso 5: los nombres
entity.myname:critter.name=Critter
item.spawn_egg.entity.myname:critter.name=Critter Spawn EggPaso 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:
{
"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
- Instala los dos paquetes (Exportar e instalar) y actívalos en un mundo.
- Busca el Critter Spawn Egg en el inventario creativo, o ejecuta
/summon myname:critter. - 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.basicynavigation.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
- Estudia criaturas reales en Entidades del juego base para ver cómo están hechas las vacas y los cerdos.
- Añade más comportamientos de la referencia de componentes de entidad, como
behavior.panic. - Dale un hogar a tu criatura con Tu primer bloque personalizado.