package net.minecraft.item; import net.minecraft.block.Block; import net.minecraft.block.BlockLiquid; import net.minecraft.block.material.Material; import net.minecraft.block.state.IBlockState; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.init.Items; import net.minecraft.stats.StatList; import net.minecraft.util.BlockPos; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; public class ItemBucket extends Item { /** field for checking if the bucket has been filled. */ private Block isFull; private static final String __OBFID = "CL_00000000"; public ItemBucket(Block p_i45331_1_) { this.maxStackSize = 1; this.isFull = p_i45331_1_; this.setCreativeTab(CreativeTabs.tabMisc); } /** * Called whenever this item is equipped and the right mouse button is pressed. Args: itemStack, world, entityPlayer */ public ItemStack onItemRightClick(ItemStack itemStackIn, World worldIn, EntityPlayer playerIn) { boolean var4 = this.isFull == Blocks.air; MovingObjectPosition var5 = this.getMovingObjectPositionFromPlayer(worldIn, playerIn, var4); if (var5 == null) { return itemStackIn; } else { if (var5.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { BlockPos var6 = var5.func_178782_a(); if (!worldIn.isBlockModifiable(playerIn, var6)) { return itemStackIn; } if (var4) { if (!playerIn.func_175151_a(var6.offset(var5.field_178784_b), var5.field_178784_b, itemStackIn)) { return itemStackIn; } IBlockState var7 = worldIn.getBlockState(var6); Material var8 = var7.getBlock().getMaterial(); if (var8 == Material.water && ((Integer)var7.getValue(BlockLiquid.LEVEL)).intValue() == 0) { worldIn.setBlockToAir(var6); playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); return this.func_150910_a(itemStackIn, playerIn, Items.water_bucket); } if (var8 == Material.lava && ((Integer)var7.getValue(BlockLiquid.LEVEL)).intValue() == 0) { worldIn.setBlockToAir(var6); playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); return this.func_150910_a(itemStackIn, playerIn, Items.lava_bucket); } } else { if (this.isFull == Blocks.air) { return new ItemStack(Items.bucket); } BlockPos var9 = var6.offset(var5.field_178784_b); if (!playerIn.func_175151_a(var9, var5.field_178784_b, itemStackIn)) { return itemStackIn; } if (this.func_180616_a(worldIn, var9) && !playerIn.capabilities.isCreativeMode) { playerIn.triggerAchievement(StatList.objectUseStats[Item.getIdFromItem(this)]); return new ItemStack(Items.bucket); } } } return itemStackIn; } } private ItemStack func_150910_a(ItemStack p_150910_1_, EntityPlayer p_150910_2_, Item p_150910_3_) { if (p_150910_2_.capabilities.isCreativeMode) { return p_150910_1_; } else if (--p_150910_1_.stackSize <= 0) { return new ItemStack(p_150910_3_); } else { if (!p_150910_2_.inventory.addItemStackToInventory(new ItemStack(p_150910_3_))) { p_150910_2_.dropPlayerItemWithRandomChoice(new ItemStack(p_150910_3_, 1, 0), false); } return p_150910_1_; } } public boolean func_180616_a(World worldIn, BlockPos p_180616_2_) { if (this.isFull == Blocks.air) { return false; } else { Material var3 = worldIn.getBlockState(p_180616_2_).getBlock().getMaterial(); boolean var4 = !var3.isSolid(); if (!worldIn.isAirBlock(p_180616_2_) && !var4) { return false; } else { if (worldIn.provider.func_177500_n() && this.isFull == Blocks.flowing_water) { int var5 = p_180616_2_.getX(); int var6 = p_180616_2_.getY(); int var7 = p_180616_2_.getZ(); worldIn.playSoundEffect((double)((float)var5 + 0.5F), (double)((float)var6 + 0.5F), (double)((float)var7 + 0.5F), "random.fizz", 0.5F, 2.6F + (worldIn.rand.nextFloat() - worldIn.rand.nextFloat()) * 0.8F); for (int var8 = 0; var8 < 8; ++var8) { worldIn.spawnParticle(EnumParticleTypes.SMOKE_LARGE, (double)var5 + Math.random(), (double)var6 + Math.random(), (double)var7 + Math.random(), 0.0D, 0.0D, 0.0D, new int[0]); } } else { if (!worldIn.isRemote && var4 && !var3.isLiquid()) { worldIn.destroyBlock(p_180616_2_, true); } worldIn.setBlockState(p_180616_2_, this.isFull.getDefaultState(), 3); } return true; } } } }