1.9でICustomModelLoaderを使い独自のモデルを追加する


初めてのMinecraft Modding記事です。

この記事に書いてあることが全て正しいとは限りません。今後のアップデートで変わる可能性もあります。

ICustomModelLoaderは私が斜面MODを作る時にJsonファイルを作りたくないがために使用したものです。

やりたいことによってJsonと使い分けられればいいなと思います。

 

まずはICustomModelLoaderを実装するクラスを作る。

〇〇ModelLoaderとか〇〇Loaderとかの方がいいですかね。

唯一必要なblockstateのJsonを作ります。

 

ハマリポイント①の解説。

acceptsメソッドはこのモデルローダーで処理出来るモデルかどうかを判定するわけですがMODIDが自分のものだったらすぐにtrueを返して良いわけではありません。

このacceptsメソッドのmodelLocationはさまざまな形で呼ばれます。このacceptsメソッドでtrueを返して良いのは今回の場合では.modelで終わっているmodelLocation.getResourcePath()でしか返してはいけません。

具体的にはどのようなmodelLocationでacceptsメソッドが呼ばれるのとかというと、

・cornerblock

・models/block/cornerblock.model

・models/item/cornerblock

などです。.modelで終わっていない文字でtrueを返してしまうと面倒くさい処理をバニラに丸投げ出来なくなってしまうので注意。

 

ICustomModelLoaderを登録する。

ちらほらCoreなんてクラスが出て来てますがお察しの通り@Modがあるクラスです。

クラス宣言などは省略。

 

IModelを実装する

まずはサンプルを。

 

bakeメソッドでモデルを形成する感じです。このクラスにモデルの頂点データとかを持たせておくと便利かもしれない。

で、BakedSampleModelはテクスチャも頂点情報も揃ったモデルってことですかね。

 

getQuadsで適切なList<BakedQuad>を返せばブロック、アイテム共にいい感じに描画されるんじゃないかなと。

BakedQuadについてはmodding wikiの1.8のICustomModelLoader利用のgetFaceQuadsメソッドを見てください。

 

最後に

随分雑になってしまいましたが1.9の斜面MODのソースがgithubにあるので参考になるかは分かりませんが良かったらどうぞ。

 

ではでは。

余談

・1.9で草ブロックみたいなことをする方法

 

これをpostInitあたりでやると良いっぽい。CornerBlock.instanceは自分のMODのブロックに読み替える。

カテゴリー: Java, Minecraft パーマリンク

コメントを残す