エンティティを追加するアドオンの作り方

この記事は友人と作り方を共有するために作成したものです。
エンティティとはモブなどのマイクラのシステム上での呼び方です。
一般的に同様の記事はたくさんあるのは承知の上なのでそちらの方がわかりやすいって人はそちらを使ってください。
なお、共有用のためサムネも指定してませんし、突然編集入れたりします。


パックのフォルダを用意

まずはパックのフォルダを作ります。
エンティティを追加するアドオンを作成するためには2種類のパックを作成する必要があります。
リソースパックとビヘイビアパックと呼ばれています。

余談ですが…
リソースパックはモブなどの見た目を決めるパックというのが一般的な意味合いで、大まかにはそれで良いのですが、僕はアプリ側で処理するパックとして認識してます。
ビヘイビアパックはモブなどの動作を決めるパックというのが一般的な意味合いです。なお、こちらは僕の認識だとサーバー側で処理するパックです。
認識が一般と速部で違う理由は本来のパックの名前としては一般の認識が正しいものの、ビヘイビアパックで指定するはずだったものがリソースパックで指定する仕様に変更になったりするため混乱しないように速部式の認識の仕方しておくと楽です。

さて、話を戻しましょう。
パックが2つという話でしたね。
パックが2つ、つまり、まずは2つのフォルダを作る必要があります。
分かりやすいようにアドオンとして同じ名前にrとbを追加したフォルダーにしましょう。基本的に英数字のみを使用してフォルダ名を作ることをお勧めします。最悪パックがバラバラになります。
rはリソース(resource)の頭文字、bはビヘイビア(behavior)の頭文字です。
例えば「hyb_addon_r」、「hyb_addon_b」のような感じですね。
では、早速フォルダを作ってください。

パックの説明ファイルの追加

次にマイクラ側がパックをパックとして認識できるようにします。
今のままではただのフォルダなので、マイクラ側はこのフォルダがなんなのかわかりません。そのため、このフォルダはこういうパックのものだよと説明するファイルを各パックのフォルダの中に書き込みます。
識別用のファイルは僕の友人が作ったツールが使いやすいので、今回はそれを使いますね。

このツールを開いてください。ちなみにこのツールの作者はあまりこのアカウント上で活動していないので、何か問題があれば僕に聞いてくださいね。

先ほど紹介したツールのスクリーンショット

上から順にパックの名前、説明、バージョン、種別を選択して、全て埋めたら作成を押すとダウンロードリンクが出てくるので、それをダウンロードして、さっき作ったフォルダの中に種別毎に1つ入れてあげてください。ちなみに、名前は英語にしておくことをお勧めします。日本語だと文字化けしてエラーメッセージでどのパックかわからなくなることがあるので。
なお、ファイル名は「manifest.json」になっているので、そこから変更しないでください。特に、一度ダウンロードフォルダに入れると重複判定で勝手に数字とかcopyとか追加されがちなので注意!

IDを決める

エンティティを作る上で頻繁に使用しますので、今のうちに決めましょう。
エンティティのIDはコマンドなどで使用するもので、「hyb」などの短い作者の識別文字とそのエンティティ固有の識別文字を「:」で繋いだものを使用します。作者の識別文字も、エンティティ固有の識別文字も何にするかは自由ですが、英数字のみを使用してください。また、作者の識別文字は「minecraft」は使用しないでください。今回は試しに「hyb:test_entity」というIDで作るとして説明していきます。これで言うと「hyb」は僕の識別文字です。「test_entity」はテスト用のエンティティの識別文字です。今回はこの設定を結構例で使うので絶対に忘れないでください。
識別文字とIDは本当は同じ意味ですが、今回はあえて別々のものとして話しているので、作者の識別文字と言われたら「hyb」を、エンティティの識別文字と言われたら「test_entity」を、IDと言われたら「hyb:test_entity」を使用していきます。

エンティティの定義

では、早速エンティティを定義していきましょう。
エンティティの定義とはつまるところどんな動作をするエンティティを追加したいかをマイクラ側に伝えるためのファイルです。
JSONファイルなので、JSONが分からない人は以下のサイトをご覧ください。(一つ目は速部が書いたものではありません。時間があれば別の記事に書くつもりですが、ちゃんと説明されているので、とりあえずこちらで → 書きました)

(追記)速部もJSONの説明を書いてみたので、こちらを読んでいただいてもいいですよ。

では、まずはビヘイビアのフォルダのなかに「entities」と言う名前のフォルダを作り、その中に後述するエンティティの識別文字と「.json」を合わせた名前のファイルを作成しましょう。今回の例だと「test_entity.json」ですね。
ファイルの中身を書くためにも、基本の形式を見ていきましょう。
基本的にエンティティ定義用のJSONのファイルは以下のような構造になります。

{
  "format_version": "1.12.0",
  "minecraft:entity": {
    "description": {
      "identifier": "hyb:test_entity",
      "is_spawnable": true,
      "is_summonable": true,
      "is_experimental": true
    },
    "components": {
      "minecraft:type_family": {
        "family": [ "minecart", "inanimate" ]
      },
      "minecraft:physics": {
      },
      "minecraft:pushable": {
        "is_pushable": true,
        "is_pushable_by_piston": true
      }
    }
  }
}

