You can add and remove crafting recipes from the AS Altar.

You can call the AltarRecipe package using mods.astralsorcery.Altar.

Remove Altar Recipes

Link to remove-altar-recipes

This function removes the recipe with the given resource location.
You can get those locations by hovering over the recipe output in JEI or the Astral tome while the F3 screen is active.
Prints a warning if the recipe does not exist.

ZenScript
Copy
//mods.astralsorcery.Altar.removeAltarRecipe(string recipeLocation);
mods.astralsorcery.Altar.removeAltarRecipe("astralsorcery:shaped/internal/altar/lightwell");
<details><summary>Pre v1.10 handler</summary>

This function removes the first recipe it finds that returns provided <a href="../../../Vanilla/Items/IItemStack/">IItemStack</a> output and uses the provided altar level.<br> If there are multiple recipes that return the provided output, you need to call this method multiple times!

<table> <tr><th>Altar Level</th><th>Level name</th></tr> <tr><td>0</td><td>Luminous Crafting Table</td></tr> <tr><td>1</td><td>Starlight Crafting Altar</td></tr> <tr><td>2</td><td>Celestial Altar</td></tr> </table>
ZenScript
Copy
//mods.astralsorcery.Altar.removeAltarRecipe(IItemStack output, int altarLevel);
mods.astralsorcery.Altar.removeAltarRecipe(<astralsorcery:blockblackmarble>, 0);
</details>

Add Altar Recipes

Link to add-altar-recipes

Since v1.10 all recipes require a resource location as first parameter.
Unlike vanilla recipe names, they are not optional and you will encounter errors if you do not provide it. If you want to override an existing recipe, you can just add a new recipe with the same location.
You can get those locations by hovering over the recipe output in JEI or the Astral tome while the F3 screen is active.

All recipe addition methods require these parameters:
string recipeLocation,
IItemStack output,
int starlightRequired,
int craftingTickTime,
IIngredient[] inputs

The inputs parameter is, unlike in Crafting Table recipes only a 1 Dimensional Array.
You can use IItemStacks, ILiquidStacks, IOreDictEntries or null as the array's members

These recipes cannot be shapeless!

inputs length has to be 9

inputs Order:
Inputs Order

ZenScript
Copy
mods.astralsorcery.Altar.addDiscoveryAltarRecipe("mypackname:shaped/internal/altar/dirtfromstuff", <minecraft:dirt>, 200, 200, [
            <minecraft:grass>, null, <ore:treeLeaves>,
            null, <minecraft:grass>, null,
            <liquid:astralsorcery.liquidstarlight>, null, <ore:treeLeaves>]);

Adds a recipe to the Starlight Crafting Table (T2)

inputs length has to be 13

inputs Order:
Inputs Order

ZenScript
Copy
mods.astralsorcery.Altar.addAttunementAltarRecipe("mypackname:shaped/internal/altar/iguessmarble", <minecraft:dirt>, 500, 300, [
            null, null, null,
            <ore:treeLeaves>, <astralsorcery:blockmarble:2>, <ore:treeLeaves>,
            null, <liquid:astralsorcery.liquidstarlight>, null,
            <ore:blockMarble>, <ore:blockMarble>, <ore:blockMarble>, <ore:blockMarble>]);

Adds a recipe to the Celestial Altar (T3)

inputs length has to be 21

inputs Order:
Inputs Order

ZenScript
Copy
mods.astralsorcery.Altar.addConstellationAltarRecipe("mypackname:shaped/internal/altar/thisisveryexpensive", <astralsorcery:itemcraftingcomponent:2>, 2000, 10, [
            <ore:blockMarble>, <astralsorcery:blocklens>, <ore:blockMarble>,
            <ore:blockMarble>, <astralsorcery:itemcraftingcomponent:2>, <ore:blockMarble>,
            <ore:blockMarble>, <minecraft:nether_star>, <ore:blockMarble>,
            null, null, <liquid:astralsorcery.liquidstarlight>, <liquid:astralsorcery.liquidstarlight>,
            <ore:blockMarble>, <ore:blockMarble>,
            <minecraft:nether_star>, <minecraft:nether_star>,
            <minecraft:nether_star>, <minecraft:nether_star>,
            <ore:blockMarble>, <ore:blockMarble>]);

Adds a recipe to the Trait Altar (T4)

Constellation the Constellation as an unlocalized String. This is an optional parameter.

inputs length has to be 25 or higher. Items at index 25 or higher will be considered as "outer items" that need to be put on relays around the altar.

inputs Order:
Inputs Order

ZenScript
Copy
//mods.astralsorcery.Altar.addTraitAltarRecipe(string recipeLocation, IItemStack output, int starlight, int craftTickTime, IIngredient[] inputs, @optional String iRequiredConstellationFocusName);

mods.astralsorcery.Altar.addTraitAltarRecipe("mypackname:shaped/internal/altar/seemsalotforjusttnt", <minecraft:tnt>, 4500, 100, [
    <liquid:lava>, <liquid:lava>, <liquid:lava>,<liquid:lava>, <minecraft:gunpowder>, 
    <liquid:lava>, <liquid:lava>, <liquid:lava>, <liquid:lava>,null, 
    null, null, null,<ore:blockMarble>, <ore:blockMarble>,
    <astralsorcery:itemusabledust>, <astralsorcery:itemusabledust>, <astralsorcery:itemusabledust>, <astralsorcery:itemusabledust>,<ore:blockMarble>, 
    <ore:blockMarble>,<minecraft:redstone>, <minecraft:redstone>,<minecraft:redstone>, <minecraft:redstone>,
    //Outer Items, indices 25+
    <minecraft:sand>, <minecraft:sand>, <minecraft:sand>, <minecraft:sand>, <minecraft:sand>
],
"astralsorcery.constellation.evorsio");