Partager via


Introduction aux packs de comportement

Avant d'élaborer votre première extension pour Minecraft: Bedrock Edition, il vous faudra créer un pack afin de conserver votre contenu personnalisé. Il existe deux types de packs qu'un créateur peut élaborer: les packs de ressources et les packs de comportement. Un pack de comportement est une structure de dossiers contenant des fichiers qui gèrent les comportements des entités, les attributions de butin, les règles d’apparition, les objets, les recettes et les tables d’échange. Ce tutoriel explique comment créer des packs de comportement et comment ajouter une série de comportements à une entité de vache dans le jeu pour qu'elle devienne agressive.

Image d’une vache pourchassant Steve

Dans ce tutoriel, vous apprendrez les éléments suivants:

  • Qu'il est possible de modifier le comportement d'une entité dans Minecraft: Bedrock Edition.
  • Comment associer un pack de comportement à un pack de ressources.

Conditions

Nous vous recommandons de compléter les étapes suivantes avant de commencer ce tutoriel.

Création du pack de comportement

Un pack de comportement contient des fichiers que des créateurs (tels que vous) utilisent pour ajouter, supprimer ou modifier les comportements des entités dans Minecraft. Un fichier de comportement d'entité est ce qui fait que chaque entité effectue certaines actions, comme par exemple un poulet suivant un joueur tenant des graines.

Pour que Minecraft trouve et utilise vos fichiers de comportement, vous devez configurer les dossiers et les fichiers selon une structure particulière. Ce tutoriel vous guidera dans les étapes de création de cette structure de dossiers et de fichiers.

Image de la structure de dossiers et de fichiers pour le pack de comportement.

Créer un dossier

Dans cette section, vous allez créer un dossier appelé Mon_Pack_COMPORTEMENT. En fait, vous n'êtes pas obligé(e) de l'appeler de cette façon. En fait, vous pouvez nommer ce dossier comme vous le souhaitez, mais les autres doivent être nommés exactement comme indiqué dans ce tutoriel afin que Minecraft sache où les trouver.

  1. Ouvrez votre dossier com.mojang.
  2. Ouvrez le dossier development_behavior_packs.
  3. Dans le dossier development_behavior_packs, créez un nouveau dossier et nommez-le My_BEHAVIOR_Pack.
  4. Ouvrez le dossier My_BEHAVIOR_Pack. Image du dossier My_BEHAVIOR_Pack situé dans le dossier development_behavior_packs com.mojang.

Créer un fichier manifest

Afin de charger un pack de comportement dans Minecraft, un fichier manifest doit être créé. Le fichier manifeste du pack de comportement est similaire à celui créé pour le pack de ressources, mais il comporte deux sections supplémentaires.

  • modules: section définissant le pack pour que Minecraft sache l'appliquer au monde. Les packs de comportement utilisent les types de données.
  • dépendances: section créant un lien entre les packs de comportement et les packs de ressources pour ajouter des textures et des visuels personnalisés à Minecraft.
  1. Créez un nouveau document dans votre dossier My_BEHAVIOR_Pack et nommez-le manifest.json.
    1. Vous devrez changer l’extension du fichier de .txt à .json. Si votre fenêtre d'explorateur n'affiche pas les extensions de fichiers, vous pouvez activer Extensions de nom de fichier sous l'onglet affichage. Image du fichier manifest.json situé dans le dossier My_BEHAVIOR_Pack
  2. Cliquez deux fois sur le fichier manifest.json pour l’ouvrir dans un éditeur de texte.
  3. Copiez et collez le code suivant dans votre fichier.
{
  "format_version": 2,
  "header": {
    "description": "My attack cow behavior pack Add-On!",
    "name": "My Behavior Pack",
    "uuid":"",
    "version": [1, 0, 0],
    "min_engine_version": [1, 16, 0]
  },
  "modules":
    [
      {
        "description": "My First Add-On!",
          "type": "data",
          "uuid": "",
          "version": [1, 0, 0]
      }
    ],
  "dependencies": [
    {
     "uuid":"UUID from the header section of manifest.json in My_RESOURCE_Pack",
      "version":[1,0,0]
    }
 ]
}

Entrez les UUID

