1. Wiki
  2. /Entités
  3. /Ta première créature personnalisée

Ta première créature personnalisée

Crée une créature passive simple pour Minecraft Bedrock qui se promène, regarde les joueurs et a son propre œuf d'apparition.

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.

  1. Ouvre l'Atelier et ajoute une Créature à ton add-on.
  2. Construis le corps dans l'éditeur de modèles 3D, puis peins sa peau avec le peintre de modèles.
  3. Règle sa santé, sa vitesse et ses comportements, et ajoute un Œuf d'apparition.
  4. Touche Exporter. Tu obtiens un .mcaddon avec 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.

FichierPackCe qu'il fait
entities/critter.jsonBPSanté, déplacement et comportements
spawn_rules/critter.jsonBPOù elle apparaît naturellement
entity/critter.entity.jsonRPQuels modèle, peau et animations utiliser
models/entity/critter.geo.jsonRPLe modèle 3D
textures/entity/critter.pngRPLa peau
texts/en_US.langRPLes noms de la créature et de son œuf

Étape 1 : le fichier de comportement

BP/entities/critter.json
{
  "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 :

  • identifier est l'ID de la créature, utilisé par /summon myname:critter.
  • is_spawnable lui permet d'avoir un œuf d'apparition et d'apparaître naturellement.
  • is_summonable te permet d'utiliser /summon dessus.

Les composants de base :

  • minecraft:type_family donne à la créature des étiquettes que d'autres créatures et les commandes peuvent tester, comme @e[family=critter].
  • minecraft:health : value est la santé de départ, max le maximum possible. Chaque cœur vaut 2 points.
  • minecraft:physics lui donne la gravité et les collisions. Sans lui, la créature flotte sur place.
  • minecraft:collision_box est la boîte invisible qui heurte les choses, en blocs.

Le trio du déplacement (les trois sont nécessaires pour marcher) :

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

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

RP/models/entity/critter.geo.json
{
  "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 :

RP/entity/critter.entity.json
{
  "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_alphatest rend transparents les pixels totalement transparents de la peau.
  • render_controllers : controller.render.default est un contrôleur vanilla qui dessine la géométrie default avec la texture et le matériau default. 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 Molang query.modified_move_speed (voir Requêtes Molang).
  • spawn_egg : les deux couleurs de l'œuf. Tu peux utiliser "texture" avec un nom court de item_texture.json à la place.

Étape 5 : les noms

RP/texts/en_US.lang
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 :

BP/spawn_rules/critter.json
{
  "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

  1. Installe les deux packs (Exporter et installer) et active-les sur un monde.
  2. Trouve le Critter Spawn Egg dans l'inventaire créatif, ou lance /summon myname:critter.
  3. 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.basic et navigation.walk, plus au moins un comportement de marche.
  • La créature tombe à travers le sol ou flotte. Vérifie que minecraft:physics est bien là.

Consulte Dépannage pour en savoir plus.

Et ensuite

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