public int GetAvailableQuantity(Farmer who, IList <Item?>?items, IList <IInventory>?inventories, int max_quality) { int amount = 0; if (who != null) { foreach (var item in who.Items) { int quality = item is SObject obj ? obj.Quality : 0; if (quality <= max_quality && InventoryHelper.DoesItemMatchID(Index, item)) { amount += item.Stack; } } } if (items != null) { foreach (var item in items) { if (item is null) { continue; } int quality = item is SObject obj ? obj.Quality : 0; if (quality <= max_quality && InventoryHelper.DoesItemMatchID(Index, item)) { amount += item.Stack; } } } return(amount); }