マルチプレイなら『シン・VPS』がおすすめ!

【必見!】CustomModelDataを実装する方法【マイクラ】

【必見!】CustomModelDataを実装する方法【マイクラ】

この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

CustomModelDataを扱いたいマインクラフター
「アイテムの見た目を変えられるCustomModelDataってどうやればいいのかな? どういう画像を用意すればいいのか教えて欲しい」

こんな疑問を解決します!

本記事の内容
  • CustomModelDataを実装する方法

こんにちは!
マインクラフターのなつめ(@natsume_717b)です。

なつめ

マイクラ歴は5年程で、最近は脱出マップやミニゲームを制作しています!
→ダウンロードページ

今回はCustomModelDataを用いてアイテムの見た目を変更する方法についてお話していきます。

CustomModelDataは通常のテクスチャデータを上書きするわけではないので、元々のテクスチャデータを残せるメリットがあるほか、1つのアイテムに対して複数のテクスチャを設定できるのもポイントです。

初めのうちは中々難しいと感じがちですが、自分のものにできたらかなり便利なので、ぜひ挑戦してみてくださいね。
それでは、さっそく見ていきましょう!

今回解説するリソースパックのサンプルはGitHubからダウンロードすることができます。
ぜひ活用してみてください。

CustomModelDataを実装する方法

CustomModelDataを実装するには、リソースパックを作成する必要があります。
リソースパックとはブロックやアイテムなどの見た目を変更するためのものですね。

CustomModelDataを使ってアイテムの見た目を変更する際も、例に漏れずリソースパックが必要ということなので、まずはファイルやフォルダを作成していきます。

ファイル構造

以下のように作成すればOKです。
(必要最低限なものだけを作成しています)

  • リソースパック名(英数字で命名すること)
    • pack.mcmeta
    • assets
      • minecraft
        • textures
          • item
            • 画像ファイル
              (png形式にすること。今回はsample.pngというファイルで話を進めます)
        • models
          • item
            • jsonファイル
              (今回はsample.jsonというファイルで話を進めます)
            • アイテムID.json
              (ニンジン付きの棒ならcarrot_on_a_stick.jsonといった感じ)

pack.mcmrta、画像ファイル、jsonファイル以外は全てフォルダになります。

pack.mcmeta

pack.mcmetaは以下の内容を記載します。

{
  "pack": {
    "pack_format": 22,
    "description": "CustomModelData_Sample by Natsume"
  }
}

pack_fotmatはバージョンの指定です。
ver.1.20.4の場合は22という値を入れれば、問題ありません。

21以下の数字を入れても導入して適用させることはできますが、適用時に注意書きが表示されます。
pack_formatの値はMinecraft wikiのリソースパックのページで確認できます。

desctiptionに関しては、説明文を入力するだけですので適当に入力して構いません。
今回はテスト用ということでサンプルのものと合わせています。

画像ファイル

画像ファイルは実際に表示させたい絵を用意すればOKです。

この時ファイル形式はpngで、ピクセル数(要は画像の大きさ)は縦横を合わせればOKです。
メジャーなところだと、16×16、32×32、64×64、128×128、256×256あたりでしょうか。

余談ではありますが、アニメーションを追加させたい場合には縦を横の倍数になるように画像を作成します。
今回は気に無くてOKです。

jsonファイル

jsonファイルは用意した画像とCustomModelDataの値を結びつける役割があります。
なのでjsonファイルがないと、「CustomModelDataの値が○○のアイテムを取り出したけど参照する画像が分からないよ」っていう状態にマイクラ側が陥ってしまいます。

この時少々面倒なのが、2つのjsonファイルが必要になります。

1つは元々のアイテムの情報を書き足すもの。
例えばですが、ニンジン付きの棒に対してCustomModelDataの値が○○の時××のファイルを参照するよって言っているファイルを追加します。

それに加えてもう1つは、××のファイルは◇◇の画像を参照すると言っているファイルも必要です。
はじめのうちは混乱しがちですが、丁寧に作業していけば問題なく作成できますよ。

大元のアイテム⇔(Jsonファイルによる合致)⇔画像ファイル
といった感じです。
両矢印部分が、作成するjsonファイルと同じ役割を持っているイメージになります。

jsonファイルの作成方法

ここからは実際にCustomModelDataを扱う上で必須なjsonファイルを作成していきます。

少々ややこしい項目ではありますが、分かりやすく説明しますので頑張ってついてきてください。

画像ファイルをjsonファイルに認識させる

まずは画像を指定するファイルの方から説明していきます。
jsonファイルの中身を以下のように書きましょう。

