今回は、Minecraft 1.7.2~1.8 / Forge に自作する MOD を認識させるよ。
プロジェクトに MOD のソースファイルを追加し、実際に Java のコードを入力しはじめます。

SPONSERD LINK

前回の記事で、MOD 用のプロジェクトを作り、実行構成を設定した。

クラス(ソースファイル)の追加

前回用意したソース・フォルダー java の中のパッケージ com.watermelonheadman.gopichandmod の上で右クリックし、メニューを開く。

新規 → クラス

をクリックすると“新規 Java クラス”のダイアログが開く。

“ソース・フォルダー”は、前回、作成した

GopichandMod/java

が、“パッケージ”は、

com.watermelonheadman.gopichandmod

がそれぞれ選択されていることを確認する。
名前を変えている場合は、読み替える。

“名前”は、任意だけど、MOD の名前を入力すると良いと思う。

当ブログでは、

GopichandMod

とした。

以降の項目は、初期値のままで良い。下記のようになっている。

装飾子 → public
スーパークラス → java.lang.Object
どのメソッド・スタブを作成しますか? → 継承された抽象メソッド

Eclipse の“新規 Java クラス”のダイアログ
出典:Eclipse の“新規 Java クラス”のダイアログ

“完了”ボタンをクリックする。

パッケージ watermelonheadman.gopichand の中に

GopichandMod.java

が作成される。

Eclipse の“パッケージ・エクスプローラー”
出典:Eclipse の“パッケージ・エクスプローラー”

GopichandMod.java は、実際にワークスペースの中にファイルが作られる。筆者の設定では、

C:\pleiades\workspace\GopichandMod\java\com\watermelonheadman\gopichand\GopichandMod.java

にあった。

このファイルを Windows のエクスプローラーでファイル名を変更したり、保存場所を変更したりすると Eclipse で不具合が発生し、面倒くさいことになってしまう。
ファイル名の変更が必要になった場合は、Eclipse の"パッケージ・エクスプローラー"の該当のファイルの上で右クリックし、メニューの"リファクタリング"から行う。

Eclipse の中央のテキスト・エディターに GopichandMod.java が開かれ、Eclipse が自動的に作成したコードが表示されている。

package com.watermelonheadman.gopichandmod;

public class GopichandMod {

}

この GopichandMod.java に MOD の初期化の処理等の全般的な内容を入力していくことになる。

パッケージのインポート

とりあえず、下記のようにコードを入力する。

package com.watermelonheadman.gopichandmod;

@Mod( modid = 『クラス名』.MODID, version = 『クラス名』.VERSION )
public class 『クラス名』
{
	@Mod.Instance( "『クラス名』" )
	public static final String MODID = "『MOD の ID』";
	public static final String VERSION = "『MOD のバージョン』";

	@EventHandler
	public void preInit( FMLPreInitializationEvent e )
	{

	}

	@EventHandler
	public void Init( FMLInitializationEvent e )
	{

	}
}

コピペで OK だけど、いくつかの項目は、自作する MOD に合わせて修正する。、

『クラス名』 = 新規 Java クラスで設定した名前(GopichandMod)
『MOD のID』 = MOD の ID を表す文字列(他の MOD と区別が付くユニークなもの)
『MOD のバージョン』 = MOD のバージョンを表す文字列(適当な数値で OK)

筆者の場合は、下記のとおりになった。

package com.watermelonheadman.gopichandmod;

@Mod( modid = GopichandMod.MODID, version = GopichandMod.VERSION )
public class GopichandMod
{
	@Mod.Instance( "GopichandMod" )
	public static final String MODID = "gopichandmod";
	public static final String VERSION = "1.0.0";

	@EventHandler
	public void preInit( FMLPreInitializationEvent e )
	{

	}

	@EventHandler
	public void Init( FMLInitializationEvent e )
	{

	}
}

