Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package top.mod.item;
- import java.util.List;
- import net.minecraft.block.Block;
- import net.minecraft.block.BlockOldLog;
- import net.minecraft.block.BlockPlanks;
- import net.minecraft.block.IGrowable;
- import net.minecraft.block.material.Material;
- 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.item.EnumDyeColor;
- import net.minecraft.item.Item;
- import net.minecraft.item.ItemStack;
- import net.minecraft.util.EnumActionResult;
- import net.minecraft.util.EnumFacing;
- import net.minecraft.util.EnumHand;
- import net.minecraft.util.EnumParticleTypes;
- import net.minecraft.util.math.BlockPos;
- import net.minecraft.world.World;
- import net.minecraftforge.fml.relauncher.Side;
- import net.minecraftforge.fml.relauncher.SideOnly;
- public class GrowthItem extends Item
- {
- public static final int[] DYE_COLORS = new int[] {1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 11250603, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320};
- public GrowthItem()
- {
- this.setHasSubtypes(true);
- this.setMaxDamage(0);
- this.setCreativeTab(CreativeTabs.MATERIALS);
- }
- /**
- * Called when a Block is right-clicked with this Item
- */
- public EnumActionResult onItemUse(EntityPlayer player, World worldIn, BlockPos pos, EnumHand hand, EnumFacing facing, float hitX, float hitY, float hitZ)
- {
- ItemStack itemstack = player.getHeldItem(hand);
- if (!player.canPlayerEdit(pos.offset(facing), facing, itemstack))
- {
- return EnumActionResult.FAIL;
- }
- else
- {
- EnumDyeColor enumdyecolor = EnumDyeColor.byDyeDamage(itemstack.getMetadata());
- if (enumdyecolor == EnumDyeColor.WHITE)
- {
- if (applyBonemeal(itemstack, worldIn, pos, player))
- {
- if (!worldIn.isRemote)
- {
- worldIn.playEvent(2005, pos, 0);
- }
- return EnumActionResult.SUCCESS;
- }
- }
- else if (enumdyecolor == EnumDyeColor.BROWN)
- {
- IBlockState iblockstate = worldIn.getBlockState(pos);
- Block block = iblockstate.getBlock();
- if (block == Blocks.LOG && iblockstate.getValue(BlockOldLog.VARIANT) == BlockPlanks.EnumType.JUNGLE)
- {
- if (facing == EnumFacing.DOWN || facing == EnumFacing.UP)
- {
- return EnumActionResult.FAIL;
- }
- pos = pos.offset(facing);
- if (worldIn.isAirBlock(pos))
- {
- IBlockState iblockstate1 = Blocks.COCOA.getStateForPlacement(worldIn, pos, facing, hitX, hitY, hitZ, 0, player, hand);
- worldIn.setBlockState(pos, iblockstate1, 10);
- if (!player.capabilities.isCreativeMode)
- {
- itemstack.shrink(1);
- }
- return EnumActionResult.SUCCESS;
- }
- }
- return EnumActionResult.FAIL;
- }
- return EnumActionResult.PASS;
- }
- }
- public static boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target)
- {
- if (worldIn instanceof net.minecraft.world.WorldServer)
- return applyBonemeal(stack, worldIn, target, net.minecraftforge.common.util.FakePlayerFactory.getMinecraft((net.minecraft.world.WorldServer)worldIn));
- return false;
- }
- public static boolean applyBonemeal(ItemStack stack, World worldIn, BlockPos target, EntityPlayer player)
- {
- IBlockState iblockstate = worldIn.getBlockState(target);
- int hook = net.minecraftforge.event.ForgeEventFactory.onApplyBonemeal(player, worldIn, target, iblockstate, stack);
- if (hook != 0) return hook > 0;
- if (iblockstate.getBlock() instanceof IGrowable)
- {
- IGrowable igrowable = (IGrowable)iblockstate.getBlock();
- if (igrowable.canGrow(worldIn, target, iblockstate, worldIn.isRemote))
- {
- if (!worldIn.isRemote)
- {
- if (igrowable.canUseBonemeal(worldIn, worldIn.rand, target, iblockstate))
- {
- igrowable.grow(worldIn, worldIn.rand, target, iblockstate);
- }
- stack.shrink(1);
- }
- return true;
- }
- }
- return false;
- }
- @SideOnly(Side.CLIENT)
- public static void spawnBonemealParticles(World worldIn, BlockPos pos, int amount)
- {
- if (amount == 0)
- {
- amount = 15;
- }
- IBlockState iblockstate = worldIn.getBlockState(pos);
- if (iblockstate.getMaterial() != Material.AIR)
- {
- for (int i = 0; i < amount; ++i)
- {
- double d0 = itemRand.nextGaussian() * 0.02D;
- double d1 = itemRand.nextGaussian() * 0.02D;
- double d2 = itemRand.nextGaussian() * 0.02D;
- worldIn.spawnParticle(EnumParticleTypes.VILLAGER_HAPPY, (double)((float)pos.getX() + itemRand.nextFloat()), (double)pos.getY() + (double)itemRand.nextFloat() * iblockstate.getBoundingBox(worldIn, pos).maxY, (double)((float)pos.getZ() + itemRand.nextFloat()), d0, d1, d2, new int[0]);
- }
- }
- else
- {
- for (int i1 = 0; i1 < amount; ++i1)
- {
- double d0 = itemRand.nextGaussian() * 0.02D;
- double d1 = itemRand.nextGaussian() * 0.02D;
- double d2 = itemRand.nextGaussian() * 0.02D;
- worldIn.spawnParticle(EnumParticleTypes.VILLAGER_HAPPY, (double)((float)pos.getX() + itemRand.nextFloat()), (double)pos.getY() + (double)itemRand.nextFloat() * 1.0f, (double)((float)pos.getZ() + itemRand.nextFloat()), d0, d1, d2, new int[0]);
- }
- }
- }
- }
Add Comment
Please, Sign In to add comment