【Minecraft / Forge Modding】ログを出力する【1.7.10】
2019-11-20 | Minecraft / Forge Modding メモ Minecraft 1.7.10 | Java, Minecraft, Modding
2019-11-20 | Minecraft / Forge Modding メモ Minecraft 1.7.10 | Java, Minecraft, Modding
この記事では、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 のコンソールにログが出力されているのが確認できる。
お疲れ様でした!
最近の投稿
カテゴリー