LittleMaidReBirth用のマルチモデルを自作するメモ
- モノヅクリ
- game
Minecraftの有名ModであるCreateのバージョン6.0系がリリースされてたので(6か月前)最近久しぶりにMinecraftで遊んでました。自分がマイクラを起動するときはほぼ100%LittleMaidReBirth(LMRB)を入れてメイドさんと一緒に遊んでいるのですが、そろそろメイドさんのモデルの自作に挑戦してみようと思い立ちました。
が、なかなか情報が見つからなかったのでここにまとめておきます。あくまで自分用メモです。後で清書する。 Mod開発/Javaの知識はゼロなので、間違っている可能性があります。
👷🚧まだ執筆中🏗👷♀️
環境
- Windows 11
- Minecraft Java Edition 1.20.1
- LMRB-1.20.1-8.9.2-Forge
- LMML-1.20.1-8.2.0-Forge
Minecraftとは
LittleMaidReBirthとは
littleMaidMobのMinecraft v1.15.2以降対応版。
コードリーディングメモ
https://github.com/SistrScarlet/LittleMaidReBirth-Architecturyを読んでみる。
モデルファイルは/LMMLResources
フォルダに入れる必要があるのでどっかでハードコードしてると予想して検索、発見。まず/LMMLResources
内のフォルダ/Zipを読み込んでいる。
LMMultiModelLoader
とMultiModelClassLoader
でマルチモデルを読み込んでいそう。
canLoad
なモデルを読み込んでいるらしい。どうやら.class
ファイルを直接読み込んでいるようだ。クラスを動的読み込みしてるってこと??java(マイクラのModに特有?)ってこういうこと日常茶飯事なの…?Webエンジニアで良かった…
byte[] transBytes = transformer.transform(bytes);
←これなに、やばいことしてそう。バイナリを解析して古いクラスを置き換える。
とか言ってる。
後方互換性のための処理らしい。シストラーさんに足向けて寝れん。とにかくここでは古いクラスを新しいクラス(net.sistr.littlemaidmodelloader.maidmodel.*
)に置き換えているっぽい。
最後に、読み込んだクラスがModelMultiBase
を継承しているかチェックしていそう。
マルチモデル用の基本クラス、これを継承していればマルチモデルとして使用できる
とのこと。
extends ModelMultiBase
で検索すると、デフォルトでLMMLに同梱されているモデルのコード例が見つかる。これじゃん。最初からこれ見れば終わりだったじゃん。
つまり、実際にマルチモデルを作成するにはおそらく以下が必要:
ModelMultiBase
を継承したクラスを作成する。- この時
net.sistr.littlemaidmodelloader.maidmodel
パッケージを使う。 - 他モデルのコードは https://github.com/SistrScarlet/LittleMaidModelLoader-Architectury/tree/1.20/common/src/main/java/net/sistr/littlemaidmodelloader/maidmodel にある。
ModelLittleMaidBase
クラスを使った実装はLMM用に最適化されているモノっぽいので、基本的にはModelMultiBase
を使う。ModelMultiMMMBase
を使うのも様子見。
- 各メソッドの実行タイミングなどは
ModelMultiBase
の実装を見る。 - クラス名は
ModelLittleMaid_XXXX
またはModelMulti_XXX
にする。 addBox
とかaddChild
は面倒なので多分Blockbenchとかで書き出したコードを編集するのが一般的?- Blockbenchで”Modded Entity”フォーマットでファイルを作成すると
.java
でクラスを書きだせるっぽい。
- Blockbenchで”Modded Entity”フォーマットでファイルを作成すると
- この時
- そのクラスをコンパイルして
/LMMLResources
フォルダに入れる
実際にやってみる
Javaの環境構築めんどくせ~~~WSLでできる? to be continued…