見出し画像

マイクラのアドオンを作ってみる【その2】


・始めに

今回はリソースパックを「知る」講座ーーー。
リソースパックの中身を「書く」のはもうちょい先。
ほないくぜ

・おさらい

・マイクラのアドオンは「リソースパック」と「ビヘイビアパック」で構成されている
・メモ帳とファイルアプリと気合いで作ることが出来る
・おさらいってわざわざ書く意味な…

2.リソースパックのファイル構造を知ろう

ちょっと長いけど、ここ出来るようになれば勝ちなので。
ほな見てきましょ。

リソースパックのファイル構造

📂resource_pack
 ├📂animation_controllers
 │ └📄エンティティの名前.animation_controller.json
 ├📂animations
 │ └📄エンティティの名前.animation.json
 ├📂attachables
 │ └📄装備の名前.(playerまたはentity).json
 ├📂entity
 │ └📄エンティティの名前.json
 ├📂fogs
 │ └フォグの名前_fog_setting.json
 ├📂models
 │ ├📂entity
 │ │ └📄エンティティの名前.geo.json
 │ └📄mobs.json
 ├📂particles
 │ └📄パーティクルの名前.json
 ├📂render_controllers
 │ └📄エンティティの名前.render_controller.json
 ├📂sounds(一部省略)
 │ ├📂各ファイル
 │ ├📄music_definitions.json
 │ └📄sound_definitions.json
 ├📂texts
 │ ├📄言語名の省略(後述します).lang
 │ ├📄language_names.json
 │ └📄languages.json
 ├📂textures(一部省略)
 │ ├📂各ファイル
 │ ├📄flipbook_textures.json
 │ ├📄item_texture.json
 │ ├📄terrain_texture.json
 │ ├🖼️flame_atlas.png
 │ └🖼️forcefield_atlas.png
 ├📂ui
 │ ├📂csb_sections
 │ │ └📄各設定.json
 │ ├📂marketplace_sdl
 │ │ └📄各設定.json
 │ ├📂realmsPlus_sections
 │ │ └📄各設定.json
 │ └📂settings_sections
 │   └📄各設定.json
 ├📄biomes_client.json
 ├📄blocks.json
 ├📄manifest.json
 ├📄sounds.json
 └🖼️pack_icon.png

…はい。多いですね。
何が何だか分からないと思いますが、一つずつ解説していくので心配ご無用。
ほな早速解説へ。

📂animation_controllers

次に書く、「animations」をコントロールするファイルが入ったフォルダ。
(ジャンプした時はAというアニメーション、走った時はBというアニメーションというように)
animation_controllersファイルは、エンティティごとに存在してます。
つまり…。animation_controllersフォルダとは、「『animations』を制御するためのコントローラーのようなファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂animation_controllers
   └📄エンティティの名前.animation_controller.json

📂animations

エンティティの動き(モーションとかエモートとか)を決めるファイルが入っているフォルダ。
「アニメーション」というものを定義していて、「animation_controllers」やエンティティに呼び出される事で実行されます。何のことやらさっぱりですね。
理解するために、例を見ていきましょう。

「animation_controllers」が体に指令を出す「脳」だとすれば、
「animations」は指令を受けて実際に体を動かす、「筋肉」などに当たります。
…んー、ちょっと難しいのでもう一つ例えを。

