カスタムモデルデータ:何も置き換えずに1つのアイテムに複数のモデルを持たせる
アイテムモデルシステムは旧来のCustomModelData述語を置き換えました。ここではフォルダ構成、値をモデルに対応付けるJSON、そしてテクスチャが紫のキューブとして表示される理由を解説します。
カスタムアイテムモデルを使えば、サーバーは「魔法の杖」として、実際には別のモデルを持つニンジン付きの棒を配布できます。仕組みは変わりましたが、ほとんどのチュートリアルは今も古い方法を説明しています。
何が変わったか
旧方式 — ベースアイテムのモデルファイル内にある predicate ブロックで、custom_model_data を数値としてキーにしていました:
{ "predicate": { "custom_model_data": 1 }, "model": "item/wand" }
現行方式 — モデルを選択する items/ 定義を使います:
assets/minecraft/items/carrot_on_a_stick.json
{
"model": {
"type": "minecraft:range_dispatch",
"property": "minecraft:custom_model_data",
"fallback": { "type": "minecraft:model", "model": "minecraft:item/carrot_on_a_stick" },
"entries": [
{ "threshold": 1, "model": { "type": "minecraft:model", "model": "minecraft:item/wand" } }
]
}
}
fallback は、通常のニンジン付きの棒が依然として持つ見た目です。これがないと、ワールド内の未変更のニンジン付きの棒はすべて、紫と黒のモデル欠落キューブとして描画されます。
フォルダ構成
pack.mcmeta
assets/minecraft/
├── items/carrot_on_a_stick.json the dispatch
├── models/item/wand.json the model
└── textures/item/wand.png the texture
最も単純な models/item/wand.json は次のとおりです:
{ "parent": "minecraft:item/generated", "textures": { "layer0": "minecraft:item/wand" } }
テクスチャパスには textures/ プレフィックスも .png も付かない ことに注意してください。これが紫と黒のキューブになる最も一般的な原因です。
アイテムの付与
/give @p carrot_on_a_stick[custom_model_data={floats:[1]}]
このコンポーネントは、裸の整数ではなく、型付きリストを持つオブジェクトを取るようになりました。custom_model_data=1 は旧構文であり、コマンドはこれを不正な形式として拒否します。
なぜ紫のキューブとして表示されるのか
可能性の高い順に:
- テクスチャパスが間違っている —
textures/や.pngが含まれている、またはファイルがパスの示す場所にない。 - ファイル名の大文字小文字 — ゲームは、あなたのOSが区別しない場合でも区別します。
- 古い
pack.mcmeta— 26.x ではmin_formatとmax_formatが必要です。裸のpack_formatに現行のフォーマット番号を入れても、パックは非互換として表示されます。 - zipの作り方が間違っている —
pack.mcmetaはzipのルートになければならず、zip内のフォルダの中にあってはいけません。
その他のセレクター
数値に対する range_dispatch は選択肢の1つにすぎません。他にも minecraft:display_context(手持ちと額縁内で異なるモデル)、minecraft:using_item、または minecraft:selected で振り分けられます。これが弓の引き絞り状態を表示する仕組みです。
振り分け用JSON、モデルファイル、付与コマンドは Custom Model & Item Component Tools でまとめて作成できます。