カスタム絵画やレコードには2つのパックが必要。片方だけインストールするのがよくある失敗の原因
データパックはコンテンツを登録し、リソースパックはテクスチャとサウンドを提供します。データパックだけでは、登録されても何も表示されません。さらに、4x4の制限と、レコードの長さが単なる見た目の問題ではない理由についても解説します。
絵画と音楽ディスクはどちらも、現代のJava版Minecraftでは正式なレジストリとして扱われており、バニラのものを置き換えるのではなく、追加することができます。追加したものが既存の絵画やディスクを上書きすることはありません。
ただし、コンテンツは2種類の異なるパックに分かれており、それぞれ単独では機能しないという落とし穴があります。
何をどこに入れるか
データパックがアイテムを登録します:
data/<ns>/painting_variant/<id>.json asset_id, width, height, title, author
data/<ns>/jukebox_song/<id>.json sound_event, description, length, comparator
リソースパックが視覚と聴覚の要素を提供します:
assets/<ns>/textures/painting/<id>.png
assets/<ns>/sounds/<id>.ogg
assets/<ns>/sounds.json
データパックだけをインストールすると、コンテンツは正常に登録されます。つまり、存在はし、/giveで検出されますが、テクスチャもオーディオもありません。これは完全に失敗するよりもはるかに混乱する結果であり、カスタム絵画が「機能しなかった」というよくある理由です。このページのツールは、分離できないように両方を1つのzipファイルにまとめて提供しています。
2つのpack.mcmetaファイルに注目してください。これらは別々のIDを持つ別々のパックであり、両方を保持する結合された形式はありません。
レジストリIDはファイル名よりも厳格
IDにはa-z、0-9、_、.、-のみを含めることができます。それ以外の文字が含まれていると、パックの読み込みに失敗します。壊れたエントリだけでなく、パック全体が読み込まれません。大文字とスペースは、ドラッグしたファイル名ではごく普通に使えるため、多くの人が引っかかる原因となります。
絵画: 1×1から4×4まで
バニラのサイズは1×1から4×4ブロックまであり、16種類の形状が可能です。この範囲外のバリアントでもレンダリングはされますが、プレイヤーが期待するサイズの壁には飾ることができないため、通常の建築では実質的に配置できません。
サイズはJSONでwidthとheightとしてブロック単位で宣言されます。PNGファイルから推測されるわけではないため、テクスチャが正方形の3×1の絵画は、引き伸ばされて表示される有効なファイルとなります。
ディスクの長さはラベルではない
length_in_secondsは2つの要素を制御します。ジュークボックスの再生タイミングと、コンパレーターの信号ランプです。再生中のジュークボックスからコンパレーターが読み取る信号は、トラックの宣言された再生時間に応じて上昇します。
したがって、不正確な長さは単なる見た目のエラーではありません。200秒のトラックを100秒と宣言すると、コンパレーターは途中で信号ランプを終了させてしまい、ディスクの終了に連動するレッドストーン回路が静かに壊れてしまいます。このツールが、その理由から、長さを手動で入力させるのではなく、ファイルから実際の再生時間を読み取るのはそのためです。
トラックは"stream": trueでsounds.jsonとして書き込まれます。音楽は長く、再生前にトラック全体をメモリにロードすると途切れてしまいます。ストリーミングはディスクの長さのコンテンツには適切なデフォルトであり、短い効果音には不適切なデフォルトです。