今回の例の場合は、sample.jsonの中身となります。

{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "minecraft:item/sample"
  }
}

parentの部分はminecraft:item/generatedかminecraft:item/handheld_rodを入力します。
素材などのように持たせたければgeneratedで、棒やツールなどのように持たせたいならhandheld_rodにしましょう。

layer0の後に続く部分は、各自で入力する文字列を変更する必要があります。

というのも画像ファイルの参照を行っている部分になります。
上記の例の場合はitemフォルダの中にあるsample.pngという画像ファイルを参照しているということです。

なので、layer0の部分は各自参照したいpngファイルの格納位置を指示しましょう。

このjsonファイルを保存する際は好きな名前でOKですが、次の作業で使うので分かりやすい名前にしておいた方が良いです。

画像ファイルの指定をしたjsonファイルの情報を既存アイテムの情報へ書き足す

次に先ほど作成したjsonファイルの情報を、既存のアイテムの情報へ書き足していきます。
そのためにアイテムIDの名前がついたjsonファイルを作成します。

ニンジン付きの棒だったら、carrot_on_a_stick.jsonといった感じですね。

jsonファイルには、以下のように書きます。

{
  "parent": "minecraft:item/handheld_rod",
  "textures": {
    "layer0": "minecraft:item/carrot_on_a_stick"
  },

  "overrides": [
    {"predicate": {"custom_model_data":5}, "model": "minecraft:item/sample"}
  ]
}

parentの部分には、先ほどと同様minecraft:item/handheld_rodかminecraft:item/generatedを書き込みます。
これは棒やツールならばhandheld_rodと入力し、素材などの場合はgeneratedでOKです。

正確に調べたい場合は、一度そのアイテムを手に持ち、どのように持っているのかを調べたうえで入力しましょう。

layer0の後には、ファイル名と同じ文字列を使用しましょう。
今回はニンジン付きの棒なので、minecraft:item/carrot_on_a_stickとなっています。

そして、overridesの部分でCustomModelDataに関する設定をしていきます。

今回はCustomModelDataの値が5の時にminecraft:item/sampleを参照するよと言っています。
なので、sample.jsonからsample.pngを読み取るって感じですね。

また、1つのアイテムに対して複数のCustomModelDataを指定できるようにしたい場合は、以下の通りです。

{
  "parent": "minecraft:item/handheld_rod",
  "textures": {
    "layer0": "minecraft:item/carrot_on_a_stick"
  },

  "overrides": [
    {"predicate": {"custom_model_data":5}, "model": "minecraft:item/sample1"},
    {"predicate": {"custom_model_data":7}, "model": "minecraft:item/sample2"},
    {"predicate": {"custom_model_data":9}, "model": "minecraft:item/sample3"}
  ]
}

CustomModelDataの値に5を指定した場合、7を指定した場合、9を指定した場合といった感じで連なっています。
カンマで区切るだけなので、あまり難しいことはないですね。

このCustomModelDataの値はかなり自由に決められますので、分かりやすい数字をつけておけば問題ありません。

複数のリソースパックを導入した際に、CustomModelDataの値が被っている場合は優先されているリソースパックのものが適用されます。
重複を起こさないためにも、なるべくCustomModelDataの値が被らない値を設定したいですね。

リソースパックを導入する

最後はリソースパックを導入すればOKです。
リソースパック自体の導入は難しくありませんので簡単に説明しますが、設定からリソースパック、パックフォルダーを開くという箇所を押せば、リソースパックを入れるフォルダが自動的に開きます。

また、フォルダに入れた後はきちんと適用するのを忘れないようにしましょう。

CustomModelDataを指定したアイテムの取り出し方

CustomModelDataの値を指定したアイテムを入手するには

/give @s minecraft:carrot_on_a_stick{CustomModelData:5} 1

といった感じのコマンドを実行しましょう。

手に入れたいアイテムのIDとCustomModelDataの文字列、値を間違えなければ簡単ですね。

また、大元のアイテムのテクスチャを変更しているわけではないので、CustomModelDataを設定しなければ通常通りのアイテムが手に入ります。

まとめ

というわけで、今回のまとめです。

今回使ったコマンドはこちら。

今回使ったコマンド
  • CustomModelDataの値が5の、ニンジン付きの棒を手に入れるコマンド
/give @s minecraft:carrot_on_a_stick{CustomModelData:5} 1
ポイント
  • CustomModelDataを扱うにはリソースパックを作成・導入する必要がある。
  • 2つのjsonファイルを適切に作成・配置しなければならない。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】