package net.minecraft.block; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.dispenser.BehaviorDefaultDispenseItem; import net.minecraft.dispenser.IBehaviorDispenseItem; import net.minecraft.inventory.IInventory; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.tileentity.TileEntityDispenser; import net.minecraft.tileentity.TileEntityDropper; import net.minecraft.tileentity.TileEntityHopper; import net.minecraft.util.Facing; import net.minecraft.world.World; public class BlockDropper extends BlockDispenser { private final IBehaviorDispenseItem field_149947_P = new BehaviorDefaultDispenseItem(); private static final String __OBFID = "CL_00000233"; @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { this.blockIcon = reg.registerIcon("furnace_side"); this.field_149944_M = reg.registerIcon("furnace_top"); this.field_149945_N = reg.registerIcon(this.getTextureName() + "_front_horizontal"); this.field_149946_O = reg.registerIcon(this.getTextureName() + "_front_vertical"); } protected IBehaviorDispenseItem func_149940_a(ItemStack p_149940_1_) { return this.field_149947_P; } /** * Returns a new instance of a block's tile entity class. Called on placing the block. */ public TileEntity createNewTileEntity(World worldIn, int meta) { return new TileEntityDropper(); } protected void func_149941_e(World p_149941_1_, int p_149941_2_, int p_149941_3_, int p_149941_4_) { BlockSourceImpl blocksourceimpl = new BlockSourceImpl(p_149941_1_, p_149941_2_, p_149941_3_, p_149941_4_); TileEntityDispenser tileentitydispenser = (TileEntityDispenser)blocksourceimpl.getBlockTileEntity(); if (tileentitydispenser != null) { int l = tileentitydispenser.func_146017_i(); if (l < 0) { p_149941_1_.playAuxSFX(1001, p_149941_2_, p_149941_3_, p_149941_4_, 0); } else { ItemStack itemstack = tileentitydispenser.getStackInSlot(l); int i1 = p_149941_1_.getBlockMetadata(p_149941_2_, p_149941_3_, p_149941_4_) & 7; IInventory iinventory = TileEntityHopper.func_145893_b(p_149941_1_, (double)(p_149941_2_ + Facing.offsetsXForSide[i1]), (double)(p_149941_3_ + Facing.offsetsYForSide[i1]), (double)(p_149941_4_ + Facing.offsetsZForSide[i1])); ItemStack itemstack1; if (iinventory != null) { itemstack1 = TileEntityHopper.func_145889_a(iinventory, itemstack.copy().splitStack(1), Facing.oppositeSide[i1]); if (itemstack1 == null) { itemstack1 = itemstack.copy(); if (--itemstack1.stackSize == 0) { itemstack1 = null; } } else { itemstack1 = itemstack.copy(); } } else { itemstack1 = this.field_149947_P.dispense(blocksourceimpl, itemstack); if (itemstack1 != null && itemstack1.stackSize == 0) { itemstack1 = null; } } tileentitydispenser.setInventorySlotContents(l, itemstack1); } } } }