(新規作成) |
細 (→はじめに) |
||
2行目: | 2行目: | ||
前提MOD・ライブラリの自動DLはMinecraft Forgeにはまだ実装されていない。 | 前提MOD・ライブラリの自動DLはMinecraft Forgeにはまだ実装されていない。 | ||
ここで、解説するものは、chicken_bones氏のCodeChickenCore、及びその内部のクラスを利用した実装である。 | ここで、解説するものは、chicken_bones氏のCodeChickenCore、及びその内部のクラスを利用した実装である。 | ||
+ | |||
+ | 注意;この方法で、CoremodをDLさせると、クラスロードのタイミングに間に合わないので、初回は必ずコケます。 | ||
+ | |||
=自動DLの実装方法= | =自動DLの実装方法= | ||
自動DLの実装方法は大きく分けて、3つある。 | 自動DLの実装方法は大きく分けて、3つある。 |
2014年7月11日 (金) 22:22時点における版
目次
はじめに
前提MOD・ライブラリの自動DLはMinecraft Forgeにはまだ実装されていない。 ここで、解説するものは、chicken_bones氏のCodeChickenCore、及びその内部のクラスを利用した実装である。
注意;この方法で、CoremodをDLさせると、クラスロードのタイミングに間に合わないので、初回は必ずコケます。
自動DLの実装方法
自動DLの実装方法は大きく分けて、3つある。
CodeChickenCoreを前提MODに指定する場合
CodeChickenCoreを前提にすれば、あとで解説するdependencies.infoファイルをjar(zip)ディレクトリ直下に置くだけで、自動DLをさせることが出来る。残りの2つの方法はいずれもcoremod利用なので、初心者はこちらを使うとよい。
自動DLを自前で用意する(これ以外にCoremodは実装しない)
CodeChickenCoreの自動DLを担っているクラスはDepLoaderというクラスで、それを、パッケージに入れてしまえば、同じようにdependencies.infoファイルで自動DLさせることが出来る。 CodeChickenCoreのソースコードは、 bitbucketか Githubにある。 あるいは、配布ページのsrcからもダウンロードすることが出来る。
DepLoaderクラスをMOD内の適当な位置に配置し、jarのMANIFEST.MFを以下のように指定する。
Manifest-Version: 1.0 FMLCorePlugin: package.DepLoader FMLCorePluginContainsFMLMod: true
あとは、jarに圧縮すれば良い。
1.7の場合は、build.gradleファイルに
jar { manifest { attributes 'FMLCorePlugin' : 'codechicken.core.launch.DepLoader','FMLCorePluginContainsFMLMod':'true' } }
と追記すればよい。
dependencies.infoの扱いは上の場合に準ずる。
自動DLを自前で用意する(これ以外にClassTransformerを実装する)
すでにCoremodを内包しているMODに自動DLを付ける場合、CoremodがIFMLCallHookインターフェースをすでに実装している時はこの方法が使えない。 しかし、実装してないなら、IFMLLoadingPluginのgetSetupClassメソッドにDepLoaderの完全修飾クラス名を記述することで、動作するようになる。
@Override public String getSetupClass() { return "package.DepLoader"; }
この時の、JarのMANIFEST.MFにはIFMLLoadingPluginインターフェースを実装したクラスの完全修飾クラス名を指定すればよい。
dependencies.infoの扱いは上の場合に準ずる。
dependencies.info
dependencies.infoの例
1つのライブラリを自動DLさせる。
{ "repo": "https://dl.dropboxusercontent.com/s/uzka4pg5ryx2qqx/", "file": "PotionExtension-1.0.1.jar", "dev": "PotionExtension-1.0.1-dev.jar", "class": "ak.potionextension.PotionExtensionCorePlugin" }
2つ以上のライブラリを自動DLさせる。(ProjectREdのものを記載)
[{ "repo": "http://files.minecraftforge.net/ForgeMultipart/", "file": "ForgeMultipart-universal-1.6.4-1.0.0.244.jar", "dev": "ForgeMultipart-dev-1.6.4-1.0.0.244.jar", "class": "codechicken.multipart.MultipartMod" }, { "repo": "http://files.minecraftforge.net/CodeChickenLib/", "file": "CodeChickenLib-universal-1.6.4-1.0.0.61.jar", "dev": "CodeChickenLib-dev-1.6.4-1.0.0.61.jar", "class": "codechicken.lib.asm.ASMHelper" }]
dependencies.infoの解説
属性値 | タイプ | 説明 |
---|---|---|
repo | 文字列 | DLさせたいライブラリ・前提MODの配布ディレクトリ |
file | 文字列 | DLさせたいライブラリ・前提MODのファイル名 |
dev | 文字列 | DLさせたいライブラリ・前提MODの開発者用ビルドのファイル名(開発環境でDLされる?) |
class | 文字列 | DLさせたいライブラリ・前提MODの@Modアノテーションの付いたクラス(orIFMLLoadingPluginクラス?) |