アイテムテクスチャの追加方法(バニラCIT)
Wikiで編集アイテムテクスチャの追加方法(バニラCIT)
「CIT」とは Custom Item Texture の略で、アイテムの名前(表示名)などの条件によって、同じ種類のアイテムでも見た目(テクスチャ)を切り替える仕組みです。このリソースパックでは、Minecraft本体の機能だけで動く「バニラCIT」という方式を使って、新しいアイテムのテクスチャを追加しています。
このページでは、バニラCITで新しいテクスチャを追加する手順を、開発の知識がなくても迷わず進められるように説明します。
全体像:3つのファイルの関係
バニラCITで新しいテクスチャを1つ追加するとき、基本的に次の3つのファイルが関係します。
① テクスチャ画像(PNG) assets/minecraft/textures/item/(内部名).png② モデルJSON(①を読み込む設定ファイル)
assets/minecraft/models/item/(内部名).json
③ アイテム定義JSON(ゲーム内の「名前」と②を結びつける設定ファイル)
assets/minecraft/items/(ベースアイテム).json
ゲーム内でアイテムに特定の名前(カスタム名。金床で付けられる名前など)が付けられると、③のファイルがその名前を見て「どのモデルを表示するか」を判断し、②のモデルJSONを呼び出します。②は自分が使うテクスチャとして①の画像を指定しているので、最終的に①の画像がアイテムのアイコンとして表示されます。
③の「ベースアイテム」とは、
pumpkin_pie(カボチャパイ)やcookie(クッキー)のような、Minecraft本体にもとから存在するアイテムの内部名のことです。新しいテクスチャを追加するときも、まったく新しいアイテム種類を作るわけではなく、既存のアイテムに「名前によって見た目を変える」設定を追加します。
手順(手動で追加する場合)
1. テクスチャの置き場所と命名規則
新しいテクスチャ画像(PNG)は次の場所に置きます。
assets/minecraft/textures/item/(内部名).png
- ファイル名は小文字の半角英数字とアンダーバー(_)のみ使用してください。大文字や日本語、スペースが含まれるとMinecraftに認識されません。
- 画像は透過PNG形式で作成してください。
- 画像の解像度は
16x16、32x32、64x64など2の累乗のサイズにしてください。中途半端なサイズ(例:40x40)が1枚でも混ざると、パック全体でミップマップ描画が無効になる(表示品質が落ちて警告ログが出る)などの問題の原因になります。
2. モデルJSONの書き方
①のテクスチャを読み込むためのモデルJSONを、次の場所に作成します。
assets/minecraft/models/item/(内部名).json
内容は、既存のアイテム(例:turutaru.json)と同じ形式で作成すればOKです。
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "minecraft:item/turutaru"
}
}
parent:minecraft:item/generatedを指定すると、通常のアイテムアイコンと同じ「平らな1枚絵」として表示されます。ほとんどのアイテムテクスチャはこの指定で問題ありません。textures.layer0: 手順1で置いたテクスチャ画像を指定します。.pngの拡張子は書きません。ファイル名がanglyzza.pngならminecraft:item/anglyzzaのように書きます。
3. items/*.json への追加(既存のfallbackを壊さないこと)
assets/minecraft/items/(ベースアイテム).jsonを編集し、「この名前のときはこのモデルを表示する」という条件(case)を追加します。
すでに移行が進んでいるアイテムの多くは、次のような「select(名前による分岐)+fallback(どの名前にも当てはまらないときの予備モデル)」という形になっています。pumpkin_pie.json(カボチャパイ)の実際の内容(一部抜粋)を例にします。
{
"model": {
"type": "minecraft:select",
"property": "minecraft:component",
"component": "minecraft:custom_name",
"cases": [
{ "when": "turutaru", "model": { "type": "minecraft:model", "model": "minecraft:item/turutaru" } },
{ "when": "MDMA", "model": { "type": "minecraft:model", "model": "minecraft:item/mdma" } },
{ "when": "ブチギレピザ プッツァ", "model": { "type": "minecraft:model", "model": "minecraft:item/anglyzza" } }
],
"fallback": {
"type": "minecraft:range_dispatch",
"property": "custom_model_data",
"fallback": { "type": "minecraft:model", "model": "minecraft:item/pumpkin_pie" },
"entries": [...]
}
}
}
このfallbackの中身(range_dispatch、上のコードではentries: [...]と省略しています)は、名前ではなくCustomModelDataという別の仕組みで判定している、既存の実装です。新しいテクスチャを追加するときは、このfallbackの中身には触れず、cases配列の末尾に新しい要素を追記するだけにしてください。fallbackを書き換えたり消したりすると、既存アイテムの表示が壊れます。
追記する形は、次のようになります(たい焼きは説明のための例で、実在のアイテムではありません)。
"cases": [
{ "when": "turutaru", "model": { "type": "minecraft:model", "model": "minecraft:item/turutaru" } },
{ "when": "MDMA", "model": { "type": "minecraft:model", "model": "minecraft:item/mdma" } },
{ "when": "ブチギレピザ プッツァ", "model": { "type": "minecraft:model", "model": "minecraft:item/anglyzza" } },
{ "when": "たい焼き", "model": { "type": "minecraft:model", "model": "minecraft:item/taiyaki" } }
],
JSONの末尾にカンマを付けないよう注意してください。要素を追加するときは、1つ前の要素の閉じカッコ}の直後にカンマ,を付ける一方、自分が追加した一番最後の要素の後ろにはカンマを付けません。1文字でも間違えるとファイル全体が読み込めなくなります。
NG例(末尾にカンマが残っている): { "when": "たい焼き", "model": { ... } }, ]
OK例:
{ "when": "たい焼き", "model": { ... } }
]
なお、対象のベースアイテムにまだitems/(ベースアイテム).json自体が存在しない場合や、まだselect化されておらずrange_dispatchだけの古い形式になっている場合は、書き方が少し変わります。詳しいパターンはリポジトリ直下のCIT_MIGRATION_GUIDE.mdにまとまっているので、判断に迷ったときはそちらを参照するか、Claude Codeに直接ファイルを見てもらって相談してください。
4. ゲーム内での確認方法
- developブランチの最新の内容を取得します(GitHub Desktopで Fetch origin → Pull origin)。手順の詳細は開発バージョンの利用方法を参照してください。
- ベースアイテム(例:カボチャパイ)を入手します。
- 金床を使って、アイテムの名前を
casesに書いたwhenの文字列と一致するように変更します。金床でのリネームは装飾(色や太字など)の付かないプレーンな文字列になるため、プレーンな文字列で条件を書いたcase(例:"when": "turutaru")の確認に使えます。 - Minecraft内で
F3+Tキーを押し、リソースパックを再読み込みします。 - アイテムのアイコンが、手順1〜2で用意したテクスチャに切り替わっていれば成功です。
色付き・太字などの装飾が付いた複雑なカスタム名(後述)を条件にしたcaseは、金床では再現できません。この場合は、実際にそのカスタム名を付与しているプラグイン配布のアイテムを使って確認してください。
custom_nameのマッチング仕様の注意
OptiFine CITとバニラCITでは、名前の一致判定の書き方が異なります。
| OptiFine CIT(.properties) | バニラCIT(when) | 説明 |
|---|---|---|
ipattern:*テキスト* | テキスト | 前後に任意の文字列(ワイルドカード*や正規表現の.*は書かない) |
ipattern:テキスト* | テキスト | 後ろに任意の文字列 |
ipattern:*テキスト | テキスト | 前に任意の文字列 |
ipattern:テキスト | テキスト | 完全一致 |
CIT_MIGRATION_GUIDE.mdによると、whenにプレーンな文字列を書いた場合、バニラCITはアイテム名にその文字列が含まれているかを自動的にチェックします(大文字・小文字は区別されません)。そのため、OptiFineのipattern:*テキスト*は、バニラCITでは単に"when": "テキスト"と書くだけで同じ動きになり、*や.*のようなワイルドカードは不要です。
一方で、わたがしシリーズのように色や太字などの装飾が付いた複雑なカスタム名を条件にする場合、whenにはオブジェクト形式(textとextraを使った構造)で書きます。この形式は1文字・1書式単位まで完全一致させる必要があり、末尾のスペース1つの違いでも一致しなくなります。ゲーム内でアイテムのコンポーネントを確認して得られた構造を、そのまま複製するようにしてください。
簡単な方法:Claude Codeの /cit-migrate スキルを使う
すでにOptiFine CIT(.properties)で実装済みのテクスチャを、バニラCITへ移行したいだけであれば、Claude Codeの/cit-migrateスキルを使うと、上記の手順1〜3を自動で行ってくれます。
- 移行したいテクスチャが設定されたアイテムを、ゲーム内で手に持ちます。
/wm test nbtコマンドを実行し、そのアイテムのコンポーネント情報(NBT)をチャットに表示させます。- 表示されたチャットログをまとめてコピーします。
- Claude Codeで
/cit-migrateを実行し、コピーしたログを貼り付けます。 - Claude Codeが該当するOptiFine CITの設定を探し出し、テクスチャのコピー、モデルJSONの作成、
items/*.jsonへの追記までを自動で行います。完了後は、上記「4. ゲーム内での確認方法」と同じ手順で表示を確認してください。
/cit-migrateスキルは、すでにOptiFine CITとして実装されているアイテムを対象にした移行スキルです。OptiFine CITでの実装が一度も存在しない、まったく新規のテクスチャを追加したい場合は、上記の手動手順で対応するか、Claude Codeに直接「新しいテクスチャを追加したい」と相談してください。
OptiFine CIT(.properties)側の扱い
バニラCITへの移行が完了したアイテムについては、対応する旧OptiFine CITのファイル(assets/minecraft/optifine/cit/以下の.propertiesと同名の.png)を削除するのが標準の運用です(/cit-migrateスキルを使った場合は自動で削除されます)。
あえて両方(OptiFine CITとバニラCIT)を残す場合は、片方だけを更新してもう片方を更新し忘れる、といった食い違いが起きやすくなります。二重に残す判断が必要な場合は、その理由と削除しないことの承認をどこで得るか、事前に確認するようにしてください。【要記入: 二重定義を残すかどうかを誰が判断・承認するか】
よくある失敗
- アイテムが紫と黒のチェック模様になる:モデルの参照が切れています。
items/*.jsonから参照しているモデルJSONのファイル名やパスが間違っているか、モデルJSON自体が存在しない可能性があります。 - テクスチャが真四角の紫色になる:モデルJSONの
textures.layer0で指定したテクスチャのパスが間違っているか、テクスチャ画像ファイルが存在しません。 - 名前を変えると元のテクスチャに戻ってしまう:
custom_nameがwhenの条件と一致していません。誤字、余分なスペース、装飾(色・太字)の有無などを確認してください。 - 自分が追加したcaseが反応しない/他のcaseまで巻き込まれる:
casesは上から順に判定され、最初に一致したものが使われます。部分一致する短い条件を先に置くと、後ろにあるより詳しい条件が判定されなくなることがあります。新しく追加するcaseが、既存の条件と紛らわしい文字列になっていないか確認してください。 - JSONの構文エラーで何も表示されなくなる:末尾カンマの付け忘れ・付けすぎ、かっこの数の不一致が典型的な原因です。編集後は必ずファイル全体のかっこの対応を見直してください。
- 編集したのにゲーム内の見た目が変わらない:developブランチの最新をpullできているか、Minecraft内で
F3+Tを押してリソースパックを再読み込みしたか確認してください。
関連ページ
- サーバーリソースパックの開発者向けトップページ
- 開発バージョンの利用方法
- リソースパックの更新と公開
- CustomModelData(CMD)の採番ガイド(名前ではなくCustomModelDataで見た目を切り替えたい場合)

