package appeng.hooks;

import net.minecraft.block.BlockDispenser;
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
import net.minecraft.dispenser.IBlockSource;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
import appeng.util.Platform;

final public class DispenserBlockTool extends BehaviorDefaultDispenseItem
{

	@Override
	protected ItemStack dispenseStack(IBlockSource dispenser, ItemStack dispensedItem)
	{
		Item i = dispensedItem.getItem();
		if ( i instanceof IBlockTool )
		{
			EnumFacing enumfacing = BlockDispenser.func_149937_b( dispenser.getBlockMetadata() );
			IBlockTool tm = (IBlockTool) i;

			World w = dispenser.getWorld();
			if ( w instanceof WorldServer )
			{
				int x = dispenser.getXInt() + enumfacing.getFrontOffsetX();
				int y = dispenser.getYInt() + enumfacing.getFrontOffsetY();
				int z = dispenser.getZInt() + enumfacing.getFrontOffsetZ();

				tm.onItemUse( dispensedItem, Platform.getPlayer( (WorldServer) w ), w, x, y, z, enumfacing.ordinal(), 0.5f, 0.5f, 0.5f );
			}
		}
		return dispensedItem;
	}
}