⚠️長文注意⚠️
例えば、「アレが欲しい」と思ったら何でも手に入る世界があるとしましょう。
ただし、その世界に存在しないものは手に入らないとしましょう。
(ちなみに主は時間が欲しい)
この世界では、
自分」が「アレが欲しい」と言うと「アレ」が手に入ります。
手に入った「アレ」は、「自分」が自由に使えます
よね。
これを覚えて、続きを読んでください。
それでは言い換えてみましょう。「アレ」を「animations」にすると…。
自分」が「『animations』が欲しい」と言うと「animations」が手に入ります。
更に言い換えてみましょう。「自分」を「animation_controllers」にすると…。
「animation_controllers」が「『animations』が欲しい」と言うと「animations」が手に入ります。
ここで考えてみましょう。
先ほど、「手に入った『アレ』は、『自分』が自由に使えます」と言いました。
「アレ」は「animations」、「自分」は「animation_controllers」に置き換えたので、上の文章を言い換えてみると…。
「手に入った『animations』は、『animation_controllers』が自由に使えます」になりますね。
そうなんです。「animation_controllers」は、「欲しい」と思えば、「animations」を自由に使うことが出来るんです。
プログラミング(マイクラのアドオンを作るのも一種のプログラミングです)の世界では、「ある物体(ファイル)が『アレが欲しい』と思って手に入れた「アレ」を使う事」を、「関数を呼び出す」と言います。
ただ、関数は定義されて(つまり存在して)いなければ、いくらファイルが「アレ欲しい」と願ったって関数を呼び出す(つまりアレを手に入れて使う)事は出来ません。
そこで登場するのが、「animations」です。
もう分かった方もいるかもしれませんが、「animations」は「関数を定義するファイル(つまり、『アレ』をその世界に作り出し存在させる)」役割を持っています。
一方で、「animations_controllers」は「関数を呼び出す(つまり、『アレ』を手に入れて使う)」役割を持っています。
「この関数を実行せよ!という命令(つまり、「アレが欲しい!」という願い)」をするのが「animation_controllers」です。
よって、「『animations』は『animation_controllers』に呼び出される」と考えてください。

つまり…。animationsフォルダとは、「エンティティのアニメーションを定義したファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂animations
   └📄エンティティの名前.animation.json

📂attachables

さて、先ほどクソ長説明があってゲッソリしたと思いますが、こっから先は「多分」平和なのでご安心ください。


マイクラの装備(武器・防具)についての定義をしたファイルが入ったフォルダです。
先ほど出てきた「animations」や、テクスチャ(見た目)などが定義されています。
つまり…。attachablesフォルダとは、「武器・防具を定義するファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂attachables
   └📄装備の名前.(playerまたはentity).json

📂entity

マイクラのエンティティについての定義をしたファイルが入ったフォルダです。
アニメーション、テクスチャ、ジオメトリー(モデル)、スポーンエッグのテクスチャなどが定義されています。
つまり…。entityフォルダとは、「エンティティの見た目を定義するファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂entity
   └📄エンティティの名前.json

📂fogs

マイクラのフォグ(霧)についての定義をしたファイルが入ったフォルダです。
「マイクラに霧ってあるの?」と思った方。はい、あります。
水の色や空の色って、バイオームによって微妙に違いますよね。
あれがフォグ(霧)です。
空気の霧の色(雨の時のモヤみたいなやつ)、水面の霧の色などが定義されています。
つまり…。fogsフォルダとは、「バイオームの見た目を定義するファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂fogs
   └フォグの名前_fog_setting.json

📂models

マイクラのモデル(エンティティやブロックの形)についての定義をしたファイルが入ったフォルダです。
エンティティモデル、ブロックモデル、アイテムモデル、装備モデルなどが定義されています。
つまり…。modelsフォルダとは、「モデルの形を定義するファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂models
   ├📂entity
   │ └📄エンティティの名前.geo.json
   └📄mobs.json

📂particles

マイクラのパーティクルについての定義をしたファイルが入ったフォルダです。
色ーーーんな所で使われているパーティクルが定義されています。
「いや、パーティクルって何やねん」って思った方。
例を出すと、エリトラで空を飛ぶ時に使う花火のモヤモヤ(白色のアレ)とか。モブに空中斬り(与えるダメージ多いやつ)でダメージ与えた時のベージュっぽいアレとか。ああいう系のやつです。
こうやって例を出して見ると、実に沢山の所で使われてますね。
つまり…。particlesフォルダとは、「パーティクルの見た目、動きを定義するファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂particles
   └📄パーティクルの名前.json