必要なパッケージがインポートされていない為、コードの何箇所かに赤い波線が表示されている。
C/C++ でいうクラスの名前が解決されていない状態です。

Eclipse のテキスト・エディター(Java)
出典:Eclipse の"テキスト・エディター(Java)

該当の部分にマウスを乗せるとポップアップウィンドウが表示される。

Eclipse のテキスト・エディター(Java)
出典:Eclipse の"テキスト・エディター(Java)

一番上の『必要なパッケージの名前』 をインポートしますをクリックすると必要なパッケージをインポートするコードが自動的に入力される。

下記のハイライトされている部分が修正の必要な箇所です。

package com.watermelonheadman.gopichandmod;

@Mod( modid = GopichandMod.MODID, version = GopichandMod.VERSION )
public class GopichandMod
{
	@Mod.Instance( "GopichandMod" )
	public static final String MODID = "gopichandmod";
	public static final String VERSION = "1.0.0";

	@EventHandler
	public void preInit( FMLPreInitializationEvent e )
	{

	}

	@EventHandler
	public void Init( FMLInitializationEvent e )
	{

	}
}

一括して修正する方法があり、右クリックメニュー、または、ショートカットキー(CrtlShiftO)で、インポートの編成を実行すると、ソースファイルで必要なパッケージが全て自動的にインポートされる。

下記は、Minecraft 1.7.2~1.7.10 / Forge 版の修正後のコードになる。

package watermelonheadman.gopichand;

import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;

@Mod( modid = GopichandMod.MODID, version = GopichandMod.VERSION )
public class GopichandMod
{
	@Mod.Instance( "GopichandMod" )
	public static final String MODID = "gopichandmod";
	public static final String VERSION = "1.0.0";

	@EventHandler
	public void preInit( FMLPreInitializationEvent e )
	{

	}

	@EventHandler
	public void Init( FMLInitializationEvent e )
	{

	}
}

下記は、Minecraft 1.8 / Forge 版の修正後のコードになる。

package watermelonheadman.gopichand;

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.event.FMLPreInitializationEvent;

@Mod( modid = GopichandMod.MODID, version = GopichandMod.VERSION )
public class GopichandMod
{
	@Mod.Instance( "GopichandMod" )
	public static final String MODID = "gopichandmod";
	public static final String VERSION = "1.0.0";

	@EventHandler
	public void preInit( FMLPreInitializationEvent e )
	{

	}

	@EventHandler
	public void Init( FMLInitializationEvent e )
	{

	}
}

ハイライトされている部分が、追加されたコードになる。
Minecraft 1.7.2~1.7.10 / Forge と Minecraft 1.8 / Forge では、パッケージの場所が異なっている。

必要なパッケージがインポートされ、赤い波線は、消えている。

Eclipse のテキスト・エディター(Java)
出典:Eclipse の"テキスト・エディター(Java)

これで MOD を Minecraft に認識させる準備が整ったよ!

テスト

プロジェクトをビルドして、MOD が Minecraft に認識されているかどうか確認する。

まずは、ツールバーやショートカットキー(Ctrl+S)を使い、GopichandMod.java を保存(保管)する。

プロジェクトをビルドし、Minecraft を起動する。

MOD が Minecraft に認識されていれば、タイトル画面左下のテキストの数値が +1 されている。

Forge導入済み Minecraft(タイトル画面)
左下の“5 mods loaded, 5 mods active”の数値が 4 から 5 に増えている
出典:Forge導入済み Minecraft(タイトル画面)

“Multiplayer”の下の“Mods”をクリックすると認識されている MOD のリストが表示される。

Forge 導入済み Minecraft(Mods)
リストの一番下に“GopichandMod”と表示されている
出典:Forge 導入済み Minecraft(Mods)

左のリストの中に“gopichandmod”と表示されていれば、Minecaft から MOD が認識されているよ!

お疲れ様でした!

次回予告

次回は、アイテムの追加について説明するよ。