提供: Minecraft Modding Wiki
移動先: 案内検索
(新規作成)
 
(はじめに)
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のソースコードは、 bitbucketGithubにある。 あるいは、配布ページの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クラス?)