📂render_controllers

マイクラのレンダーコントローラーについての定義をしたファイルが入ったフォルダです。
テクスチャ、ジオメトリー(モデル)、ジオメトリの表示非表示などが定義されています。
この他にも実に沢山の定義がありますが、これらはプログラムを組む時に(次の次の記事です)詳しく解説します。
とりあえず今は、「めちゃくちゃ色々定義出来るやつ」と思っておいてください。
そういえばですが。「結局レンダーコントローラーって何やねん」と思いますよね。ではご説明を。
レンダーコントローラーは様々な所で使われていますが、最も理解しやすい、または見たことがあるのは、「羊を染料で染める時」だと思います。
マイクラの羊を染料で染めた後、どのようなプログラムが実行されるか知っていますか?
答えは、「テクスチャを変える」プログラムが実行されるんです。
そして変える先のテクスチャを指定しているのが、この「render_controller」なんです。
ですので、組み合わせるとこんな事も出来ます。
「モブがダメージを食らったら色(テクスチャ)を変える」とか。
「プレイヤーがスニークしたら、脚以外を非表示にする」とか。
「羊に食べ物を与えたら、確率で羊が二足歩行になる」とか。
はいそこ、需要無いとか言わなーい。
「entity」フォルダと似ていますが、あちらは「初期状態」の設定。
そしてこちらは、クソ長説明であった「関数」の機能を持っているので、「関数が呼ばれた時の状態」の設定が書いてあります。
つまり…。render_controllersフォルダとは、「エンティティの見た目を色々変える事が出来るファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂render_controllers
   └📄エンティティの名前.render_controller.json

📂sounds

マイクラのBGM・SE(効果音)についての定義をしたファイルが入ったフォルダです。
音の大きさ、聞こえる範囲、どの音を鳴らすかなどが定義されています。
つまり…。soundsフォルダとは、「ゲーム内で使うBGM・SEを定義するファイルが入ったフォルダ」のこと。
⚠️ちょっと長めです⚠️
ファイルの構造・一覧はこちら↓

(各音源名については全てを書かず、一部省略)
📂resource_pack
 └📂sounds
   ├📂ambient
   │ ├📂nether
   │ │ ├📂crimson_forest
   │ │ │ └🎧各音源名.fsb
   │ │ ├📂nether_wastes
   │ │ │ └🎧各音源名.fsb
   │ │ ├📂soulsand_valley
   │ │ │ └🎧各音源名.fsb
   │ │ └📂warped_forest
   │ │   └🎧各音源名.fsb
   │ ├📂underwater
   │ │ └🎧各音源名.fsb
   │ └📂weather
   │   └🎧各音源名.fsb
   ├📂armor
   │ └🎧各音源名.fsb
   ├📂block(多すぎる為、一部省略)
   │ └📂各ファイル名
   │   └🎧各音源名.fsb
   ├📂bottle
   │ └🎧各音源名.fsb
   ├📂bubbles
   │ └🎧各音源名.fsb
   ├📂bucket
   │ └🎧各音源名.fsb
   ├📂camera
   │ └🎧各音源名.fsb
   ├📂cave
   │ └🎧各音源名.fsb
   ├📂component
   │ └📂jump_to_block
   │   └🎧各音源名.fsb
   ├📂crossbow
   │ ├📂quick_charge
   │ │ └🎧各音源名.fsb
   │ └🎧各音源名.fsb
   ├📂damage
   │ └🎧各音源名.fsb
   ├📂dig
   │ └🎧各音源名.fsb
   ├📂elytra
   │ └🎧各音源名.fsb
   ├📂enchant
   │ └📂thorns
   │   └🎧各音源名.fsb
   ├📂event
   │ ├📂mob_effects
   │ │ └🎧各音源名.fsb
   │ └📂raid
   │   └🎧各音源名.fsb
   ├📂fire
   │ └🎧各音源名.fsb
   ├📂fireworks
   │ └🎧各音源名.fsb
   ├📂item(多すぎる為、一部省略)
   │ ├📂各ファイル名
   │ │ └🎧各音源名.fsb
   │ ├🎧lock_compass1.fsb
   │ └🎧lock_compass2.fsb
   ├📂jump
   │ └🎧各音源名.fsb
   ├📂leashknot
   │ └🎧各音源名.fsb
   ├📂liquid
   │ └🎧各音源名.fsb
   ├📂minecart
   │ └🎧各音源名.fsb
   ├📂mob(多すぎる為、一部省略)
   │ └📂各ファイル名
   │   └🎧各音源名.fsb
   ├📂note
   │ └🎧各音源名.fsb
   ├📂particle
   │ └🎧各音源名.fsb
   ├📂portal
   │ └🎧各音源名.fsb
   ├📂random
   │ └🎧各音源名.fsb
   ├📂sniffer_egg
   │ └🎧各音源名.fsb
   ├📂step
   │ └🎧各音源名.fsb
   ├📂tile
   │ └📂piston
   │   └🎧各音源名.fsb
   ├📂ui
   │ ├📂cartography_table
   │ │ └🎧各音源名.fsb
   │ ├📂drawer
   │ │ └🎧各音源名.fsb
   │ ├📂hardcore
   │ │ └🎧各音源名.fsb
   │ ├📂loom
   │ │ └🎧各音源名.fsb
   │ └📂stonecutter
   │   └🎧各音源名.fsb
   ├📂vr
   │ └🎧各音源名.fsb
   ├📄music_definitions.json
   └📄sound_definitions.json

