弓にCustomModelDataを適用するには?【マイクラ】

弓にCustomModelDataを適用するには?【マイクラ】

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

CustomModelDataで弓のテクスチャを変更したいマインクラフター
「CustomModelDataで弓のテクスチャを変更するのってどうすればいいのかな? 弓を引いた時のアニメーションとかどう設定すればいいんだろう?」

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

本記事の内容
  • CustomModelDataで弓のテクスチャを変更する

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

なつめ

2016年3月からマイクラをプレイしています!
最近はコマンドやデータパックなどの技術的なものを勉強しています。

今回はCustomModelDataを使って弓のテクスチャを変更するということを解説していきます。

弓は通常時の画像と弓を引いた時の画像が3つ存在し、ただCustomModelDataを適用するだけでは上手くいきません。
そこで、CustomModelDataを適用するためのjsonファイルの書き方を、実際の例を示しつつ解説していきます。

それでは早速見ていきましょう!

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

CustomModelDataで弓のテクスチャを変更する

CustomModelDataで弓のテクスチャを変更する場合、ただ弓のCustomModelDataを設定するだけではNGです。
弓を引いた時などの画像も適切に表示されるよう設定しなければなりません。

この時、アニメーションを設定するのではなく複数の画像を用意して、それらを弓の引き具合でテクスチャを変更するようにjsonファイルで指示します。

というわけで、実際にどのようにやるのか見ていきましょう。
まずは最低限必要なものです。

  • png形式の画像×4
    (弓の引いていない時のテクスチャ、弓を引いている時のテクスチャ×3という内訳です)
  • jsonファイル
    (bow.jsonと、上記の4種の画像を指示するjsonファイルが必要。計5つのjsonファイルを作成します)

また、CustomModelDataを扱うことには変わりないので、リソースパックの作成が必要です。

以下がファイル構成です。
(拡張子の書かれていないものは全てフォルダです。また、基本的な説明は【必見!】CustomModelDataを実装する方法【マイクラ】を参考にしてください)

  • リソースパック名
    • pack.mcmeta
    • assets
      • minecraft
        • models
          • item
            • bow
              • sample_0.json
              • sample_1.json
              • sample_2.json
              • sample_3.json
            • bow.json
        • textures
          • item
            • sample_bow
              • sample_0.png
              • sample_1.png
              • sample_2.png
              • sample_3.png

画像(pngファイル)をsample_0.jsonなどで認識させつつ、それらのjsonファイルをbow.jsonでCustomModelDataの値と関連付けていきます。

画像とjsonファイルを結びつける

まずはsample_0.jsonなどと命名した系列のjsonファイルについて説明していきます。
画像は既に用意して、上記で紹介した場所に格納されているものとします。

以下はsample_0.jsonの中身です。

{   
   "parent": "item/generated",
    "textures": {
    "layer0": "item/sample_bow/sample_0"
},
"display":
{
"thirdperson_righthand": {"rotation": [ -80, 260, -40 ],"translation": [ -1.15, -2, 2.5 ],"scale": [ 0.9, 0.9, 0.9 ]},
"thirdperson_lefthand": {"rotation": [ -80, -280, 40 ],"translation": [ -1.15, -2, 2.5 ],"scale": [ 0.9, 0.9, 0.9 ]},
"firstperson_righthand": {"rotation": [ 0, -90, 25 ],"translation": [ 1.13, 3.2, 1.13],"scale": [ 0.68, 0.68, 0.68 ]},
"firstperson_lefthand": {"rotation": [ 0, 90, -25 ],"translation": [ 1.13, 3.2, 1.13],"scale": [ 0.68, 0.68, 0.68 ]}
}
}

変更する箇所は橙文字の場所だけです。
ほかは理解しなくても問題ありません。

簡単に説明すると、display、つまりは見え方の設定に関するものになっています。

橙部分は画像ファイルを指示します。

なので上記はtexturesフォルダの中にあるsample_bowフォルダに含まれているsample_0.pngを指示していることになります。

各自フォルダ名などが異なる場合はしっかりと変更してください。

このようなjsonファイルを残り3つ分作ります。
sample_1.json、sample_2.json、sample_3.jsonがそれですね。

これで画像ファイルとjsonファイルが結びつきました。

bow.jsonで1_0.jsonなどを認識させる

次はbow.jsonでCustomModelDataの値とsample_0.jsonなどのjsonファイルを関連付けます。

まずはbow.jsonの中身を見ましょう。
中々に複雑ですが、見るべき箇所は文字色を変更しています。

{
    "parent": "item/generated",
    "textures": {
        "layer0": "item/bow"
    },
    "display":
    {
    "thirdperson_righthand": {"rotation": [ -80, 260, -40 ],"translation": [ -1, -2, 2.5 ],"scale": [ 0.9, 0.9, 0.9 ]},
    "thirdperson_lefthand": {"rotation": [ -80, -280, 40 ],"translation": [ -1, -2, 2.5 ],"scale": [ 0.9, 0.9, 0.9 ]},
    "firstperson_righthand": {"rotation": [ 0, -90, 25 ],"translation": [ 1.13, 3.2, 1.13],"scale": [ 0.68, 0.68, 0.68 ]},
    "firstperson_lefthand": {"rotation": [ 0, 90, -25 ],"translation": [ 1.13, 3.2, 1.13],"scale": [ 0.68, 0.68, 0.68 ]}
    },
    "overrides":
    [
    {"predicate": {"pulling": 1},"model": "item/bow_pulling_0"},
    {"predicate": {"pulling": 1,"pull": 0.65},"model": "item/bow_pulling_1"},
    {"predicate": {"pulling": 1,"pull": 0.9},"model": "item/bow_pulling_2"},
    
    {"predicate": {"custom_model_data":1},"model": "item/bow/sample_0"},
    {"predicate": {"custom_model_data":1,"pulling": 1},"model": "item/bow/sample_1"},
    {"predicate": {"custom_model_data":1,"pulling": 1,"pull": 0.65},"model": "item/bow/sample_2"},
    {"predicate": {"custom_model_data":1,"pulling": 1,"pull": 0.9},"model": "item/bow/sample_3"}
    
    ]
    }

橙文字で書かれている部分は先ほど作成したjsonファイルを示しています。

上から順に「通常時」、「少しだけ引いた時」、「やや引いた時」、「完全に引ききった時」という風になっています。
これはpulling、pullの値で決まっています。

また、橙文字の近くにCustomModelDataの指示もあります。
bow.jsonですので、この値を指示した弓を手に入れればOKです。

色付き文字にした場所以外は基本的に弄る必要性がありません。

これで、弓に対してCustomModelDataを適用することができます。
リソースパックを適用して、確かめてみましょう。

まとめ

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

ポイント
  • 弓にCustomModelDataを適用するには、弓を引いた時の画像を用意するほか、引き具合によって正しく適用されるようにjsonファイルで指示をする必要がある。

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

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