package net.minecraft.item; import net.minecraft.block.Block; import net.minecraft.block.BlockPlanks; import net.minecraft.block.IGrowable; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.passive.EntitySheep; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumFacing; import net.minecraft.world.World; public class ItemDye extends Item { public static final int[] dyeColors = new int[] {1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 11250603, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320}; private static final String __OBFID = "CL_00000022"; public ItemDye() { this.setHasSubtypes(true); this.setMaxDamage(0); this.setCreativeTab(CreativeTabs.tabMaterials); } /** * Returns the unlocalized name of this item. This version accepts an ItemStack so different stacks can have * different names based on their damage or NBT. */ public String getUnlocalizedName(ItemStack stack) { int var2 = stack.getMetadata(); return super.getUnlocalizedName() + "." + EnumDyeColor.func_176766_a(var2).func_176762_d(); } /** * Called when a Block is right-clicked with this Item * * @param pos The block being right-clicked * @param side The side being right-clicked */ public boolean onItemUse(ItemStack stack, EntityPlayer playerIn, World worldIn, BlockPos pos, EnumFacing side, float hitX, float hitY, float hitZ) { if (!playerIn.func_175151_a(pos.offset(side), side, stack)) { return false; } else { EnumDyeColor var9 = EnumDyeColor.func_176766_a(stack.getMetadata()); if (var9 == EnumDyeColor.WHITE) { if (func_179234_a(stack, worldIn, pos)) { if (!worldIn.isRemote) { worldIn.playAuxSFX(2005, pos, 0); } return true; } } else if (var9 == EnumDyeColor.BROWN) { IBlockState var10 = worldIn.getBlockState(pos); Block var11 = var10.getBlock(); if (var11 == Blocks.log && var10.getValue(BlockPlanks.VARIANT_PROP) == BlockPlanks.EnumType.JUNGLE) { if (side == EnumFacing.DOWN) { return false; } if (side == EnumFacing.UP) { return false; } pos = pos.offset(side); if (worldIn.isAirBlock(pos)) { IBlockState var12 = Blocks.cocoa.onBlockPlaced(worldIn, pos, side, hitX, hitY, hitZ, 0, playerIn); worldIn.setBlockState(pos, var12, 2); if (!playerIn.capabilities.isCreativeMode) { --stack.stackSize; } } return true; } } return false; } } public static boolean func_179234_a(ItemStack p_179234_0_, World worldIn, BlockPos p_179234_2_) { IBlockState var3 = worldIn.getBlockState(p_179234_2_); if (var3.getBlock() instanceof IGrowable) { IGrowable var4 = (IGrowable)var3.getBlock(); if (var4.isStillGrowing(worldIn, p_179234_2_, var3, worldIn.isRemote)) { if (!worldIn.isRemote) { if (var4.canUseBonemeal(worldIn, worldIn.rand, p_179234_2_, var3)) { var4.grow(worldIn, worldIn.rand, p_179234_2_, var3); } --p_179234_0_.stackSize; } return true; } } return false; } /** * Returns true if the item can be used on the given entity, e.g. shears on sheep. */ public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer playerIn, EntityLivingBase target) { if (target instanceof EntitySheep) { EntitySheep var4 = (EntitySheep)target; EnumDyeColor var5 = EnumDyeColor.func_176766_a(stack.getMetadata()); if (!var4.getSheared() && var4.func_175509_cj() != var5) { var4.func_175512_b(var5); --stack.stackSize; } return true; } else { return false; } } }