オリジナルを置き換えずにカスタム絵画と音楽ディスクを追加する
絵画も音楽ディスクもデータパックのレジストリになったので、バニラを上書きするのではなく新しく追加できます。それぞれに必要な2つのファイルと、絵画が守るべきサイズ比率のルールを解説します。絵画はpainting_variantに保存します。
カスタム絵画を手に入れる昔の方法はpaintings_kristoffer_zetterstrand.pngを上書きしてバニラの絵画を失うことでした。現在は絵画も音楽ディスクもレジストリになっているため、置き換えるのではなく追加できます。
絵画には2つのファイルが必要
絵画を定義するデータパックのエントリ:
data/<namespace>/painting_variant/my_art.json
{
"asset_id": "my_pack:my_art",
"width": 2,
"height": 2,
"title": { "text": "My Art" },
"author": { "text": "Me" }
}
そして画像を提供するリソースパック:
assets/my_pack/textures/painting/my_art.png
widthとheightはブロック単位で、テクスチャはその比率に一致させる必要があります。バニラは1ブロックあたり16ピクセルで描画するので、2×1の絵画は32×16になりますが、64×32でも問題ありません。比率を間違えると引き伸ばされます。自動調整はありません。
バニラのサイズは1×1から4×4までです。それより大きくても動作しますが、それに合う壁が必要です。
入手可能にする
バリアントを追加しただけではゲーム内に登場しません。方法は2つ:
- 配置タグ —
#minecraft:placeableに追加すると、通常の絵画アイテムがランダムでそれになる。 - 直接指定 —
/give @p painting[entity_data={id:"minecraft:painting",variant:"my_pack:my_art"}]
ほとんどのマップ制作者は2番目を選びます。ランダムではなく特定の絵画にしたいからです。
音楽ディスクには3つ必要
data/<namespace>/jukebox_song/my_song.json
{
"sound_event": { "sound_id": "my_pack:music/my_song" },
"description": { "text": "My Artist - My Song" },
"length_in_seconds": 154,
"comparator_output": 12
}
さらに、そのサウンドIDをファイルに紐付けるsounds.jsonと、.ogg本体:
assets/my_pack/sounds.json
assets/my_pack/sounds/music/my_song.ogg
重要なポイントが3つあります:
length_in_secondsを正しく設定すること。 これがジュークボックスを止めるタイミングを左右します。パーティクル、レッドストーン出力、そしてその時点で打ち切られる音声です。長すぎると最後が無音になり、短すぎると曲が途中で切れます。comparator_outputは0~15で、コンパレーターが読み取る値です。バニラには22枚のディスクがあるのに値は15個しかないため、すでに7組が同じ値を共有しています。レッドストーンで区別する必要があるディスクが使っていない値を選びましょう。- oggをストリーミングする。 音楽並みの長さなら
sounds.jsonで"stream": trueを指定します。
そして付与します:
/give @p music_disc_13[jukebox_playable="my_pack:my_song"]
キャリアとしてはどのディスクアイテムでも機能します。何が再生されるかはコンポーネントが決めます。
上書きより優れている理由
バニラのアセットを置き換えるパックは、同じことをする他のあらゆるパックと競合し、Mojangがファイル名を変更すると壊れます。レジストリへの追加は名前空間で分けられるため、絵画を追加する2つのパックが共存できます。また、バージョンアップ時に編集なしで生き残る唯一の方法でもあります。
絵画のバリアント、ジュークボックスの曲、トーテム、チャット絵文字を1つのリソースパックzipにまとめて作るなら、Custom Content Pack Makersをご利用ください。