eyemono.log

LittleMaidReBirth用のマルチモデルを自作するメモ

createdAt: 2025/09/13 23:46

Minecraftの有名ModであるCreateのバージョン6.0系がリリースされてたので(6か月前)最近久しぶりにMinecraftで遊んでました。自分がマイクラを起動するときはほぼ100%LittleMaidReBirth(LMRB)を入れてメイドさんと一緒に遊んでいるのですが、そろそろメイドさんのモデルの自作に挑戦してみようと思い立ちました。

が、なかなか情報が見つからなかったのでここにまとめておきます。あくまで自分用メモです。後で清書する。 Mod開発/Javaの知識はゼロなので、間違っている可能性があります。

Warning

👷🚧まだ執筆中🏗👷‍♀️

環境

  • 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とは

www.minecraft.net
www.minecraft.net favicon https://www.minecraft.net

LittleMaidReBirthとは

forum.civa.jp
forum.civa.jp favicon https://forum.civa.jp/viewtopic.php?t=119
GitHub - SistrScarlet/LittleMaidReBirth-Architectury
Contribute to SistrScarlet/LittleMaidReBirth-Architectury development by creating an account on GitHub.
GitHub - SistrScarlet/LittleMaidReBirth-Architectury favicon https://github.com/SistrScarlet/LittleMaidReBirth-Architectury
GitHub - SistrScarlet/LittleMaidReBirth-Architectury

littleMaidMobのMinecraft v1.15.2以降対応版。

コードリーディングメモ

https://github.com/SistrScarlet/LittleMaidReBirth-Architecturyを読んでみる。

モデルファイルは/LMMLResourcesフォルダに入れる必要があるのでどっかでハードコードしてると予想して検索、発見。まず/LMMLResources内のフォルダ/Zipを読み込んでいる。

LMMultiModelLoaderMultiModelClassLoaderでマルチモデルを読み込んでいそう。

canLoadなモデルを読み込んでいるらしい。どうやら.classファイルを直接読み込んでいるようだ。クラスを動的読み込みしてるってこと??java(マイクラのModに特有?)ってこういうこと日常茶飯事なの…?Webエンジニアで良かった…

byte[] transBytes = transformer.transform(bytes);←これなに、やばいことしてそう。バイナリを解析して古いクラスを置き換える。とか言ってる。

後方互換性のための処理らしい。シストラーさんに足向けて寝れん。とにかくここでは古いクラスを新しいクラス(net.sistr.littlemaidmodelloader.maidmodel.*)に置き換えているっぽい。

最後に、読み込んだクラスがModelMultiBaseを継承しているかチェックしていそう。

マルチモデル用の基本クラス、これを継承していればマルチモデルとして使用できるとのこと。

extends ModelMultiBaseで検索すると、デフォルトでLMMLに同梱されているモデルのコード例が見つかる。これじゃん。最初からこれ見れば終わりだったじゃん。

つまり、実際にマルチモデルを作成するにはおそらく以下が必要:

  1. 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でクラスを書きだせるっぽい。
  2. そのクラスをコンパイルして/LMMLResourcesフォルダに入れる

実際にやってみる

Javaの環境構築めんどくせ~~~WSLでできる? to be continued…