見出し画像

manifest.jsonをすごくわかりやすく解説!【マインクラフト統合版1.20.80対応】

こんにちは!YUKI , (ユキ カンマ) です。

マイクラでアドオン開発をするなら知っておくべき!
 manifest.json をバッチリ解説!

前回のイチからわかる!マイクラでアドオン開発のススメ | YUKI ,もぜひ!


更新履歴

  • 2024/04/23  min_engine_versionの説明が大幅に間違えていたのを修正

  • 2024/04/24  バージョン1.20.80に対応を確認

  • 2024/05/15  文章をわかりやすく修正





manifest.json とは?

Minecraftにおいて manifest.json は絶対に必要なファイル!
このフォルダーの中身はアドオンだよ!
とMinecraftに教えてあげるためのファイルです。

フォルダーの中にmanifest.jsonがあることでアドオンと認識する
アドオンフォルダにmanifest.jsonがあればOK!

なので、manifest.jsonがないとアドオンが動かないので注意!

この記事では、manifest.jsonでよく使う項目を解説します。
普通のアドオン開発で、あまり使うことのない項目の説明はしません!

例えば、metadate の license という項目は大事な項目ではあるのですが、
ライセンス自体が少し難しいので、説明はしません。
Minecraftの動きには関係ないので、安心してくださいね。

英語がたくさん出てきますが、一つずつ解説していくので、
安心してくださいね!

この記事で主に参考にさせていただくのは、
Microsoft公式のリファレンスサイト。
詳細はここから!

アドオンのドキュメント - manifest.json

どんな時に使われる?

manifest.jsonを作らないといけない場所は、2箇所あります!
1つ目は Behavior_pack (ビヘイビアーパック)
2つ目は Resource_pack (リソースパック)
です!

ビヘイビアーパックだけを開発する時は
リソースパックを作る必要はないので、
manifest.jsonもビヘイビアーパックの1つだけ作ればOK!

逆にビヘイビアーパックとリソースパックの両方の開発を行う場合は、
それぞれのフォルダーに1つずつ、manifest.jsonが必要です。

ビヘイビアーパックにもリソースパックにも一つずつmanifest.jsonが必要
一つのフォルダに一つのmanifest.jsonと覚えよう!

VSCode拡張機能の「Blockception's Minecraft Bedrock Development
を使用する場合は、BPまたはRPをフォルダー名につけておくと
補完してくれて便利!

イチからわかる!マイクラでアドオン開発のススメ | YUKI ,

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)では、

The syntax version used in the manifest file. This may be 1 for skin packs or 2 for resource, behavior, and world packs.
(manifest.jsonで使われる構文のバージョン。スキンパックの場合は1。リソース、ビヘイビアー、ワールドパックの場合は2かもしれません)

Addons Documentation - manifest.json

とあります。
実はこれ、「◯◯パックなら絶対に2じゃないと動かない!」
というわけではありません。

一番最初の文章を見てみると、構文のバージョンとありますね。
実はこのformat_version

1か2の、数字に対応するルールに従ってプログラムを書いていきますよ!

という約束事を決めているだけなので、
「スキンパックの場合は1
リソース、ビヘイビアー、ワールドパックの場合は2
書き方のルールに従ってプログラムを書くというだけなのです!

つまり極端な話、スキンパックの書き方のルール(1番)に従って、
リソースやビヘイビアーのためのプログラムを書いても良いわけです。
(可能、というだけでオススメではありませんが…)

基本的には、1番はMinecraftの古いルールであり、
2番はMinecraftの新しいルールであることが多いです!

特別な理由がなければ異なるルールで書く必要はないと思うので、
リソースやビヘイビアーパックを開発する時には、2を選択しましょう!


header(ヘッダー)

公式リファレンスサイト(※1)では、

Section containing information regarding the name of the pack, description, and other features that are public facing.
(パックの名前、説明、公開されているその他の機能に関する情報を含むセクションです)

Addons Documentation - manifest.json

とあります。
つまり、難しい日本語で言うと「概要部」ということになりますね!
headerではパックの名前、UUID、パックの説明などを書いていきます。

