manifest.jsonをすごくわかりやすく解説!【マインクラフト統合版1.21.41対応】
こんにちは!YUKI , (ユキ カンマ) です。
マイクラでアドオン開発をするなら知っておくべき!
manifest.json をバッチリ解説!
前回のイチからわかる!マイクラでアドオン開発のススメ | YUKI ,もぜひ!
更新履歴
2024/4/23 min_engine_versionの説明が大幅に間違えていたのを修正
2024/4/24 バージョン1.20.80に対応を確認
2024/5/15 文章をわかりやすく修正
2024/6/12 バージョン1.20.81に対応を確認
2024/6/14 バージョン1.21.0に対応を確認
2024/10/23 バージョン1.21.31に対応を確認
2024/10/24 バージョン1.21.41に対応を確認
2024/10/27 新しい記事へのリンクを追加
manifest.json とは?
Minecraftにおいて manifest.json は絶対に必要なファイル!
「このフォルダーの中身はアドオンだよ!」
とMinecraftに教えてあげるためのファイルです。
なので、manifest.jsonがないとアドオンが動かないので注意!
この記事では、manifest.jsonでよく使う項目を解説します。
普通のアドオン開発で、あまり使うことのない項目の説明はしません!
英語がたくさん出てきますが、一つずつ解説していくので、
安心してくださいね!
どんな時に使われる?
manifest.jsonを作らないといけない場所は、2箇所あります!
1つ目は Behavior_pack (ビヘイビアーパック)
2つ目は Resource_pack (リソースパック)
です!
ビヘイビアーパックだけを開発する時は
リソースパックを作る必要はないので、
manifest.jsonもビヘイビアーパックの1つだけ作ればOK!
逆にビヘイビアーパックとリソースパックの両方の開発を行う場合は、
それぞれのフォルダーに1つずつ、manifest.jsonが必要です。
manifest.jsonの書き方
アドオンの中身、つまりjsonファイル(他にもjsファイルなど)には、
必ず「こう書いてね!」という決まりがあります。
その決まりに従っていないと、
Minecraftはちゃんと受け取ってくれないんです…。
manifest.jsonを解説しているサイトさんの中には、
「これをコピーしてね!」と説明しているところもあると思いますが、
今回はコピーではなく、よく使う部分を全て説明してみます。
まずはサンプルを見た後、それぞれの用語の解説をしていきます!
manifest.jsonのサンプル
例えばよく使われるmanifest.jsonは次のような形です。
ビヘイビアーパックのmanifest.jsonの例
{
"format_version": 2,
"header": {
"description": "pack.description",
"name": "pack.name",
"uuid": "UUID その1",
"min_engine_version": [ 1, 20, 60 ],
"version": [ 1, 0, 0 ]
},
"modules": [
{
"type": "data",
"uuid": "UUID その2",
"version": [ 1, 0, 0 ]
}
]
}
ScriptAPIのmanifest.jsonの例
{
"format_version": 2,
"header": {
"description": "pack.description",
"name": "pack.name",
"uuid": "UUID その1",
"min_engine_version": [ 1, 20, 60 ],
"version": [ 1, 0, 0 ]
},
"modules": [
{
"type": "script",
"entry": "scripts/main.js",
"uuid": "UUID その2",
"version": [ 1, 0, 0 ]
}
],
"dependencies": [
{
"module_name": "@minecraft/server",
"version": "1.10.0-beta"
}
]
}
format_version(フォーマット_バージョン)
公式リファレンスサイト(※1)では、
とあります。
実はこれ、「◯◯パックなら絶対に2じゃないと動かない!」
というわけではありません。
一番最初の文章を見てみると、構文のバージョンとありますね。
実はこのformat_versionは
という約束事を決めているだけなので、
「スキンパックの場合は1。
リソース、ビヘイビアー、ワールドパックの場合は2」
の書き方のルールに従ってプログラムを書くというだけなのです!
つまり極端な話、スキンパックの書き方のルール(1番)に従って、
リソースやビヘイビアーのためのプログラムを書いても良いわけです。
(可能、というだけでオススメではありませんが…)
特別な理由がなければ異なるルールで書く必要はないと思うので、
リソースやビヘイビアーパックを開発する時には、2を選択しましょう!
header(ヘッダー)
公式リファレンスサイト(※1)では、
とあります。
つまり、難しい日本語で言うと「概要部」ということになりますね!
headerではパックの名前、UUID、パックの説明などを書いていきます。
UUIDの部分以外は、間違えていても動くはずなので、
リラックスして書いていきましょう!
ここから先はheaderの中に書くプロパティを解説していきます!
** description(ディスクリプション)
公式リファレンスサイト(※1)では、
とあります。
これはMinecraftでアドオンを選ぶ時などに出てくる説明です!
画像は、前回作成したマイクラスターターキットのアドオンのもの。
manifest.jsonのdescriptionのところに書いた文章が表示されます!
アドオンを使うみんなにも、わかりやすい説明を書いてみましょう!
** name(ネーム)
公式リファレンスサイト(※1)では、
とあります。
これはアドオンの名前を決める部分です!
ここで入力した名前が、アドオンの名前として表示されます。
前回作成したマイクラスターターキットのアドオンの記事の方と、
少し書いてあることが違いますが、気にしないでくださいね。
** uuid(ユーユーアイディー)
公式リファレンスサイト(※1)では、
とあります。
実はこれ、Minecraftだけの言葉ではありません!
UUIDはユニバーサリー ユニーク アイデンティファーと言いますが、
世界中で唯一のIDという意味です!
つまり、アドオンにUUIDを書いておけば、
アドオン1とアドオン2とアドオン3と…というように、
別々のアドオンとして区別をできるようになるということです!
もしUUIDが同じだけど、中身が違うアドオンがあると
Minecraftは「むむ、この二つのアドオンは同じアドオン?違う?」
となってしまいます。
なので、違うUUIDを書いておくことで、
Minecraftがアドオンをちゃんと読み込んでくれるようになるのです!
これはすごく大事なことなので、覚えてくださいね!
UUIDの作り方は前回作成したマイクラスターターキットのアドオンの記事を
参考にしてみてください!
** min_engine_version(ミン_エンジン_バージョン)
公式リファレンスサイト(※1)では、
とあります。
これはアドオンが動くために必要なMinecraftの最低バージョンです。
つまり、min_engine_versionに書かれたMinecraftのバージョンと、
今のMinecraftのバージョンを比べて、
min_engine_versionの方が大きいと動かなくなります。
例えばアドオンを作っている今のバージョンが1.20.10としますね。
そして今のMinecraftは1.20.40とします。
この時、min_engine_versionの数字はいくつになるでしょうか?
答えは、1.20.10です!
このような例の場合は、アドオンはちゃんと動きます!
今度は、逆のような状況になってしまう場合を考えます。
min_engine_versionに1.20.40と書いていて、
今のMinecraftが1.20.10とします。
この場合は、なんと動きません!
これは、Minecraftがアドオンを読み込んだときに、
「Minecraftのバージョンが1.20.40よりも後ろの時しか使えない!」
と考えてしまうからです!
min_engine_versionに書く数字は、
アドオンがちゃんと動く!と確認できる最新のバージョン、
つまり、Minecraftの今のバージョンにすればOK!
そして、アドオンを作り終わったら、
この部分はそのままにしておきましょう!
** version(バージョン)
公式リファレンスサイト(※1)では、
とあります。
これはMinecraftに限らず、ゲームやアプリなどでもよく見るものです!
x.x.x のような形で書かれていて、xには数字が入ります。
例えば v1.2.10 と書かれている場合、
この数字はバージョンですよ、と示すものが v
メジャーバージョンが 1
マイナーバージョンが 2
リビジョンが 10
ということになりますね!
分かりやすく説明してくれているサイトがあるので、
この記事では、そのサイトを引用させていただきますね。
versionを書く時は、以下のようなことを考えてみましょう!
このversionという部分は、
Minecraftに直接関係する…というわけではありませんが、
同じバージョンのアドオンを入れようとすると、
Minecraftがうまく読み込んでくれなくなってしまいます!
これはどういうことかというと、
例えばマイクラスターターキットのアドオンを一度入れた後に、
中身を変更するとしますね。
その時に、manifest.jsonのversionの数字をあげておかないと、
Minecraftは、versionが同じか古いアドオンはダメ!としてしまい、
変更した部分が無視されてしまいます!
なので、アドオンの中身を変えた時には、
versionも一緒に変えておきましょうね!
(たまにversionを変えなくても変更がうまくいく時もあります!)
modules(モジュールス)
さて、ここからはheaderとは違うところです!
上にあるmanifest.jsonのサンプルを見ながら書いていきましょう!
公式リファレンスサイト(※1)では、
とあります。
モジュールというのは、一つの大きな部品だと考えてください!
例えばMinecraftには、たくさんの種類のブロックがあります。
その一つ一つの土ブロックや丸石ブロックというブロックそのものが、
ゲームに入っていることで、Minecraftというゲームになっています!
モジュールも同じような形になっていて、
モジュールにも、土モジュールがあって丸石モジュールがあります。
そしてモジュールが入っていることで、アドオンになります!
つまり、Minecraftには土ブロックや草ブロックが必要なように、
アドオン開発には、モジュールが絶対に必要ということなのです!
modulesの部分の書き方はモジュールの種類によって違いますが、
ここでは全て解説します!
** description(ディスクリプション)
公式リファレンスサイト(※1)では、
とあります。
これは、headerのdescriptionに書いたものと意味は同じものです!
ただし、こちらの方はMinecraftの画面には表示されません!
さらに、書いても書かなくてもOK!
なので、あとで自分が思い出しやすい説明を書いておきましょうね!
** type(タイプ)
公式リファレンスサイト(※1)では、
とあります。
これが先ほど説明したモジュール(modules)の種類を書く部分です!
Minecraftには数え切れないくらい、たくさんのブロックがありますが、
実はmodulesには7種類しかありません!
その中でも、アドオン開発によく使われるのは以下の3種類+1種類です!
resources(リソース)
data(データ)
world_template(ワールド_テンプレート)
script(スクリプト)
この中から、
このmanifest.jsonがあるフォルダの「アドオンの種類」を選びます!
例えば今、ビヘイビアーパックのアドオンを開発していたとします。
そうすると、「ビヘイビアーパックのフォルダの中」に、
manifest.jsonがあるはずです!
そうなると、ビヘイビアーパックのmanifest.jsonの中の
modulesのtypeには、dataと書くことになります!
では、リソースパックのアドオンのmodulesには何を選ぶでしょうか?
答えは、resources です!
アドオンを開発するにはmodulesが必須なので、
ビヘイビアーパックには data
リソースパックには resources
ワールドテンプレートには world_template
Script APIには script
を選択しましょう!
** uuid(ユーユーアイディー)
公式リファレンスサイト(※1)では、
とあります。
UUID、というのはさっきも出てきましたね!
ただし、ここで注意です!
さっき作った、headerのUUIDとは、全く別のUUIDを作ってください!
ここでのUUIDは、アドオンを区別するためのものではなく、
モジュールを区別するためのものです!
もしここで、headerのUUIDと同じにしてしまうと、
Minecraftは「ん?これはアドオン?モジュール?」と
わからなくなってしまいます。
そうなると、上手くアドオンを入れることができなくなってしまうので、
必ずheaderのUUIDとは全く違うUUIDを新たに作ってくださいね!
UUIDの作り方は前回作成したマイクラスターターキットのアドオンの記事を
参考にしてみてください!
** version(バージョン)
公式リファレンスサイト(※1)では、
とあります。
ここの部分、実はheaderのversionと仕組みは同じです。
ただし、さっきのuuidと同じように、
こっちのversionはheaderの方とは違う意味で書いていきます!
さっきのuuidはモジュールを区別するための番号でしたね。
uuidと同じように、
versionもモジュールごとのバージョンを書いていきます!
これはたとえば、あなたが開発したアドオンの中に、
ビヘイビアーパックとリソースパックがあるとします。
そして、ビヘイビアーパックの方だけ開発を進めたとします!
そうすると、リソースパックの方は前のバージョンから
何も変わっていないのでversionの数字もそのままでいいですね。
しかし、ビヘイビアーパックの方は開発を進めたので、
versionの数字も一つあげておきます。
そしてheaderの方のversionも
アドオンとして開発が進んだので、数字をあげておきます!
と、このように
アドオンとしてのversion、モジュールとしてのversionと
分かれていることで管理がしやすくなります!
自分以外の人が見てもわかりやすいように、
バージョン管理を少し意識してみましょう!
** language(ランゲージ)
公式リファレンスサイト(※1)では、
とあります。
これは、modulesの中のtypeで、scriptを選んだ時だけ設定するものです!
script、またはScript APIについては別の記事でまとめていきますので、
ここでは少し簡単に説明しますね!
実は、このlanguageに書けるのは"javascript"というものだけです。
そして、language自体を書くのは、
modulesのtypeという項目で、scriptを選んだ時のみ!
modulesの中のtypeでscriptを選ぶ時というのは、
Script APIを使った上級者向けアドオン開発を行う時です!
このScript APIというのは、
JavaScript(ジャヴァスクリプト)という言語を使って、
プログラミングでMinecraftのアドオン開発しよう!
というものです!
そして、languageの項目で選べるのはたった一つだけ!
それがプログラミング言語の"javascript"というわけです!
もちろん、JavaScriptという言語の勉強をしていないと、
いきなり開発を始めるには、かなり難しいです!
なので、まずはビヘイビアーパックやリソースパックの
アドオン開発にゆっくり慣れていきましょうね!
languageを書く時のmanifest.jsonの一部の例
"modules": [
{
{
"description": "Script API アドオン!",
"type": "script",
"uuid": "UUID その2",
"version": [1, 0, 0],
"language": "javascript",
"entry": "scripts/main.js"
}
}
]
** entry(エントリー)
公式リファレンスサイトには載っていませんが、
これがないとScript APIのアドオンが動かないので、説明します!
entryの例
"modules": [
{
{
〜省略〜
"entry": "scripts/main.js"
}
}
]
これは、languageと同じで、
modulesの中のtypeでscriptを選んだ時に設定するものです!
逆に言えば、languageかentryのどちらかが抜けていると
動かなくなるので注意が必要です!
これは、manifest.jsonのファイルがある場所から見て、
実際のScript APIのファイルがどこにあるの?という場所の指定をします。
今回の例でいうと、
manifest.jsonのファイルがある場所と同じ場所に、
scriptsという名前のフォルダがあります。
そしてscriptsフォルダの中にあるmain.jsというファイルが
ScriptAPIの中身です!
scriptsの中のmain.jsを指定したいので、以下のように書いていきます。
scripts/main.js
もしファイルの名前が違うなら、mainの部分だけ変えればOK!
アドオン開発において、
フォルダの名前やファイルを置く場所は決まっています。
つまり、YUKI ,のアドオンでも他の人が作ったアドオンでも、
Script APIのファイルの場所は同じのはずなので、
entryの部分はコピーしたり、使いまわしてもOK!
例えばフォルダやファイルの場所が違うならば、
scripts/main.jsの部分を書き換える必要があります。
よくわからないうちは、ファイルを正しい場所に置いておけばOKです!
dependencies(ディペンデンシーズ)
さて、ここからは上級者向けアドオンの開発(Script API)で使う部分です!
上にあるmanifest.jsonのサンプルを見ながら書いていきましょう!
公式リファレンスサイト(※1)では、
とあります。
dependenciesとは難しい日本語で、依存関係と言います。
これは、そのアドオンが絶対に必要としている他のモジュールを
書いていきます!
dependenciesの書き方の例
"dependencies": [
{
"module_name": "@minecraft/server",
"version": "1.10.0-beta"
}
]
この"@minecraft/server"というモジュールは、
アドオン開発をする時によく使われます。
これは、Minecraftが用意してくれているモジュールの一つで、
JavaScriptという言語でアドオン開発ができるようにしてくれます!
他にも"@minecraft/server-ui"といったモジュールもありますが、
これら全てを合わせて、Script APIと呼ばれています!
Script APIを使えば、
コマンドやコマンドブロックを一つも使わずにアドオン開発ができたり、
コマンドではできないような、難しい動きも作れるようになります!
ただし、JavaScriptなどのプログラミング言語は、
分かるまでは少し難しいので、
今は焦らずにアドオン開発に慣れていきましょう!
それではdependenciesの部分に書くプロパティを解説していきますよ!
** uuid(ユーユーアイディー)
公式リファレンスサイト(※1)では、
とあります。
上の説明の通り、実はこのdependenciesのuuidは、
headerのuuidと全く同じにする必要があります!
(…が、実は書かなくても動きます!
なので、間違うくらいなら書かないほうが良いかも!)
このモジュールを必要としているアドオン(依存しているアドオン)は、
これだよ!とMinecraftに教えてあげるためのものなので、
headerで作ったuuidと、同じuuidを書いてあげる必要があります。
ちなみに公式リファレンスサイトの例に使う例、として書いてありますが、
実はdependenciesのuuidの項目は省略してもちゃんと動きます。
なので、ここは何も書かなくてOK!
** module_name(モジュール_ネーム)
公式リファレンスサイト(※1)では、
とあります。
ここには、アドオンに組み込みたいモジュールの名前を書きます!
例えば@minecraft/serverという名前のモジュールを入れるとします。
そうすると、このように「"(ダブルクォーテーション)」で囲ってあげて、
"@minecraft/server"と書けばOK!
"module_name": "@minecraft/server"
ただし、存在しないモジュールを書いても何も起こらないので、
正しい名前を書きましょう!
** version(バージョン)
公式リファレンスサイト(※1)では、
とあります。
versionはすでにたくさん出てきましたね!
versionがどんなものだったか、思い出してみましょう。
今まで登場したversionは、自分で管理するための番号でした。
ですが、今回は違います!
ここでは、module_nameに書いたモジュールの
バージョン番号を書きます。
例えば@minecraft/serverの1.9.0を使う場合は次のように書きます。
"dependencies": [
{
"module_name": "@minecraft/server",
"version": "1.9.0"
}
]
これはMinecraftに
「@minecraft/serverというモジュールのバージョン1.9.0を使うよ!」
と教えてあげるためのもの!
なので、モジュールのバージョンを書くことが大事です!
存在しないバージョンを指定すると、動かなくなってしまうので注意!
終わりに
今回はアドオン開発に絶対必要なmanifest.jsonについて解説しました!
manifest.jsonだけではアドオンは作れませんが、
アドオンにはmanifest.jsonが必須!
ということで、みなさんの理解の助けになれていたら嬉しいです!
「こういうファイルの解説が知りたい!」
「◯◯について知りたいのでまとめて!」
といった希望があれば、ぜひコメントに書いてくださいね!
(順番に解説していきます!)
もしこのnoteが参考になったら、ぜひお友達に紹介してください!
YUKI , (ユキ カンマ)