1. Wiki
  2. /Entidades
  3. /El archivo de entidad de cliente

El archivo de entidad de cliente

La parte del paquete de recursos de una criatura de Bedrock: el archivo de entidad de cliente con materiales, texturas, geometría, animaciones, controladores de renderizado, scripts y huevo generador.

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

Paquete de recursos
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.json

Solo 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.

RP/entity/ruby_golem.entity.json
{
  "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.

RP/entity/ruby_golem.entity.json (description)
"materials": {
  "default": "entity_alphatest",
  "glow": "entity_emissive_alpha"
}
MaterialÚsalo para
entityTexturas totalmente sólidas, sin píxeles transparentes
entity_alphatestTexturas con huecos totalmente transparentes. La opción por defecto más segura.
entity_alphablendPíxeles semitransparentes, como el cristal o el slime
entity_emissive_alphaPartes 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.

RP/entity/ruby_golem.entity.json (description)
"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.

RP/entity/ruby_golem.entity.json (description)
"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.

RP/entity/ruby_golem.entity.json (description)
"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ónMueveHuesos que espera
animation.common.look_at_targetLa cabeza hacia lo que mira la criaturahead
animation.quadruped.walkCuatro patas al caminarleg0 a leg3
animation.humanoid.moveBrazos y piernas al caminarleftarm, rightarm, leftleg, rightleg

animation_controllers

Los archivos de cliente más antiguos ponen los controladores en su propia lista en lugar de en animations:

Estilo antiguo
"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.

RP/entity/ruby_golem.entity.json (description)
"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:

RP/render_controllers/ruby_golem.render_controllers.json
{
  "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:

Un controlador de renderizado con una condición
"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.

ScriptCuándo se ejecutaPara qué sirve
initializeUna vez, cuando la criatura aparece por primera vezDar valores iniciales a las variables
pre_animationEn cada fotograma, antes de las animacionesCalcular valores que necesitan las animaciones
animateEn cada fotogramaQué animaciones y controladores se reproducen
scaleEn cada fotogramaHacer todo el modelo más grande o más pequeño
variablesNo es un script: es una listaMarcar 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:

RP/entity/ruby_golem.entity.json (scripts)
"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

RP/entity/ruby_golem.entity.json (scripts)
"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

RP/entity/ruby_golem.entity.json (scripts)
"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:

RP/entity/ruby_golem.entity.json (description)
"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):

RP/entity/ruby_golem.entity.json (description)
"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:

RP/texts/en_US.lang
entity.wiki:ruby_golem.name=Ruby Golem
item.spawn_egg.entity.wiki:ruby_golem.name=Ruby Golem Spawn Egg

Otros campos

CampoQué hace
enable_attachablestrue muestra la armadura y los objetos en la mano de la criatura, usando attachables
hide_armortrue oculta cualquier armadura que lleve la criatura
held_item_ignores_lightingtrue dibuja los objetos en la mano totalmente iluminados, incluso a oscuras
locatorsPuntos con nombre en el modelo, como el lugar donde se ata una rienda
particle_effectsNombres cortos para partículas, para usarlas en animaciones
sound_effectsNombres cortos para sonidos, para usarlos en animaciones
min_engine_versionSolo carga este archivo cuando el paquete apunta a esta versión del juego o a una más reciente

Cuando algo falla

Lo que vesCausa más probable
La criatura es invisible, solo se ve una sombraEl identifier no coincide con el paquete de comportamiento, o el nombre de la geometría está mal
Cuadros morados y negrosLa ruta de la textura está mal, o termina en .png
Los huecos se ven negros en vez de transparentesUsa entity_alphatest en lugar de entity
Una animación nunca se reproduceEstá en animations pero no en scripts.animate ni en un controlador
No hay huevo generadorFalta spawn_egg, o is_spawnable es false en el paquete de comportamiento
La textura nunca cambiaA 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.

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