📂texts

マイクラの言語についての定義をしたファイルが入ったフォルダです。
各言語による、そのアイテムの翻訳などが定義されています。
「どういう事なん?」という方へ。
それでは「木の剣」を例に出しますと、手元に持った時に表示される名前(ディスプレイ名)は、
日本語(ja_JPと表記されます)では、「木の剣」。
英語(en_USと表記されます)では、「wooden_sword」。
このようにマイクラでは、言語によってディスプレイ名が変更されています。
そして、これをそれぞれのアイテムについて言語ごとに定義しているのが、
「言語名の省略.lang」ファイルです。
⚠️「ja_JP」、「en_US」などは「言語名の省略」ですが、種類が多いので、
これらはプログラムを組む時に(次の次の記事です)詳しく解説します。
つまり…。textsフォルダとは、「アイテムのディスプレイ名を言語ごとに定義するファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂texts
   ├📄言語名の省略.lang
   ├📄language_names.json
   └📄languages.json

📂textures

マイクラのテクスチャについての定義をしたファイルが入ったフォルダです。
ブロック、エンティティ、アイテムなどのテクスチャが定義されています。
つまり…。texturesフォルダとは、「ブロック、エンティティ、アイテムなどのテクスチャを設定するファイルが入ったフォルダ」のこと。
⚠️ちょっと長めです⚠️
ファイルの構造・一覧はこちら↓

