package com.insane.illuminatedbows.addons.thaumcraft;
import org.apache.commons.lang3.StringUtils;
import thaumcraft.api.ItemApi;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.crafting.InfusionRecipe;
import thaumcraft.api.crafting.ShapedArcaneRecipe;
import thaumcraft.api.research.ResearchCategories;
import thaumcraft.api.research.ResearchCategoryList;
import thaumcraft.api.research.ResearchItem;
import thaumcraft.api.research.ResearchPage;
import thaumcraft.client.fx.ParticleEngine;
import net.minecraft.block.Block;
import net.minecraft.init.Items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemDye;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.oredict.ShapelessOreRecipe;
import com.insane.illuminatedbows.IlluminatedBows;
import com.insane.illuminatedbows.addons.thaumcraft.blocks.TCBlocks;
import com.insane.illuminatedbows.addons.thaumcraft.items.TCItems;
import com.insane.illuminatedbows.client.particles.ColourNitorFX;
import com.insane.illuminatedbows.items.IlluminatedItems;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
public class TCAddon {
private static InfusionRecipe magicBowRecipe;
private static InfusionRecipe focusRecipe;
private static InfusionRecipe colouredFocusRecipe;
private static ResourceLocation iconLocation = new ResourceLocation("illuminatedbows:textures/items/illuminatedbow_standby.png");
private static ResourceLocation bowIconLocation = new ResourceLocation("illuminatedbows:textures/items/visbow_standby.png");
private static ResourceLocation focusIconLocation = new ResourceLocation("illuminatedbows:textures/items/focus_illuminating.png");
private static ResourceLocation backgroundLocation = new ResourceLocation("illuminatedbows:textures/thaumcraft/bg.png");
private static ResourceLocation focusColourLocation = new ResourceLocation("illuminatedbows:textures/items/focus_coloured.png");
public final static String TCCATEGORY = "illuminatedBows";
public static String magicBowKey = IlluminatedBows.MODID+"magicBow";
public static AspectList magicBowTags = new AspectList().add(Aspect.LIGHT, 1).add(Aspect.WEAPON, 1);
public static ResearchItem researchMagicBow = new ResearchItem(magicBowKey,TCCATEGORY,magicBowTags,0,0,2,bowIconLocation);
public static ResearchPage pageMagicBowOne = new ResearchPage(magicBowKey,"tc.magicBow.descriptionPage");
public static ResearchPage pageMagicBowTwo;
public static String illuminatingFocusKey = IlluminatedBows.MODID+"illuminatingFocus";
public static ResearchItem researchFocus = new ResearchItem(illuminatingFocusKey,TCCATEGORY,new AspectList().add(Aspect.LIGHT,1).add(Aspect.MAGIC, 1).add(Aspect.WEAPON,1),-2,2,2,focusIconLocation);
public static ResearchPage pageFocusOne = new ResearchPage(illuminatingFocusKey,"tc.focusIlluminating.descriptionPage");
public static ResearchPage pageFocusTwo;
public static String colouredFocusKey = IlluminatedBows.MODID+"colouredFocus";
public static ResearchItem researchColouredFocus = new ResearchItem(colouredFocusKey,TCCATEGORY,new AspectList().add(Aspect.LIGHT,1).add(Aspect.MAGIC,1).add(Aspect.FIRE, 1).add(Aspect.AURA,1), 2, 2, 2,focusColourLocation);
public static ResearchPage pageColouredFocusOne = new ResearchPage(colouredFocusKey,"tc.focusColoured.descriptionPage");
public static ResearchPage pageColouredFocusTwo;
public static ResearchPage pageColouredFocusThree;
public static void preInit()
{
TCItems.preInit();
TCBlocks.preInit();
}
public static void init()
{
ItemStack nitorStack = ItemApi.getItem("itemResource", 1);
ItemStack alumentumStack = ItemApi.getItem("itemResource", 0);
ItemStack glowstoneStack = new ItemStack(Items.glowstone_dust);
ItemStack flameFocus = ItemApi.getItem("itemFocusFire",0);
if (nitorStack != null && alumentumStack != null)
{
magicBowRecipe = ThaumcraftApi.addInfusionCraftingRecipe(magicBowKey, new ItemStack(TCItems.itemMagicBow),5, new AspectList().add(Aspect.AIR, 16).add(Aspect.LIGHT, 64).add(Aspect.WEAPON, 16).add(Aspect.MAGIC,16), new ItemStack(IlluminatedItems.illuminatedBow), new ItemStack[] {glowstoneStack,nitorStack,glowstoneStack,nitorStack,alumentumStack});
focusRecipe = ThaumcraftApi.addInfusionCraftingRecipe(illuminatingFocusKey, new ItemStack(TCItems.itemFocusIlluminating),5, new AspectList().add(Aspect.LIGHT, 32).add(Aspect.MAGIC, 8), flameFocus, new ItemStack[] {new ItemStack(TCItems.itemMagicBow), new ItemStack(Items.arrow),glowstoneStack, new ItemStack(Items.feather)});
colouredFocusRecipe = ThaumcraftApi.addInfusionCraftingRecipe(colouredFocusKey, new ItemStack(TCItems.itemFocusColoured), 5, new AspectList().add(Aspect.AIR,16).add(Aspect.ELDRITCH,8).add(Aspect.SENSES,32).add(Aspect.LIGHT,64), new ItemStack(TCItems.itemFocusIlluminating), new ItemStack[] {nitorStack, new ItemStack(Items.dye,1,15), nitorStack, new ItemStack(Items.dye,1,1), nitorStack, new ItemStack(Items.dye,1,2), nitorStack, new ItemStack(Items.dye,1,4)});
}
pageMagicBowTwo = new ResearchPage(magicBowRecipe);
pageFocusTwo = new ResearchPage(focusRecipe);
pageColouredFocusTwo = new ResearchPage(colouredFocusRecipe);
//CraftingManager.getInstance().getRecipeList().add(new FocusColourCrafting());
for (int i=0; i<16; i++)
{
ItemStack colourStack = new ItemStack(TCItems.itemFocusColoured, 1, 0);
NBTTagCompound tag = new NBTTagCompound();
tag.setInteger(IlluminatedBows.MODID+"colour", i);
colourStack.setTagCompound(tag);
String dye;
if (i != 7)
dye = "dye"+StringUtils.capitalize(ItemDye.field_150923_a[i]);
else
dye = "dyeLightGray";
GameRegistry.addRecipe(new ShapelessOreRecipe(colourStack, new Object[]{new ItemStack(TCItems.itemFocusColoured, 1, 0), dye}));
}
ItemStack colourStack = new ItemStack(TCItems.itemFocusColoured, 1, 0);
NBTTagCompound tag = new NBTTagCompound();
tag.setInteger(IlluminatedBows.MODID+"colour", 16);
colourStack.setTagCompound(tag);
GameRegistry.addShapelessRecipe(colourStack, new Object[]{new ItemStack(TCItems.itemFocusColoured, 1, 0), Items.gunpowder});
}
public static void postInit()
{
String[] magicBowParents = {"NITOR","ALUMENTUM","INFUSION"};
researchMagicBow.setParents(magicBowParents);
ResearchCategories.registerCategory(TCCATEGORY,iconLocation, backgroundLocation);
researchMagicBow = researchMagicBow.setPages(pageMagicBowOne,pageMagicBowTwo);
ResearchCategories.addResearch(researchMagicBow);
String[] focusParents = {magicBowKey,"FOCUSFIRE","INFUSION"};
researchFocus.setParents(focusParents);
researchFocus = researchFocus.setPages(pageFocusOne,pageFocusTwo);
ResearchCategories.addResearch(researchFocus);
String[] colouredFocusParents = {magicBowKey, "FOCUSFIRE","INFUSION",illuminatingFocusKey};
researchColouredFocus.setParents(colouredFocusParents);
researchColouredFocus = researchColouredFocus.setPages(pageColouredFocusOne, pageColouredFocusTwo);
ResearchCategories.addResearch(researchColouredFocus);
}
@SideOnly(Side.CLIENT)
public static void doParticles(World world, double x, double y, double z, double x2, double y2, double z2, float size, int type, boolean shrink, float gravity, int colour)
{
ColourNitorFX ef = new ColourNitorFX(world, x, y, z, x2, y2, z2, size, type, shrink, gravity, colour);
ef.setGravity(gravity);
ef.shrink = shrink;
ParticleEngine.instance.addEffect(world,ef);
}
}