UUIDの部分以外は、間違えていても動くはずなので、
リラックスして書いていきましょう!

ここから先はheaderの中に書くプロパティを解説していきます!


** description(ディスクリプション)

公式リファレンスサイト(※1)では、

This is a short description of the pack. It will appear in the game below the name of the pack. We recommend keeping it to 1-2 lines.
(パックの簡単な説明です。ゲーム内のパック名の下に表示されます。 1 ~ 2 行に留めることをお勧めします)

Addons Documentation - manifest.json

とあります。
これはMinecraftでアドオンを選ぶ時などに出てくる説明です!

画像は、前回作成したマイクラスターターキットのアドオンのもの。
manifest.jsondescriptionのところに書いた文章が表示されます!

ディスクリプションに書いたことがマインクラフトにも表示されている
Minecraftで入れるアドオンを決める画面に説明が出ている

アドオンを使うみんなにも、わかりやすい説明を書いてみましょう!


** name(ネーム)

公式リファレンスサイト(※1)では、

This is the name of the pack as it appears within Minecraft. This is a required field.
(これは、Minecraft 内で表示されるパックの名前です。これは必要項目です)

Addons Documentation - manifest.json

とあります。
これはアドオンの名前を決める部分です!
ここで入力した名前が、アドオンの名前として表示されます。

前回作成したマイクラスターターキットのアドオンの記事の方と、
少し書いてあることが違いますが、気にしないでくださいね。

ネームに書いたことがマインクラフトにも表示されている
Minecraftで入れるアドオンを決める画面に名前が出ている

** uuid(ユーユーアイディー)

公式リファレンスサイト(※1)では、

This is a special type of identifier that uniquely identifies this pack from any other pack. UUIDs are written in the format xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx where each x is a hexadecimal value (0-9 or a-f). We recommend using an online service to generate this and guarantee their uniqueness,
(これは、このパックを他のパックから一意に識別する特別なタイプの識別子です。 UUID は、xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx の形式で記述されます。各 x は 16 進数値 (0 ~ 9 または a ~ f) です。 これを生成し、その一意性を保証するには、オンライン サービスを使用することをお勧めします)

Addons Documentation - manifest.json

とあります。
実はこれ、Minecraftだけの言葉ではありません!

UUIDはユニバーサリー ユニーク アイデンティファーと言いますが、
世界中で唯一のIDという意味です!

UUID(読:ユーユーアイディー)とは
いつでも誰でも作れるけど、作ったIDは世界中で重複しないことになっているIDです。

「分かりそう」で「分からない」でも「分かった」気になれるIT用語辞典

つまり、アドオンにUUIDを書いておけば、
アドオン1とアドオン2とアドオン3と…というように、
別々のアドオンとして区別をできるようになるということです!

UUIDが異なることで別のアドオンだと認識できるようになる
UUIDが違えば、ちゃんと動く!

もしUUIDが同じだけど、中身が違うアドオンがあると
Minecraftは「むむ、この二つのアドオンは同じアドオン?違う?
となってしまいます。

なので、違うUUIDを書いておくことで、
Minecraftがアドオンをちゃんと読み込んでくれるようになるのです!

これはすごく大事なことなので、覚えてくださいね!

UUIDのおかげで、Minecraftにたくさんのアドオンを入れることができる。

UUIDの作り方は前回作成したマイクラスターターキットのアドオンの記事を
参考にしてみてください!


** min_engine_version(ミン_エンジン_バージョン)

公式リファレンスサイト(※1)では、

This is the minimum version of the game that this pack was written for. This is a required field for resource and behavior packs. This helps the game identify whether any backwards compatibility is needed for your pack. You should always use the highest version currently available when creating packs.
(これは、このパックが作成されたゲームの最小バージョンです。 これは、リソース パックとビヘイビアー パックの必須フィールドです。 これは、パックに下位互換性が必要かどうかをゲームが識別するのに役立ちます。 パックを作成するときは、常に現在利用可能な最新バージョンを使用する必要があります)

