#CoremodsとFMLModを同じJarパッケージにまとめて読み込ませる方法
- この記事はあくまで個人的なメモです。
- 読みにくいかもしれませんが、仕様です。
- 当方知識不足なため詳細なことは書かれてません。悪しからず。
##概要
Minecraft1.7.10のForge(10.13.0.1180)にて既存書き換えMod(以下CoreMod)及びFMLを用いた通常Mod(以下FMLMod)を1つのjarファイルにまとめる方法。
##前提
この説明では以下のソースファイルが存在すると仮定します。
ここではCoreMod,FMLMod共に解説はしません。
TestCorePlugin.java .......'CoreModのメインクラス'
TestModContainer.java(任意) .....'Mod情報(?)を格納するクラス。FMLModで言うmcmod.info'
TestTransformer.java ......'既存クラスを改変するクラス'
ModelCreeper.java(任意) ...'置換クラス。ここでは、クラス自体を
置き換えるCoreModとします'
TestMod.java ...'@Modを含んだ、FMLModのメインクラス'
mcmod.info .....'Mod情報を記入するファイル'
##jarにまとめる前の注意点
- ~~CoreModとFMLModとでModIdをそれぞれ別々に定義する必要がある。~~CoreModサイドでMod情報を定義しなければ問題ありませんでした。詳細
- CoreModとFMLModのメインクラスをそれぞれ別パッケージに配置する必要がある。
(例)
test/asm/TestCorePlugin.java
test/fml/TestMod.java
##CoreModでMod情報を定義したくない場合は
単にIFMLLoadingPlugin
クラスを実装したクラスのメソッドgetModContainerClass()
の戻り値をnull
にするだけ。
public String getModContainerClass() {
return null;
}
##パッケージのまとめ方
###MANIFEST.MFの記述例
通常のCoreModの場合、ManifestバージョンとFMLCorePlugin
のみを下記のように記述します。
FMLCorePlugin
の値には、CoreModとして読み込ませる為のメインクラス(ここではTestCorePluginクラス)をパッケージに沿って記入します。
Manifest-Version: 1.0
FMLCorePlugin: test.asm.TestCorePlugin
上記にFMLCorePluginContainsFMLMod
節を追加することにより、FMLModを読み込ませることが出来ます。
FMLCorePluginContainsFMLMod
にはFMLModのメインクラス(@Modのあるクラス。ここではTestModクラス)を記入します。
Manifest-Version: 1.0
FMLCorePlugin: test.asm.TestCorePlugin
FMLCorePluginContainsFMLMod: test.fml.TestMod
###jarパッケージのまとめ方
jarパッケージのまとめ方は以下のようになります。
test.jar
- test
- asm
- TestCorePlugin.class
- TestModContainer.class
- TestTransformer.class
- fml
- TestMod.class
- asm
- META-INF
- MANIFEST.MF
- ModelCreeper.class
- mcmod.info
##参考元リンク
この記事で参考になったサイトです。
Coremodsの基礎