Comme pour le fichier manifest du pack de ressources, vous devrez générer deux UUID différents pour les sections d'en-tête et de modules de votre fichier manifest. Vous pouvez obtenir des UUID à partir d'un générateur en ligne tel que https://www.uuidgenerator.net/.

Image de l’écran d’accueil de UUIDGenerator.net avec création d'un UUID personnalisé

  1. Copiez et collez un UUID dans la section d'en-tête. L’UUID devra être collé dans le champ "uuid" entre des guillemets ("") pour être lu correctement.
  2. Actualisez la page Internet afin de générer un nouvel UUID à utiliser dans la section modules.
  3. Copiez et collez le nouvel UUID dans la section modules, dans le champ "uuid" entre guillemets.

Créer la dépendance

Il existe une troisième section dans le fichier manifest.json du pack de comportements appelée «dépendances» qui est utilisée pour créer un lien entre un pack de ressources et un pack de comportement. Ce lien est créé lorsque l'UUID situé dans la section d'en-tête du fichier manifest.json du pack de ressources est identique à l'UUID de la section des dépendances du fichier manifest.json du pack de comportement. Vous n'avez pas besoin d'avoir un pack de ressources pour utiliser un pack de comportement et vice-versa. Si vous avez les deux, vous pouvez utiliser cette solution pour les associer afin que lorsque vous chargez un pack de comportement dans un monde, il charge et active automatiquement le pack de ressources associé.

Image de l'UUID de l'en-tête du fichier manifest.json du pack de ressources dupliqué dans la section des dépendances du pack de comportement

  1. Ouvrez le fichier manifest.json situé dans le dossier My_RESOURCE_Pack sous le dossier development_resource_packs.
  2. Copiez l'UUID de la section d'en-tête du fichier manifest.json du pack de ressources.
  3. Accédez au fichier manifest.json situé dans le dossier **My_BEHAVIOR_Pack*, sous le dossier development_behavior_packs.
  4. Collez l'UUID dans le champ "uuid" de la section des dépendances. Vérifiez que tout ce qui se trouve entre les guillemets corresponde exactement.
  5. Enregistrez le fichier manifest.json du pack de comportement.

Image de l'UUID de l'en-tête du fichier manifest.json du pack de ressources dupliqué dans la section des dépendances du pack de comportement

Créer le dossier Entities et ajouter une vache

Les comportements de chaque entité sont définis dans son fichier JSON qui existe à l'intérieur du code faisant fonctionner Minecraft. Vous allez créer un nouveau fichier de comportement de vache que Minecraft utilisera à la place de son fichier de comportement standard.

  1. Dans le dossier My_BEHAVIOR_Pack, créez-en un autre et nommez-le entities.
  2. Créez un fichier texte dans le dossier entities et nommez-le cow.json.
  3. Copiez et collez le code suivant dans votre fichier cow.json. Après avoir enregistré le fichier, vous êtes fin prêt(e)!

Notes

Voici l'intégralité du fichier cow.json modifié. Il est conséquent car les vaches sont très actives!

