package org.halvors.electrometrics; import cpw.mods.fml.common.FMLCommonHandler; 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.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkRegistry; import cpw.mods.fml.common.registry.GameRegistry; import mekanism.api.ItemRetriever; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraftforge.common.config.Configuration; import net.minecraftforge.oredict.OreDictionary; import net.minecraftforge.oredict.ShapedOreRecipe; import org.apache.logging.log4j.Level; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; import org.halvors.electrometrics.common.CommonProxy; import org.halvors.electrometrics.common.ConfigurationManager; import org.halvors.electrometrics.common.ConfigurationManager.Integration; import org.halvors.electrometrics.common.CreativeTab; import org.halvors.electrometrics.common.Reference; import org.halvors.electrometrics.common.base.IUpdatableMod; import org.halvors.electrometrics.common.base.MachineType; import org.halvors.electrometrics.common.base.Tier; import org.halvors.electrometrics.common.block.Block; import org.halvors.electrometrics.common.block.BlockMachine; import org.halvors.electrometrics.common.event.PlayerEventHandler; import org.halvors.electrometrics.common.item.ItemBlockMachine; import org.halvors.electrometrics.common.item.ItemMultimeter; import org.halvors.electrometrics.common.tile.machine.TileEntityElectricityMeter; import org.halvors.electrometrics.common.updater.UpdateManager; /** * This is the Electrometrics class, which is the main class of this mod. * * @author halvors */ @Mod(modid = Reference.ID, name = Reference.NAME, version = Reference.VERSION, dependencies = "after:CoFHCore;" + "after:Mekanism", guiFactory = "org.halvors." + Reference.ID + ".client.gui.configuration.GuiConfiguationFactory") public class Electrometrics implements IUpdatableMod { // The instance of your mod that Forge uses. @Instance(value = Reference.ID) public static Electrometrics instance; // Says where the client and server 'proxy' code is loaded. @SidedProxy(clientSide = "org.halvors.electrometrics.client.ClientProxy", serverSide = "org.halvors.electrometrics.common.CommonProxy") public static CommonProxy proxy; // Logger instance. private static final Logger logger = LogManager.getLogger(Reference.ID); // Creative tab. private static final CreativeTab creativeTab = new CreativeTab(); // Items. public static final Item itemMultimeter = new ItemMultimeter(); // Blocks. public static final Block blockMachine = new BlockMachine(); // ConfigurationManager. private static Configuration configuration; @EventHandler public void preInit(FMLPreInitializationEvent event) { // Initialize configuration. configuration = new Configuration(event.getSuggestedConfigurationFile()); // Load the configuration. ConfigurationManager.loadConfiguration(configuration); // Check for updates. FMLCommonHandler.instance().bus().register(new UpdateManager(this, Reference.RELEASE_URL, Reference.DOWNLOAD_URL)); // Mod integration. logger.log(Level.INFO, "BuildCraft integration is " + (Integration.isBuildCraftEnabled ? "enabled" : "disabled") + "."); logger.log(Level.INFO, "CoFHCore integration is " + (Integration.isCoFHCoreEnabled ? "enabled" : "disabled") + "."); logger.log(Level.INFO, "Mekanism integration is " + (Integration.isMekanismEnabled ? "enabled" : "disabled") + "."); } @EventHandler public void init(FMLInitializationEvent event) { // Register the our EventHandler. FMLCommonHandler.instance().bus().register(new PlayerEventHandler()); // Register the proxy as our GuiHandler to NetworkRegistry. NetworkRegistry.INSTANCE.registerGuiHandler(this, proxy); // Call functions for adding blocks, items, etc. addItems(); addBlocks(); addTileEntities(); addRecipes(); } private void addItems() { // Register items. GameRegistry.registerItem(itemMultimeter, "itemMultimeter"); } private void addBlocks() { // Register blocks. GameRegistry.registerBlock(blockMachine, ItemBlockMachine.class, "blockMachine"); } private void addTileEntities() { // Register tile entities. GameRegistry.registerTileEntity(TileEntityElectricityMeter.class, "tileEntityElectricityMeter"); } private void addRecipes() { // Register recipes. Item circuit = Items.repeater; ItemStack battery = new ItemStack(Items.diamond); ItemStack cable = new ItemStack(Items.gold_ingot); ItemStack casing = new ItemStack(Blocks.iron_block); if (Integration.isMekanismEnabled) { circuit = ItemRetriever.getItem("ControlCircuit").getItem(); // Basic control circuit. battery = new ItemStack(ItemRetriever.getItem("EnergyTablet").getItem(), 1, 100); // Uncharged battery. cable = new ItemStack(ItemRetriever.getItem("PartTransmitter").getItem(), 8); // Basic universal cable. casing = new ItemStack(ItemRetriever.getBlock("BasicBlock").getItem(), 1, 8); // Steel casing. } // Multimeter GameRegistry.addRecipe(new ShapedOreRecipe(itemMultimeter, "RGR", "IMI", "CBC", 'R', Items.redstone, 'G', "paneGlass", 'I', OreDictionary.doesOreNameExist("ingotCopper") ? "ingotCopper" : Items.gold_ingot, 'M', Items.clock, 'C', circuit, 'B', battery)); // Electricity Meter for (Tier.Electric electricTier : Tier.Electric.values()) { if (Integration.isMekanismEnabled) { cable = new ItemStack(ItemRetriever.getItem("PartTransmitter").getItem(), 8, electricTier.ordinal()); // Tier matching universal cable. } MachineType machineType = electricTier.getMachineType(); ItemStack itemStackMachine = machineType.getItemStack(); ItemBlockMachine itemBlockMachine = (ItemBlockMachine) itemStackMachine.getItem(); itemBlockMachine.setElectricTier(itemStackMachine, electricTier); GameRegistry.addRecipe(itemStackMachine, "RMR", "C#C", "RBR", 'R', Items.redstone, 'M', itemMultimeter, 'C', cable, '#', casing, 'B', battery); } } public static Electrometrics getInstance() { return instance; } public static CommonProxy getProxy() { return proxy; } public static Logger getLogger() { return logger; } public static CreativeTab getCreativeTab() { return creativeTab; } public static Configuration getConfiguration() { return configuration; } @Override public String getModId() { return Reference.ID; } @Override public String getModName() { return Reference.NAME; } @Override public String getModVersion() { return Reference.VERSION; } }