Addons Documentation - manifest.json

とあります。
これはアドオンが動くために必要なMinecraftの最低バージョンです。

24/04/23  説明を全く間違えておりました。
1日経って読み直していたら普通に「ん?」となりました…
この文章よりも前に記事を読んでくださった方に
間違った情報を提供してしまい、大変申し訳ございません。

YUKI ,(ユキ カンマ)

つまり、min_engine_versionに書かれたMinecraftのバージョンと、
今のMinecraftのバージョンを比べて、
min_engine_versionの方が大きいと動かなくなります。

例えばアドオンを作っている今のバージョンが1.20.10としますね。
そして今のMinecraftは1.20.40とします。

この時、min_engine_versionの数字はいくつになるでしょうか?

minは英語で「最小」「もっとも小さい」という意味ですよ!

答えは、1.20.10です!

このような例の場合は、アドオンはちゃんと動きます!

今度は、逆のような状況になってしまう場合を考えます。
min_engine_versionに1.20.40と書いていて、
今のMinecraftが1.20.10とします。

この場合は、なんと動きません

これは、Minecraftがアドオンを読み込んだときに、
「Minecraftのバージョンが1.20.40よりも後ろの時しか使えない!」
と考えてしまうからです!

min_engine_versionに書く数字は、
アドオンがちゃんと動く!と確認できる最新のバージョン、
つまり、Minecraftの今のバージョンにすればOK!

そして、アドオンを作り終わったら、
この部分はそのままにしておきましょう!

min_engine_versionは、
「このアドオンは最低でも[a, b, c]のバージョンで動くよ!」
「そして、それより後ろのバージョンのMinecraftでも動くよ!」
とMinecraftに教えてあげるためのものなので、
常に最新にする必要はなし!


** version(バージョン)

公式リファレンスサイト(※1)では、

This is the version of your pack in the format [majorVersion, minorVersion, revision]. The version number is used when importing a pack that has been imported before. The new pack will replace the old one if the version is higher, and ignored if it's the same or lower.
(これは、[メジャーバージョン、マイナーバージョン、リビジョン] の形式で表されるパックのバージョンです。 バージョン番号は、以前にインポートされたパックをインポートするときに使用されます。 バージョンが高い場合は新しいパックが古いパックを置き換えますが、同じかそれより低い場合は無視されます)

Addons Documentation - manifest.json

とあります。
これはMinecraftに限らず、ゲームやアプリなどでもよく見るものです!

[a, b, c]のような形になっていて、それぞれには数字が入ります!
a はメジャーバージョン
b はマイナーバージョン までは一緒ですが…
c は パッチバージョンであったり、リビジョンビルドバージョン
とも呼ばれます!
なので、パッチとリビジョンはほぼ同じと考えてもOK!

x.x.x のような形で書かれていて、xには数字が入ります。
例えば v1.2.10 と書かれている場合、
この数字はバージョンですよ、と示すものが v
メジャーバージョンが 1
マイナーバージョンが 2
リビジョンが 10
ということになりますね!

バージョンの数字が先頭からメジャー、マイナー、リビジョンの順で書かれている
バージョンの種類を覚えよう!

これをmanifest.jsonで書くなら、[1, 2, 10] のようにしましょう!

分かりやすく説明してくれているサイトがあるので、
この記事では、そのサイトを引用させていただきますね。

versionを書く時は、以下のようなことを考えてみましょう!

メジャーバージョン・・・大部分のデザインや機能が変更されたとき(変更内容「大」)
マイナーバージョン・・・一部機能の改善や、細かい追加機能が実装されたとき(変更内容「中」)
パッチバージョン・・・軽微なバグの修正や誤字や注釈表現を変更したとき(変更内容「小」)

非エンジニアも知っておきたいソフトウェアのバージョン表記の書き方を解説

このversionという部分は、
Minecraftに直接関係する…というわけではありませんが、
同じバージョンのアドオンを入れようとすると、
Minecraftがうまく読み込んでくれなくなってしまいます!

