216 lines
7.2 KiB
Java
216 lines
7.2 KiB
Java
package WayofTime.alchemicalWizardry.common.items;
|
|
|
|
import java.util.List;
|
|
|
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
|
import net.minecraft.creativetab.CreativeTabs;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.init.Items;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.util.IIcon;
|
|
import net.minecraft.util.MathHelper;
|
|
import net.minecraft.util.StatCollector;
|
|
import net.minecraftforge.oredict.OreDictionary;
|
|
import WayofTime.alchemicalWizardry.AlchemicalWizardry;
|
|
import WayofTime.alchemicalWizardry.ModItems;
|
|
import WayofTime.alchemicalWizardry.api.items.ShapelessBloodOrbRecipe;
|
|
import WayofTime.alchemicalWizardry.api.sacrifice.IIncense;
|
|
import cpw.mods.fml.common.registry.GameRegistry;
|
|
import cpw.mods.fml.relauncher.Side;
|
|
import cpw.mods.fml.relauncher.SideOnly;
|
|
|
|
public class ItemIncense extends Item implements IIncense
|
|
{
|
|
private static final String[] ITEM_NAMES = new String[]{"Woodash", "Byrrus", "Livens", "Viridis", "Purpura"};
|
|
|
|
@SideOnly(Side.CLIENT)
|
|
private IIcon[] icons;
|
|
|
|
public ItemIncense()
|
|
{
|
|
super();
|
|
this.maxStackSize = 64;
|
|
this.setCreativeTab(AlchemicalWizardry.tabBloodMagic);
|
|
this.hasSubtypes = true;
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public void registerIcons(IIconRegister iconRegister)
|
|
{
|
|
icons = new IIcon[ITEM_NAMES.length];
|
|
|
|
IIcon baseIcon = iconRegister.registerIcon("AlchemicalWizardry:" + "baseIncenseItem");
|
|
|
|
for (int i = 0; i < ITEM_NAMES.length; ++i)
|
|
{
|
|
if(this.doesIncenseHaveUniqueTexture(i))
|
|
{
|
|
icons[i] = iconRegister.registerIcon("AlchemicalWizardry:" + "baseIncenseItem" + ITEM_NAMES[i]);
|
|
}else
|
|
{
|
|
icons[i] = baseIcon;
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean par4)
|
|
{
|
|
list.add(StatCollector.translateToLocal("tooltip.alchemy.usedinincense"));
|
|
}
|
|
|
|
@Override
|
|
public String getUnlocalizedName(ItemStack itemStack)
|
|
{
|
|
int meta = MathHelper.clamp_int(itemStack.getItemDamage(), 0, ITEM_NAMES.length - 1);
|
|
return ("" + "item.bloodMagicIncenseItem." + ITEM_NAMES[meta]);
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public IIcon getIconFromDamage(int meta)
|
|
{
|
|
int j = MathHelper.clamp_int(meta, 0, ITEM_NAMES.length - 1);
|
|
return icons[j];
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public void getSubItems(Item id, CreativeTabs creativeTab, List list)
|
|
{
|
|
for (int meta = 0; meta < ITEM_NAMES.length; ++meta)
|
|
{
|
|
list.add(new ItemStack(id, 1, meta));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
@SideOnly(Side.CLIENT)
|
|
public int getColorFromItemStack(ItemStack stack, int pass)
|
|
{
|
|
if(!this.doesIncenseHaveUniqueTexture(stack.getItemDamage()))
|
|
{
|
|
EnumIncense inc = EnumIncense.getEnumForIndex(stack.getItemDamage());
|
|
return (int)((255*inc.redColour * 256 * 256 + 255*inc.greenColour * 256 + 255*inc.blueColour));
|
|
}
|
|
|
|
return 256 * (256 * 255 + 255) + 255;
|
|
}
|
|
|
|
@Override
|
|
public int getMinLevel(ItemStack stack)
|
|
{
|
|
return EnumIncense.getEnumForIndex(stack.getItemDamage()).minValue;
|
|
}
|
|
|
|
@Override
|
|
public int getMaxLevel(ItemStack stack)
|
|
{
|
|
return EnumIncense.getEnumForIndex(stack.getItemDamage()).maxValue;
|
|
}
|
|
|
|
@Override
|
|
public int getIncenseDuration(ItemStack stack)
|
|
{
|
|
return EnumIncense.getEnumForIndex(stack.getItemDamage()).incenseDuration;
|
|
}
|
|
|
|
@Override
|
|
public float getTickRate(ItemStack stack)
|
|
{
|
|
return EnumIncense.getEnumForIndex(stack.getItemDamage()).tickRate;
|
|
}
|
|
|
|
@Override
|
|
public float getRedColour(ItemStack stack)
|
|
{
|
|
return EnumIncense.getEnumForIndex(stack.getItemDamage()).redColour;
|
|
}
|
|
|
|
@Override
|
|
public float getGreenColour(ItemStack stack)
|
|
{
|
|
return EnumIncense.getEnumForIndex(stack.getItemDamage()).greenColour;
|
|
}
|
|
|
|
@Override
|
|
public float getBlueColour(ItemStack stack)
|
|
{
|
|
return EnumIncense.getEnumForIndex(stack.getItemDamage()).blueColour;
|
|
}
|
|
|
|
public boolean doesIncenseHaveUniqueTexture(int meta)
|
|
{
|
|
return false;
|
|
}
|
|
|
|
public static void registerIncenseRecipes()
|
|
{
|
|
int WILDCARD = OreDictionary.WILDCARD_VALUE;
|
|
ItemStack woodStack = new ItemStack(Blocks.log, 1, WILDCARD);
|
|
ItemStack charcoalStack = new ItemStack(Items.coal, 1, 1);
|
|
ItemStack leavesStack = new ItemStack(Blocks.leaves, 1, WILDCARD);
|
|
ItemStack goldNuggetStack = new ItemStack(Items.gold_nugget, 1, WILDCARD);
|
|
ItemStack stringStack = new ItemStack(Items.string, 1, WILDCARD);
|
|
ItemStack glowstoneStack = new ItemStack(Items.glowstone_dust, 1, WILDCARD);
|
|
ItemStack soulSandStack = new ItemStack(Blocks.soul_sand);
|
|
ItemStack gunpowderStack = new ItemStack(Items.gunpowder);
|
|
ItemStack fermentedEyeStack = new ItemStack(Items.fermented_spider_eye);
|
|
ItemStack quartzStack = new ItemStack(Items.quartz, 1, WILDCARD);
|
|
ItemStack blazePowderStack = new ItemStack(Items.blaze_powder);
|
|
ItemStack netherwartStack = new ItemStack(Items.nether_wart);
|
|
ItemStack fracturedBoneStack = new ItemStack(ModItems.baseAlchemyItems, 1, 5);
|
|
|
|
ItemStack woodashStack = new ItemStack(ModItems.itemIncense, 1, 0);
|
|
|
|
GameRegistry.addRecipe(woodashStack, "WWW", "WCW", "WWW", 'W', woodStack, 'C', charcoalStack); //WOODASH
|
|
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 1), woodashStack, "dyeRed", "dyeRed", new ItemStack(Items.redstone), leavesStack, leavesStack, new ItemStack(ModItems.apprenticeBloodOrb)));
|
|
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 2), woodashStack, "dyeBlue", "dyeBlue", goldNuggetStack, goldNuggetStack, glowstoneStack, stringStack, stringStack, new ItemStack(ModItems.magicianBloodOrb)));
|
|
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 3), woodashStack, "dyeGreen", "dyeGreen", soulSandStack, gunpowderStack, fermentedEyeStack, new ItemStack(ModItems.masterBloodOrb)));
|
|
GameRegistry.addRecipe(new ShapelessBloodOrbRecipe(new ItemStack(ModItems.itemIncense, 1, 4), woodashStack, "dyePurple", "dyePurple", quartzStack, netherwartStack, blazePowderStack, fracturedBoneStack, goldNuggetStack, new ItemStack(ModItems.archmageBloodOrb)));
|
|
}
|
|
|
|
public enum EnumIncense
|
|
{
|
|
WOODASH(0, 200, 1.0f, 1000, 0.937f, 0.898f, 0.820f),
|
|
RED(200, 600, 1.5f, 1000, 1.0f, 0, 0),
|
|
BLUE(600, 1200, 3.0f, 1000, 0, 0, 1.0f),
|
|
GREEN(1200, 2000, 4.0f, 1000, 0, 1.0f, 0),
|
|
PURPLE(2000, 3000, 5.0f, 1000, 1.0f, 0, 1.0f);
|
|
|
|
public final int minValue;
|
|
public final int maxValue;
|
|
public final float tickRate;
|
|
public final int incenseDuration;
|
|
|
|
public final float redColour;
|
|
public final float greenColour;
|
|
public final float blueColour;
|
|
|
|
EnumIncense(int minValue, int maxValue, float tickRate, int dur, float red, float green, float blue)
|
|
{
|
|
this.minValue = minValue;
|
|
this.maxValue = maxValue;
|
|
this.tickRate = tickRate;
|
|
this.incenseDuration = dur;
|
|
|
|
this.redColour = red;
|
|
this.greenColour = green;
|
|
this.blueColour = blue;
|
|
}
|
|
|
|
public static EnumIncense getEnumForIndex(int index)
|
|
{
|
|
if(index > EnumIncense.values().length || index < 0)
|
|
{
|
|
return WOODASH;
|
|
}else
|
|
{
|
|
return EnumIncense.values()[index];
|
|
}
|
|
}
|
|
}
|
|
}
|