(各音源名については全てを書かず、一部省略)
📂resource_pack
 └📂textures
   ├📂blocks
   │ └🖼️各テクスチャ.png
   ├📂colormap
   │ └🖼️各テクスチャ.png
   ├📂entity
   │ └🖼️各テクスチャ.png
   ├📂environment
   │ └🖼️各テクスチャ.png
   ├📂gui
   │ ├📂controls
   │ │ └🖼️各テクスチャ.png
   │ ├📂newgui
   │ │ └🖼️各テクスチャ.png
   │ └🖼️各テクスチャ.png
   ├📂items
   │ └🖼️各テクスチャ.png
   ├📂map
   │ └🖼️各テクスチャ.png
   ├📂misc
   │ └🖼️各テクスチャ.png
   ├📂models
   │ └📂armor
   │   └🖼️各テクスチャ.png
   ├📂painting
   │ └🖼️各テクスチャ.png
   ├📂particle
   │ └🖼️各テクスチャ.png
   ├📂particles
   │ └🖼️各テクスチャ.png
   ├📂persona_thumbnails
   │ └🖼️各テクスチャ.png
   ├📂trims
   │ ├📂color_palettes
   │ │ └🖼️各テクスチャ.png
   │ ├📂items
   │ │ └🖼️各テクスチャ.png
   │ └🖼️各テクスチャ.png
   ├📂ui
   │ ├📂game_tip_animations
   │ │ └📄各設定.json
   │ │ └🖼️各テクスチャ.png
   │ ├📂hardcore
   │ │ └🖼️各テクスチャ.png
   │ ├📂sidebar_icons
   │ │ └🖼️マーケットプレイス用テクスチャ.jpg
   │ │ └📄各設定.json
   │ │ └🖼️各テクスチャ.png
   │ ├📂subcategory_icons
   │ │ └🖼️各テクスチャ.png
   │ ├🖼️snowy.jpg
   │ ├🖼️train.jpg
   │ ├📄各設定.json
   │ └🖼️各テクスチャ.png
   ├📄flipbook_textures.json
   ├📄item_texture.json
   ├📄terrain_texture.json
   ├🖼️flame_atlas.png
   └🖼️forcefield_atlas.png

📂ui

マイクラのUI(ボタンとか)についての定義をしたファイルが入ったフォルダです。
ボタンの位置、表示非表示、タイプ(写真とかボタンとかテキストとか)、テクスチャなどが定義されています。
つまり…。UIフォルダとは、「UIを定義するファイルが入ったフォルダ」のこと。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📂ui
   ├📂csb_sections
   │ └📄各設定.json
   ├📂marketplace_sdl
   │ └📄各設定.json
   ├📂realmsPlus_sections
   │ └📄各設定.json
   ├📂settings_sections
   │ └📄各設定.json
   └📄各設定.json

📄biomes_client.json

さて、ここから「フォルダ」ではなく「ファイル」の説明になります。


バイオームの見た目を定義したファイルです。
水の色、水の透明度、使うフォグの種類などが定義されています。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📄biomes_client.json

📄blocks.json

ブロックの見た目を定義したファイルです。
テクスチャ、破壊した時の音、インベントリでの見た目などが定義されています。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📄blocks.json

📄manifest.json

マイクラにアドオンとして認識してもらう為のファイルです。
上記の通り、めちゃくちゃ重要なファイル。
このファイルが無いと、アドオンが動きません。
というかそもそもマイクラにアドオンとして認識してもらえません。
アドオンの名前、説明、バージョン、uuid(manifest.json一つ一つに存在する、識別番号みたいな文字列)、タイプ(リソースパックとかビヘイビアパックとか)などが定義されています。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📄manifest.json

📄sounds.json

BGM、SE(効果音)を定義したファイルです。
鳴らす音、ピッチ、音の大きさなどが定義されています。
ファイルの構造・一覧はこちら↓

📂resource_pack
 └📄sounds.json

🖼️pack_icon.png

リソースパックのアイコンになる画像ファイルです。
「png」という形式(拡張子)の画像ファイルであればどんなやつでも良いんですが、正方形のpngファイルをオススメしておきます。
正方形以外は、表示自体は出来るんですが変な感じになっちゃいますので…
ファイルの構造・一覧はこちら↓

📂resource_pack
 └🖼️pack_icon.png

・終わりに

かなーり長く、難しい内容でしたがお疲れ様でした。
正直これ全部理解出来てたらこの先の講座見なくて良い気がする()
そんな事はさておき。
次回は「ビヘイビアパック」について理解していきます。
実際にアドオンを作っていくのは次の次の記事で。
先に全ての知識系記事を書こうと思ったけど、おそらくそれだと楽しく理解が出来ないと思うので…。とりま作ってみよう。乞うご期待。
次の記事はこちら↓

このシリーズの記事まとめはこちら↓

ほなまた。

いいなと思ったら応援しよう!