package net.minecraft.dispenser;

import net.minecraft.block.BlockDispenser;
import net.minecraft.entity.Entity;
import net.minecraft.entity.IProjectile;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;

public abstract class BehaviorProjectileDispense extends BehaviorDefaultDispenseItem
{
	private static final String __OBFID = "CL_00001394";

	public ItemStack dispenseStack(IBlockSource par1IBlockSource, ItemStack par2ItemStack)
	{
		World world = par1IBlockSource.getWorld();
		IPosition iposition = BlockDispenser.func_149939_a(par1IBlockSource);
		EnumFacing enumfacing = BlockDispenser.func_149937_b(par1IBlockSource.getBlockMetadata());
		IProjectile iprojectile = this.getProjectileEntity(world, iposition);
		iprojectile.setThrowableHeading((double)enumfacing.getFrontOffsetX(), (double)((float)enumfacing.getFrontOffsetY() + 0.1F), (double)enumfacing.getFrontOffsetZ(), this.func_82500_b(), this.func_82498_a());
		world.spawnEntityInWorld((Entity)iprojectile);
		par2ItemStack.splitStack(1);
		return par2ItemStack;
	}

	protected void playDispenseSound(IBlockSource par1IBlockSource)
	{
		par1IBlockSource.getWorld().playAuxSFX(1002, par1IBlockSource.getXInt(), par1IBlockSource.getYInt(), par1IBlockSource.getZInt(), 0);
	}

	protected abstract IProjectile getProjectileEntity(World var1, IPosition var2);

	protected float func_82498_a()
	{
		return 6.0F;
	}

	protected float func_82500_b()
	{
		return 1.1F;
	}
}