Dans ce guide, tu vas créer une Bestiole : une petite créature amicale à quatre pattes qui se balade, te regarde et s'enfuit quand on la blesse. Elle a un modèle 3D, une peau, un œuf d'apparition et peut apparaître toute seule sur l'herbe.
Les créatures sont le type d'objet d'add-on le plus gros, car elles vivent dans les deux packs : le pack de comportements dit ce que fait la créature, et le pack de ressources dit à quoi elle ressemble.
La méthode rapide : GodCraft
Faire un modèle à la main, c'est taper des coordonnées de cubes. Dans GodCraft, tu le modèles plutôt du bout des doigts.
- Ouvre l'Atelier et ajoute une Créature à ton add-on.
- Construis le corps dans l'éditeur de modèles 3D, puis peins sa peau avec le peintre de modèles.
- Règle sa santé, sa vitesse et ses comportements, et ajoute un Œuf d'apparition.
- Touche Exporter. Tu obtiens un
.mcaddonavec tous les fichiers ci-dessous déjà écrits, manifestes, UUID et noms compris.
À la main
Commence avec un pack de comportements (BP) et un pack de ressources (RP) issus de Configuration du projet. On utilise l'espace de noms myname, donc notre créature est myname:critter.
| Fichier | Pack | Ce qu'il fait |
|---|---|---|
entities/critter.json | BP | Santé, déplacement et comportements |
spawn_rules/critter.json | BP | Où elle apparaît naturellement |
entity/critter.entity.json | RP | Quels modèle, peau et animations utiliser |
models/entity/critter.geo.json | RP | Le modèle 3D |
textures/entity/critter.png | RP | La peau |
texts/en_US.lang | RP | Les noms de la créature et de son œuf |
Étape 1 : le fichier de comportement
{
"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 :
identifierest l'ID de la créature, utilisé par/summon myname:critter.is_spawnablelui permet d'avoir un œuf d'apparition et d'apparaître naturellement.is_summonablete permet d'utiliser /summon dessus.
Les composants de base :
minecraft:type_familydonne à la créature des étiquettes que d'autres créatures et les commandes peuvent tester, comme@e[family=critter].minecraft:health:valueest la santé de départ,maxle maximum possible. Chaque cœur vaut 2 points.minecraft:physicslui donne la gravité et les collisions. Sans lui, la créature flotte sur place.minecraft:collision_boxest la boîte invisible qui heurte les choses, en blocs.
Le trio du déplacement (les trois sont nécessaires pour marcher) :
minecraft:movementrègle la vitesse. 0.25, c'est à peu près la vitesse d'une vache.minecraft:movement.basicest le type de déplacement : la marche simple au sol.minecraft:navigation.walklui permet de tracer des chemins sur la terre ferme. Ici, elle évite l'eau et les choses comme le feu.
minecraft:jump.static lui permet de sauter d'un bloc. Les composants pushable_by_entity et pushable_by_block permettent aux joueurs et aux pistons de la pousser, et minecraft:breathable gère l'air sous l'eau.
Comportements et priorité
Les composants qui commencent par behavior. sont le « cerveau » de la créature. Chacun a une priority : les nombres les plus bas gagnent. Quand la Bestiole est blessée, panic (priorité 1) prend le dessus sur random_stroll (priorité 4).
behavior.float: remonter à la surface dans l'eau pour ne pas se noyer.behavior.panic: s'enfuir plus vite après avoir subi des dégâts.behavior.random_stroll: se promener.behavior.look_at_player: tourner la tête vers les joueurs proches.behavior.random_look_around: jeter des coups d'œil autour d'elle quand elle ne fait rien.
Étape 2 : le modèle
Le modèle est fait d'os, et chaque os contient des cubes. L'unité est le pixel : 16 pixels font un bloc.
{
"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] }] }
]
}
]
}Les os s'appellent head et leg0 à leg3 exprès : les animations vanilla de marche et de regard bougent des os portant exactement ces noms, donc on peut les réutiliser gratuitement.
Étape 3 : la peau
Peins un PNG de 64x32 et enregistre-le sous RP/textures/entity/critter.png. Le uv de chaque cube indique au jeu quelle partie de l'image s'enroule autour. Peindre des dispositions UV à la main est délicat, c'est pourquoi un peintre de modèles aide autant. Consulte Textures en pixel art pour des astuces.
Étape 4 : l'entité client
Ce fichier relie l'ID au modèle, à la peau, aux animations et à l'œuf d'apparition :
{
"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_alphatestrend transparents les pixels totalement transparents de la peau.render_controllers:controller.render.defaultest un contrôleur vanilla qui dessine la géométriedefaultavec la texture et le matériaudefault. Parfait pour une créature à une seule peau.scripts.animate: l'animation de marche joue aussi vite que la créature avance, grâce à la requête Molangquery.modified_move_speed(voir Requêtes Molang).spawn_egg: les deux couleurs de l'œuf. Tu peux utiliser"texture"avec un nom court deitem_texture.jsonà la place.
Étape 5 : les noms
entity.myname:critter.name=Critter
item.spawn_egg.entity.myname:critter.name=Critter Spawn EggÉtape 6 : apparition naturelle (facultatif)
Sans ce fichier, la créature n'apparaît qu'avec son œuf ou /summon. Avec lui, les Bestioles apparaissent sur l'herbe en plein jour, en petits groupes :
{
"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 indique à quelle fréquence elle est choisie par rapport aux autres créatures. population_control: animal lui fait partager la limite d'animaux du monde, pour qu'elle ne puisse pas envahir ton monde.
Teste ta créature
- Installe les deux packs (Exporter et installer) et active-les sur un monde.
- Trouve le Critter Spawn Egg dans l'inventaire créatif, ou lance
/summon myname:critter. - Regarde-la se promener et te regarder. Frappe-la une fois : elle devrait s'enfuir.
Créature invisible ou seulement une ombre
Le jeu a trouvé le fichier de comportement mais pas le modèle ou la peau. Vérifie que l'identifier est le même dans les deux packs, que le nom de la géométrie correspond exactement à geometry.myname.critter, et que le chemin de la texture n'a pas de .png.
- La créature ne bouge pas. Les trois éléments de déplacement sont nécessaires :
movement,movement.basicetnavigation.walk, plus au moins un comportement de marche. - La créature tombe à travers le sol ou flotte. Vérifie que
minecraft:physicsest bien là.
Consulte Dépannage pour en savoir plus.
Et ensuite
- Étudie de vraies créatures dans Entités vanilla pour voir comment sont faits les vaches et les cochons.
- Ajoute d'autres comportements depuis la référence des composants d'entité, comme
behavior.panic. - Offre un foyer à ta créature avec Ton premier bloc personnalisé.