これはどういうことかというと、
例えばマイクラスターターキットのアドオンを一度入れた後に、
中身を変更するとしますね。

その時に、manifest.jsonのversionの数字をあげておかないと、
Minecraftは、versionが同じ古いアドオンはダメ!としてしまい、
変更した部分が無視されてしまいます!

なので、アドオンの中身を変えた時には、
versionも一緒に変えておきましょうね!
(たまにversionを変えなくても変更がうまくいく時もあります!)


modules(モジュールス)

さて、ここからはheaderとは違うところです!
上にあるmanifest.jsonのサンプルを見ながら書いていきましょう!

公式リファレンスサイト(※1)では、

Section containing information regarding the type of content that is being brought in.
(持ち込まれるコンテンツの種類に関する情報を含むセクション)

Addons Documentation - manifest.json

とあります。
モジュールというのは、一つの大きな部品だと考えてください!

例えばMinecraftには、たくさんの種類のブロックがあります。
その一つ一つの土ブロック丸石ブロックというブロックそのものが、
ゲームに入っていることで、Minecraftというゲームになっています!

モジュールも同じような形になっていて、
モジュールにも、土モジュールがあって丸石モジュールがあります。
そしてモジュールが入っていることで、アドオンになります!

マインクラフトは様々なブロックやアイテムが入っていることで一つのゲームとなり、アドオンもいくつかのモジュールが入っていることで一つのアドオンになる
ブロックとモジュールは似ている

つまり、Minecraftには土ブロックや草ブロックが必要なように、
アドオン開発には、モジュールが絶対に必要ということなのです!

土モジュールや丸石モジュールという名前は例えなので
あくまでモジュールってMinecraftのブロックみたいなものなんだ!
と考えてくださいね!

modulesの部分の書き方はモジュールの種類によって違いますが、
ここでは全て解説します!


** description(ディスクリプション)

公式リファレンスサイト(※1)では、

This is a short description of the module. This is not user-facing at the moment but is a good place to remind yourself why the module is defined.
(これはモジュールの簡単な説明です。現時点ではこれはユーザー向けではありませんが、モジュールが定義されている理由を思い出すのに適した場所です)

Addons Documentation - manifest.json

とあります。
これは、headerdescriptionに書いたものと意味は同じものです!

ただし、こちらの方はMinecraftの画面には表示されません!
さらに、書いても書かなくてもOK!

なので、あとで自分が思い出しやすい説明を書いておきましょうね!


** type(タイプ)

公式リファレンスサイト(※1)では、

This is the type of the module. Can be any of the following: resources, data, world_template or script.
(これはモジュールの種類です。リソース、データ、ワールド_テンプレート、またはスクリプトのいずれかを指定できます)

Addons Documentation - manifest.json

とあります。
これが先ほど説明したモジュール(modules)の種類を書く部分です!

Minecraftには数え切れないくらい、たくさんのブロックがありますが、
実はmodulesには7種類しかありません!

その中でも、アドオン開発によく使われるのは以下の3種類+1種類です!

  1. resources(リソース)

  2. data(データ)

  3. world_template(ワールド_テンプレート)

  4. script(スクリプト)

3番のworld_templateは、他の部分の説明に出てくるので含めていますが、
アドオン開発ではあまり使わないかもしれません!
(少なくともYUKI ,は使ったことがありません!)

この中から、
このmanifest.jsonがあるフォルダの「アドオンの種類」を選びます!

例えば今、ビヘイビアーパックのアドオンを開発していたとします。
そうすると、「ビヘイビアーパックのフォルダの中」に、
manifest.jsonがあるはずです!

そうなると、ビヘイビアーパックのmanifest.jsonの中の
modulestypeには、dataと書くことになります!

dataは、ビヘイビアーパックのモジュールだよ!ということ。

では、リソースパックのアドオンのmodulesには何を選ぶでしょうか?

答えは、resources です!

アドオンを開発するにはmodulesが必須なので、
ビヘイビアーパックには data
リソースパックには resources
ワールドテンプレートには world_template
Script APIには script
を選択しましょう!

