CustomModelData(CMD)の採番ガイド
Wikiで編集CustomModelData(CMD)の採番ガイド
CustomModelDataとは
CustomModelData(略してCMD)は、アイテムに付けられる数値(あとで説明するように文字列も可能)のタグです。アイテムの種類自体は変えずに、この数値をリソースパック側の判定材料にすることで、見た目(テクスチャ)だけを切り替えることができます。
たとえばこのパックでは、iron_horse_armor(本来は馬鎧のアイテム)を土台にして、CMDの値ごとにまったく別の武器のテクスチャを表示する、という使い方が多数行われています。
custom_nameベースのCITとの使い分け
アイテムテクスチャの追加方法(バニラCIT)で説明した「名前(custom_name)による判定」と、CMDによる判定は、どちらも「同じベースアイテムで見た目を切り替える」ための仕組みですが、向いている場面が異なります。
- 名前(custom_name)で判定する場面:アイテムの表示名がそのまま固定されていて分かりやすい場合。番号の管理が不要で、名前を見れば何のアイテムか分かるため、スタッフが手動でCITを追加するときはこちらが基本になります。
- CMDで判定する場面:ItemsAdderやWeaponMechanics、CrackShotのように、プラグイン側がCustomModelDataの数値そのものをアイテムに直接設定する運用になっている場合。また、1.19より前から存在する古いアイテム(
mofucraft_before_1_19名前空間)はもともとCMD番号で管理されているため、そのまま踏襲しています。
迷ったときの目安:これから手動でテクスチャを追加するだけなら、まずは名前によるバニラCITを検討してください。プラグイン側の武器・装備システムと連携する必要がある場合にCMDを使います。
番号の区分ルール
| 番号帯 | 区分 |
|---|---|
| 1 〜 499999 | 運営アイテム |
| 500000 〜 999999 | 住民アイテム |
番号は、区分ごとになるべく小さい空き番号から順番に使用してください。
この番号帯のルールはベースアイテムごとに適用されます。たとえば
cookie(クッキー)のCMD1番と、pumpkin_pie(カボチャパイ)のCMD1番は、まったく別のテクスチャに対応する別々の番号です。空き番号を調べるときは、必ずこれから使うそのベースアイテムのファイルを確認してください。
空き番号の調べ方
あるベースアイテムで、すでにどのCMD番号が使われているかは、assets/minecraft/items/(ベースアイテム).jsonの中のrange_dispatchという判定ブロックにある、entriesという配列の中のthresholdという値を見ればすべて分かります。
たとえばcookie.json(クッキー)の実際の内容(抜粋)は次のようになっています。
"fallback": {
"type": "minecraft:range_dispatch",
"property": "custom_model_data",
"fallback": { "type": "minecraft:model", "model": "minecraft:item/cookie" },
"entries": [
{ "threshold": 1, "model": { "type": "minecraft:model", "model": "mofucraft_before_1_19:item/red_candy" } },
{ "threshold": 2, "model": { "type": "minecraft:model", "model": "mofucraft_before_1_19:item/ginger_cookie" } },
{ "threshold": 3, "model": { "type": "minecraft:model", "model": "mofucraft_before_1_19:item/blue_candy" } },
{ "threshold": 4, "model": { "type": "minecraft:model", "model": "mofucraft_before_1_19:item/green_candy" } },
{ "threshold": 5, "model": { "type": "minecraft:model", "model": "mofucraft_before_1_19:item/golden_candy" } },
{ "threshold": 6, "model": { "type": "minecraft:model", "model": "mofucraft_before_1_19:item/rainbow_candy" } },
{ "threshold": 500001, "model": { "type": "minecraft:model", "model": "mofucraft_before_1_19:item/piencookie" } }
]
}
この場合、運営アイテムの番号帯(1〜499999)ではすでに1〜6が使われているので、次に使える一番小さい番号は7です。住民アイテムの番号帯(500000〜999999)では500001が使われているので、次は500002からになります。
また、空いている番号は必ずしも一覧の最後の番号+1とは限りません。たとえば現時点のiron_horse_armor.jsonでは、threshold 1の次がthreshold 4になっており、2と3が使われていません。「なるべく小さい番号から使う」というルールに沿うため、末尾だけでなく途中に空きがないかも確認してください。
方法1:VSCodeなどのエディタで検索する(開発の知識がなくてもできます)
- リポジトリのフォルダをVSCode(またはメモ帳、Notepad++など)で開きます。
- これからCMDを追加したいベースアイテムのファイル(例:
assets/minecraft/items/cookie.json)を開きます。 Ctrl+F(ファイル内検索)でthresholdを検索します。見つかった行を上から順に確認すると、使われている番号の一覧が分かります。多くのファイルは番号順に並んでいるので、一番下の行(500000未満の最後の行)の番号+1が次に使える番号の目安になります。- 複数のファイルをまとめて調べたいときは、VSCodeの「検索と置換」パネル(
Ctrl+Shift+F)で検索範囲をassets/minecraft/itemsフォルダに絞り、"threshold"で検索すると、ファイルをまたいで一覧表示できます。ただし番号はベースアイテムごとに独立しているため、必ず対象のファイル名を見ながら確認してください。
方法2:Claude Codeに調べてもらう(一番簡単)
Claude Codeのチャットに、次のように依頼するだけで空き番号を教えてもらえます。
assets/minecraft/items/cookie.json のrange_dispatch.entriesにある
thresholdの値をすべて教えてください。そのうえで、運営アイテムの番号帯
(1〜499999)でまだ使われていない一番小さい番号を教えてください。
他のスタッフも同時に同じファイルへアイテムを追加している可能性があります。番号を確認する前に、GitHub Desktopで最新の内容をpullしてから(開発バージョンの利用方法を参照)確認するようにしてください。それでも複数人が同じ番号を使ってしまった場合の調整ルールは【要記入】です。
WeaponMechanics武器のCMD 5連番予約
CrackShot/CrackShotPlusで実装していた武器をWeaponMechanics(WM)プラグインに移行する場合、WMは1つの武器につき、状態ごとに異なるCMDを必要とします。そのため、ベースアイテムのitems/*.jsonで連続した5つの番号を1セットとして予約します。
| オフセット | WM状態キー | 用途 |
|---|---|---|
| +0 | Default | デフォルト |
| +1 | Scope | スコープ覗き込み |
| +2 | No_Ammo | 弾切れ |
| +3 | Reload | リロード |
| +4 | Sprint | スプリント |
たとえばiron_horse_armor.jsonでは、次のように5番ずつまとまった形で複数の武器が予約されています(実際のファイルの抜粋)。
threshold 94〜98 → mofucraft_weaponmechanics:item/mofu_hg
threshold 99〜103 → mofucraft_weaponmechanics:item/mofu_ar
threshold 104〜108 → mofucraft_weaponmechanics:item/mofu_sg
この5連番の予約作業は、Claude Codeの/cs-to-wm-cmdスキルで行います。
Wikiの古い記述に
/cs-to-wm-migrateという名前が出てくることがありますが、これは誤りで、正しくは/cs-to-wm-cmdです。
どの武器にどの番号を割り当てたかという採番の記録は、このリポジトリの中ではなく、外部のOutlineドキュメント「CS→WMでのCustomModelDataタグ割り当てログ」で管理されています。
- CS→WMでのCustomModelDataタグ割り当てログ:https://outline.mofucraft.net/doc/cswmcustommodeldata-iLKsZa4Qog
- 状態キーの詳しい仕様(WeaponMechanicsにおける状態別のCustomModelData設定):https://outline.mofucraft.net/doc/weaponmechanicscustommodeldata-gk7WsBMEhR
新しく武器を移行するときは、上記ログに記載されている既存の割り当てと重複しないよう確認したうえで、5連番を予約してください。
item_modelコンポーネント(1.21.4以上)について
Minecraft 1.21.4以降では、item_modelというコンポーネントが使えるようになりました。これはCMDや名前による判定を経由せず、アイテム1つ1つに直接「このモデルを使う」と指定してしまう新しい方式です。item_modelが設定されたアイテムは、ベースアイテムのitems/*.jsonにあるselectやrange_dispatchの判定を素通りして、指定されたモデルがそのまま使われます。
このパックでは現在、主にmofupack_crackshot名前空間のCrackShot武器でitem_modelが使われています。値の形式は次のとおりです。
mofupack_crackshot:item/guns/(カテゴリ)/(武器ID)
実例(もふアサルトライフル):
| 項目 | 値 |
|---|---|
| item_model の値 | mofupack_crackshot:item/guns/mofu/mofuar |
| 対応するモデルJSON | assets/mofupack_crackshot/models/item/guns/mofu/mofuar.json |
| 対応するテクスチャ | assets/mofupack_crackshot/textures/item/mofu/mofuar.png |
item_modelコンポーネントの値そのものは、リソースパック側ではなくサーバー側のプラグイン設定でアイテムに付与されます。リソースパック側で用意するのは、その値が指すモデルJSONとテクスチャだけです。CMDのような番号の空き状況の確認は不要ですが、代わりに値の文字列(カテゴリ名・武器ID)がプラグイン側の設定と1文字違わず一致している必要があります。
詳しくは
CRACKSHOT_ITEM_MODEL_GUIDE.mdを参照してください。現状、このパックの大半のカスタムアイテムはCMDまたは名前によるCITで実装されており、item_modelはCrackShot武器向けの限定的な用途にとどまっています。
CMDには文字列も設定できる(1.21.x〜)
トップページにも記載の通り、Minecraft 1.21.xあたりから、CustomModelDataタグには数値だけでなく文字列も設定できるようになったようです。ただし、このリポジトリでの運用(番号帯によるルール、WM武器の5連番予約など)はすべて数値でのCMDを前提にしており、文字列CMDを使う場合の命名ルールは現時点で整備されていません。【要記入: 文字列CMDを使う場合の命名規則・使用可否】
関連ページ
- サーバーリソースパックの開発者向けトップページ
- アイテムテクスチャの追加方法(バニラCIT)(名前で見た目を切り替える場合はこちら)
- 開発バージョンの利用方法
- リソースパックの更新と公開

