package gq.cestaberous.supernaturalflora;

import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
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.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.registry.GameRegistry;

@Mod(modid = "snf", name = "Supernatural Flora", version = "1.0")
public class SupernaturalFlora {
	
	//item vars
	public static Item itemEndSight;
	public static Item itemTearVial;
	public static Item itemCondensedFlesh;
	public static Item itemPureGunpowder;
	public static Item itemBonePile;
	public static Item itemFireEssence;
	public static Item itemAwakeningCreeper;
	public static Item itemAwakeningZombie;
	public static Item itemAwakeningSkeleton;
	public static Item itemAwakeningBlaze;
	public static Item itemAwakeningGhast;
	public static Item itemAwakeningEnderman;
	public static Item itemSiftingNet;
	public static Item itemSoulMedium;
	public static Item itemLifePotion;
	public static Item itemgandalf99;

	
	//block vars
	public static Block blockGraveyardSoil;
	public static Block blockDeadSoilCreeper;
	public static Block blockDeadSoilZombie;
	public static Block blockDeadSoilSkeleton;
	public static Block blockDeadSoilBlaze;
	public static Block blockDeadSoilEnderman;
	public static Block blockDeadSoilGhast;
	
	@EventHandler
	public void preInit(FMLPreInitializationEvent event){
		//block and item registry and init; Furnace recipes
		//item init
		itemEndSight = new ItemEndSight().setUnlocalizedName("ItemEndSight").setTextureName("snf:itemendsight").setCreativeTab(tabSupernaturalFlora);
		itemTearVial = new ItemTearVial().setUnlocalizedName("ItemTearVial").setTextureName("snf:itemtearvial").setCreativeTab(tabSupernaturalFlora);
		itemCondensedFlesh = new ItemCondensedFlesh().setUnlocalizedName("ItemCondensedFlesh").setTextureName("snf:itemcondensedflesh").setCreativeTab(tabSupernaturalFlora);
		itemPureGunpowder = new ItemPureGunpowder().setUnlocalizedName("ItemPureGunpowder").setTextureName("snf:itempuregunpowder").setCreativeTab(tabSupernaturalFlora);
		itemBonePile = new ItemBonePile().setUnlocalizedName("ItemBonePile").setTextureName("snf:itembonepile").setCreativeTab(tabSupernaturalFlora);
		itemFireEssence = new ItemFireEssence().setUnlocalizedName("ItemFireEssence").setTextureName("snf:itemfireessence").setCreativeTab(tabSupernaturalFlora);
		itemAwakeningCreeper = new ItemAwakeningCreeper().setUnlocalizedName("ItemAwakeningCreeper").setTextureName("snf:itemawakening").setCreativeTab(tabSupernaturalFlora);
		itemAwakeningZombie = new ItemAwakeningZombie().setUnlocalizedName("ItemAwakeningZombie").setTextureName("snf:itemawakening").setCreativeTab(tabSupernaturalFlora);
		itemAwakeningSkeleton = new ItemAwakeningSkeleton().setUnlocalizedName("ItemAwakeningSkeleton").setTextureName("snf:itemawakening").setCreativeTab(tabSupernaturalFlora);
		itemAwakeningBlaze = new ItemAwakeningBlaze().setUnlocalizedName("ItemAwakeningBlaze").setTextureName("snf:itemawakening").setCreativeTab(tabSupernaturalFlora);
		itemAwakeningGhast = new ItemAwakeningGhast().setUnlocalizedName("ItemAwakeningGhast").setTextureName("snf:itemawakening").setCreativeTab(tabSupernaturalFlora);
		itemAwakeningEnderman = new ItemAwakeningEnderman().setUnlocalizedName("ItemAwakeningEnderman").setTextureName("snf:itemawakening").setCreativeTab(tabSupernaturalFlora);
		itemSiftingNet = new ItemSiftingNet().setUnlocalizedName("ItemSiftingNet").setTextureName("snf:itemsiftingnet").setCreativeTab(tabSupernaturalFlora);
		itemSoulMedium = new ItemSoulMedium().setUnlocalizedName("ItemSoulMedium").setTextureName("snf:itemsoulmedium").setCreativeTab(tabSupernaturalFlora);
		itemLifePotion = new ItemLifePotion().setUnlocalizedName("ItemLifePotion").setTextureName("snf:itemlifepotion").setCreativeTab(tabSupernaturalFlora);
		itemgandalf99 = new ItemGandalf99().setUnlocalizedName("ItemGandalf99").setTextureName("snf:itemgandalf99").setCreativeTab(tabSupernaturalFlora);
		
		//block init
		blockGraveyardSoil = new BlockGraveyardSoil(Material.grass).setBlockName("BlockGraveyardSoil").setBlockTextureName("snf:blockgraveyardsoil").setCreativeTab(tabSupernaturalFlora);
		blockDeadSoilCreeper = new BlockDeadSoilCreeper(Material.grass).setBlockName("BlockDeadSoilCreeper").setBlockTextureName("snf:blockdeadsoilcreeper").setCreativeTab(tabSupernaturalFlora);
		blockDeadSoilZombie = new BlockDeadSoilZombie(Material.grass).setBlockName("BlockDeadSoilZombie").setBlockTextureName("snf:blockdeadsoilzombie").setCreativeTab(tabSupernaturalFlora);
		blockDeadSoilSkeleton = new BlockDeadSoilSkeleton(Material.grass).setBlockName("BlockDeadSoilSkeleton").setBlockTextureName("snf:blockdeadsoilskeleton").setCreativeTab(tabSupernaturalFlora);
		blockDeadSoilBlaze = new BlockDeadSoilBlaze(Material.grass).setBlockName("BlockDeadSoilBlaze").setBlockTextureName("snf:blockdeadsoilblaze").setCreativeTab(tabSupernaturalFlora);
		blockDeadSoilEnderman = new BlockDeadSoilEnderman(Material.grass).setBlockName("BlockDeadSoilEnderman").setBlockTextureName("snf:blockdeadsoilenderman").setCreativeTab(tabSupernaturalFlora);
		blockDeadSoilGhast = new BlockDeadSoilGhast(Material.grass).setBlockName("BlockDeadSoilGhast").setBlockTextureName("snf:blockdeadsoilghast").setCreativeTab(tabSupernaturalFlora);
				
		//item registry
		GameRegistry.registerItem(itemEndSight, itemEndSight.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemTearVial, itemTearVial.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemCondensedFlesh, itemCondensedFlesh.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemPureGunpowder, itemPureGunpowder.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemBonePile, itemBonePile.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemFireEssence, itemFireEssence.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemAwakeningCreeper, itemAwakeningCreeper.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemAwakeningZombie, itemAwakeningZombie.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemAwakeningSkeleton, itemAwakeningSkeleton.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemAwakeningBlaze, itemAwakeningBlaze.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemAwakeningGhast, itemAwakeningGhast.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemAwakeningEnderman, itemAwakeningEnderman.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemSiftingNet, itemSiftingNet.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemSoulMedium, itemSoulMedium.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemLifePotion, itemLifePotion.getUnlocalizedName().substring(5));
		GameRegistry.registerItem(itemgandalf99, itemgandalf99.getUnlocalizedName().substring(5));
		//block registry
		GameRegistry.registerBlock(blockGraveyardSoil, blockGraveyardSoil.getUnlocalizedName().substring(5));
		GameRegistry.registerBlock(blockDeadSoilCreeper, blockDeadSoilCreeper.getUnlocalizedName().substring(5));
		GameRegistry.registerBlock(blockDeadSoilZombie, blockDeadSoilZombie.getUnlocalizedName().substring(5));
		GameRegistry.registerBlock(blockDeadSoilSkeleton, blockDeadSoilSkeleton.getUnlocalizedName().substring(5));
		GameRegistry.registerBlock(blockDeadSoilBlaze, blockDeadSoilBlaze.getUnlocalizedName().substring(5));
		GameRegistry.registerBlock(blockDeadSoilEnderman, blockDeadSoilEnderman.getUnlocalizedName().substring(5));
		GameRegistry.registerBlock(blockDeadSoilGhast, blockDeadSoilGhast.getUnlocalizedName().substring(5));
	}
		
