【マインクラフト（統合版）】カスタムビヘイビアパック（＋リソースパック）の適用方法まとめ

# はじめに

前回ではリソースパックを含まないカスタムビヘイビアパックのみの適用方法について掲載しましたが、ここでは連携しているリソースパックが存在するパターンについて備忘録として残しておきます。

前回の記事はこちら👇

https://qiita.com/glasses_seven/items/a7d276b44c9437e7b0a4/


# 動作環境

<dl>
    <dt>プラットフォーム</dt>
    <dd>Windows10</dd>
    <dt>マインクラフト（統合版）</dt>
    <dd>Bedrock Edition v1.21.31</dd>
</dl>


# ビヘイビアパックをコピー

自分が使っているカスタムビヘイビアパックのフォルダ構成は以下の通り。
`manifest.json`には、ビヘイビアパック名「family-customize」で登録してあります。

```text:カスタムビヘイビアパックの内容
/for-family
    manifest.json   マインクラフトがビヘイビアパックを認識するための情報
    pack_icon.png   ビヘイビアパックのアイコン
    /entities       エンティティ定義
    /functions      functionコマンド定義
    /items          アイテム定義
    /loot_tables    ルートテーブル定義
    /recipes        レシピ定義
```

:::note info
ルートテーブルの書き方は以下のページでご紹介しています。
:::

https://qiita.com/glasses_seven/items/f0e745f9715e6ac34560

<br />
ホームゲームでプレイする時の格納先は次の通り。

```text:ゲームデータのホームフォルダ
C:\Users\<PCのユーザー名>\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang
```

