こんにちは。この記事では、MinecraftJE 1.12.2のForgeのためのModを作っている際に発生する問題への対処法を、最新版のMDKのREADMEと筆者の体験をもとに説明します。
また、環境変数の設定については過去記事「Forgeのインストーラーが動かない時の対処(windows)」の後半が参考になるかと思います。
トラブル対処集
1. An illegal reflective access operation has occurredと出て起動できない
多分、ググってこのページにたどり着いた方は、幾多ものページで「Java9になってる」と言われ、JavaのビルドパスやJAVA_HOMEの環境変数を見直して「java1.8.0」を飽きるほど確認した方がいることでしょう。
これは、Java1.8.0を指定すべき場所がこれらではなかったことが原因です。
上のウィンドウから設定を開き、「 Gradle 」を開くといくつかの設定が出てきます。
そこに「拡張オプション」の「Java ホーム」があるのですが、ここをJava1.8.0のディレクトリにしなければなりません。
Eclipse上で動くGradleは、JAVA_HOMEと言われても基本的にはwindowsのJAVA_HOMEを参照せず、Eclipse内で完結するためにEclipseのJAVA_HOMEを参照します。
その際、ここのJavaホームが空欄になっていると、自動でEclipseに付属していたJavaランタイムを使うこととなり、知らぬ間にjava9以上で動かすことになってしまうのです。
ここをきちんとJava1.8.0で指定してあげることで、GradleがJAVA_HOMEに行こうとしたときに迷ってEclipseのJava12や13へ行くことがなくなります。
2. 今度は java.nio.ByteBuffer.flip()Ljava/nio/ByteBuffer が出る
このチャプターを見ている人は1も見たと思います。これもググった方は実行はjava8だがコンパイルがJava9と言われ怒り心頭したところでしょう。
対処法は、gradleのキャッシュを削除してコンパイルし直すことです。
gradleのキャッシュと聞いて、eclipseのキャッシュクリーンアップとgradleのリフレッシュは何度もしたと思う方もいるかもしれません。
ですがこれはeclipseだとかプロジェクトディレクトリだとかいう狭い話ではなく、User直下にある.gradleフォルダのchacheのことです。
細かい説明は省きますが、C:\Users\ユーザー\.gradle\cacheのフォルダを削除してから、MDKのzip解凍あたりからのすべての作業をやり直しましょう。時間はかかりますが、今度はすべてJava1.8.0でビルドされ成功するはずです。
参考: NoSuchMethodError ByteBuffer.rewind()
3. No mod information found となってしまった
mcmod.infoが正しく読み込まれておらず、authorなどの情報がしっかり表示されていませんね。
もしこのような「 No mod information found Ask your mod author to provide a mod mcmod.info file 」が出てしまった場合、うまくデバッグする環境にmcmod.infoが持ち込まれていないことが原因です。
その場合は、下記のコードを build.gradle の一番下に追加しましょう。
sourceSets {
main { output.resourcesDir = output.classesDir }
}
筆者の場合、これを書き加えたことにより build.gradle の105行目以降はこのようになりました。
publishing {
publications {
mavenJava(MavenPublication) {
artifact jar
}
}
repositories {
maven {
url "file:///${project.projectDir}/mcmodsrepo"
}
}
}
sourceSets {
main { output.resourcesDir = output.classesDir }
}
もう一度 runClient を実行してみると、このようにmcmod.infoの内容が表示されたかと思います。
参考:Minecraft Forge 1.12.2 14.23.5.2854 won’t load my mcmod.info file