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 }