001    package net.minecraft.src;
002    
003    import net.minecraft.server.MinecraftServer;
004    
005    public class BehaviorBucketEmptyDispense extends BehaviorDefaultDispenseItem
006    {
007        /** Reference to the BehaviorDefaultDispenseItem object. */
008        private final BehaviorDefaultDispenseItem defaultItemDispenseBehavior;
009    
010        final MinecraftServer mcServer;
011    
012        public BehaviorBucketEmptyDispense(MinecraftServer par1)
013        {
014            this.mcServer = par1;
015            this.defaultItemDispenseBehavior = new BehaviorDefaultDispenseItem();
016        }
017    
018        /**
019         * Dispense the specified stack, play the dispense sound and spawn particles.
020         */
021        public ItemStack dispenseStack(IBlockSource par1IBlockSource, ItemStack par2ItemStack)
022        {
023            EnumFacing var3 = EnumFacing.func_82600_a(par1IBlockSource.func_82620_h());
024            World var4 = par1IBlockSource.getWorld();
025            int var5 = par1IBlockSource.getXInt() + var3.func_82601_c();
026            int var6 = par1IBlockSource.getYInt();
027            int var7 = par1IBlockSource.getZInt() + var3.func_82599_e();
028            Material var8 = var4.getBlockMaterial(var5, var6, var7);
029            int var9 = var4.getBlockMetadata(var5, var6, var7);
030            Item var10;
031    
032            if (Material.water.equals(var8) && var9 == 0)
033            {
034                var10 = Item.bucketWater;
035            }
036            else
037            {
038                if (!Material.lava.equals(var8) || var9 != 0)
039                {
040                    return super.dispenseStack(par1IBlockSource, par2ItemStack);
041                }
042    
043                var10 = Item.bucketLava;
044            }
045    
046            var4.setBlockWithNotify(var5, var6, var7, 0);
047    
048            if (--par2ItemStack.stackSize == 0)
049            {
050                par2ItemStack.itemID = var10.shiftedIndex;
051                par2ItemStack.stackSize = 1;
052            }
053            else if (((TileEntityDispenser)par1IBlockSource.func_82619_j()).func_70360_a(new ItemStack(var10)) < 0)
054            {
055                this.defaultItemDispenseBehavior.dispense(par1IBlockSource, new ItemStack(var10));
056            }
057    
058            return par2ItemStack;
059        }
060    }