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

# はじめに

オリジナルアイテムを作ろうとしてカスタムビヘイビアパックを作成した時に少しハマったので備忘録として残しておきます。
ここでは自分の環境で使っているカスタムビヘイビアパック（リソースパックは含まないパターン）を例に挙げて話を進めます。

カスタムリソースパックを含めて適用したい場合は以下のページをご覧ください。

https://qiita.com/glasses_seven/items/7a174722c9030e669eac


# 動作環境

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


# カスタムビヘイビアパックをコピーする

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

:::note info
実際はリソースパックと連携しているファイルも含まれていますが、説明のため対象のディレクトリは以下から外してあります。
:::

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

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

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

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

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

<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 "カスタムビヘイビアパックのコピー")


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

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

すると以下の画面のようにダイアログが表示されるので「続ける」をクリックします。

:::note info
今回のビヘイビアパックでは対応するリソースパックを作っていないので以下のような確認ダイアログが表示されますがそのまま継続しても大丈夫です。
:::

![ワールド新規作成画面（ダイアログ表示）](https://socket-manager.github.io/document/minecraft-contents/img/behavior/new_world_setting_behavior3.png "ワールド新規作成画面（ダイアログ表示）")

以下のような表示が出たら設定完了です。
あとは「作成」ボタンを押して新しいワールドへログインしてください。

![ワールド新規作成画面（適用完了表示）](https://socket-manager.github.io/document/minecraft-contents/img/behavior/new_world_setting_behavior4.png "ワールド新規作成画面（適用完了表示）")


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

以下のワールド選択画面から今回のカスタムビヘイビアパックを適用するワールドの鉛筆マークのボタンをクリックします。

![適用するワールドを選択](https://socket-manager.github.io/document/minecraft-contents/img/behavior/edit_world_button.png "適用するワールドを選択")

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

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

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

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

すると以下の画面のようにダイアログが表示されるので「続ける」をクリックします。

:::note info
今回のビヘイビアパックでは対応するリソースパックを作っていないので以下のような確認ダイアログが表示されますがそのまま継続しても大丈夫です。
:::

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

以下のように画面上部に「family-customizeがアクティブ化されました」と表示が出たら設定完了です。

![適用完了表示](https://socket-manager.github.io/document/minecraft-contents/img/behavior/edit_world_setting_behavior5.png "適用完了表示")

右側の「使用中」のプルダウン項目を開くと`family-customize`のビヘイビアパックが最上部に適用されている事が確認できます。

![適用確認](https://socket-manager.github.io/document/minecraft-contents/img/behavior/edit_world_setting_behavior6.png "適用確認")

`family-customize`のビヘイビアパックを再び選択すると「無効化」ボタンが表示されますので、これをクリックすると有効化した後でも無効にする事ができます。

![無効化](https://socket-manager.github.io/document/minecraft-contents/img/behavior/edit_world_setting_behavior7.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/behavior/edit_world_button.png "ワールド一覧画面")

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


# おわりに

Websocketサーバーを使って運用する事を前提としていますが、それだけでは実現できない事を今回はカスタムビヘイビアパックを併用する事で補いました。

ホームゲームであってもフレンド登録をしておけばマルチプレイは可能ですし、配布ワールドを準備しなくてもカスタマイズが十分に可能である事を実感できましたので、家族や仲間内で遊ぶ分にはこれでも十分だと思います。