この記事では、MOD をデバックしやすくする為、楽にログを出力できるようにするよ!
Google Apps Script の Logger っぽい感じにします。
Minecraft 1.7.10 の記事になります。

Minecraft の Modding の全体像については、こちらのページ をご覧ください。

プロジェクト構成

ユーティリティなクラスをまとめるパッケージ com.gopichandmod.util とログを出力するクラス Logger.java を追加する。
プロジェクトの構成は、下記のようになる。

src/main/java
	com.gopichandmod
		GopichandMod.java
		Recipes.java
	com.gopichandmod.audio
		InstrumentManager.java
		InstrumentSound.java
	com.gopichandmod.items
		GopichandItems.java
		ItemGopichand.java
		ItemGopichandBody.java
		ItemGopichandHead.java
		ItemIronString.java
	com.gopichandmod.network
		MessageInstruments.java
		PacketHandler.java
	com.gopichandmod.util
		Logger.java
src/main/resources
	assets.gopichandmod
		sounds.json
	assets.gopichandmod.lang
		en_US.lang
		ja_JP.lang
	assets.gopichandmod.sounds.instruments
		gopichand_pick.ogg
		gopichand_up.ogg
		gopichand_tremolo.ogg
	assets.gopichandmod.textures.items
		gopichand.png
		gopichandbody.png
		gopichandhead.png
		ironstring.png
	mcmod.info

ハイライトされている部分が今回、追加するパッケージとクラスです。

ログを出力するクラス

適当にクラスorg.apache.logging.log4j.Loggerをラッパーしたクラスを作る。

package com.watermelonheadman.gopichandmod.util;

import cpw.mods.fml.common.event.FMLPreInitializationEvent;

public class Logger
{
	private static org.apache.logging.log4j.Logger logger;

	public static void registry( FMLPreInitializationEvent e )
	{
		logger = e.getModLog();
	}

	public static void log( String s )
	{
		logger.log( org.apache.logging.log4j.Level.OFF, s );
	}

	public static void log( org.apache.logging.log4j.Level lv, String s )
	{
		logger.log( lv, s );
	}

	public static void log( org.apache.logging.log4j.Level lv, String s, Object... params )
	{
		logger.log( lv, s, params );
	}

	public static void info( String s )
	{
		logger.info( s );
	}

	public static void info( String s, Object... params )
	{
		logger.info( s, params );
	}

	public static void warn( String s )
	{
		logger.warn( s );
	}

	public static void warn( String s, Object... params )
	{
		logger.warn( s, params );
	}

	public static void trace( String s )
	{
		logger.trace( s );
	}

	public static void trace( String s, Object... params )
	{
		logger.trace( s, params );
	}

	public static void fatal( String s )
	{
		logger.fatal( s );
	}

	public static void fatal( String s, Object... params )
	{
		logger.fatal( s, params );
	}

	public static void debug( String s )
	{
		logger.debug( s );
	}

	public static void debug( String s, Object... params )
	{
		logger.debug( s, params );
	}

	public static void error( String s )
	{
		logger.error( s );
	}

	public static void error( String s, Object... params )
	{
		logger.error( s, params );
	}
}

MOD の 読み込み時に関数 registry を実行する。

package com.watermelonheadman.gopichandmod;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraftforge.common.MinecraftForge;

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;

import com.watermelonheadman.gopichandmod.audio.InstrumentManager;
import com.watermelonheadman.gopichandmod.items.GopichandItems;
import com.watermelonheadman.gopichandmod.network.PacketHandler;
import com.watermelonheadman.gopichandmod.util.Logger;

@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 )
	{
		Logger.registry( e );
		GopichandItems.registry( this );
		InstrumentManager.registry();

		PacketHandler.init();
	}

	@EventHandler
	public void Init( FMLInitializationEvent e )
	{
		Recipes.registry();
	}

	public static CreativeTabs GopichandModTab
		= new CreativeTabs( "gopichandmodtab" )
	{
		public Item getTabIconItem()
		{
			return GopichandItems.Gopichand;
		}
	};
}

使い方

ログを出力したいところに Logger.log( "log!" ); を入力する。

テスト

ログがどのように出力されるかテストしてみる。

試しに MOD が読み込まれる際にログを出力してみる。

package com.watermelonheadman.gopichandmod;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;
import net.minecraftforge.common.MinecraftForge;

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;

import com.watermelonheadman.gopichandmod.audio.InstrumentManager;
import com.watermelonheadman.gopichandmod.items.GopichandItems;
import com.watermelonheadman.gopichandmod.network.PacketHandler;
import com.watermelonheadman.gopichandmod.util.Logger;

@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 )
	{
		Logger.registry( e );
		GopichandItems.registry( this );
		InstrumentManager.registry();

		PacketHandler.init();

		Logger.log( "log!" );
		Logger.warn( "warn!" );
		Logger.info( "info!" );
		Logger.trace( "trace!" );
		Logger.debug( "debug!" );
		Logger.error( "error!" );
		Logger.fatal( "fatal!" );
	}

	@EventHandler
	public void Init( FMLInitializationEvent e )
	{
		Recipes.registry();
	}

	public static CreativeTabs GopichandModTab
		= new CreativeTabs( "gopichandmodtab" )
	{
		public Item getTabIconItem()
		{
			return GopichandItems.Gopichand;
		}
	};
}

クライアントを起動すると Eclipse のコンソールにログが出力されているのが確認できる。

お疲れ様でした!