package chbachman.armour; import java.io.File; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import com.google.gson.GsonBuilder; import chbachman.armour.gui.GuiHandler; import chbachman.armour.handler.CommandHandler; import chbachman.armour.handler.DamageEventHandler; import chbachman.armour.handler.GenericEventHandler; import chbachman.armour.proxy.IProxy; import chbachman.armour.reference.Reference; import chbachman.armour.register.ItemRegister; import chbachman.armour.util.ModularCreativeTab; import chbachman.armour.util.OutputHandler; import chbachman.armour.util.json.JsonRegister; import cofh.core.util.ConfigHandler; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.SidedProxy; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.network.NetworkRegistry; import net.minecraft.launchwrapper.Launch; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.common.config.Configuration; @Mod(modid = Reference.MODID, name = Reference.MODNAME, version = Reference.VERSION, dependencies = Reference.DEPENDENCIES) public class ModularArmour { @Instance(Reference.MODID) public static ModularArmour instance; @SidedProxy(clientSide = "chbachman.armour.proxy.ClientProxy", serverSide = "chbachman.armour.proxy.ServerProxy") public static IProxy proxy; // Whether we are in a development method. public static final boolean developmentEnvironment = (Boolean) Launch.blackboard.get("fml.deobfuscatedEnvironment"); // The log method public static Logger log = LogManager.getLogger(Reference.MODID); public static GuiHandler guiHandler = new GuiHandler(); // The config, use this between preInit and postInit. public static ConfigHandler config = new ConfigHandler(Reference.VERSION); public static OutputHandler output; private static File configDir; // Modular Armour Creative Tab public static ModularCreativeTab creativeTab; @EventHandler public void preInit(FMLPreInitializationEvent event) { configDir = new File(event.getModConfigurationDirectory(), "ModularArmour"); // Make config directory. configDir.mkdir(); config.setConfiguration(new Configuration(new File(configDir, "Main.cfg"))); // Make main configuration file. output = new OutputHandler(new File(configDir, "ModularRecipes.txt")); // Make recipe text files. creativeTab = new ModularCreativeTab(); // Make Creative Tab. ItemRegister.INSTANCE.preInit(); } @EventHandler public void init(FMLInitializationEvent event) { if (developmentEnvironment) { MinecraftForge.EVENT_BUS.register(new DamageEventHandler()); } GenericEventHandler.register(); MinecraftForge.EVENT_BUS.register(proxy); ItemRegister.INSTANCE.init(); NetworkRegistry.INSTANCE.registerGuiHandler(instance, guiHandler); proxy.registerKeyBinds(); proxy.registerPacketInformation(); } @EventHandler public void postInit(FMLPostInitializationEvent event) { config.cleanUp(false, true); ItemRegister.INSTANCE.postInit(); output.save(); GsonBuilder gsonBuilder = new GsonBuilder(); JsonRegister.registerCustomSerializers(gsonBuilder); JsonRegister.createJsonRecipes(gsonBuilder); JsonRegister.registerJsonRecipes(gsonBuilder); } @EventHandler public void serverStarting(FMLServerStartingEvent event){ CommandHandler.registerCommands(event); } public static File getConfigDirectory() { return configDir; } }