ビヘイビアー パックの概要

Minecraft: Bedrock Edition 用の最初のアドオンを作成する前に、カスタム コンテンツを格納するためのパックを作成する必要があります。 クリエイターが作成できるパックには、リソース パックとビヘイビアー パックの 2 種類があります。 ビヘイビアー パックとは、エンティティの行動、戦利品ドロップ、スポーン ルール、アイテム、レシピ、トレード テーブルを制御するファイルが格納されているフォルダー構造のことです。 このチュートリアルでは、ビヘイビアー パックを作成する方法と、ゲーム内のウシ エンティティに行動を追加して攻撃的にする方法について説明します。

ウシがスティーブを追いかけている画像

このチュートリアルでは、次の内容を学びます。

  • Minecraft: Bedrock Edition でエンティティの行動を変更することが可能なこと。
  • ビヘイビアー パックとリソース パックをリンクする方法。

要件

本チュートリアルを開始する前に、以下を完了しておくことをお勧めします。

ビヘイビアー パックの作成

ビヘイビアー パックには、クリエイターの皆さんが Minecraft 内のエンティティのゲームプレイの行動を追加、削除、変更する際に使用するファイルが含まれています。 エンティティのビヘイビアー ファイルは、ニワトリが種を持っているプレイヤーの後をついてくる動作など、各エンティティに特定の動作をさせるためのものです。

Minecraft がビヘイビアー ファイルを検出して使用できるように、フォルダーとファイルは特定の構造に設定する必要があります。 このチュートリアルでは、このフォルダーとファイルの構造を作成する方法を説明します。

ビヘイビアー パックのフォルダーとファイルの構造を示す画像

フォルダーの作成

このセクションでは、My_BEHAVIOR_Pack という名前のフォルダーを作成します。 実は、このフォルダーはその名前にする必要はなく、 任意の名前を付けることができます。しかし、他のフォルダーには、Minecraft が検索場所を認識できるように、このチュートリアルで指定されているとおりに名前を付ける必要があります。

  1. com.mojang フォルダーを開きます。
  2. development_behavior_packs フォルダーを開きます。
  3. development_behavior_packs フォルダーの中に新しいフォルダーを作成し、My_BEHAVIOR_Pack という名前を付けます。
  4. My_BEHAVIOR_Pack フォルダーを開きます。 com.mojang development_behavior_packs フォルダーの中にある My_BEHAVIOR_Pack フォルダーの画像

マニフェスト ファイルの作成

ビヘイビアー パックを Minecraft に読み込むには、マニフェスト ファイルを作成する必要があります。 ビヘイビアー パックのマニフェスト ファイルは、リソース パック用に作成されるファイルと似ていますが、2 つのセクションが追加されています。

  • modules: Minecraft がパックを世界に適用する方法を認識できるように、パックを定義します。 ビヘイビアー パックでは data タイプを使用します。
  • dependencies - カスタムのテクスチャとビジュアルを Minecraft に追加するために、ビヘイビアー パックとリソース パック間のリンクを作成します。
  1. My_BEHAVIOR_Pack フォルダーに新しいドキュメントを作成し、manifest.json という名前を付けます。
    1. ファイル拡張子を .txt から .json に変更する必要があります。 エクスプローラー ウィンドウにファイル拡張子が表示されない場合は、[表示] タブで [ファイル名拡張子] を有効にすることができます。 My_BEHAVIOR_Pack フォルダー内の manifest.json ファイルの画像
  2. manifest.json ファイルをダブルクリックして、テキスト エディターで開きます。
  3. 次のコードをコピーしてファイルに貼り付けます。
{
  "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]
    }
 ]
}

UUID の入力

リソース パックのマニフェスト ファイルと同様に、マニフェスト ファイルの header セクションと modules セクション用に 2 つの異なる UUID を生成する必要があります。 UUID は、https://www.uuidgenerator.net/ などのオンライン ジェネレーターから取得できます。

UUIDGenerator.net のホーム画面の画像。カスタム UUID が生成されています

  1. UUID をコピーして、header セクションに貼り付けます。 UUID は、正しく読み取られるように引用符 ("") で囲んで "uuid" フィールドに貼り付ける必要があります。
  2. modules セクションで使用する新しい UUID を生成するために、Web ページを更新します。
  3. 新しい UUID をコピーし、引用符で囲んで modules セクションの "uuid" フィールドに貼り付けます。

依存関係の作成

ビヘイビアー パックの manifest.json ファイルには、'dependencies' という名前の 3 番目のセクションがあります。これは、リソース パックとビヘイビアー パック間のリンクを作成するために使用します。 このリンクは、リソース パックの manifest.json ファイルの header セクションにある UUID が、ビヘイビアー パックの manifest.json ファイルの依存関係セクションにある UUID と同じである場合に作成します。 ビヘイビアー パックを使用するためにリソース パックを用意する必要はなく、リソース パックを使用するためにビヘイビアー パックを用意する必要もありません。 両方をお持ちの場合は、この方法を使用してこれらをリンクすると、ビヘイビアー パックを世界に読み込んだときに、リンクされたリソース パックが自動的に読み込まれて有効化されます。

