見出し画像

1.19.3以降のテクスチャ読み込みについて ~ atlases

Minecraft 1.19.3からモデルのテクスチャの読み込みが変更されました。
なんと、デフォルトで、blockフォルダあるいは、itemフォルダにないと読み込まれなくなりました。

おのれもやん!

勿論、きちんと打開策が用意されています。

1.19.3からリソースパックに、atlasesというフォルダが追加されました。
これは、モデル等での、テクスチャの読み込みに関するファイルです。

atlasesの書きかた

ファイルの種類

このフォルダの中には、次のファイルが格納されています。
blocksはブロックやアイテムのモデルでのテクスチャ読み込みに関するファイルです。
mob_effectsはステータス効果(ポーション等で付与される状態異常みたいなやつ)、paintingsは絵画、particlesはパーティクルのテクスチャ読み込みに関するファイルです。

  • blocks

  • banner_patterns

  • beds

  • chests

  • shield_patterns

  • shulker_boxes

  • signs

  • mob_effects

  • paintings

  • particles

ファイルの中身の構成

sourcesというリストが1つあり、そこに色々書き込む形式です。

sources : [
   {
     "type" : "sourceの種類",
     ...(sourceの種類に応じて変化)

まず、typeに次のどれかを指定します。

  • directory(texturesフォルダ内のフォルダ単位で指定する)

  • single(texturesフォルダ内の画像単位で指定する)

  • filter(指定した条件以外でテクスチャを使う)(要検証)

  • unstitch(指定した画像を切り取る。長方形でも可能)(要検証)

typeに応じて追加項目が出てくるため、それらを設定していきます。
それでは、追加項目についてみていきましょう。

各追加項目の設定

・type:directoryのとき

・source

使いたいテクスチャのあるフォルダです。

・prefix

ここに何かの文字列を入れた場合、モデル上でそれを含んだファイルとして読み込まれます。例えば"block/"と指定した場合、モデル上では"block/hoge.png"として扱われます。

・type:singleのとき

・resource

使いたいテクスチャのパスを指定します。

・sprite

よくわからん。画像の名前?

type:filterのとき(要検証)

・namespace, path(要検証)

除外したいパターン?
正規表現が使えるらしい

type:unstitchのとき(要検証)

・resource

使いたいテクスチャのパスを指定します。

・divisor_x, divisor_y(要検証)

どのくらい切り取るか?(要検証)

・region(要検証)

切り取る領域のリスト。
以下の項目が追加されます。

・sprite :スプライト名
・x,y:切り取る領域の一番左上の座標
・width, height:切り取る幅および高さ

使用例

ブロックやアイテムにエンティティテクスチャを読み込ませる

デフォルトのブロック/アイテムモデルのテクスチャ読み取り(blocks.json)の記述はこうなっています。

{
    "sources": [  //ブロックおよびアイテムモデルで使えるテクスチャの場所のリスト
        {
            "type": "directory",  
            "source": "block", 
            "prefix": "block/" 
        },
        {
            "type": "directory",
            "source": "item",
            "prefix": "item/"
        },
        {
            "type": "directory",
            "source": "entity/conduit",
            "prefix": "entity/conduit/"
        },
        {
            "type": "single",
            "resource": "entity/bell/bell_body"
        },
        {
            "type": "single",
            "resource": "entity/enchanting_table_book"
        }
    ]
}

一番上の項目では、typeを"directory"とし、sourceを"block"にしています。
これにより、「textures/blockフォルダ内のテクスチャを使う」という設定ができました。
さらに、prefixで"block/"が指定します。これにより、モデル上では"textures/block/テクスチャ"として扱われます。
…そう、ここにblock/が指定されているせいで、blockフォルダにないと読み込まれなくなってしまったのです。
どうしても気に入らなければ、""にしてしまいましょう。
その下にあるitemも同様です。

…あとはもう何となくわかるよね?

次に、次の記述を追加してしまいましょう。

{
            "type": "directory",
            "source": "entity",
            "prefix": "entity/"
}

追加したものがこちら。

{
    "sources": [  
        {
            "type": "directory",  
            "source": "block", 
            "prefix": "block/" 
        },
        {
            "type": "directory",
            "source": "item",
            "prefix": "item/"
        },
        {
            "type": "directory",
            "source": "entity/conduit",
            "prefix": "entity/conduit/"
        },
        {
            "type": "single",
            "resource": "entity/bell/bell_body"
        },
        {
            "type": "single",
            "resource": "entity/enchanting_table_book"
        },
        {
            "type": "directory",
            "source": "entity",
            "prefix": "entity/"
        }
    ]
}

これで、エンティティフォルダにあるテクスチャも使えるようになりました。

ホットバーの左から3番目から8番目が、エンティティテクスチャを使ったアイテムたち。
それぞれ、シュルカーのスポーンエッグ、スライムのスポーンエッグ、シュルカーの殻、エンドクリスタル、チェスト付きトロッコ、アマスタ


いいなと思ったら応援しよう!