以下にどういう内容なのかをまとめておきます。
インデントはその前の項目の中に入っていることを示しています。

  • format_version ← マイクラのエンティティの定義ファイルの形式は定期的に変更になるため、古い定義を使用していても使えなくなったりしないようにするため、いつの定義を使ってるよってマイクラにお知らせするためのものです。時々古すぎる定義は使えなくなることがあるので、その時はエラーが出るはずなので、エラーに従って変更してください。

  • minecraft:entity ← 基本的にエンティティの定義はこの中に入れていくことになります。

    • description ← エンティティの技術的な詳細を書いていくところです。

      • identifier ← エンティティのIDです。先ほど決めましたね?忘れたとは言わせませんよ😄

      • is_spawnable ← スポーン可能かどうかです。基本的にtrueから変更する必要はありません。

      • is_summonable ← 召喚可能かどうかです。基本的にtrueから変更する必要はありません。

      • is_experimental ← 実験的に追加したエンティティかどうかです。基本的にtrueから変更する必要はありません。

    • components ← エンティティの設定を書いていく項目です。僕の記事では基本的にコンポーネントと呼びます。この内部は下のコンポーネントリストのものが全て使用できます。

以上が内部の構造になります。
コンポーネントを組み合わせてエンティティに乗れるかどうかなどを決めて行くことになります。
コンポーネントの説明は機械翻訳でもいいので読んでおくことをお勧めします。(想定外のことができたりするので)
では、試しにこう言う形式でファイルを作ってみてください。

リソース側でも定義を作る

リソース側にも定義を作る必要があります。ちなみに、ビヘイビアでの作業は先ほどのもので終了です。
ここからはリソースのフォルダで作業をしていきます。
リソースでは骨つまりエンティティの形の定義と、その形の表面に塗る画像の設定をしていきます。
まず、リソースのフォルダのなかに「entity」と言う名前のフォルダを作り、その中にエンティティの識別文字と「.json」を合わせた名前のファイルを作成しましょう。(保存先の指定忘れてたので追記)
その内部については基本的に今回は細かいところは説明しません。基本は以下のものです。

{
  "minecraft:client_entity" : {
    "description" : {
      "render_controllers" : [
        "controller.render.skeleton"
      ],
      "enable_attachables" : true,
      "materials" : {
        "default" : "skeleton"
      },
      "geometry" : {
        "default" : "geometry.test_entity"
      },
      "spawn_egg" : {
        "texture" : "hyb:test_entity",
        "texture_index" : 0
      },
      "identifier" : "hyb:test_entity",
      "textures" : {
        "default" : "textures\/entity\/hyb\/test_entity"
      }
    }
  },
  "format_version" : "1.8.0"
}

「geometry.test_entity」の「test_entity」を先ほど決めたエンティティの識別文字と置き換えて、「hyb:test_entity」となっているところは全てエンティティのIDと置き換えて、「hyb\/test_entity」は作者の識別文字とエンティティの識別文字を「\/」でくっつけたもので置き換えます。

骨を作る

では、次に見た目を作っていきます。
しかし、作るの自体はツールを使わずに作るとキツすぎるのでBlockbenchを使っていきます。(今回はその工程は終わってるとしてスキップします。Blockbenchの使い方についてはGoogleかChatGPTにでも聞いてください。)

では、骨も出来上がったところで、パックに入れていきましょう。
Blockbenchで完成したモデルを開いて、左上のFileからプロジェクト…を選択して、プロジェクト名と拡張子名に先ほどのエンティティの識別文字を指定して、決定を押してください。
同じく、左上のFileから、書き出し、Bedrock Geometryを選択してもらえれば専用のファイルがダウンロードできます。

まず、リソースのフォルダの中に「models」と言う名前のフォルダを作り、その中に「entity」と言う名前のフォルダを作ってください。
作ったら、ダウンロードしたファイルを「entity」に入れてください。
ダウンロードしたファイルに「.txt」と最後についていることがあります。これはよろしくありません。「.json」が最後になるようにしてください。
ここまで完了したら形の設定は完了です。

画像を指定する

次に、エンティティの画像を指定していきましょう。
Blockbenchの左下のテクスチャ画像の横の保存ボタンを押すとダウンロードできます。
まず、リソースのフォルダの中に「textures」と言う名前のフォルダを作り、その中に「entity」と言う名前のフォルダを作ってください。
その後、「entity」フォルダの中に作者の識別文字のフォルダを作り、その中にダウンロードしたファイルを入れるのですが、ダウンロードしたファイルのファイル名はエンティティの識別文字に「.png」をつけた形にしてください。

完成

これでとりあえずは最低限エンティティを追加するパックの完成です。あとはビヘイビアパックとリソースパックをマイクラの所定のフォルダに入れて両方のパックを使用したいワールドに入れて使用してください。

いいなと思ったら応援しよう!

御影 はやぶ | Hayabu Mikage
気分が乗ったらチップを送っていただけると速部が喜びます!いただいたチップは速部が管理しているサーバーや、開発に使用する道具の費用などに活用させていただきます。