このカスタムビヘイビアパックを以下のようにフォルダごとコピーします。
![カスタムビヘイビアパックのコピー](https://socket-manager.github.io/document/minecraft-contents/img/behavior/behavior_pack_folder.png "カスタムビヘイビアパックのコピー")


# リソースパックをコピー

自分が使っているカスタムリソースパックのフォルダ構成は以下の通り。
`manifest.json`には、ビヘイビアパック名「family-customize」で登録してあります。

```text:カスタムリソースパックの内容
/for-family
    manifest.json       マインクラフトがリソースパックを認識するための情報
    pack_icon.png       リソースパックのアイコン
    /animations         アニメーション定義
    /attachables        装備品のアタッチ定義
    /entity             エンティティ定義
    /models             エンティティモデルの定義
    /render_controllers レンダリングコントローラーの定義
    /texts              多言語テキスト定義
    /textures           テクスチャファイル
```

このカスタムリソースパックを以下のようにフォルダごとコピーします。
![カスタムリソースパックのコピー](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/resource_pack_folder.png "カスタムリソースパックのコピー")

---
:::note info
ビヘイビアパック／リソースパック内の各コンテンツについての詳細は以下のページでご紹介しています。
:::

https://socket-manager.github.io/document/minecraft-contents/


# ワールドを新規で作成する時

以下のワールド作成画面から左メニューの「ビヘイビアーパック」を選択すると右側に`family-customize`（今回コピーしたカスタムビヘイビアパック）というビヘイビアパックが表示されます。
そして`family-customize`項目右側の「有効化」ボタンをクリックします。
![ビヘイビアパックの有効化](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/new_world_setting_behavior_enable.png "ビヘイビアパックの有効化")

以下のような表示が出たら設定完了です。
![ビヘイビアパック適用完了表示](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/new_world_setting_behavior_complete.png "ビヘイビアパック適用完了表示")

:::note info
この時、連携しているリソースパックがある場合は自動的に適用されます。
:::

左メニューの「リソースパック」を選択すると適用されている事が確認できます。
![リソースパック適用確認](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/new_world_setting_resource_confirm.png "リソースパック適用確認")

あとは「作成」ボタンを押して新しいワールドへログインしてください。


# 既存のワールドに適用する時

以下のワールド選択画面から今回のカスタムビヘイビアパックを適用するワールドの鉛筆マークのボタンをクリックします。
![適用するワールドを選択](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_pencil.png "適用するワールドを選択")

ワールド設定画面の左側のメニューから「ビヘイビアーパック」をクリックします。

![ビヘイビアーパックをクリック](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_click.png "ビヘイビアーパックをクリック")

右側の「マイパック」プルダウン項目を開いて`family-customize`のビヘイビアパックを選択すると、その下に「有効化」ボタンが表示されますのでそれをクリックします。

![有効化ボタンをクリック](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_enable.png "有効化ボタンをクリック")

すると以下の画面のようにダイアログが表示されるので不安な方はワールドのコピーを取っておいてください。
準備ができたら以下の赤枠の部分をクリックしてください。

![ダイアログ表示](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_dialog.png "ダイアログ表示")

以下のように画面上部に「family-customizeがアクティブ化されました」と表示が出たら設定完了です。
![ビヘイビアパック適用完了表示](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_complete.png "ビヘイビアパック")

:::note info
この時、連携しているリソースパックがある場合は自動的に適用されます。
:::

右側の「使用中」のプルダウン項目を開くと`family-customize`のビヘイビアパックが最上部に適用されている事が確認できます。
`family-customize`ビヘイビアパック項目の下に「無効化」ボタンが表示されますので、これをクリックすると有効化した後でも無効にする事ができます。
![ビヘイビアパックの適用確認](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_confirm.png "ビヘイビアパックの適用確認")

最後に左メニューの「リソースパック」をクリックして連携しているリソースパックが適用されている事を確認します。
右側の「使用中」のプルダウン項目を開くと`family-customize`のリソースパックが最上部に適用されている事が確認できます。
マルチプレイを想定している場合には「参加にはリソースパックの受け入れが必要」のチェックボックスをオンにしておきましょう。

![リソースパックの適用確認](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_resource.png "リソースパックの適用確認")


# ビヘイビアパックを更新する時

一度カスタムビヘイビアパックが適用されたワールドでは、その後ビヘイビアパックを更新しようとしてもゲーム画面の操作では更新できません。

更新されたカスタムビヘイビアパックを以下のワールドデータへ直接上書き、あるいは入れ替えをしてからマインクラフトを再起動すると適用されますので、新しいワールドを作らずに保存された構造物等をそのまま利用したい場合には便利です。

```text:ワールドデータが保存されているフォルダ
C:\Users\<PCのユーザー名>\AppData\Local\Packages\Microsoft.MinecraftUWP_8wekyb3d8bbwe\LocalState\games\com.mojang\minecraftWorlds
```

上記のフォルダには以下のようにワールド単位でフォルダが保存されていますが、そのままではフォルダ名がエンコードされていてどのワールドデータなのか区別がつきません。
![ワールドデータフォルダ](https://socket-manager.github.io/document/minecraft-contents/img/behavior/world_folder.png "ワールドデータフォルダ")

そこで各フォルダの中には`levelname.txt`というワールド名が記載されたファイルが存在しますので、直接ファイルを開いて確認するかテキストエディタのgrep機能等で検索して確認する方法もあります。
もし一意の名前を付けていない場合はゲーム画面からワールド名を変更できますので一度その操作を行ってから再度確認するのがいいでしょう。

以下のワールド一覧画面にある鉛筆マークのボタンをクリックするとワールドの設定画面が開きますので、左メニューの「設定を編集」⇒「ゲーム」をクリックするとワールド名を編集する項目が右側に表示されます。
![ワールド一覧画面](https://socket-manager.github.io/document/minecraft-contents/img/behavior2/edit_world_setting_behavior_pencil.png "ワールド一覧画面")

更新対象のワールドフォルダが特定できたらその配下に`behavior_packs`や`resource_packs`のフォルダがありますので、その中を上書きするか入れ替えるかしてからマインクラフトを再起動してください。


# おわりに

今回使用したリソースパックのデータは以下ページの実装時に使用しています。

https://qiita.com/glasses_seven/items/b45a80c91243177ff37f/

https://qiita.com/glasses_seven/items/876eb47c3e38828428e4/

https://qiita.com/glasses_seven/items/cd55c6bd721a9ced1f06/

https://qiita.com/glasses_seven/items/0529d05f2b833a9f9cae/

https://qiita.com/glasses_seven/items/d48d8716eb80daa2a518/