IntelliJはGradleに対応しているので、マインクラフトのModを開発する場合は、Powershellでバッチファイルを実行する必要はありません。すべてIntelliJをクリックするだけで出来るので手軽に開発環境を作ってしまいましょう。この記事では、開発環境の構築、実行、デバッグ方法、ホットリロードを説明します。
前提条件
以下をインストール済み
JDK (なるべく新しいもの)
IntelliJ IDEA 2016.3.4
いくつか用語と開発ツールの解説
IntelliJ (インテリジェイ) Javaの開発環境
FORGE MDK – マインクラフトのModを開発するときの土台になる開発ライブラリー
Maven(メイベン) – Javaの依存関係解決ツール
Gradle(グラドル) – Javaのプロジェクト管理ツール
Javaとメモ帳で開発するのは面倒なので、IntelliJという強力な開発環境を使います。マインクラフトのMod(モド)で遊んだことがある人は知っているかもしれませんが、Modは大抵FORGE(フォージ)を土台にしています。そのためFORGEの開発者向けのMDK (minecraft development kitの略?)を使います。
またプロジェクトを管理するのに、Gradle(グラドル)という開発ツールを使っています。これがさらに内部でMaven(メイベン)という依存関係解決ツールを使っています。開発中はほとんど意識しませんがとりあえずこんな感じで動いています。
MDKの展開とワークスペース作成
Minecraft FORGE(http://files.minecraftforge.net/ ) にMdkアイコンがあるのでダウンロードして展開します。現時点では、1.11.2-13.20.0.2228が推奨(Recommended)でした。
展開して中を確認するとbuild.gradleファイルがあります。これがプロジェクト管理ファイルになります。
IntelliJを起動して、ダイアログが表示されたら[Import Project]で以下の[Select File or Directory to Import]ダイアログを表示して、build.gradleを選択します。
インポートの設定ダイアログが表示されますがそのままでよいです。
もしダイアログが出てこない場合は、IntelliJの[File]->[Open…]からbuild.gradleを開いても問題ないです。
これでプロジェクトが読み込まれます。
プロジェクトの初期化
setupDecompWorkspaceタスクの実行
IntelliJの右側にGradleアイコンが縦に表示されているので、クリックして一覧を表示し、以下画面のようにsetupDecompWorkspaceを右クリックして、Runで実行します。
最近のパソコンなら30秒ぐらいで終わるはずです。ビルド中はアイコンがくるくる回っていますが、終わると秒数が表示されます。以下のような感じです。
genIintellijRunsの実行
IntelliJの場合は、もう一つgenIntellijRunsタスクを実行します
「プロジェクトを再読み込みしますか?」と聞かれるのでYesをクリックします。
これで環境構築は完了です。
マインクラフトをIntelliJから実行
いままでと同様に、runClientタスクを右クリックで実行します。これは開発中ソースコードをビルドして、Modを有効にしてマインクラフトを起動します。
タイトル画面のModsボタンからMod List画面に行くと、Example Modが読み込まれているのが分かります。名前を変更していないのでExample Modのままです。
停止方法
IntelliJの下部分に実行中のタスクが表示されるので、そこの赤い資格のボタンで停止できます。
コンソールログ
IntelliJでコンソールログを表示するには、以下のアイコンをクリックします。
あとは、以下のように、右の縦のメニュー[1.Project]から、画像のように、src/main/java/com.example.examplemod/ExampleModを開くとここから開発が始められます。画像ファイルなどは、すぐ下のresourcesに入れていくことになりますが、ルールがあるのでちゃんと調べる必要があります。
デバッグとホットリロード
マインクラフトの開発中は、デバッグモードでマインクラフトを起動します。
デバッグモードで起動
デバッグモードでマインクラフトを起動する場合は、以下のようにDebugをクリックするだけです。
ホットリロード
ソースコードを修正したらすぐに反映されます。やり方は何かしらソースコードを修正して、メニューの[Build]からBuild Moduleをクリックすればよいです。
今リロードしますか?毎回聞かれるので、慣れたら、チェックボックスを入れて次回以降は表示しないようにしておきましょう。
リロードがうまくいった場合は、以下のステータスが表示されます。
サンプルソースコード
IntelliJのConsoleにログを出力するサンプルです。hello tick!!!の文字を変えたりしてホットリロードを確認してみてください。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
package com . example . examplemod ;
import net . minecraft . init . Blocks ;
import net . minecraftforge . common . MinecraftForge ;
import net . minecraftforge . fml . common . FMLLog ;
import net . minecraftforge . fml . common . Mod ;
import net . minecraftforge . fml . common . Mod . EventHandler ;
import net . minecraftforge . fml . common . event . FMLInitializationEvent ;
import net . minecraftforge . fml . common . eventhandler . SubscribeEvent ;
import net . minecraftforge . fml . common . gameevent . TickEvent ;
@Mod ( modid = ExampleMod . MODID , version = ExampleMod . VERSION )
public class ExampleMod
{
public static final String MODID = "examplemod" ;
public static final String VERSION = "1.0" ;
@EventHandler
public void init ( FMLInitializationEvent event )
{
// some example code
System . out . println ( "DIRT BLOCK >> " + Blocks . DIRT . getUnlocalizedName ( ) ) ;
MinecraftForge . EVENT_BUS . register ( this ) ;
}
@SubscribeEvent
public void onPlayerTick ( TickEvent . PlayerTickEvent e ) {
FMLLog . getLogger ( ) . info ( "hello tick!!!" ) ;
}
}
配布
GradleタブのTasks/build/buildを右クリックして実行するとbuildタスクが実行され、build/libs/modid-1.0.jarが作成されるのでこれを配布すればよいようです。
まとめ
IntelliJでマインクラフト1.11.2のMod開発環境を構築しました。
参考資料
VIDEO
1.11.2のMod作成チュートリアル
1.11はまだほとんどありませんが以下が参考になりそうです。またYoutubeでもチュートリアルを作っている方がいるようです。
http://www.minecraftforum.net/forums/mapping-and-modding/mapping-and-modding-tutorials/2790483-1-11-2-forge-minecraft-forge-modding-tutorials-up