まだ見ていない方は「アドオンを始めるにはPart2:空っぽのアドオン導入編」までの流れができていて、空っぽのアドオンが入ったワールドがある前提で話を進めていきますので先にそちらの記事をご覧ください。
前回までで、空っぽのアドオンをワールドに導入しました。今回はこのベースの状態からついに、モブの性質を変えてみるということをやっていきたいと思います。 この記事は入門なので既存のモブを変更してみるという「触ってみよう」というコンセプトに沿ったものですが、実際この先には、いろんな要素を追加できる未来が待っています。そんなアドオンライフへの第一歩を一緒に踏み出してみましょう!
アドオンでは既存のものを書き換えるだけでもたくさんの要素を変更できます。何のファイルがどんな要素なのかは別の回にて改めて紹介するとして、今回の例では、以下の2つにチャレンジします。
- ビヘイビア(性質):「ゾンビがプレイヤーからの攻撃を受けたら、子供になるようにする」
- リソース(見た目):「ゾンビのモデルとテクスチャをニワトリのものに変更する」
🔧 1. ビヘイビア(性質)の書き換え
まずはビヘイビアから行きます。
手順:ファイルのコピー
最初に「ワールドデータ/behavior_packs/導入済みビヘイビアパック/entities/zombie.json」の配置になるように、バニラのビヘイビアパックの同じ場所から zombie.json をコピー&ペーストしましょう。 ペーストした、ワールドに入っている方の zombie.json を VS Code で開いてください。
多少内容はバージョンによって左右されるかも知れませんが、おおむね以下のようなデータになっているかと思います。
{
"format_version": "1.21.0",
"minecraft:entity": {
"description": {
"identifier": "minecraft:zombie",
"spawn_category": "monster",
"is_spawnable": true,
"is_summonable": true
},
"component_groups": {
//略
},
"components": {
//略
},
"events": {
//略
}
}
}
今回は「真似したら変わった」ということを体験していただく回なので、詳しく説明はしませんが、それぞれの役割は以下の通りです。
- “components”:そのモブが常に持っている性質。
- “component_groups”:条件によってON/OFFが可能な性質(子供ゾンビ用の性質など)。
- “events”:どの “component_groups” をON、OFFにするかを定義する場所。
実際に書き換えてみる
今回は “components” に、「プレイヤーからダメージを受けたら、すでにゾンビのデータにある “as_baby” というイベント(ゾンビに子供ゾンビであるという性質を加えるevent)を実行する」という性質を加えていきます。
前にも軽く触れましたがアドオンの核心は「すでにある性質を書き換えること」です。村人は雷を受けるとウィッチに変身しますが、今回はその性質を使っていきます。 バニラのビヘイビアの entities/villager.json を開き、ctrl+F で “minecraft:damage_sensor” を検索してみましょう。
"minecraft:damage_sensor": {
"triggers": [
{
"on_damage": {
"filters": { "test" : "is_family", "subject" : "other", "value" : "lightning" },
"event": "become_witch"
},
"deals_damage": false
},
{
"on_damage": {
"filters": {
"any_of": [
{"test": "is_family", "subject": "other", "value": "zombie"},
{"test": "is_family", "subject": "other", "value": "husk"}
],
"all_of": [
{"test": "has_damage", "value": "fatal"}
]
},
"event": "become_zombie"
}
}
]
},この上の部分が「雷でウィッチになる部分」です。これら一式を zombie.json の “components” の中に加えましょう。 その後、上の部分の "value" : "lightning" を "player" に、"become_witch" を先ほど言った "as_baby" に書き換えます。
真似するのが最初の一歩なので、かっこの数などに注意して、最終的に以下のような構成を目指してください。
{
"format_version": "1.21.0",
"minecraft:entity": {
"description": {
"identifier": "minecraft:zombie",
"spawn_category": "monster",
"is_spawnable": true,
"is_summonable": true
},
"component_groups": {
//略
},
"components": {
//ここに貼り付けて書き換え
"minecraft:damage_sensor": {
"triggers": [
{
"on_damage": {
"filters": { "test" : "is_family", "subject" : "other", "value" : "player" },
"event": "as_baby"
},
"deals_damage": false
}
]
},
"minecraft:is_hidden_when_invisible": {
},
//...略
},
"events": {
//略
}
}
}※ "deals_damage": false は攻撃のダメージを無効にする設定です。ダメージを正常に機能させたい場合は true に変更しましょう。
🎨 2. リソース(見た目)の書き換え
次に、リソースの「ゾンビのモデルとテクスチャをニワトリのものに変更する」にチャレンジしましょう。
- モデル:3Dの形、造形のこと。データ上は
geometryで扱います。 - テクスチャ:形に貼り付けられた画像、色のこと。
.png形式の画像データです。
手順:ファイルの用意
ビヘイビアと同じ手順で、バニラリソースと同じ構成になるように「ワールドデータ/resource_packs/導入済みリソースパック/entity/zombie.entity.json」となるようにフォルダ作成、コピー&ペーストを行ってください。
その後、ワールドデータ内の zombie.entity.json を VS Code で開きます。同時に、ニワトリの見た目を移植するためにバニラの entity/chicken.entity.json も開いておいてください。
書き換え作業
chicken.entity.json を参考に、ワールド内の zombie.entity.json の “textures” と “geometry” の "default" の中身を、ニワトリのものに差し替えます。
{
"format_version": "1.8.0",
"minecraft:client_entity": {
"description": {
"identifier": "minecraft:zombie",
"min_engine_version": "1.8.0",
"materials": {
//略
},
"textures": {
//↓↓↓変更部分
"default": "textures/entity/chicken/chicken"
},
"geometry": {
//↓↓↓変更部分
"default": "geometry.chicken.v1.12"
},
"spawn_egg": {
//略
},
"scripts": {
//略
},
"animations": {
//略
},
"animation_controllers": [
//略
],
"render_controllers": [
//略
],
"enable_attachables": true
}
}
}こうすることで、見た目がニワトリになります。データを追加した後は、マイクラを再起動する必要があるので気を付けてください。
📝 まとめ
お疲れ様でした!今回の作業で、以下のことが実現できたはずです。
- ✅ ビヘイビア:ゾンビを叩くと子供ゾンビに変身するようになった。
- ✅ リソース:ゾンビの見た目(形と色)がニワトリになった。
「既存のデータをコピーして、必要な部分だけ書き換える」という流れが、アドオン制作の基本となります。
いつか、今回触れた components や events といった各要素が、具体的にどのような仕組みで動いているのかも詳しく解説したいですね。楽しみにしていてください!


コメント