{
    "format_version": "1.16.0",
    "minecraft:entity": {
        "description": {
            "identifier": "minecraft:cow",
            "is_spawnable": true,
            "is_summonable": true,
            "is_experimental": false
        },
        "component_groups": {
            "minecraft:cow_baby": {
                "minecraft:is_baby": {},
                "minecraft:scale": {
                    "value": 0.5
                },
                "minecraft:ageable": {
                    "duration": 1200,
                    "feed_items": "wheat",
                    "grow_up": {
                        "event": "minecraft:ageable_grow_up",
                        "target": "self"
                    }
                },
                "minecraft:behavior.follow_parent": {
                    "priority": 6,
                    "speed_multiplier": 1.1
                }
            },
            "minecraft:cow_adult": {
                "minecraft:experience_reward": {
                    "on_bred": "Math.Random(1,7)",
                    "on_death": "query.last_hit_by_player ? Math.Random(1,3) : 0"
                },
                "minecraft:loot": {
                    "table": "loot_tables/entities/cow.json"
                },
                "minecraft:behavior.breed": {
                    "priority": 3,
                    "speed_multiplier": 1.0
                },
                "minecraft:breedable": {
                    "require_tame": false,
                    "breed_items": "wheat",
                    "breeds_with": {
                        "mate_type": "minecraft:cow",
                        "baby_type": "minecraft:cow",
                        "breed_event": {
                            "event": "minecraft:entity_born",
                            "target": "baby"
                        }
                    }
                },
                "minecraft:interact": {
                    "interactions": [
                        {
                            "on_interact": {
                                "filters": {
                                    "all_of": [
                                        {
                                            "test": "is_family",
                                            "subject": "other",
                                            "value": "player"
                                        },
                                        {
                                            "test": "has_equipment",
                                            "domain": "hand",
                                            "subject": "other",
                                            "value": "bucket:0"
                                        }
                                    ]
                                }
                            },
                            "use_item": true,
                            "transform_to_item": "bucket:1",
                            "play_sounds": "milk",
                            "interact_text": "action.interact.milk"
                        }
                    ]
                }
            }
        },
        "components": {
            "minecraft:is_hidden_when_invisible": {},
            "minecraft:type_family": {
                "family": [
                    "cow",
                    "mob"
                ]
            },
            "minecraft:breathable": {
                "total_supply": 15,
                "suffocate_time": 0
            },
            "minecraft:navigation.walk": {
                "can_path_over_water": true,
                "avoid_water": true,
                "avoid_damage_blocks": true
            },
            "minecraft:movement.basic": {},
            "minecraft:jump.static": {},
            "minecraft:can_climb": {},
            "minecraft:collision_box": {
                "width": 0.9,
                "height": 1.3
            },
            "minecraft:nameable": {},
            "minecraft:health": {
                "value": 10,
                "max": 10
            },
            "minecraft:hurt_on_condition": {
                "damage_conditions": [
                    {
                        "filters": {
                            "test": "in_lava",
                            "subject": "self",
                            "operator": "==",
                            "value": true
                        },
                        "cause": "lava",
                        "damage_per_tick": 4
                    }
                ]
            },
            "minecraft:movement": {
                "value": 0.25
            },
            "minecraft:despawn": {
                "despawn_from_distance": {}
            },
            "minecraft:behavior.float": {
                "priority": 0
            },
            "minecraft:behavior.panic": {
                "priority": 1,
                "speed_multiplier": 1.25
            },
            "minecraft:behavior.mount_pathing": {
                "priority": 2,
                "speed_multiplier": 1.5,
                "target_dist": 0.0,
                "track_target": true
            },
            "minecraft:behavior.breed": {
                "priority": 3,
                "speed_multiplier": 1.0
            },
            "minecraft:behavior.tempt": {
                "priority": 4,
                "speed_multiplier": 1.25,
                "items": [
                    "wheat"
                ]
            },
            "minecraft:behavior.follow_parent": {
                "priority": 5,
                "speed_multiplier": 1.1
            },
            "minecraft:behavior.random_stroll": {
                "priority": 6,
                "speed_multiplier": 0.8
            },
            "minecraft:behavior.look_at_player": {
                "priority": 7,
                "look_distance": 6.0,
                "probability": 0.02
            },
            "minecraft:behavior.random_look_around": {
                "priority": 9
            },
            "minecraft:leashable": {
                "soft_distance": 4.0,
                "hard_distance": 6.0,
                "max_distance": 10.0
            },
            "minecraft:balloonable": {},
            "minecraft:rideable": {
                "seat_count": 1,
                "family_types": [
                    "zombie"
                ],
                "seats": {
                    "position": [
                        0.0,
                        1.105,
                        0.0
                    ]
                }
            },
            "minecraft:physics": {},
            "minecraft:pushable": {
                "is_pushable": true,
                "is_pushable_by_piston": true
            },
            "minecraft:conditional_bandwidth_optimization": {},
            "minecraft:behavior.nearest_attackable_target": {
                "priority": 2,
                "must_see": true,
                "reselect_targets": true,
                "within_radius": 25.0,
                "entity_types": [
                    {
                        "filters": {
                            "test": "is_family",
                            "subject": "other",
                            "value": "player"
                        },
                        "max_dist": 32
                    }
                ]
            },
            "minecraft:behavior.melee_attack": {
                "priority": 3
            },
            "minecraft:attack": {
                "damage": 3
            }
        },
        "events": {
            "minecraft:entity_spawned": {
                "randomize": [
                    {
                        "weight": 95,
                        "trigger": "minecraft:spawn_adult"
                    },
                    {
                        "weight": 5,
                        "add": {
                            "component_groups": [
                                "minecraft:cow_baby"
                            ]
                        }
                    }
                ]
            },
            "minecraft:entity_born": {
                "add": {
                    "component_groups": [
                        "minecraft:cow_baby"
                    ]
                }
            },
            "minecraft:entity_transformed": {
                "remove": {},
                "add": {
                    "component_groups": [
                        "minecraft:cow_adult"
                    ]
                }
            },
            "minecraft:ageable_grow_up": {
                "remove": {
                    "component_groups": [
                        "minecraft:cow_baby"
                    ]
                },
                "add": {
                    "component_groups": [
                        "minecraft:cow_adult"
                    ]
                }
            },
            "minecraft:spawn_adult": {
                "add": {
                    "component_groups": [
                        "minecraft:cow_adult"
                    ]
                }
            }
        }
    }
}

