MC Toolkit

ガイド / 建築とリソース

カスタム絵画とディスクには2つのパックが必要で、片方だけを入れるのがよくある失敗パターン

データパックがコンテンツを登録し、リソースパックがテクスチャとサウンドを提供します。データパックだけでは登録されても表示するものがありません。さらに16×16の上限と、ディスクの長さが実際に何を制御するのかを解説します。

絵画と音楽ディスクはどちらも現代のJavaではれっきとしたレジストリなので、バニラのものを置き換えるのではなく追加できます。追加したものが既存の絵画やディスクを押しのけることはありません。

落とし穴は、コンテンツが2つの異なるパック形式に分かれており、どちらも単体では役に立たないことです。

何がどこに入るか

データパックがものを登録します:

data/<ns>/painting_variant/<id>.json    asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json        sound_event, description, length_in_seconds, comparator_output

リソースパックが見えるものと聞こえるものを提供します:

assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json

データパックだけを入れると、コンテンツは正常に登録されます——存在し、/giveもそれを見つけますが、テクスチャも音声も単にありません。これは完全な失敗よりもはるかに紛らわしい結果で、カスタム絵画が「動かなかった」よくある理由です。このページのツールが両方を1つのzipに入れているのは、まさにそれらが分離できないようにするためです。

2つのpack.mcmetaファイルに注目してください。それらは別々のアイデンティティを持つ別々のパックであり、両方を保持する統合形式はありません。

レジストリIDはファイル名より厳格

IDに含められるのはa-z、0-9、_、.、-のみです(サブフォルダ用に/も)。それ以外があると、ゲームはログに「Invalid path」の行を出してそのファイルをスキップします——パックは読み込まれ、エントリは単に存在しないままになり、失敗よりも気づきにくくなります。大文字とスペースが特に人を引っかける2つで、どちらもドラッグしてきたファイル名ではごく普通のことです。

絵画: 最大16×16、17はパックを壊す

バニラの絵画は1×1から4×4ブロックまでで、このツールも同じ範囲を提供します。形式はもっと許容します:26.3はwidthとheightを1から16までの整数ブロックとして読み取り、16×16の絵画は16×16ブロックのスペースがある壁ならどこでも読み込まれ、掛かり、留まります——26.3のサーバーでテスト済みです。絵画が留まるかどうかを決めるのはスペースであり、サイズではありません:掛けた場所に収まらないものはアイテムとしてドロップし、後ろに何もないバニラの1×1もまったく同じようにドロップします。

16を超えると、ゲームは数値をクランプせず、拒否します。"width": 17は「Value must be within range [1;16]」で失敗し、レジストリの読み込み全体がそれとともに停止し、パックを削除するまでワールドが開けなくなります。

サイズはJSONでwidthとheightとしてブロック単位で宣言されます。PNGから推測されるのではないので、テクスチャが正方形の3×1の絵画は、引き伸ばされて表示される有効なファイルです。

ディスクの長さはラベルではない

length_in_secondsは、ゲームがトラックを終了と判断する時点です。宣言された長さの1秒後に、ジュークボックスはサウンドを切り、音符を止め、曲の再生中に発しているレッドストーン信号をオフにします——周囲のブロックに対してフル強度で、トラックがまだ続いているとゲームが考えている間だけ正確にです。

つまり、不正確な長さは見た目の問題ではありません。200秒のトラックを100と宣言すれば、音楽は途中で切られ、同時に信号も落ちます。300と宣言すれば、ジュークボックスは100秒の無音の間ずっと信号を出し続けます。どちらにせよ、ディスクの終了を待っているレッドストーンは間違ったタイミングで発火します。このツールが入力させるのではなくファイルから実際の長さを読み取るのは、まさにそのためです。

コンパレーターが読むのは別のものです:comparator_output、0から15までの固定された1つの数値で、ディスクがジュークボックスに入っている間、再生中でも終了後でもずっとその値です。トラックを通じて上がることはなく、長さもそれを変えません——バニラはディスクを見分けるためにこれを使っています(13は1、catは2、blocksは3)。

トラックはまたsounds.json内で"stream": true付きで書かれます。音楽は長く、再生前にトラック全体をメモリに読み込むとスタッタリングが起きます——ストリーミングはディスクの長さのものには正しいデフォルトで、短い効果音には間違った選択です。

カスタム絵画・レコード追加 →

その他のガイド

すべて見る →