package com.insane.illuminatedbows.addons.thaumcraft.items; import java.awt.Color; import java.util.List; import com.insane.illuminatedbows.IlluminatedBows; import com.insane.illuminatedbows.addons.thaumcraft.blocks.TCBlocks; import com.insane.illuminatedbows.addons.thaumcraft.tile.TileColouredNitor; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import thaumcraft.api.ThaumcraftApiHelper; import thaumcraft.api.aspects.Aspect; import thaumcraft.api.aspects.AspectList; import thaumcraft.api.wands.FocusUpgradeType; import thaumcraft.api.wands.ItemFocusBasic; import thaumcraft.common.items.wands.ItemWandCasting; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.ItemDye; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.StatCollector; import net.minecraft.world.World; public class ItemFocusColoured extends ItemFocusBasic { private int fireCost = 250; private int earthCost = 250; private AspectList visCost = new AspectList().add(Aspect.FIRE, fireCost).add(Aspect.EARTH, earthCost); private Color focusColor; private float hue=0; public ItemFocusColoured() { super(); this.setUnlocalizedName("focusColoured"); this.setMaxStackSize(1); } @SideOnly(Side.CLIENT) @Override public void registerIcons(IIconRegister par1IconRegister) { this.itemIcon = par1IconRegister.registerIcon("illuminatedbows:focus_coloured"); } @SideOnly(Side.CLIENT) @Override public IIcon getIconFromDamage(int par1) { return this.itemIcon; } @Override public int getColorFromItemStack(ItemStack stack, int pass) { int colour = this.getColour(stack); if (colour < 16) return ItemDye.field_150922_c[colour]; else return Color.YELLOW.getRGB(); } @SuppressWarnings({ "rawtypes", "unchecked" }) @Override public void addInformation(ItemStack stack, EntityPlayer player, List list, boolean blah) { NBTTagCompound tag; if (stack.hasTagCompound()) tag = stack.getTagCompound(); else tag = new NBTTagCompound(); list.add(StatCollector.translateToLocal("item.focusColoured.currentcolour")+": "+StatCollector.translateToLocal("colour."+tag.getInteger(IlluminatedBows.MODID+"colour"))); super.addInformation(stack, player, list, blah); list.add(StatCollector.translateToLocal("colour.shapelesscraft")); } @Override public int getFocusColor(ItemStack focusStack) { focusColor = Color.getHSBColor(hue, 1, 1); hue+=0.001; return focusColor.getRGB(); } @Override public IIcon getFocusDepthLayerIcon(ItemStack focusStack) { return null; } @Override public IIcon getOrnament(ItemStack focusStack) { return null; } @Override public WandFocusAnimation getAnimation(ItemStack focusStack) { return WandFocusAnimation.CHARGE; } @Override public AspectList getVisCost(ItemStack focusStack) { return visCost.copy(); } @Override public boolean isVisCostPerTick(ItemStack focusStack) { return false; } @Override public ItemStack onFocusRightClick(ItemStack itemstack, World world, EntityPlayer player, MovingObjectPosition mop) { player.swingItem(); if (mop != null && ThaumcraftApiHelper.consumeVisFromWand(itemstack, player, visCost.copy(), true, false)) { int x = mop.blockX; int y = mop.blockY; int z = mop.blockZ; switch (mop.sideHit) { case (0): { y--; break; } case (1): { y++; break; } case (2): { z--; break; } case (3): { z++; break; } case (4): { x--; break; } case (5): { x++; break; } } if (world.getBlock(x, y, z).isReplaceable(world, x, y, z) || world.isAirBlock(x, y, z)) { ItemStack focusStack = ((ItemWandCasting) itemstack.getItem()).getFocusItem(itemstack); world.setBlock(x, y, z, TCBlocks.nitorColour); TileColouredNitor te = (TileColouredNitor) world.getTileEntity(x, y, z); te.setColour(getColour(focusStack)); world.playSoundEffect(mop.blockX + 0.5D, mop.blockY + 0.5D, mop.blockZ + 0.5D, "thaumcraft:zap", 0.25F, 1.0F); } } return itemstack; } @Override public void onUsingFocusTick(ItemStack itemstack, EntityPlayer player, int count) { } @Override public void onPlayerStoppedUsingFocus(ItemStack itemstack, World world, EntityPlayer player, int count) { } public int getColour(ItemStack stack) { NBTTagCompound tag; if (stack.hasTagCompound()) tag=stack.getTagCompound(); else tag = new NBTTagCompound(); return tag.getInteger(IlluminatedBows.MODID+"colour"); } @Override public String getSortingHelper(ItemStack itemstack) { return "CL0"+getColour(itemstack); } @Override public boolean onFocusBlockStartBreak(ItemStack itemstack, int x, int y, int z, EntityPlayer player) { return false; } @Override public boolean isItemTool(ItemStack stack) { return true; } @Override public FocusUpgradeType[] getPossibleUpgradesByRank(ItemStack focusstack, int rank) { if (rank < 5) return new FocusUpgradeType[]{FocusUpgradeType.frugal}; return null; } }