private void generateVein(World world, int x, int y, int z, PlacableOre ore, Random rand)
	{
		int placed = 0;
		int size = ore.getVeinSize(rand);
		ArrayList<int[]> targets = new ArrayList<int[]>();
		targets.add(new int[]{x, y, z});
		while(targets.size() > 0 && placed < size)
		{
			int[] target = targets.remove(rand.nextInt(targets.size()));
			if(ore.canReplace(getBlock(world, target[0], target[1], target[2])))
			{
				setBlockWithData(world, target[0], target[1], target[2], ore.getOreID(), ore.getOreData());
				targets.add(new int[]{target[0]+1,target[1],target[2]});
				targets.add(new int[]{target[0]-1,target[1],target[2]});
				targets.add(new int[]{target[0],target[1]+1,target[2]});
				targets.add(new int[]{target[0],target[1]-1,target[2]});
				targets.add(new int[]{target[0],target[1],target[2]+1});
				targets.add(new int[]{target[0],target[1],target[2]-1});
				placed++;
			}
		}
	}