タイプには、ビヘイビアーならdata、リソースパックならresources、ワールドテンプレートならworld_template、スクリプトAPIなら、scriptを選ぶ
適切なモジュールタイプを選ぶこと!

よくわからなければ、
ビヘイビアーパックのアドオンのmanifest.jsonにはdata
リソースパックのアドオンのmanifest.jsonにはresources
と書く、と覚えておきましょうね!


** uuid(ユーユーアイディー)

公式リファレンスサイト(※1)では、

This is a unique identifier for the module in the same format as the pack's UUID in the header. This should be different from the pack's UUID, and different for every module.
(これは、ヘッダー内のパックの UUID と同じ形式のモジュールの一意の識別子です。これはパックの UUID とは異なる必要があり、モジュールごとに異なる必要があります)

Addons Documentation - manifest.json

とあります。
UUID、というのはさっきも出てきましたね!

ただし、ここで注意です!
さっき作った、headerのUUIDとは、全く別のUUIDを作ってください!

ここでのUUIDは、アドオンを区別するためのものではなく、
モジュールを区別するためのものです!

headerのUUIDとmodulesのUUIDはそれぞれのユニークなIDのことなので、別々にしておく
headerのUUIDとmodulesのUUIDは違うものを指す!

もしここで、headerのUUIDと同じにしてしまうと、
Minecraftは「ん?これはアドオン?モジュール?」と
わからなくなってしまいます。

そうなると、上手くアドオンを入れることができなくなってしまうので、
必ずheaderのUUIDとは全く違うUUIDを新たに作ってくださいね!

UUIDの作り方は前回作成したマイクラスターターキットのアドオンの記事を
参考にしてみてください!


** version(バージョン)

公式リファレンスサイト(※1)では、

This is the version of the module in the same format as the pack's version in the header. This can be used to further identify changes in your pack.
(これは、ヘッダー内のパックのバージョンと同じ形式のモジュールのバージョンです。これを使用して、パック内の変更をさらに特定できます)

Addons Documentation - manifest.json

とあります。
ここの部分、実はheaderのversionと仕組みは同じです。

ただし、さっきのuuidと同じように、
こっちのversionはheaderの方とは違う意味で書いていきます!

さっきのuuidモジュールを区別するための番号でしたね。
uuidと同じように、
versionモジュールごとのバージョンを書いていきます!

UUIDと同じく、バージョンもそれぞれのことを指す
modulesごとのバージョンを書く!

これはたとえば、あなたが開発したアドオンの中に、
ビヘイビアーパックリソースパックがあるとします。

今回は例として
headerのversionが [1, 2, 5]
ビヘイビアーパックのversionが [1, 2, 0]
リソースパックのversionが [1, 1, 0]
とします!

そして、ビヘイビアーパックの方だけ開発を進めたとします!
そうすると、リソースパックの方は前のバージョンから
何も変わっていないのでversionの数字もそのままでいいですね。

しかし、ビヘイビアーパックの方は開発を進めたので、
versionの数字も一つあげて
おきます。

そしてheaderの方のversion
アドオンとして開発が進んだので、数字をあげておきます!

