1. Wiki
  2. /Entités
  3. /Le fichier d'entité client

Le fichier d'entité client

Le côté pack de ressources d'une créature Bedrock : le fichier d'entité client avec les matériaux, les textures, la géométrie, les animations, les contrôleurs de rendu, les scripts et l'œuf d'apparition.

Le fichier de comportement décide de ce que fait une créature. Le fichier d'entité client décide de son apparence : quel modèle, quel skin, quelles animations et à quoi ressemble son œuf d'apparition. Il se trouve dans le pack de ressources.

Vois-le comme une liste de petits surnoms. Ici, tu donnes un nom court à chaque modèle, texture et animation, et les autres fichiers du pack de ressources utilisent ces noms.

Les fichiers

Pack de ressources
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

Seuls le fichier entity, un modèle et une texture sont obligatoires. Les autres sont facultatifs : tu peux emprunter des animations et des contrôleurs de rendu vanilla au lieu d'écrire les tiens.

Le nom du fichier peut être n'importe lequel. Ce qui le relie au pack de comportements, c'est l'identifier.

Un exemple complet

Voici le fichier client du golem de rubis de la page Le fichier d'entité. Il affiche une texture en colère quand la propriété wiki:mood du golem vaut 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 plupart des fichiers client vanilla utilisent "format_version": "1.10.0", et c'est aussi un bon choix pour le tien. La suite de la page passe en revue chaque champ.

identifier

L'identifiant de la créature, exactement comme dans le pack de comportements : wiki:ruby_golem. Si les deux ne correspondent pas, la créature est invisible.

materials

Un matériau indique au jeu comment dessiner les pixels : opaques, transparents, lumineux, etc. Tu choisis parmi les matériaux qui existent déjà dans le jeu et tu donnes un nom court à chacun.

RP/entity/ruby_golem.entity.json (description)
"materials": {
  "default": "entity_alphatest",
  "glow": "entity_emissive_alpha"
}
MatériauÀ utiliser pour
entityDes skins totalement opaques, sans pixels transparents
entity_alphatestDes skins avec des trous totalement transparents. Le choix par défaut le plus sûr.
entity_alphablendDes pixels semi-transparents, comme le verre ou le slime
entity_emissive_alphaDes parties qui brillent dans le noir, définies par l'alpha de la texture

Beaucoup de créatures vanilla ont des matériaux à leur nom (pig, iron_golem). Ils sont réglés pour une seule créature, donc pour la tienne, reste sur les matériaux généraux entity....

textures

Des noms courts pour chaque skin. Les chemins partent de la racine du pack de ressources et ne contiennent pas .png.

RP/entity/ruby_golem.entity.json (description)
"textures": {
  "default": "textures/entity/ruby_golem",
  "angry": "textures/entity/ruby_golem_angry"
}

Tu peux en lister autant que tu veux. C'est le contrôleur de rendu qui décide laquelle est affichée. Des conseils pour peindre des skins se trouvent dans Textures en pixel art.

geometry

Des noms courts pour chaque modèle. La valeur est l'identifier écrit dans le fichier .geo.json, pas le nom du fichier.

RP/entity/ruby_golem.entity.json (description)
"geometry": {
  "default": "geometry.wiki.ruby_golem"
}

Une créature peut avoir plusieurs modèles. Les poulets vanilla, par exemple, ont un modèle normal, un modèle froid et un modèle bébé.

animations

Des noms courts pour les animations et les contrôleurs d'animation. Tu peux mélanger les tiens avec ceux du jeu vanilla.

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

Leur donner un nom ne suffit pas : elles ne sont jouées que si elles sont listées dans scripts.animate (voir plus bas) ou lancées par un contrôleur d'animation.

Des animations vanilla pratiques à emprunter, si tes os ont les noms correspondants :

AnimationFait bougerOs attendus
animation.common.look_at_targetLa tête vers ce que regarde la créaturehead
animation.quadruped.walkQuatre pattes pendant la marcheleg0 à leg3
animation.humanoid.moveLes bras et les jambes pendant la marcheleftarm, rightarm, leftleg, rightleg

animation_controllers

Les anciens fichiers client listent les contrôleurs dans leur propre tableau au lieu de animations :

Ancien style
"animation_controllers": [
  { "attack": "controller.animation.wiki.ruby_golem.attack" }
]

Chaque entrée est un objet avec un nom court. Les contrôleurs listés ici tournent tout seuls, sans scripts.animate. Avec un format_version 1.10.0 ou plus récent, on met d'habitude les contrôleurs dans animations et on les lance depuis scripts.animate, comme dans l'exemple complet.

render_controllers

Un contrôleur de rendu choisit la géométrie, la texture et le matériau à dessiner. La liste peut en contenir plusieurs, et ils dessinent tous.

RP/entity/ruby_golem.entity.json (description)
"render_controllers": ["controller.render.wiki.ruby_golem"]

