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