When you want to add a ModItem as ingredient, you first have to specify which mod it is from. If it is your own mod, you can usually pass the embedded 'mod' variable, otherwise you can simply pass 'null'.
Also, you are using the 'GetItem' call which will return the object as an Item type. It's better to use the .ItemType call, although both should be supported recipe.AddIngredient(mod.GetItem("StartingSword")); will become:
Code:
recipe.AddIngredient(null, mod.ItemType("StartingSword"));
or
Code:
recipe.AddIngredient(mod, mod.ItemType("StartingSword"));
Also I recommend you use the generic constraint version of 'Get' calls, aka your call becomes:
Code:
recipe.AddIngredient(null, mod.ItemType<StartingSword>());
or
Code:
recipe.AddIngredient(mod, mod.ItemType<StartingSword>());
There is no real difference, but they're considered cleaner.
Yes, this is how you add multiple ingredients.
Simply do not call
recipe.AddTile, then no tile will be required for crafting the recipe.