リソース パックの manifest.json のヘッダーにある UUID がビヘイビアー パックの dependencies セクションに複製された様子を示す画像。

  1. development_resource_packs フォルダー内の My_RESOURCE_Pack フォルダーにある manifest.json ファイルを開きます。
  2. リソース パックの manifest.json ファイルの header セクションから UUID をコピーします。
  3. development_behavior_packs フォルダー内の *My_BEHAVIOR_Pack フォルダー内にある manifest.json ファイルに移動します。
  4. dependencies セクションの "uuid" フィールドに UUID を貼り付けます。 引用符で囲まれた部分がすべて正確に一致することを確認します。
  5. ビヘイビアー パックの manifest.json ファイルを保存します。

リソース パックの manifest.json のヘッダーにある UUID がビヘイビアー パックの dependencies セクションに複製された様子を示す画像。

entities フォルダーの作成とウシの追加

すべてのエンティティの行動は、Minecraft を動作させるコードの中にある JSON ファイルで定義されています。 ここでは、通常の "バニラ" ファイルではなく、新しいウシのビヘイビアー ファイルを作成して Minecraft で使用します。

  1. My_BEHAVIOR_Pack フォルダー内にフォルダーを作成し、entities という名前を付けます。
  2. entities フォルダー内にテキスト ファイルを作成し、cow.json という名前を付けます。
  3. 次のコードをコピーして cow.json ファイルに貼り付けます。 ファイルを保存したら、準備完了です。

注意

編集した cow.json ファイル全体を以下に示します。 ウシはさまざまな行動を取るため、大きなファイルになっています。

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

パックのテスト

ビヘイビアー パックにマニフェスト ファイルとウシ エンティティを含めたら、Minecraft を起動して新しいアドオンをテストします。 リソース パックのチュートリアルで説明したとおり、ビヘイビアー パックに対してもパック スタックが機能します。 つまり、コンテンツが読み込まれる際には、最初にバニラ コンテンツが読み込まれ、続いてアドオンが読み込まれます。 すべてのウシは cow.json ビヘイビアー ファイルによって制御されるため、世界にスポーンするすべてのウシに新しい行動が適用されます。

  1. Minecraft を起動し、[Play (遊ぶ)] を選択します。
  2. [Create New World (世界を新しく作成)] を選択します。
  3. [Settings (設定)] で、[Add-Ons (アドオン)] セクションまで下にスクロールします。
  4. [Behavior Packs (ビヘイビアー パック)] をクリックして、使用可能なすべてのパックを表示します。
  5. [MY PACKS (マイ パック)] ドロップダウンをクリックして開きます。
  6. [My BEHAVIOR Pack (マイ ビヘイビアー パック)] を選択し、[Activate (有効化)] をクリックしてビヘイビアー パックを世界に追加します。
  7. [Create (作成)] をクリックし、世界を作成します。
  8. ウシを探しに行きます。

トラブルシューティング

ビヘイビアー パックで困っていませんか? トラブルシューティングは、どのような開発プロセスにもつきものです。 ここでは、ビヘイビアー パックのトラブルシューティングを始めるときに役立つ場所をいくつか紹介します。

ビヘイビアー パックが Minecraft に表示されない

ビヘイビアー パックが [Add-Ons (アドオン)] セクションに表示されない場合、manifest.json ファイルに何らかの問題がある可能性があります。 まずはそこから始めてみましょう!

  • manifest.json の header セクションと modules セクションに 2 つの異なる UUID が存在しませんか? 詳細については、UUID のセクションを参照してください。
  • ファイル拡張子とパスの表示をオンにしていますか? manifest.jsonmanifest.json になっていないかもしれません。 エクスプローラー ウィンドウにファイル拡張子が表示されない場合は、[表示] タブで [ファイル名拡張子] を有効にすることができます。
  • JSON の中かっこと大かっこを再確認します。 JSON の lint ツールが役に立ちます。
  • 有効なビヘイビアー パックに問題がある場合、[Add-Ons (アドオン)] セクションの [Behavior Packs (ビヘイビアー パック)] に赤いビックリマークが表示されます。
    • ビヘイビアー パックには詳細な情報が含まれています。 依存関係の欠如に関する警告が表示されたり、他の問題の診断が実行される場合もあります。

ビヘイビアー パックは表示されるが、コンテンツが機能しない

  • entities フォルダーが正しい場所にあり、スペルが正しいことを確認します。 その後、cow のすべてのスペルを確認します。
  • dependencies セクションの UUID が既存のリソース パックと一致していること (およびその UUID が機能していること) を確認します。
  • ビヘイビアー パックが最初に読み込まれるように、パックを他のパックの上に移動します。 パック スタックが原因で、加えた変更が表示されない場合があります。

次のステップ

ここでは、ビヘイビアー パックを実際に確認しました。次に、ビヘイビアー パックの仕組みやビヘイビアー パックで他に何ができるかを詳しく学びます。

変更されていないリソース ファイルやビヘイビアー ファイルの例を確認するには、Minecraft のバニラ リソース パックバニラ ビヘイビアー パックをご覧ください。