resonant-induction/src/resonantinduction/ResonantInduction.java

248 lines
11 KiB
Java
Raw Normal View History

2013-08-02 02:17:42 +02:00
package resonantinduction;
2013-08-02 02:24:57 +02:00
import java.io.File;
2013-08-02 02:38:42 +02:00
import java.util.Arrays;
import java.util.logging.Logger;
2013-08-02 02:24:57 +02:00
2013-08-02 02:29:44 +02:00
import net.minecraft.block.Block;
2013-08-02 05:07:56 +02:00
import net.minecraft.item.Item;
2013-08-02 04:03:44 +02:00
import net.minecraft.item.ItemStack;
2013-08-02 02:24:57 +02:00
import net.minecraftforge.common.Configuration;
2013-08-02 05:07:56 +02:00
import net.minecraftforge.oredict.ShapedOreRecipe;
import org.modstats.ModstatInfo;
import org.modstats.Modstats;
2013-08-04 04:14:47 +02:00
import resonantinduction.battery.BlockBattery;
2013-08-04 04:23:06 +02:00
import resonantinduction.battery.ItemCapacitor;
2013-08-04 04:14:47 +02:00
import resonantinduction.battery.TileEntityBattery;
2013-08-03 04:18:03 +02:00
import resonantinduction.contractor.BlockEMContractor;
2013-08-03 19:41:37 +02:00
import resonantinduction.contractor.ItemBlockContractor;
2013-08-03 04:18:03 +02:00
import resonantinduction.contractor.TileEntityEMContractor;
2013-08-04 16:20:45 +02:00
import resonantinduction.entangler.ItemLinker;
import resonantinduction.entangler.ItemQuantumEntangler;
2013-08-04 01:19:20 +02:00
import resonantinduction.multimeter.BlockMultimeter;
import resonantinduction.multimeter.ItemBlockMultimeter;
2013-08-04 01:43:10 +02:00
import resonantinduction.multimeter.TileEntityMultimeter;
2013-08-02 02:57:56 +02:00
import resonantinduction.tesla.BlockTesla;
import resonantinduction.tesla.TileEntityTesla;
2013-08-07 01:03:29 +02:00
import resonantinduction.wire.BlockWire;
2013-08-07 05:34:06 +02:00
import resonantinduction.wire.EnumWire;
2013-08-07 01:24:24 +02:00
import resonantinduction.wire.ItemBlockWire;
2013-08-07 01:46:08 +02:00
import resonantinduction.wire.TileEntityWire;
import universalelectricity.core.item.IItemElectric;
import universalelectricity.prefab.TranslationHelper;
2013-08-02 02:38:42 +02:00
import cpw.mods.fml.common.FMLLog;
2013-08-02 02:24:57 +02:00
import cpw.mods.fml.common.Loader;
2013-08-02 02:17:42 +02:00
import cpw.mods.fml.common.Mod;
2013-08-02 02:29:44 +02:00
import cpw.mods.fml.common.Mod.EventHandler;
2013-08-02 02:20:14 +02:00
import cpw.mods.fml.common.Mod.Instance;
import cpw.mods.fml.common.ModMetadata;
2013-08-02 02:48:07 +02:00
import cpw.mods.fml.common.SidedProxy;
2013-08-02 02:29:44 +02:00
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
2013-08-02 02:38:42 +02:00
import cpw.mods.fml.common.network.NetworkMod;
2013-08-04 01:43:10 +02:00
import cpw.mods.fml.common.network.NetworkRegistry;
2013-08-02 02:57:56 +02:00
import cpw.mods.fml.common.registry.GameRegistry;
2013-08-02 02:38:42 +02:00
import cpw.mods.fml.common.registry.LanguageRegistry;
2013-08-02 02:17:42 +02:00
/**
* @author Calclavia
*
*/
@Mod(modid = ResonantInduction.ID, name = ResonantInduction.NAME, version = ResonantInduction.VERSION)
2013-08-02 02:38:42 +02:00
@NetworkMod(channels = ResonantInduction.CHANNEL, clientSideRequired = true, serverSideRequired = false, packetHandler = PacketHandler.class)
2013-08-06 23:58:17 +02:00
@ModstatInfo(prefix = "resonantin")
2013-08-02 02:17:42 +02:00
public class ResonantInduction
{
2013-08-02 02:24:57 +02:00
/**
* Mod Information
*/
2013-08-02 03:08:46 +02:00
public static final String ID = "resonantinduction";
2013-08-02 02:17:42 +02:00
public static final String NAME = "Resonant Induction";
2013-08-05 21:53:54 +02:00
public static final String CHANNEL = "RESIND";
2013-08-02 02:17:42 +02:00
public static final String MAJOR_VERSION = "@MAJOR@";
public static final String MINOR_VERSION = "@MINOR@";
public static final String REVISION_VERSION = "@REVIS@";
public static final String BUILD_VERSION = "@BUILD@";
public static final String VERSION = MAJOR_VERSION + "." + MINOR_VERSION + "." + REVISION_VERSION;
2013-08-02 02:20:14 +02:00
@Instance(ID)
public static ResonantInduction INSTANCE;
2013-08-02 02:20:14 +02:00
2013-08-02 02:48:07 +02:00
@SidedProxy(clientSide = ID + ".ClientProxy", serverSide = ID + ".CommonProxy")
public static CommonProxy proxy;
2013-08-02 02:20:14 +02:00
@Mod.Metadata(ID)
public static ModMetadata metadata;
2013-08-02 02:24:57 +02:00
2013-08-02 02:38:42 +02:00
public static final Logger LOGGER = Logger.getLogger(NAME);
2013-08-02 02:24:57 +02:00
/**
* Directory Information
*/
public static final String DOMAIN = "resonantinduction";
public static final String PREFIX = DOMAIN + ":";
public static final String DIRECTORY = "/assets/" + DOMAIN + "/";
public static final String TEXTURE_DIRECTORY = "textures/";
2013-08-04 01:43:10 +02:00
public static final String GUI_DIRECTORY = TEXTURE_DIRECTORY + "gui/";
2013-08-02 03:15:02 +02:00
public static final String BLOCK_TEXTURE_DIRECTORY = TEXTURE_DIRECTORY + "blocks/";
public static final String ITEM_TEXTURE_DIRECTORY = TEXTURE_DIRECTORY + "items/";
public static final String MODEL_TEXTURE_DIRECTORY = TEXTURE_DIRECTORY + "models/";
2013-08-07 23:59:02 +02:00
public static final String MODEL_DIRECTORY = DIRECTORY + "models/";
2013-08-02 02:24:57 +02:00
2013-08-02 04:19:01 +02:00
public static final String LANGUAGE_DIRECTORY = DIRECTORY + "languages/";
public static final String[] LANGUAGES = new String[] { "en_US", "de_DE" };
2013-08-02 02:24:57 +02:00
/**
* Settings
*/
public static final Configuration CONFIGURATION = new Configuration(new File(Loader.instance().getConfigDir(), NAME + ".cfg"));
2013-08-05 18:45:44 +02:00
public static float POWER_PER_COAL = 5;
2013-08-04 01:11:50 +02:00
public static boolean SOUND_FXS = true;
2013-08-02 02:24:57 +02:00
2013-08-02 02:29:44 +02:00
/** Block ID by Jyzarc */
private static final int BLOCK_ID_PREFIX = 3200;
/** Item ID by Horfius */
private static final int ITEM_ID_PREFIX = 20150;
2013-08-05 23:20:08 +02:00
public static int MAX_CONTRACTOR_DISTANCE = 200;
2013-08-02 02:29:44 +02:00
private static int NEXT_BLOCK_ID = BLOCK_ID_PREFIX;
private static int NEXT_ITEM_ID = ITEM_ID_PREFIX;
public static int getNextBlockID()
{
return NEXT_BLOCK_ID++;
}
public static int getNextItemID()
{
return NEXT_ITEM_ID++;
}
2013-08-02 15:03:12 +02:00
// Items
public static Item itemQuantumEntangler;
2013-08-04 04:23:06 +02:00
public static Item itemCapacitor;
2013-08-04 16:20:45 +02:00
public static Item itemLinker;
2013-08-02 02:29:44 +02:00
2013-08-02 15:03:12 +02:00
// Blocks
2013-08-02 02:29:44 +02:00
public static Block blockTesla;
2013-08-04 01:19:20 +02:00
public static Block blockMultimeter;
2013-08-03 04:18:03 +02:00
public static Block blockEMContractor;
2013-08-04 04:14:47 +02:00
public static Block blockBattery;
2013-08-07 01:03:29 +02:00
public static Block blockWire;
2013-08-02 02:29:44 +02:00
@EventHandler
public void preInit(FMLPreInitializationEvent evt)
{
2013-08-02 02:38:42 +02:00
LOGGER.setParent(FMLLog.getLogger());
2013-08-04 03:38:12 +02:00
NetworkRegistry.instance().registerGuiHandler(this, ResonantInduction.proxy);
2013-08-06 23:58:17 +02:00
Modstats.instance().getReporter().registerMod(this);
2013-08-02 02:29:44 +02:00
2013-08-02 02:48:07 +02:00
CONFIGURATION.load();
2013-08-02 15:03:12 +02:00
2013-08-02 15:06:32 +02:00
// Config
2013-08-02 03:52:12 +02:00
POWER_PER_COAL = (float) CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "Coal Wattage", POWER_PER_COAL).getDouble(POWER_PER_COAL);
2013-08-04 01:11:50 +02:00
SOUND_FXS = CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "Tesla Sound FXs", SOUND_FXS).getBoolean(SOUND_FXS);
2013-08-05 23:20:08 +02:00
MAX_CONTRACTOR_DISTANCE = CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "Max EM Contractor Path", MAX_CONTRACTOR_DISTANCE).getInt(MAX_CONTRACTOR_DISTANCE);
2013-08-04 03:38:12 +02:00
TileEntityEMContractor.ACCELERATION = CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "Contractor Item Acceleration", TileEntityEMContractor.ACCELERATION).getDouble(TileEntityEMContractor.ACCELERATION);
TileEntityEMContractor.MAX_REACH = CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "Contractor Max Item Reach", TileEntityEMContractor.MAX_REACH).getInt(TileEntityEMContractor.MAX_REACH);
TileEntityEMContractor.MAX_SPEED = CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "Contractor Max Item Speed", TileEntityEMContractor.MAX_SPEED).getDouble(TileEntityEMContractor.MAX_SPEED);
TileEntityEMContractor.PUSH_DELAY = CONFIGURATION.get(Configuration.CATEGORY_GENERAL, "Contractor Item Push Delay", TileEntityEMContractor.PUSH_DELAY).getInt(TileEntityEMContractor.PUSH_DELAY);
2013-08-04 01:19:20 +02:00
2013-08-02 15:06:32 +02:00
// Items
itemQuantumEntangler = new ItemQuantumEntangler(getNextItemID());
2013-08-04 04:23:06 +02:00
itemCapacitor = new ItemCapacitor(getNextItemID());
2013-08-04 16:20:45 +02:00
itemLinker = new ItemLinker(getNextItemID());
2013-08-04 04:23:06 +02:00
2013-08-02 15:06:32 +02:00
// Blocks
2013-08-02 02:48:07 +02:00
blockTesla = new BlockTesla(getNextBlockID());
2013-08-04 01:19:20 +02:00
blockMultimeter = new BlockMultimeter(getNextBlockID());
2013-08-04 01:43:10 +02:00
blockEMContractor = new BlockEMContractor(getNextBlockID());
2013-08-04 04:14:47 +02:00
blockBattery = new BlockBattery(getNextBlockID());
2013-08-07 01:03:29 +02:00
blockWire = new BlockWire(getNextBlockID());
2013-08-04 01:43:10 +02:00
CONFIGURATION.save();
2013-08-04 01:19:20 +02:00
2013-08-07 01:24:24 +02:00
GameRegistry.registerItem(itemQuantumEntangler, itemQuantumEntangler.getUnlocalizedName());
GameRegistry.registerItem(itemCapacitor, itemCapacitor.getUnlocalizedName());
GameRegistry.registerItem(itemLinker, itemLinker.getUnlocalizedName());
2013-08-07 01:46:08 +02:00
2013-08-02 02:57:56 +02:00
GameRegistry.registerBlock(blockTesla, blockTesla.getUnlocalizedName());
GameRegistry.registerBlock(blockMultimeter, ItemBlockMultimeter.class, blockMultimeter.getUnlocalizedName());
2013-08-03 19:41:37 +02:00
GameRegistry.registerBlock(blockEMContractor, ItemBlockContractor.class, blockEMContractor.getUnlocalizedName());
2013-08-04 04:14:47 +02:00
GameRegistry.registerBlock(blockBattery, blockBattery.getUnlocalizedName());
2013-08-07 01:24:24 +02:00
GameRegistry.registerBlock(blockWire, ItemBlockWire.class, blockWire.getUnlocalizedName());
2013-08-02 15:03:12 +02:00
2013-08-02 15:06:32 +02:00
// Tiles
2013-08-02 02:57:56 +02:00
GameRegistry.registerTileEntity(TileEntityTesla.class, blockTesla.getUnlocalizedName());
2013-08-04 01:43:10 +02:00
GameRegistry.registerTileEntity(TileEntityMultimeter.class, blockMultimeter.getUnlocalizedName());
2013-08-03 04:18:03 +02:00
GameRegistry.registerTileEntity(TileEntityEMContractor.class, blockEMContractor.getUnlocalizedName());
2013-08-04 04:14:47 +02:00
GameRegistry.registerTileEntity(TileEntityBattery.class, blockBattery.getUnlocalizedName());
2013-08-07 01:46:08 +02:00
GameRegistry.registerTileEntity(TileEntityWire.class, blockWire.getUnlocalizedName());
2013-08-04 16:20:45 +02:00
ResonantInduction.proxy.registerRenderers();
2013-08-02 04:03:44 +02:00
2013-08-05 19:36:31 +02:00
TabRI.ITEMSTACK = new ItemStack(blockBattery);
2013-08-02 02:29:44 +02:00
}
@EventHandler
public void init(FMLInitializationEvent evt)
{
LOGGER.fine("Languages Loaded:" + TranslationHelper.loadLanguages(LANGUAGE_DIRECTORY, LANGUAGES));
2013-08-02 02:38:42 +02:00
metadata.modId = ID;
metadata.name = NAME;
metadata.description = "Resonant Induction is a Minecraft mod focusing on the manipulation of electricity and wireless technology. Ever wanted blazing electrical shocks flying off your evil lairs? You've came to the right place!";
2013-08-05 18:33:09 +02:00
metadata.url = "http://universalelectricity.com/resonant-induction";
2013-08-07 01:24:24 +02:00
metadata.logoFile = "/ri_logo.png";
2013-08-02 02:38:42 +02:00
metadata.version = VERSION + BUILD_VERSION;
metadata.authorList = Arrays.asList(new String[] { "Calclavia", "Aidancbrady" });
2013-08-05 18:33:09 +02:00
metadata.credits = "Thanks to Archadia for the awesome assets!";
2013-08-07 01:24:24 +02:00
metadata.autogenerated = false;
2013-08-02 02:29:44 +02:00
}
@EventHandler
2013-08-03 08:55:44 +02:00
public void postInit(FMLPostInitializationEvent evt)
2013-08-02 02:29:44 +02:00
{
2013-08-02 05:07:56 +02:00
/**
* Recipes
*/
2013-08-05 21:34:34 +02:00
ItemStack emptyCapacitor = new ItemStack(itemCapacitor);
((IItemElectric) itemCapacitor).setElectricity(emptyCapacitor, 0);
2013-08-05 21:34:34 +02:00
2013-08-05 05:50:59 +02:00
/** Capacitor **/
2013-08-05 21:34:34 +02:00
GameRegistry.addRecipe(new ShapedOreRecipe(emptyCapacitor, "RRR", "RIR", "RRR", 'R', Item.redstone, 'I', Item.ingotIron));
2013-08-02 02:29:44 +02:00
2013-08-05 05:50:59 +02:00
/** Linker **/
2013-08-05 21:34:34 +02:00
GameRegistry.addRecipe(new ShapedOreRecipe(itemLinker, " E ", "GCG", " E ", 'E', Item.eyeOfEnder, 'C', emptyCapacitor, 'G', Item.ingotGold));
2013-08-05 05:50:59 +02:00
/** Quantum Entangler **/
GameRegistry.addRecipe(new ShapedOreRecipe(itemQuantumEntangler, "EEE", "ILI", "EEE", 'E', Item.eyeOfEnder, 'L', itemLinker, 'I', Item.ingotIron));
/** Tesla - by Jyzarc */
2013-08-05 21:34:34 +02:00
GameRegistry.addRecipe(new ShapedOreRecipe(blockTesla, "EEE", " C ", " I ", 'E', Item.eyeOfEnder, 'C', emptyCapacitor, 'I', Block.blockIron));
2013-08-05 05:50:59 +02:00
/** Multimeter */
2013-08-05 21:34:34 +02:00
GameRegistry.addRecipe(new ShapedOreRecipe(blockMultimeter, "RRR", "ICI", "III", 'R', Item.redstone, 'C', emptyCapacitor, 'I', Item.ingotIron));
2013-08-05 05:50:59 +02:00
/** Multimeter */
GameRegistry.addRecipe(new ShapedOreRecipe(blockBattery, "III", "IRI", "III", 'R', Block.blockRedstone, 'I', Item.ingotIron));
/** EM Contractor */
2013-08-05 21:34:34 +02:00
GameRegistry.addRecipe(new ShapedOreRecipe(blockEMContractor, " I ", "GCG", "WWW", 'W', Block.wood, 'C', emptyCapacitor, 'G', Item.ingotGold, 'I', Item.ingotIron));
2013-08-07 05:34:06 +02:00
/** Wires **/
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 1, EnumWire.COPPER.ordinal()), "MMM", 'M', "ingotCopper"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 1, EnumWire.TIN.ordinal()), "MMM", 'M', "ingotTin"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 1, EnumWire.IRON.ordinal()), "MMM", 'M', Item.ingotIron));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 1, EnumWire.ALUMINUM.ordinal()), "MMM", 'M', "ingotAluminum"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 1, EnumWire.SILVER.ordinal()), "MMM", 'M', "ingotSilver"));
GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(blockWire, 1, EnumWire.SUPERCONDUCTOR.ordinal()), "MMM", 'M', "ingotSuperconductor"));
2013-08-02 02:29:44 +02:00
}
2013-08-02 02:17:42 +02:00
}