	@EventHandler
	public void init(FMLInitializationEvent event){
		//proxy, tile entity, entity, GUI, packet init and handling
		//recipes
		//items
		GameRegistry.addRecipe(new ItemStack(itemFireEssence, 9), "PRP","RPR","PRP", 'P', Items.blaze_powder, 'R', Items.blaze_rod);
		GameRegistry.addRecipe(new ItemStack(itemEndSight, 6), "GGG","GEG","EGE", 'G', Blocks.glass, 'E', Items.ender_eye);
		GameRegistry.addRecipe(new ItemStack(itemTearVial, 9), "TTT", "TBT", "BWB", 'T', Items.ghast_tear, 'B', Items.glass_bottle, 'W', Items.water_bucket);
		GameRegistry.addRecipe(new ItemStack(itemCondensedFlesh, 8), "FFF", "FIF", "FFF", 'F', Items.rotten_flesh, 'I', Items.iron_ingot);
		GameRegistry.addRecipe(new ItemStack(itemPureGunpowder, 4), "GG ", "GG ", "W  ", 'G', Items.gunpowder, 'W', Items.water_bucket);
		GameRegistry.addRecipe(new ItemStack(itemBonePile, 9), "BBB", "BDB", "BBB", 'B', Items.bone, 'D', Blocks.dirt);
		GameRegistry.addRecipe(new ItemStack(itemSoulMedium, 9), "E  ", "B  ", "G  ", 'E', Items.ender_pearl, 'B', Items.blaze_powder, 'G', Items.ghast_tear);
		GameRegistry.addRecipe(new ItemStack(itemAwakeningEnderman, 3), "EPE", " M ", "   ", 'E', itemEndSight, 'P', Items.potionitem, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(itemAwakeningGhast, 3), "GPG", " M ", "   ", 'G', itemTearVial, 'P', Items.potionitem, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(itemAwakeningZombie, 3), "FPF", " M ", "   ", 'F', itemCondensedFlesh, 'P', Items.potionitem, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(itemAwakeningCreeper, 3), "GPG", " M ", "   ", 'G', itemPureGunpowder, 'P', Items.potionitem, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(itemAwakeningSkeleton, 3), "BPB", " M ", "   ", 'B', itemBonePile, 'P', Items.potionitem, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(itemAwakeningBlaze, 3), "FPF", " M ", "   ", 'F', itemFireEssence, 'P', Items.potionitem, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(itemLifePotion, 3), "EPS", "   ", "   ", 'E', Items.egg, 'P', Items.potionitem, 'S', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(Items.spawn_egg, 3, 58), "GMG", " M ", 'M', itemSoulMedium, 'G', blockDeadSoilEnderman);
		GameRegistry.addRecipe(new ItemStack(Items.spawn_egg, 3, 56), "GMG", " M ", 'M', itemSoulMedium, 'G', blockDeadSoilGhast);
		GameRegistry.addRecipe(new ItemStack(Items.spawn_egg, 3, 54), "GMG", " M ", 'M', itemSoulMedium, 'G', blockDeadSoilZombie);
		GameRegistry.addRecipe(new ItemStack(Items.spawn_egg, 3, 50), "GMG", " M ", 'M', itemSoulMedium, 'G', blockDeadSoilCreeper);
		GameRegistry.addRecipe(new ItemStack(Items.spawn_egg, 3, 51), "GMG", " M ", 'M', itemSoulMedium, 'G', blockDeadSoilSkeleton);
		GameRegistry.addRecipe(new ItemStack(Items.spawn_egg, 3, 61), "GMG", " M ", 'M', itemSoulMedium, 'G', blockDeadSoilBlaze);
		
		//blocks
		GameRegistry.addRecipe(new ItemStack(blockDeadSoilEnderman, 5), "EGS", " M ", "   ", 'E', itemEndSight, 'G', blockGraveyardSoil, 'S', itemLifePotion, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(blockDeadSoilGhast, 5), "EGS", " M ", "   ", 'E', itemTearVial, 'G', blockGraveyardSoil, 'S', itemLifePotion, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(blockDeadSoilZombie, 5), "EGS", " M ", "   ", 'E', itemCondensedFlesh, 'G', blockGraveyardSoil, 'S', itemLifePotion, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(blockDeadSoilCreeper, 5), "EGS", " M ", "   ", 'E', itemPureGunpowder, 'G', blockGraveyardSoil, 'S', itemLifePotion, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(blockDeadSoilSkeleton, 5), "EGS", " M ", "   ", 'E', itemBonePile, 'G', blockGraveyardSoil, 'S', itemLifePotion, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(blockDeadSoilBlaze, 5), "EGS", " M ", "   ", 'E', itemFireEssence, 'G', blockGraveyardSoil, 'S', itemLifePotion, 'M', itemSoulMedium);
		GameRegistry.addRecipe(new ItemStack(blockGraveyardSoil, 9), "DDD","SBS","BDB", 'D', Blocks.dirt, 'S', Blocks.stone, 'B', Items.bone);
		
	}
	
	@EventHandler
	public void postInit(FMLPostInitializationEvent event){
		
	}
	
	public static CreativeTabs tabSupernaturalFlora = new CreativeTabs("tabSupernaturalFlora"){
		@Override
		public Item getTabIconItem(){
			return new ItemStack(itemEndSight).getItem();
		}
	};
}
