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 }