(新規作成) |
(→dependencies.infoの例) |
||
(他の1人の利用者による、間の1版が非表示) | |||
2行目: | 2行目: | ||
前提MOD・ライブラリの自動DLはMinecraft Forgeにはまだ実装されていない。 | 前提MOD・ライブラリの自動DLはMinecraft Forgeにはまだ実装されていない。 | ||
ここで、解説するものは、chicken_bones氏のCodeChickenCore、及びその内部のクラスを利用した実装である。 | ここで、解説するものは、chicken_bones氏のCodeChickenCore、及びその内部のクラスを利用した実装である。 | ||
+ | |||
+ | 注意;この方法で、CoremodをDLさせると、クラスロードのタイミングに間に合わないので、初回は必ずコケます。 | ||
+ | |||
=自動DLの実装方法= | =自動DLの実装方法= | ||
自動DLの実装方法は大きく分けて、3つある。 | 自動DLの実装方法は大きく分けて、3つある。 | ||
56行目: | 59行目: | ||
} | } | ||
</source> | </source> | ||
− | 2つ以上のライブラリを自動DLさせる。( | + | 2つ以上のライブラリを自動DLさせる。(ProjectRedのものを記載) |
<source lang = "javascript"> | <source lang = "javascript"> | ||
[{ | [{ | ||
71行目: | 74行目: | ||
}] | }] | ||
</source> | </source> | ||
+ | |||
==dependencies.infoの解説== | ==dependencies.infoの解説== | ||
2015年10月31日 (土) 15:28時点における最新版
目次
はじめに[編集]
前提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クラス?) |