boolean needsAmmo = stack.getTagCompound().getCompoundTag("ammo") == null || stack.getTagCompound().getCompoundTag("ammo").hasNoTags();
if(!needsAmmo)
{
ItemStack ammo = new ItemStack(0, 0, 0);
ammo.readFromNBT(stack.getTagCompound().getCompoundTag("ammo"));
if(!player.worldObj.isRemote)
{
EntityNeedle needle = new EntityNeedle(world, player, ammo, 1.0F);
world.spawnEntityInWorld(needle);