【アドオンパックことはじめ】

はじめに

ここで言うアドオンパックというのは、ビヘイビアパックやリソースパックの事を指しています。
以降では本環境で使っているアドオンパックをベースに話を進めます。
ビヘイビアパックやリソースパックと一言でいっても内容の規模が大きすぎて全容を理解するのは容易い事ではありません。
それを踏まえて、ここでは各パックを作成する前の基盤作りに主眼を置き、必要に応じて内容を付け足していく手法をとっています。

最小限のフォルダ構成

最小限の構成は以下の通りでビヘイビアパックもリソースパックも同じです。
最小限のフォルダ構成
/<アドオンパックのルート>
    manifest.json   マインクラフトがアドオンパックを認識するための情報
    pack_icon.png   アドオンパックのアイコン
                    

バニラでのアイコンサイズは64×64pxですが異なるサイズであっても自動で拡縮してくれるようです。ちなみにpack_icon.pngはなくても動作します。
ここで重要なのはmanifest.jsonの方ですがビヘイビアパックとリソースパックそれぞれのファイル内容を以下でみていきます。
ちなみにmanifest.json内ではユニークなIDとしてUUIDが使われていますが、本家のサイトでは以下のリンク先で取得する事を推奨しているようです。

>> UUID Generator

ビヘイビアパックのファイル

ファイルの内容は以下の通りです。
UUIDには仮のアルファベットを記入していますが、それぞれ異なるIDである事を表しています。
ビヘイビアパックのmanifest.jsonの内容
{
    "format_version": 2,
    "header": {
        "description": <ビヘイビアパックの説明>,
        "name": <ビヘイビアパックの名前>,
        "uuid":"AAAAAAAA-AAAA-AAAA-AAAA-AAAAAAAAAAAA",
        "version": [1, 0, 0],
        "min_engine_version": [1, 21, 0]
    },
    "modules":
        [
            {
                "description": <モジュールの説明>,
                "type": "data",
                "uuid": "BBBBBBBB-BBBB-BBBB-BBBB-BBBBBBBBBBBB",
                "version": [1, 0, 0]
            }
        ],
    "dependencies": [
        {
            "uuid":"CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC",
            "version":[1,0,0]
        }
    ]
}
                    


format_version

今は"2"固定で問題ないようです。

header

・description
ビヘイビアパックの説明を記入します。ワールドの設定画面で表示されます(下図参照)
・name
ビヘイビアパックの名前を記入します。ワールドの設定画面で表示されます(下図参照)
・uuid
UUIDを記入します。>> UUID Generatorのサイト等で取得
・version
ビヘイビアパックのバージョンをメジャーバージョン、マイナーバージョン、リビジョンの順で記入します。最初は"1,0,0"か"0,0,1"で問題ないでしょう
・min_engine_version
マインクラフトの対応基準にするバージョンをメジャーバージョン、マイナーバージョン、リビジョンの順で記入します。ビヘイビアパック作成時のバージョンを記入しておけば問題ないでしょう



modules

モジュールは複数指定できるようですが本環境では"data"タイプしか使用していませんので以下の1モジュール分のみ定義しています。
・description
モジュールの説明を記入します。使われる事はないので開発者側のメモとして残しておくといいでしょう
・type
"resources", "data", "world_template", "script"の指定ができますが本環境では"data"のみ使用しています
・uuid
UUIDを記入します。>> UUID Generatorのサイト等で取得
・version
モジュールのバージョンをメジャーバージョン、マイナーバージョン、リビジョンの順で記入します。最初は"1,0,0"か"0,0,1"で問題ないでしょう

dependencies

ここはリソースパックと依存関係がある場合に参照される場所です。
・uuid
依存関係にあるリソースパックのheader部のUUIDを記入します。依存するリソースパックがない場合は先にUUIDを取得して記入しておけば、後からリソースパックを追加した時にそのまま使えます
・version
依存関係にあるリソースパックのheader部のバージョンを記入します。依存するリソースパックがない場合は"1,0,0"か"0,0,1"を設定しておけば問題ないでしょう

リソースパックのファイル

ファイルの内容は以下の通りです。
UUIDには仮のアルファベットを記入していますが、それぞれ異なるIDである事を表しています。
連携しているビヘイビアパックがある場合、header内のuuidversionはビヘイビアパック用manifest.json内のdependenciesの内容と合わせておく必要があります。
リソースパックのmanifest.jsonの内容
{
    "format_version": 2,
    "header": {
        "description": <リソースパックの説明>,
        "name": <リソースパックの名前>,
        "uuid":"CCCCCCCC-CCCC-CCCC-CCCC-CCCCCCCCCCCC",
        "version": [1, 0, 0],
        "min_engine_version": [1, 16, 0]
    },
    "modules": [
        {
            "description": <モジュールの説明>,
            "type": "resources",
            "uuid": "DDDDDDDD-DDDD-DDDD-DDDD-DDDDDDDDDDDD",
            "version": [1, 0, 0]
        }
    ]
}
                    


format_version

今は"2"固定で問題ないようです。

header

・description
リソースパックの説明を記入します。ワールドの設定画面で表示されます(下図参照)
・name
リソースパックの名前を記入します。ワールドの設定画面で表示されます(下図参照)
・uuid
UUIDを記入します。>> UUID Generatorのサイト等で取得
・version
リソースパックのバージョンをメジャーバージョン、マイナーバージョン、リビジョンの順で記入します。最初は"1,0,0"か"0,0,1"で問題ないでしょう
・min_engine_version
マインクラフトの対応基準にするバージョンをメジャーバージョン、マイナーバージョン、リビジョンの順で記入します。リソースパック作成時のバージョンを記入しておけば問題ないでしょう



modules

モジュールは複数指定できるようですが本環境では"resource"タイプしか使用していませんので以下の1モジュール分のみ定義しています。
・description
モジュールの説明を記入します。使われる事はないので開発者側のメモとして残しておくといいでしょう
・type
"resources", "data", "world_template", "script"の指定ができますが本環境では"resources"のみ使用しています
・uuid
UUIDを記入します。>> UUID Generatorのサイト等で取得
・version
モジュールのバージョンをメジャーバージョン、マイナーバージョン、リビジョンの順で記入します。最初は"1,0,0"か"0,0,1"で問題ないでしょう

コメント記法

アドオンパック内のJSONファイルでは、以下の黄色の部分のようにスラッシュ2つ("//")を付けてコメント表記が使えます。
JSONファイル内でのコメント表記

// 【付与されるエンチャント】
// 
// knockback    ノックバック    レベル1
// sharpness    ダメージ増加    レベル2
// looting      ドロップ増加    レベル3

{
    "function": "specific_enchants",
    "enchants": [
        {"id": "knockback", "level": 1},
        {"id": "sharpness", "level": 2},
        {"id": "looting"  , "level": 3}
    ]
}
                    


おわりに

manifest.jsonさえ出来てしまえば、あとは必要に応じて内容を付け足していけばいいだけなので、先に空のアドオンパックを追加しておくのもいいでしょう。
アドオンパックの適用方法については左メニューのビヘイビアパック適用のページをご覧ください。

本環境ではまだ使っていない項目や、ここに記載していない項目もありますので、今後も必要に応じて内容を追加/修正していきます。