最終的に
ビヘイビアーパックのversionが [1, 2, 1](3番目を一つあげる
リソースパックのversionが [1, 1, 0](そのまま
headerのversionが [1, 2, 6](3番目を一つあげる
になります!

と、このように
アドオンとしてのversionモジュールとしてのversion
分かれていることで管理がしやすくなります!

自分以外の人が見てもわかりやすいように、
バージョン管理を少し意識してみましょう!


** language(ランゲージ)

公式リファレンスサイト(※1)では、

Only present if type is script. This indicates the language in which scripts are written in the pack. The only supported value is javascript.
(タイプがスクリプトの場合にのみ存在します。これは、パック内でスクリプトが記述されている言語を示します。サポートされている値は javascript のみです)

Addons Documentation - manifest.json

とあります。
これは、modulesの中のtypeで、scriptを選んだ時だけ設定するものです!

script、またはScript APIについては別の記事でまとめていきますので、
ここでは少し簡単に説明しますね!

実は、このlanguageに書けるのは"javascript"というものだけです。

そして、language自体を書くのは、
modulestypeという項目で、scriptを選んだ時のみ!

タイプでscriptを選んだなら、languageでjavascriptを書く!
typeでscriptを書いた時だけ!

modulesの中のtypeでscriptを選ぶ時というのは、
Script APIを使った上級者向けアドオン開発を行う時です!

このScript APIというのは、
JavaScript(ジャヴァスクリプト)という言語を使って、
プログラミングでMinecraftのアドオン開発しよう!
というものです!

実際の社会でもJavaScriptはよく使われています。
なんと社会で使われているランキング、1位

2024年|求人数が多い「プログラミング言語」ランキング

そして、languageの項目で選べるのはたった一つだけ
それがプログラミング言語の"javascript"というわけです!

つまり、languageを書く時はScript APIを使う時のみなので、
それ以外のアドオン開発では書く必要がありません!

もちろん、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の中のtypescriptを選んだ時に設定するものです!

逆に言えば、languageかentryのどちらかが抜けている
動かなくなるので注意が必要です!

これは、manifest.jsonのファイルがある場所から見て、
実際のScript APIのファイルがどこにあるの?という場所の指定をします。

今回の例でいうと、
manifest.jsonのファイルがある場所と同じ場所に、
scriptsという名前のフォルダがあります。

マニフェスト.jsonのある場所にscriptフォルダーを作る
manifest.jsonとscriptフォルダが同じ場所にある

そしてscriptsフォルダの中にあるmain.jsというファイルが
ScriptAPIの中身です!

scriptフォルダーの中にmain.jsというファイルを作って、そこにスクリプトを書いていく
scriptsフォルダという場所にあるmain.js

scriptsののmain.jsを指定したいので、以下のように書いていきます。

scripts/main.js

もしファイルの名前が違うなら、mainの部分だけ変えればOK!

基本的にはmain.jsという名前でjsファイルを作るので、
entryには"scripts/main.js"と書けばOK!

アドオン開発において、
フォルダの名前やファイルを置く場所は決まっています。

イチからわかる!マイクラでアドオン開発のススメ | YUKI ,では、
development_behavior_packsの下にビヘイビアーパックを作って、
ビヘイビアーパックの下にmanifest.json
functionsフォルダがありましたね!

つまり、YUKI ,のアドオンでも他の人が作ったアドオンでも、
Script APIのファイルの場所は同じのはずなので、
entryの部分はコピーしたり、使いまわしてもOK!

例えばフォルダやファイルの場所が違うならば、
scripts/main.jsの部分を書き換える必要があります。

よくわからないうちは、ファイルを正しい場所に置いておけばOKです!


dependencies(ディペンデンシーズ)

さて、ここからは上級者向けアドオンの開発(Script API)で使う部分です!
上にあるmanifest.jsonのサンプルを見ながら書いていきましょう!

公式リファレンスサイト(※1)では、

Section containing definitions for any other packs that are required in order for this manifest.json file to work.
(このmanifest.jsonファイルが動作するために必要な他のパックの定義を含むセクション)

Addons Documentation - manifest.json

とあります。
 dependenciesとは難しい日本語で、依存関係と言います。
これは、そのアドオンが絶対に必要としている他のモジュール
書いていきます!

dependenciesの書き方の例

"dependencies": [
  {
    "module_name": "@minecraft/server",
    "version": "1.10.0-beta"
  }
]

この"@minecraft/server"というモジュールは、
アドオン開発をする時によく使われます。

これは、Minecraftが用意してくれているモジュールの一つで、
JavaScriptという言語でアドオン開発ができるようにしてくれます!

JavaScriptという名前はさっきのlanguageの項目でも出てきましたね!

他にも"@minecraft/server-ui"といったモジュールもありますが、
これら全てを合わせて、Script APIと呼ばれています!

スクリプトAPIには4種類ある
そのアドオンに使うモジュールだけ選んで使える

Script APIを使えば、
コマンドやコマンドブロックを一つも使わずにアドオン開発ができたり、
コマンドではできないような、難しい動きも作れるようになります!

ただし、JavaScriptなどのプログラミング言語は、
分かるまでは少し難しいので、
今は焦らずにアドオン開発に慣れていきましょう!

YUKI ,の記事でもまた解説していくのでお楽しみに!

それではdependenciesの部分に書くプロパティを解説していきますよ!


** uuid(ユーユーアイディー)

公式リファレンスサイト(※1)では、

This is the unique identifier of the pack that this pack depends on. It needs to be the exact same UUID that the pack has defined in the header section of its manifest file.
(これは、このパックが依存するパックの一意の識別子です。これは、パックのマニフェスト ファイルのヘッダー セクションで定義されている UUID とまったく同じである必要があります)

Addons Documentation - manifest.json

とあります。
上の説明の通り、実はこのdependenciesのuuidは、
headerのuuidと全く同じにする必要があります!
(…が、実は書かなくても動きます!
なので、間違うくらいなら書かないほうが良いかも!)

このモジュールを必要としているアドオン(依存しているアドオン)は、
これだよ!とMinecraftに教えてあげるためのものなので、
headerで作ったuuidと、同じuuidを書いてあげる必要があります。

ディペンデンシーズのUUIDは、自分のアドオンのUUIDと同じにする
uuidが同じなら依存しているアドオンをわかってくれる!

headerのuuidで作ったものを、コピーしてそのまま貼り付ければOK!

ちなみに公式リファレンスサイトの例に使う例、として書いてありますが、
実はdependenciesuuidの項目は省略してもちゃんと動きます。

なので、ここは何も書かなくてOK!


** module_name(モジュール_ネーム)

公式リファレンスサイト(※1)では、

For dependencies on built-in scripting modules, contains the name of the module. (for example, @minecraft/server)
(組み込みスクリプト モジュールへの依存関係の場合、モジュールの名前が含まれます。 (例: @minecraft/server))

Addons Documentation - manifest.json

とあります。
ここには、アドオンに組み込みたいモジュールの名前を書きます!

例えば@minecraft/serverという名前のモジュールを入れるとします。
そうすると、このように「"(ダブルクォーテーション)」で囲ってあげて、
"@minecraft/server"と書けばOK!

"module_name": "@minecraft/server"

「"(ダブルクォーテーション)」で囲まれていないと、
エラー!としてアドオンが動かなくなるので要注意!

ただし、存在しないモジュールを書いても何も起こらないので、
正しい名前を書きましょう!


** version(バージョン)

公式リファレンスサイト(※1)では、

This is the specific version of the pack that your pack depends on. Should match the version the other pack has in its manifest file.
(これは、パックが依存するパックの特定のバージョンです。他のパックのマニフェスト ファイルにあるバージョンと一致する必要があります)

Addons Documentation - manifest.json

とあります。
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を使うよ!」
と教えてあげるためのもの!

なので、モジュールのバージョンを書くことが大事です!
存在しないバージョンを指定すると、動かなくなってしまうので注意!

ちなみにMinecraft v1.20.73では
@minecraft/serverが1.9.0もしくは1.10.0-beta
@minecraft/server-uiが1.1.0もしくは1.2.0-beta
が最新バージョン!(betaはベータ版でお試しバージョンなので注意!)


終わりに

今回はアドオン開発に絶対必要なmanifest.jsonについて解説しました!

manifest.jsonだけではアドオンは作れませんが、
アドオンにはmanifest.jsonが必須!
ということで、みなさんの理解の助けになれていたら嬉しいです!

「こういうファイルの解説が知りたい!」
「◯◯について知りたいのでまとめて!」
といった希望があれば、ぜひコメントに書いてくださいね!
(順番に解説していきます!)

もしこのnoteが参考になったら、ぜひお友達に紹介してください!

YUKI , (ユキ カンマ) 

オススメnote


この記事が気に入ったらサポートをしてみませんか?