他人が作ったアドオンを使ったことはわたしもあります。昔は楽しむために、最近は仕組みがわからないものの仕組みを確かめたりするために──と、色んなアドオンを見てきました。あなたも他人のアドオンで遊んでいてこんなことはなかったでしょうか。
「追加されたアイテムはあと何があるんだろう、今からサイトに戻って確かめるの面倒だな……」
「あのアイテムってどんなレシピだっけ、レシピブックに表示されないからわからない……」
こんなときこそ、インベントリの「?」マークを押してアドオンのヘルプが出てきたら楽じゃないですか?
あるいは、アドオンを配布するひとならば、配布用のサイトにアドオンの説明を書き込む必要がなくなります。そう、「アドオンを導入した状態でヘルプを見てください」で済むんです。配布はしたことないのですが、説明文を書くときに下書きへなかったと思います。あと、サイトによっては字数制限があったりすると思います。
そういったメリットにピンと来なくとも「ヘルプにアドオンの説明が書いてある」ってオシャレじゃないですか??
UIの分野は難しい??
ヘルプを書き換えるのはリソースパックのUIの分野になりますが、この分野はリソースパックで最も敬遠されやすい分野だと思っています。腕利きのアドオン技術者でもUIのいじり方をマスターしているひとは実際少なかったりします。
なぜそんなことになるかというと、他のjsonとは違って構造を理解しづらい、かつ単語からも何を変えるのか判断しづらいからです。──なにより、分量が多い!
そこで──というのもよく分からないですが──今回サムネイルのために作ってしまった、ヘルプを書き換えるリソースパックをテンプレートとして使えるようにしておきます↓
説明もこれを使っていきますが、必須ではありません。
まずはjsonファイルを書く
まず、ヘルプを書き換えるためにはlangファイル、how_to_play_screen.json、あとはひとによってhow_to_play_common.jsonやいくつかの画像を使います。
最初にhow_to_play_screen.jsonです。このファイルはバニラのjsonを使うと4000行以上あるので上にあるテンプレートを使うことをおすすめします。
"controls": [
{
"padding_0": {
"size": [ 0, 6 ],
"type": "panel"
}
},
{
"categoryex_category@how_to_play_common.topic_category": {
"$category": "categoryEx"
}
},
{
"example_button@how_to_play.example_button": {
"$toggle_group_forced_index": 1
}
},
{
"example2_button@how_to_play.example2_button": {
"$toggle_group_forced_index": 2
}
},
{
"padding_1@how_to_play_common.padding": {
"size": [ 0, 10 ]
}
}
]
数行飛ばして始めはここを説明します。この部分では、ヘルプ画面の左側のボタンが並んでいる部分を制御します。その中でも最も重要になってくるのが2つ目の「controls」の中身です。
padding_0は空白です。sizeが大きさを表します。そこまで需要は高くないと思うのでいらなかったら消しても構いません。
〇〇_category@how_to_play_common.topic_categoryは、下の画像で「カテゴリ」と書いてある部分です。〇〇には自由な名前を入れてください。$categoryにはカテゴリ名を入れます。〇〇と異なる名前でも構いませんが、揃えた方が楽だと思います。
〇〇_button@how_to_play.〇〇_buttonはボタンです。〇〇はトピックの名前になりますが、今後のために覚えておいてください。
空白、節、ボタンの追加のしかたは至って簡単、それぞれの段落で説明したかたまりをそのままカンマで繋げればいいだけです。上では例として「example2」ボタンが連なっていますね。
そして、ボタンを追加するときは$toggle_group_forced_indexの数字を変えることに気をつけてください。
あと、節や空白はなくても構いません。
〇〇は名前と言いましたが、ビヘイビアで言うところのidentifierみたいなもので、下の画像の「カテゴリ」や「ボタン」などのテキストのことではありません。
"controls": [
{
"example_section@how_to_play.example_section": {}
},
{
"example2_section@how_to_play.example2_section": {}
}
]
この部分は、トピックの定義をします。
それぞれボタンを作ったときの〇〇と対応させてください。この場合はexampleやexample2の部分ですね。
"example_button@how_to_play_common.section_toggle_button": {
"$section_topic": "example"
},
"example_section@how_to_play_common.main_sections": {
〜〜〜〜〜〜〜〜〜〜〜〜〜(略)〜〜〜〜〜〜〜〜〜〜〜〜
"controls": [
{
"header_0@how_to_play_common.header": {
"$text": "example.header.title0"
}
},
{
"padding_0@how_to_play_common.padding": {}
},
{
"paragraph_0@how_to_play_common.paragraph": {
"$text": "XXX.example.text0"
}
},
{
"paragraph_note0@how_to_play_common.paragraph": {
"$text": "XXX.example.note0"
}
},
{
"image_0@how_to_play_common.image": {
"texture": "textures/ui/yourpicture"
}
}
]
},
この部分はヘルプ画面右側の文章が連なる部分を制御します。
$section_topicはトピック名です。これが今までのボタンなどとの連携を担います。
数行飛ばしてheader_0@how_to_play_common.headerはヘッダです。日本語で言うところの小見出しですね。$textでlangファイルのキーネームを定義します。
padding_0@how_to_play_common.paddingはこれも空白です。
paragraph_0@how_to_play_common.paragraphはパラグラフ、文章です。これも$textでlangファイルのキーネームを指定して文章を引き出します。ビヘイビアでエンティティなどの追加で新しくidentifierを書くとき「minecraft:zombie」でいえばminecraftに当たる部分をオリジナルのものにしますよね?それと同じくXXXにはオリジナルの接頭辞をつけてください。別にアウトなものを伏せている訳ではありません。
paragraph_note0@how_to_play_common.paragraphはノート、メモです。ただ、パラグラフと見分けがつかないのですべてパラグラフで統一しても大丈夫だと思います。
image_0@how_to_play_common.imageで画像を挿入します。textureでファイルパスを指定してください。どこでもいいですが、textures/ui/〇〇がオススメです。
これらはいくつでも追加できます。追加するには追加したい順番に追加したい数だけカンマで連ねていってください。jsonが長くなる原因はこれですね。
あと画像や空白、ヘッダはなくても構いません。はたまた、ヘッダから始まらなくても大丈夫です。わたしの書いている記事のように画像から始まるのもアリですね。
鋭いひとは気づいたんじゃないでしょうか。langファイルのキーネームを指定しているところ以外に「0」という数字があって、これらの0は、パラグラフやヘッダを増やすときにカウントしていく必要があるのか気になったひともいると思います。試したところ、全部0でも構わなそうです。万が一ダメだったらカウントしてみてください。
.langファイルを書く
これは簡単です。先程指定したキーネームと表示させたいテキストをイコールで繋いでください。
サムネイルの場合langファイルはこうなっています。もちろん自分のものはexampleやXXXを変えても構いません。イコールの右辺を除いてそれ以外の部分はダメですが。
言葉で説明すると、カテゴリは$categoryで指定したカテゴリ名を使って「howtoplay.category.〇〇」です。それ以外は、下の例で言うexampleがあなたの決めたトピック名に書きかわります。
howtoplay.category.categoryEx=カテゴリ
howtoplay.example.title=どうやって書く??ヘルプの書き換えかた
example.header.title0=ヘッダ
XXX.example.text0=テキスト
XXX.example.note0=ノート
howtoplay.example=ボタン
比較用にサムネイルと同じ画像を再掲↓
実はこれで終わり
ヘルプを書き換えるならこれで終わりです。一文加えるたびに{}のかたまりを増やす必要があって大変ですが、新たに知ることは以上です。
プラスアルファしてみる
さて、ここまでの説明でできたものを適用してみましたでしょうか。何かサムネイルと違いますね…… 書き換えるだけならここまでの説明で足りますが、ボタンのアイコンはプラスアルファで書き換える必要があります。
もうひとつのjson
そこで書き換えるのはhow_to_play_common.jsonです。でもそんなたくさん書き換えたりしません。アイコンをつけてアイコンにかからないようにテキストをずらすだけです。──もとい、わたしがこれから変更箇所を書くのでそれをコピー&ペーストで書き換えることができますね。
変更するのは70行目あたりのこの部分です。
(バニラ)
"toggle_button_control": {
"type": "panel",
"layer": 2,
"controls": [
{
"tab_button_text": {
"type": "label",
"anchor_from": "left_middle",
"anchor_to": "left_middle",
"size": [ "100% - 38px", "default" ],
"max_size": [ "100% - 14px", "100% - 4px" ],
"offset": [ 10, 0 ],
"text": "('howtoplay.' + $section_topic)",
"layer": 3,
"color": "$text_color",
"alpha": "$content_alpha"
}
}
]
},
変更後
"toggle_button_control": {
"type": "panel",
"layer": 2,
"controls": [
{
"text_icon": {
"type": "image",
"anchor_from": "left_middle",
"anchor_to": "left_middle",
"texture": "('textures/ui/icon_' + $section_topic)",
"size": [ "16px", "16px" ]
}
},
{
"tab_button_text": {
"type": "label",
"anchor_from": "left_middle",
"anchor_to": "left_middle",
"size": [ "100% - 16px", "9px" ],
"offset": [ "20px", 0 ],
"text": "('howtoplay.' + $section_topic)",
"layer": 3,
"color": "$text_color",
"alpha": "$content_alpha"
}
}
]
},
変える部分は大きくまとめて2箇所、太字になっているところですね。
まずはアイコンを加えるために"text_icon":{}のかたまりをまるまる書き加えます。アイコンの画像のパスはここで指定されています。見ると分かるように、トピック名がexampleなら「texture/ui/icon_example」です。画像の名前を「icon_〇〇.png(〇〇はトピック名)」にするということですね(pngじゃないといけないかどうかは知りません)。
次に、元からあった"tab_button_text"{}の中のsize、max_size、offsetを変えていきます。実はそれぞれ中身が何を意味しているのか知らないんですが、ここをこう書き換えるとボタンのテキストが右にズレてアイコンと被らないようになります。そういうものらしいです。
以上です。アイコンを新しく加えることができたのでこのjsonを極めればさまざまな装飾ができるようになりそうですが──それは読者の自由研究課題としましょう。ちなみに今まで指定してきたlangファイルのキーネームはここで変えられると思います。
インベントリの「?」マークもここから消すんでしょうかね。
どうでしょうか?これでアドオンの説明はすべてヘルプに任せられるようになりましたね。ただ、どうしてもjsonが長くなってしまうのでそこは根気です。
あと、リソースパックはワールドを読み込み直さなくとも変更なら反映されますが、どうやらヘルプなどのUIには通用しなさそうです。
0コメント