The alchemy table recipes are actually split between two locations,
including the registrar found in the API, and then the more "complex"
recipes listed in the AlchemyTableRecipeRegistry.
This means it's impossible to remove the default potions using the
current functions, and while it possible to manually add potions using
NBT, it wouldn't be possible to use lengthening or power catalysts on
them without manually adding recipes.
This commit modifies AlchemyTable.removeRecipe to, if it fails to remove
a recipe from the main API registry, consult the
AlchemyTableRecipeRegistry and remove from there if necessary.
It also adds a convenience function addPotionRecipe which allows the
specification of inputs along with a potion effect, LP cost, tier
requirement and tick time, and from this automatically adds potion
recipes.
A side-effect of this process involves limiting the number of inputs for
addPotionRecipe to 5, as the lengthening/empowering process requires all
the original ingredients (with the base flask replaced by the actual
potion flask) plus a catalyst.
Recipes registered for Infusion use no group name when creating a
ResourceLocation, while the Crucible uses MODID (modtweaker:). This
means that Crucible recipes referenced by the Thaumonomicon cannot be
edited or replaced without breaking the recipe appearing in the
Thaumonomicon.
Altering the Infusion line may cause issues with people who are already
using "thaumcraft:<name>" as their name line.
Even using getPrimaryInput() and getSecondaryInput() on a recipe is not
enough, as this order will sometimes fail to remove recipes, especially
those that use multiple items for input.
According to King Lemming, the correct way to remove these recipes is to
swap the order of the items.