1.19.3のCITリソースパックについて

Published by alumina on updated on

投稿時にはJE 1.19.3ではまだOptifineのpreview版しか出ておらず、そのpreview版ではCITが正常に動きません。なぜでしょうか?

別にこれ読まなくても、正規版の1.19.3のOptifineを待てばいいだけです。

1.19.3でのリソースパックでの変更点

そもそも、1.19.3自体でのリソースパックでの挙動が変更されたのが原因です。英語版wikiには1.19.3での変更点について以下のように記載されています。

The model and textures of the vex have been updated. Resource packs can have configuration files now, located in the new atlases directory, that control which images are included in the atlases. Block and item textures are now loaded before they are processed by block and item models.

https://minecraft.fandom.com/wiki/Resource_pack
  • vexのモデルとテクスチャを更新したぜ
  • リソースパックはatlasesフォルダにいくつかの設定ファイルが増えたよ
    • そいつらはatlasに含まれる画像を設定できるんだ
  • ブロックとアイテムのテクスチャはそれぞれのモデルの処理前に読み込まれるようになったよ

atlasってーのはテクスチャ一覧みたいな画像ファイルのことだったね。
参考: https://alumina6767.net/リソースパックを軽量化したい/#Atlasってどんなの?

ほう、なにか設定ファイルが増えたんだな。じゃあatlasesの詳細については?なんとこのリソパ解説ページにないのである!なんでだよ!

atlasesって?

英語版、日本語版wikiの1.19.3のリリースノートにatlasesの詳しい記載がある。
https://minecraft.fandom.com/wiki/Java_Edition_1.19.3#:~:text=in%20the%20future.-,Resource%20pack,-The%20version%20is
長過ぎる。

黒民さんがざっくりとした説明と対処法を書いてくれている。ありがたや。
でもこれではCITは動かない。

で?なんでCITは動かないの?

CITリソースパックしか作ったことがない人はわかんないかもだけど、そもそもバニラとCITではディレクトリの処理の仕方が違う。

CITでは
/assets/minecraft/optifine/cit/
にモデルもテクスチャも一緒にぶちこむ。

バニラとかCustomModelDataを使ったリソパでは
モデルは/assets/minecraft/models/
テクスチャは/assets/minecraft/textures/
と分けて入れなければならない。

で、基本的にはアイテムの場合
モデルは/assets/minecraft/models/item/
テクスチャは/assets/minecraft/textures/item/
と同じ名前のフォルダに入ってるイメージ。

今回のアプデでは、models/itemに入ってるモデルが読み込むテクスチャは前もってatlases/blocks.jsonで定義しないといけなくなった。これが、先に述べた

ブロックとアイテムのテクスチャはそれぞれのモデルの処理前に読み込まれるようになったよ

Optifineはatlasesなんて知らないので、cit内のテクスチャの参照ができなくなった。
ついでにcit内のモデルの参照もできなくなった。
(謎、モデルとテクスチャの読み込み順が変わったことに関係するのかもしれない)

モデルもテクスチャも読み込むことができないので、CITリソースパックを使うと四角いmissing_textureになる。形すら読み込まれてないよね。

つまりどうすればいいの?

Optifineはやっぱりatlasesなんて知らないので、optifineフォルダをatlases/blocks.jsonに追加したとしても読み込むことはできない。

ようするにバニラと同じフォルダにモデルとテクスチャを入れればいい。
propertiesは自身の置かれているフォルダをrootとするが、model=item/からはじまるパスは例外的にバニラのフォルダを参照する。

こんなファイル構造の時、


これを

type=item
items=torch
model=fire.json
nbt.display.Name=gaming_alumina

こうする。

type=item
items=torch
model=item/cit/etc/fire.json
nbt.display.Name=gaming_alumina

で、モデルを/assets/minecraft/models/item/cit/etc/
テクスチャを/assets/minecraft/texture/item/cit/etc/
に移動した上で

モデル内でのテクスチャの参照を変更する。

実際に動くCITリソースパック

完成したものがこれ。
かしのみさんがつくったテクスチャだけど勝手に配布しちゃおう。

2Dテクスチャ使えないんだが?

propertiesから直接texture=でテクスチャを読み込んでいるものはこの方法では不十分。
先のパス参照の例外がmodel=でしか使えないというOptifineの謎仕様のせいだ。
なので、texture=ではなくmodel=で参照できるように2Dテクスチャにもjsomモデルを作ってやればいい。

atlasesをうまく使えばどうにかなるのかもしれないが、2Dだけcitフォルダに残すのは面倒。

CIT Resewn使えばよくね?

OptifineのCITの機能のみを取り出したMODがある。
https://www.curseforge.com/minecraft/mc-mods/cit-resewn

Sodium環境でもCITを使えるもので、なんと投稿時点で1.19.3に対応している。
Optifineと併用はできないが、特にファイル構造をいじらなくてもちゃんと動く。
ただ、propertiesでのルールが若干Optifineと違うところがあり、エラーを吐く場合がある。

Optifineを必要としていないならこれでいい。