private ItemStack generateItem(String name) {
		Map<Item, Double> list = plugin.getPluginConfig().getLotto(name);
		double total = 0;
		for(final Double d : list.values().toArray(new Double[0]))
		{
			total += d.doubleValue();
		}
		double high = 1.0;
		if(total != 100)
		{
			final double adj = 100 / total;
			Iterator<Entry<Item, Double>> it = list.entrySet().iterator();
			//adjust
			while(it.hasNext())
			{
				final Map.Entry<Item, Double> entry = it.next();
				final double d = (entry.getValue().doubleValue() * adj) / 100;
				high -= d;
				list.put(entry.getKey(), high);
			}
		}
		else
		{
			Iterator<Entry<Item, Double>> it = list.entrySet().iterator();
			//adjust
			while(it.hasNext())
			{
				final Map.Entry<Item, Double> entry = it.next();
				final double d = entry.getValue().doubleValue() / 100;
				high -= d;
				list.put(entry.getKey(), high);
			}
		}
		Random r = new Random();
		double value = r.nextDouble();
		Item i = new Item(0,Byte.valueOf("" + 0), (short)0, 0);
		Iterator<Entry<Item, Double>> it = list.entrySet().iterator();
		boolean first = true;
		//adjust
		while(it.hasNext())
		{
			final Map.Entry<Item, Double> entry = it.next();
			if(first)
			{
				i = entry.getKey();
			}
			else if(entry.getValue().doubleValue() >= value)
			{
				if(list.get(entry.getKey()).doubleValue() <= list.get(i))
				{
					i = entry.getKey();
				}
			}
			first = false;
		}
		if(i.isPotion())
		{
			return new ItemStack(i.getItemTypeId(), i.itemAmount(), i.itemDurability());
		}
		return new ItemStack(i.getItemTypeId(), i.itemAmount(), i.getData());
	}