El archivo de comportamiento decide lo que hace una criatura. El archivo de entidad de cliente decide qué aspecto tiene: qué modelo, qué textura, qué animaciones y cómo es su huevo generador. Vive en el paquete de recursos.
Piensa en él como una lista de apodos cortos. Aquí le das un nombre corto a cada modelo, textura y animación, y los demás archivos del paquete de recursos usan esos nombres.
Los archivos
RP/
entity/
ruby_golem.entity.json
models/
entity/
ruby_golem.geo.json
textures/
entity/
ruby_golem.png
ruby_golem_angry.png
animations/
ruby_golem.animation.json
animation_controllers/
ruby_golem.animation_controllers.json
render_controllers/
ruby_golem.render_controllers.jsonSolo son obligatorios el archivo de entity, un modelo y una textura. Los demás son opcionales: puedes tomar prestadas las animaciones y los controladores de renderizado del juego base en lugar de escribir los tuyos.
El nombre del archivo puede ser cualquiera. Lo que lo une al paquete de comportamiento es el identifier.
Un ejemplo completo
Este es el archivo de cliente del gólem de rubí de El archivo de entidad. Muestra una textura enfadada cuando la propiedad wiki:mood del gólem vale angry.
{
"format_version": "1.10.0",
"minecraft:client_entity": {
"description": {
"identifier": "wiki:ruby_golem",
"materials": {
"default": "entity_alphatest"
},
"textures": {
"default": "textures/entity/ruby_golem",
"angry": "textures/entity/ruby_golem_angry"
},
"geometry": {
"default": "geometry.wiki.ruby_golem"
},
"animations": {
"walk": "animation.wiki.ruby_golem.walk",
"attack": "animation.wiki.ruby_golem.attack",
"look_at_target": "animation.common.look_at_target",
"attack_controller": "controller.animation.wiki.ruby_golem.attack"
},
"scripts": {
"scale": "1.2",
"animate": [
{ "walk": "q.modified_move_speed" },
"look_at_target",
"attack_controller"
]
},
"render_controllers": ["controller.render.wiki.ruby_golem"],
"spawn_egg": {
"base_color": "#9b111e",
"overlay_color": "#f4c2c2"
}
}
}
}La mayoría de los archivos de cliente del juego base usan "format_version": "1.10.0", y también es una buena opción para el tuyo. El resto de la página repasa cada campo.
identifier
El ID de la criatura, exactamente igual que en el paquete de comportamiento: wiki:ruby_golem. Si los dos no coinciden, la criatura es invisible.
materials
Un material le dice al juego cómo dibujar los píxeles: sólidos, transparentes, brillantes, etc. Eliges entre materiales que ya existen en el juego y le das a cada uno un nombre corto.
"materials": {
"default": "entity_alphatest",
"glow": "entity_emissive_alpha"
}| Material | Úsalo para |
|---|---|
entity | Texturas totalmente sólidas, sin píxeles transparentes |
entity_alphatest | Texturas con huecos totalmente transparentes. La opción por defecto más segura. |
entity_alphablend | Píxeles semitransparentes, como el cristal o el slime |
entity_emissive_alpha | Partes que brillan en la oscuridad, según el canal alfa de la textura |
Muchas criaturas del juego base tienen materiales con su propio nombre (pig, iron_golem). Están ajustados para una sola criatura, así que para la tuya quédate con los generales que empiezan por entity....
textures
Nombres cortos para cada textura. Las rutas empiezan en la raíz del paquete de recursos y no llevan .png.
"textures": {
"default": "textures/entity/ruby_golem",
"angry": "textures/entity/ruby_golem_angry"
}Puedes poner todas las que quieras. El controlador de renderizado decide cuál se muestra. Tienes consejos para pintar texturas en Texturas pixeladas.
geometry
Nombres cortos para cada modelo. El valor es el identifier que está escrito dentro del archivo .geo.json, no el nombre del archivo.
"geometry": {
"default": "geometry.wiki.ruby_golem"
}Una criatura puede tener varios modelos. Las gallinas del juego base, por ejemplo, tienen un modelo normal, uno de clima frío y uno de cría.
animations
Nombres cortos para animaciones y controladores de animación. Puedes mezclar los tuyos con los del juego base.
"animations": {
"walk": "animation.wiki.ruby_golem.walk",
"look_at_target": "animation.common.look_at_target",
"attack_controller": "controller.animation.wiki.ruby_golem.attack"
}Ponerles nombre no basta: solo se reproducen cuando están en scripts.animate (más abajo) o cuando las inicia un controlador de animación.
Animaciones útiles del juego base que puedes tomar prestadas, si tus huesos tienen los nombres correspondientes:
| Animación | Mueve | Huesos que espera |
|---|---|---|
animation.common.look_at_target | La cabeza hacia lo que mira la criatura | head |
animation.quadruped.walk | Cuatro patas al caminar | leg0 a leg3 |
animation.humanoid.move | Brazos y piernas al caminar | leftarm, rightarm, leftleg, rightleg |
animation_controllers
Los archivos de cliente más antiguos ponen los controladores en su propia lista en lugar de en animations:
"animation_controllers": [
{ "attack": "controller.animation.wiki.ruby_golem.attack" }
]Cada entrada es un objeto con un nombre corto. Los controladores de esta lista se ejecutan solos, sin scripts.animate. Con format_version 1.10.0 o más reciente, lo habitual es poner los controladores en animations e iniciarlos desde scripts.animate, como en el ejemplo completo.
render_controllers
Un controlador de renderizado elige qué geometría, textura y material dibujar. La lista puede tener varios, y se dibujan todos.
"render_controllers": ["controller.render.wiki.ruby_golem"]Para una criatura con un modelo, una textura y un material, no necesitas uno propio. El controller.render.default del juego base dibuja los que se llaman default. Para cambiar de textura, escribe un pequeño controlador propio:
{
"format_version": "1.8.0",
"render_controllers": {
"controller.render.wiki.ruby_golem": {
"geometry": "Geometry.default",
"materials": [{ "*": "Material.default" }],
"textures": [
"q.property('wiki:mood') == 'angry' ? Texture.angry : Texture.default"
]
}
}
}Geometry.default, Material.default y Texture.angry se refieren a los nombres cortos del archivo de cliente. El * de materials significa "todos los huesos". La línea de la textura es una pregunta en Molang: los gólems enfadados reciben la textura enfadada.
Esto solo funciona porque la propiedad tiene "client_sync": true en el paquete de comportamiento. Sin eso, el paquete de recursos no puede ver el valor.
También puedes activar y desactivar un controlador de renderizado entero con una condición de Molang. Los creepers del juego base lo hacen para su brillo de creeper cargado:
"render_controllers": [
"controller.render.wiki.ruby_golem",
{ "controller.render.wiki.ruby_golem_glow": "q.property('wiki:mood') == 'angry'" }
]scripts
scripts contiene pequeños fragmentos de Molang que se ejecutan en el dispositivo del jugador.
| Script | Cuándo se ejecuta | Para qué sirve |
|---|---|---|
initialize | Una vez, cuando la criatura aparece por primera vez | Dar valores iniciales a las variables |
pre_animation | En cada fotograma, antes de las animaciones | Calcular valores que necesitan las animaciones |
animate | En cada fotograma | Qué animaciones y controladores se reproducen |
scale | En cada fotograma | Hacer todo el modelo más grande o más pequeño |
variables | No es un script: es una lista | Marcar variables como public para que los attachables puedan leerlas |
animate
Cada entrada es un nombre corto de animations. Envuélvelo en un objeto para reproducirlo con una intensidad de 0 a 1:
"animate": [
{ "walk": "q.modified_move_speed" },
"look_at_target",
"attack_controller"
]walk se reproduce con más fuerza cuanto más rápido se mueve el gólem, y se detiene cuando está quieto. look_at_target se reproduce siempre.
scale
"scale": "q.is_baby ? 0.5 : 1.2"Esto solo cambia el aspecto de la criatura. Su caja de colisión, definida en el paquete de comportamiento, sigue teniendo el mismo tamaño. Los murciélagos del juego base usan "0.35" para encoger su modelo.
pre_animation
"pre_animation": [
"v.is_angry = q.property('wiki:mood') == 'angry';"
]Calcula aquí un valor una sola vez y usa v.is_angry en muchas animaciones, en lugar de repetir la misma expresión larga por todas partes.
spawn_egg
Sin spawn_egg, la criatura no tiene huevo en el inventario creativo. Hay dos formas de hacer uno.
Dos colores. El juego dibuja un huevo estándar con un color de fondo y manchas:
"spawn_egg": {
"base_color": "#9b111e",
"overlay_color": "#f4c2c2"
}Tu propia imagen. Usa un nombre corto de item_texture.json, igual que el icono de un objeto (mira Texturas de objetos):
"spawn_egg": {
"texture": "wiki_ruby_golem_egg"
}Si ese nombre corto tiene una lista de varias texturas, añade "texture_index" para elegir una. Empieza en 0. El huevo también necesita "is_spawnable": true en el paquete de comportamiento y un nombre en el archivo de idioma:
entity.wiki:ruby_golem.name=Ruby Golem
item.spawn_egg.entity.wiki:ruby_golem.name=Ruby Golem Spawn EggOtros campos
| Campo | Qué hace |
|---|---|
enable_attachables | true muestra la armadura y los objetos en la mano de la criatura, usando attachables |
hide_armor | true oculta cualquier armadura que lleve la criatura |
held_item_ignores_lighting | true dibuja los objetos en la mano totalmente iluminados, incluso a oscuras |
locators | Puntos con nombre en el modelo, como el lugar donde se ata una rienda |
particle_effects | Nombres cortos para partículas, para usarlas en animaciones |
sound_effects | Nombres cortos para sonidos, para usarlos en animaciones |
min_engine_version | Solo carga este archivo cuando el paquete apunta a esta versión del juego o a una más reciente |
Cuando algo falla
| Lo que ves | Causa más probable |
|---|---|
| La criatura es invisible, solo se ve una sombra | El identifier no coincide con el paquete de comportamiento, o el nombre de la geometría está mal |
| Cuadros morados y negros | La ruta de la textura está mal, o termina en .png |
| Los huecos se ven negros en vez de transparentes | Usa entity_alphatest en lugar de entity |
| Una animación nunca se reproduce | Está en animations pero no en scripts.animate ni en un controlador |
| No hay huevo generador | Falta spawn_egg, o is_spawnable es false en el paquete de comportamiento |
| La textura nunca cambia | A la propiedad le falta "client_sync": true |
Tienes más ayuda en Solución de problemas. Para ver paso a paso cómo se hace una criatura, mira Tu primera criatura personalizada.