Pour une créature avec un seul modèle, un seul skin et un seul matériau, tu n'as pas besoin du tien. Le controller.render.default vanilla dessine ceux qui s'appellent default. Pour changer de texture, écris ton propre petit contrôleur :

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 et Texture.angry renvoient aux noms courts du fichier client. Le * dans materials veut dire "tous les os". La ligne de texture est une question Molang : les golems en colère reçoivent le skin en colère.

Ça ne marche que parce que la propriété a "client_sync": true dans le pack de comportements. Sans ça, le pack de ressources ne peut pas voir la valeur.

Tu peux aussi activer ou désactiver un contrôleur de rendu entier avec une condition Molang. Les creepers vanilla le font pour leur lueur quand ils sont chargés :

Un contrôleur de rendu avec une condition
"render_controllers": [
  "controller.render.wiki.ruby_golem",
  { "controller.render.wiki.ruby_golem_glow": "q.property('wiki:mood') == 'angry'" }
]

scripts

scripts contient de petits morceaux de Molang qui s'exécutent sur l'appareil du joueur.

ScriptQuand il s'exécuteÀ quoi il sert
initializeUne fois, quand la créature apparaît pour la première foisDéfinir les valeurs de départ des variables
pre_animationÀ chaque image, avant les animationsCalculer des valeurs dont les animations ont besoin
animateÀ chaque imageChoisir les animations et les contrôleurs à jouer
scaleÀ chaque imageAgrandir ou rétrécir tout le modèle
variablesPas un script : une listeMarquer des variables comme public pour que les attachables puissent les lire

animate

Chaque entrée est un nom court tiré de animations. Mets-le dans un objet pour le jouer avec une intensité de 0 à 1 :

RP/entity/ruby_golem.entity.json (scripts)
"animate": [
  { "walk": "q.modified_move_speed" },
  "look_at_target",
  "attack_controller"
]

walk est jouée plus fort quand le golem avance plus vite, et s'arrête quand il est immobile. look_at_target est toujours jouée.

scale

RP/entity/ruby_golem.entity.json (scripts)
"scale": "q.is_baby ? 0.5 : 1.2"

Ça change seulement l'apparence de la créature. Sa boîte de collision, définie dans le pack de comportements, garde la même taille. Les chauves-souris vanilla utilisent "0.35" pour rétrécir leur modèle.

pre_animation

RP/entity/ruby_golem.entity.json (scripts)
"pre_animation": [
  "v.is_angry = q.property('wiki:mood') == 'angry';"
]

Calcule une valeur une seule fois ici et utilise v.is_angry dans plein d'animations, au lieu de répéter partout la même longue expression.

spawn_egg

Sans spawn_egg, la créature n'a pas d'œuf dans l'inventaire créatif. Il y a deux façons d'en créer un.

Deux couleurs. Le jeu dessine un œuf standard avec une couleur de fond et des taches :

RP/entity/ruby_golem.entity.json (description)
"spawn_egg": {
  "base_color": "#9b111e",
  "overlay_color": "#f4c2c2"
}

Ta propre image. Utilise un nom court de item_texture.json, exactement comme pour l'icône d'un objet (voir Textures des objets) :

RP/entity/ruby_golem.entity.json (description)
"spawn_egg": {
  "texture": "wiki_ruby_golem_egg"
}

Si ce nom court contient une liste de plusieurs textures, ajoute "texture_index" pour en choisir une. Il commence à 0. L'œuf a aussi besoin de "is_spawnable": true dans le pack de comportements, et d'un nom dans le fichier de langue :

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

Autres champs

ChampCe qu'il fait
enable_attachablestrue affiche l'armure et les objets tenus sur la créature, grâce aux attachables
hide_armortrue masque l'armure que porte la créature
held_item_ignores_lightingtrue dessine les objets tenus entièrement éclairés, même dans le noir
locatorsDes points nommés sur le modèle, comme l'endroit où s'attache une laisse
particle_effectsDes noms courts pour les particules, à utiliser dans les animations
sound_effectsDes noms courts pour les sons, à utiliser dans les animations
min_engine_versionNe charge ce fichier que si le pack cible cette version du jeu ou une plus récente

Quand quelque chose ne va pas

Ce que tu voisCause la plus probable
La créature est invisible, on ne voit que son ombreL'identifier ne correspond pas au pack de comportements, ou le nom de la géométrie est faux
Un damier violet et noirLe chemin de la texture est faux, ou il se termine par .png
Les trous sont noirs au lieu d'être transparentsUtilise entity_alphatest au lieu de entity
Une animation n'est jamais jouéeElle est dans animations mais pas dans scripts.animate ni dans un contrôleur
Pas d'œuf d'apparitionspawn_egg est absent, ou is_spawnable vaut false dans le pack de comportements
La texture ne change jamaisIl manque "client_sync": true à la propriété

Tu trouveras plus d'aide dans Dépannage. Pour le guide complet de création d'une créature, consulte Ta première créature personnalisée.

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