private Tapestry_ItemListIndex GetIndexAtWeight(int input)
    {
        Tapestry_ItemListIndex output = null;

        foreach (Tapestry_ItemListIndex index in items)
        {
            input -= index.weight;
            if (input <= 0)
            {
                output = index;
                break;
            }
        }
        return(output);
    }
    public List <Tapestry_ItemStack> GenerateItems()
    {
        List <Tapestry_ItemStack> export = new List <Tapestry_ItemStack>();

        int totalWeight     = GetTotalWeight();
        int totalToGenerate = Random.Range(itemsToGenerateMin, itemsToGenerateMax + 1);

        for (int i = 0; i < totalToGenerate; i++)
        {
            Tapestry_ItemListIndex index = GetIndexAtWeight(Random.Range(0, totalWeight + 1));
            int  amount  = Random.Range(index.rangeMin, index.rangeMax + 1);
            bool hasItem = false;
            foreach (Tapestry_ItemStack exStack in export)
            {
                if (exStack.item.Equals(index.item))
                {
                    exStack.quantity += amount;
                    hasItem           = true;
                    break;
                }
            }

            if (!hasItem)
            {
                export.Add(new Tapestry_ItemStack(index.item.data, amount));
            }
        }

        //TODO: Remove generator text
        foreach (Tapestry_ItemStack st in export)
        {
            Debug.Log("Generated " + st.quantity + "x " + st.item.displayName);
        }

        return(export);
    }