はじめに
少し前のアップデート(おそらく、1.21.110?)からパックのmanifestのformat_versionに3を指定できるようになりました。この記事では、新しい記述方式であるmanifestのバージョン3について解説しています。
※中級者向けの説明にしていますので、アドオン制作についてある程度知識がある前提で進めていきます。また、この記事はマイクラ統合版1.21.130の時に作成された内容です。
バージョン3でできるようになったこと
今までのマニフェストでは基本的に、パックの設定をプレイヤーが設定(調整)することができませんでした。一応、サブパック機能を使って疑似的にできましたが、それでも詳細な設定をすることはできませんでした。
最近のアドオンでは、パックの設定用のアイテムを持った状態でワールドにスポーンし、アイテムを使うことでscriptAPIのフォームを使って設定ができるものが増えてきました。この方法は配布マップなどでは便利なのですが、サバイバルを行うときには少し不便に感じます。設定を変えるために、アイテムが必要なので、インベントリを1スロット分埋めてしまったり、無くすと作る必要が出てきます。(低コストのものがほとんどですが…)

しかし、マニフェストのV3では新しくパックの設定を追加できるようになり、今までの煩わしさが無くなりました。そして、様々な設定を詳細に行えるようにラベル(テキスト)、トグル、スライダー、ドロップダウンの機能があります。

そして、ここで設定した項目はビヘイビアーパックの場合はscriptAPIで、リソースパックの場合はmolangで値を取得することができます。
バージョン3の使い方
まず、📝manifest.jsonのformat_versionを3に変更します。(リソースパック、ビヘイビアーパックどちらも可能)
"format_version": 3,次に、バージョンの書き方を変更します。今までは、配列で書いていましたが、バージョン3からはstring型になりました。なので、[ 1, 0, 0 ]の場合は”1.0.0″と書くようになります。headerはもちろん、modulesのバージョンの書き方も忘れずに変更してください。
"header": {
"name": "アドオン名",
"description": "アドオンの説明",
"uuid": "4e1adcc6-0352-4a42-93a6-54532a7f4f3f",
"version": "1.0.0",
"min_engine_version": "1.21.130"
},
"modules": [
{
"type": "resources",
"uuid": "a195ebbc-050b-4b7e-baa6-f52de0f31e84",
"version": "1.0.0"
}
],これで、フォーマットバージョン3の書き方のマニフェストができました。ここからは、新しく作れるようになった設定画面を作っていきます。
パックの設定画面の作り方
最初のほうでも少し説明しましたが、パックの設定画面には、現状、ラベル(テキスト)、トグル、スライダー、ドロップダウンのみです。今後のアップデートで機能は増えるので、おそらく、画像の挿入や区切り線などが使えるようになると予想します。
設定画面を作るには、まず、headerやmodulesなどと同じ階層にsettingsを設置します。このsettingsの中にいろんな要素を組み込んでいきます。
{
"format_version": 3,
"header": {
// 省略
},
"modules": [
// 省略
],
"settings": [
]
}ラベル(テキスト)の作成
一番、シンプルな文字を表示させるだけの要素です。
typeは要素のタイプです。labelが文字を表示させる要素です。
textはその要素に表示させる文字列です。もちろん、改行もできますので、いつも通り\nを使ってください。
{
"type": "label",
"text": "テスト"
}トグルの作成
トグルはオン・オフを設定するときに使う要素です。
typeはtoggleを指定します。
textはその要素に表示させる文字列です。トグルの右横に表示されます。
nameはこの要素のIDです。ScriptAPIやmolangで値を取得するときに使います。”名前空間:要素名”の書き方をします。
defaultは初期値です。trueかfalseのどちらかを書きます。
{
"type": "toggle",
"text": "トグルの設定",
"name": "practice:toggle_setting",
"default": true
}スライダーの作成
スライダーは数値の設定に適した要素です。
typeはsliderを指定します。
textとnameとdefaultは他の要素と同じです。
minには設定できる値の最小値を指定します。
maxには設定できる値の最大値を指定します。
stepには設定する値を何刻みで設定できるかを指定します。
{
"type": "slider",
"text": "スライダーの設定",
"name": "practice:slider_setting",
"min": 1,
"max": 3,
"step": 1,
"default": 1
}ドロップダウンの作成
ドロップダウンは文字列の設定に適した要素です。
typeはdropdownを指定します。
textとnameとdefaultは他の要素と同じです。
optionsには設定する値を指定します。型が配列になります。
optionsの中のnameに選択肢のID、textに表示する文字列を指定します。
{
"type": "dropdown",
"text": "ドロップダウンの設定",
"name": "practice:dropdown_setting",
"options": [
{
"name": "one",
"text": "One"
},
{
"name": "two",
"text": "Two"
}
],
"default": "one"
}完成形
すべての要素を盛り込むとこのようになります。
{
"format_version": 3,
"header": {
"name": "練習用アドオンRP",
"description": "練習用アドオンRPの説明",
"uuid": "4e1adcc6-0352-4a42-93a6-54532a7f4f3f",
"version": "1.0.0",
"min_engine_version": "1.21.130"
},
"modules": [
{
"type": "resources",
"uuid": "a195ebbc-050b-4b7e-baa6-f52de0f31e84",
"version": "1.0.0"
}
],
"settings": [
{
"type": "label",
"text": "テスト"
},
{
"type": "toggle",
"text": "トグルの設定",
"name": "practice:toggle_setting",
"default": true
},
{
"type": "slider",
"text": "スライダーの設定",
"name": "practice:slider_setting",
"min": 1,
"max": 3,
"step": 1,
"default": 1
},
{
"type": "dropdown",
"text": "ドロップダウンの設定",
"name": "practice:dropdown_setting",
"options": [
{
"name": "one",
"text": "One"
},
{
"name": "two",
"text": "Two"
}
],
"default": "one"
}
]
}設定した値の取得
先ほど作成した、トグル、スライダー、ドロップダウンはプレイヤーが設定した値を取得して条件分けを行うことができます。ビヘイビアーパックとリソースパックでは取得方法が異なるので、それぞれのやり方を説明します。
リソースパック
リソースパックの場合は、molangを使って、値を取得します。書き方は以下の通りです。
query.is_pack_setting_enabled('トグル名') // トグルの場合
query.get_pack_setting('スライダー名') // スライダーの場合
query.is_pack_setting_enabled('ドロップダウン名', '設定値') // ドロップダウンの場合ビヘイビアーパック
ビヘイビアーパックの場合は、scriptAPIを使って、値を取得します。まだ、プレリリース段階の機能のため、ベータAPIが必要です。詳細は以下のリンク先で確認してください。

さいごに
この機能はまだまだ試験段階の機能のため、できることは限られていますが、パック(アドオン)の概要や説明など、今までmanifest内のheaderのdescriptionに書いていた内容をこっちに書くことで、見やすくなったり、表示できる文字数が増えたりとメリットが多いかと思います。

ちなみに、このUIの上部に表示される「練習用アドオンRP 設定」は自動で、「[アドオン名] 設定」と表示されます。この部分の翻訳キーはresourcePack.packSettingsTitleです。翻訳の文字列を変えてあげると、アドオンの詳細画面のようにすることもできます。