Test du pack

Maintenant que le pack de comportement dispose à la fois d'un fichier manifest et d'une entité vache, vous pouvez lancer Minecraft et tester votre nouvelle extension. Comme indiqué dans le tutoriel pour le pack de ressources, l'empilement de packs fonctionnera également pour les packs de comportement. Cela signifie que lorsque le contenu est chargé, le contenu standard est chargé en premier, suivi de tous les autres extensions. Étant donné que toutes les vaches sont contrôlées par le fichier de comportement cow.json, toutes les vaches qui vont apparaître dans votre monde adopteront le nouveau comportement.

  1. Lancez Minecraft et sélectionnez Jouer.
  2. Sélectionnez Créer nouveau monde.
  3. Sous Paramètres, faites défiler la page vers le bas jusqu'à la section Extensions.
  4. Cliquez sur packs de comportement pour voir tous les packs disponibles.
  5. Cliquez sur le menu déroulant MY PACKS pour l'ouvrir.
  6. Sélectionner My BEHAVIOR Pack et cliquez sur Activer pour ajouter le pack de comportement au monde.
  7. Cliquez sur Créer pour créer votre monde.
  8. Partez à la recherche d'une vache.

Dépannage

Vous avez des problèmes avec les packs de comportement? Le dépannage fait partie intégrante de tout processus de développement. Voici quelques endroits pour commencer à résoudre les problème d'un pack de comportement.

Votre pack de comportement n'apparaît pas dans Minecraft

Si votre pack de ressources n'apparaît pas dans la section extensions, c'est qu'il y a un problème avec le fichier manifest.json. Commençons par ceci.

  • Y a-t-il deux UUID différents dans les sections d'en-tête et modules du fichier manifest.json? Pour en savoir plus, consultez la section UUID.
  • Avez-vous activé les extensions de fichiers et les chemins d'accès? manifest.json ce n'est peut-être pas que manifest.json. Si la fenêtre de votre explorateur n’affiche pas les extensions de fichier, vous pouvez activer Extensions de nom de fichier sous l’onglet Afficher.
  • Revérifiez les accolades et les parenthèses JSON. Les linters JSON peuvent vous aider.
  • S'il y a un problème avec un pack de comportement actif, il y aura un point d'exclamation rouge sous Packs de comportement dans la section extensions.
    • Le pack de comportement contiendra plus d'informations. Cela peut être le signalement d'une dépendance manquante ou qu'il faut exécuter des diagnostics sur d'autres problèmes.

Le pack de comportement apparaît, mais pas son contenu

  • Vérifiez que le dossier entities est placé au bon endroit et correctement orthographié. Vérifiez ensuite toutes l'orthographe de toutes les instances cow.
  • Vérifiez que l'UUID de la section dependencies correspond à un pack de ressources existant (et que cela fonctionne aussi).
  • Déplacez votre pack au-dessus des autres pour vous assurer que votre pack de comportement est chargé en premier. L'empilement de packs peut empêcher vos modifications d'apparaître.

Étape suivante

Maintenant que vous avez vu un pack de comportement en action, vous pouvez en savoir plus sur leur fonctionnement et tout ce que vous pouvez faire avec.

Pour voir des exemples de fichiers de ressources et de comportement non modifiés, consultez le pack de ressources standard et le pack de comportement standard Minecraft.