CraftTweaker: Rituals - Shinoow/AbyssalCraft-Integration GitHub Wiki

There are multiple ritual types, and you can both add and remove rituals of each type

Adding Creation Rituals

mods.abyssalcraft.CreationRitual.addRitual(<unlocalizedName>, <bookType>, <dimension>, <requiredEnergy>, <livingSacrifice>, <item>, [offerings], nbt*)

Where: unlocalizedName is a String representing the ritual (later perfixed with "ac.ritual", and with a decription String which is "ac.ritual.<unlocalizedName>.desc").
bookType and dimension are integers, where bookType is the Necronomicon "level" required in order to perform the ritual (0 = Normal, 1 = Abyssal Wasteland, 2 = Dreadlands, 3 = Omothol and 4 = Abyssalnomicon) and dimension is the dimension where you can perform it (current ones are the Overworld, the Abyssal Wasteland, the Dreadlands, Omothol and the Dark Realm, unless a mod adds support for it's dimension). If you specify the dimension as -1, the ritual can be performed in any available dimension.
requiredEnergy is a float representing the amount of Potential Energy required in order to perform the ritual (currently has no use, unless the AbyssalCraft version used is later than 1.8.9, in which Potential Energy should be implemented into the mod).
livingSacrifice is whether or not the rituals requires a living sacrifice (animals make pretty good sacrifices).
item and offerings is a Object respective an array of Objects (with the maximum amount of 8), where item is the output, and offerings are the input (eg. items placed on the pedestals) The offerings should be specified as [<modid:name>, <modid:name>, <modid:name> etc] with the array size being 8 at most. The offerings can be OreDict entries as well as regular items.
nbt is a flag that determines if the ritual offerings should be NBT sensitive (eg. you can have it require a specific tag to be present on the inputs, and the ritual won't go through unless that tag is present), this is currently used for the rituals involving Buckets with the various fluids added by the mod (in Minecraft 1.9 and above), as those Items store their specific data in their NBT.
*This is optional

Example: mods.abyssalcraft.CreationRitual.addRitual("creationRitualTest", 0, -1, 1000, false, <minecraft:diamond>, [<minecraft:coal>, <minecraft:coal>, <minecraft:coal>, <minecraft:coal>, <minecraft:coal>, <minecraft:coal>, <minecraft:coal>, <minecraft:coal>], false); game.setLocalization("ac.ritual.creationRitualTest", "Creation Ritual Test"); game.setLocalization("ac.ritual.creationRitualTest.desc", "This is a test ritual, turning coal into diamonds!");

This would add a Creation Ritual that requires the base Necronomicon, can be performed anywhere, requires 1000 PE, doesn't require a living sacrifice, which creates a Diamond out of 8 Coal. For legacy reasons, you don't need to include the nbt parameter if you don't intend to have NBT sensitive inputs (as it defaults to not being NBT sensitive). The bits afterwards are for localizing the Ritual name and description (so the ritual page in the Necronomicon has a name and a description).


Removing Creation Rituals

mods.abyssalcraft.CreationRitual.removeRitual(<output>)

Where: output is the Object output of the ritual(s) you want to remove.

Example: mods.abyssalcraft.CreationRitual.removeRitual(<minecraft:diamond>);

This would remove the ritual we added above, preventing people from turning coal into diamonds through a Creation Ritual.


Remove all Creation Rituals

mods.abyssalcraft.CreationRitual.removeAll();

This would remove all registered Creation Ritual recipes.


Adding Infusion Rituals

mods.abyssalcraft.InfusionRitual.addRitual(<unlocalizedName>, <bookType>, <dimension>, <requiredEnergy>, <livingSacrifice>, <item>, <sacrifice>, [offerings], nbt*, [tags]*)

Where: unlocalizedName is a String representing the ritual (later perfixed with "ac.ritual", and with a decription String which is "ac.ritual.<unlocalizedName>.desc").
bookType and dimension are integers, where bookType is the Necronomicon "level" required in order to perform the ritual (0 = Normal, 1 = Abyssal Wasteland, 2 = Dreadlands, 3 = Omothol and 4 = Abyssalnomicon) and dimension is the dimension where you can perform it (current ones are the Overworld, the Abyssal Wasteland, the Dreadlands, Omothol and the Dark Realm, unless a mod adds support for it's dimension). If you specify the dimension as -1, the ritual can be performed in any available dimension.
requiredEnergy is a float representing the amount of Potential Energy required in order to perform the ritual (currently has no use, unless the AbyssalCraft version used is later than 1.8.9, in which Potential Energy should be implemented into the mod).
livingSacrifice is whether or not the rituals requires a living sacrifice (animals make pretty good sacrifices).
item , sacrifice and offerings are Objects respective an array of Objects (with the maximum amount of 8), where item is the output, sacrifice is the item placed on the altar and offerings are the input (eg. items placed on the pedestals). The offerings should be specified as [<modid:name>, <modid:name>, <modid:name> etc] with the array size being 8 at most. The offerings and the sacrifice can be OreDict entries as well as regular items.
nbt is a flag that determines if the ritual offerings should be NBT sensitive (eg. you can have it require a specific tag to be present on the inputs, and the ritual won't go through unless that tag is present), this is currently used for the rituals involving Buckets with the various fluids added by the mod (in Minecraft 1.9 and above), as those Items store their specific data in their NBT.
tags is an array of names of NBT tags you want to transfer from the sacrifice to the output item (can be enchantments, provided the sacrifice is enchantable, and has the potential to have enchantments added to it).
*This is optional

Example: mods.abyssalcraft.InfusionRitual.addRitual("infusionRitualTest", 4, 53, 10000, false, <minecraft:diamond>, <minecraft:dirt>, [<minecraft:dirt>, <minecraft:dirt>, <minecraft:dirt>, <minecraft:dirt>, <minecraft:dirt>, <minecraft:dirt>, <minecraft:dirt>, <minecraft:dirt>], false, ["ench"]); game.setLocalization("ac.ritual.infusionRitualTest", "Infusion Ritual Test"); game.setLocalization("ac.ritual.infusionRitualTest.desc", "This is a test ritual, turning dirt into diamonds by infusing it with more Dirt!");

This would add a Infusion Ritual that requires the Abyssalnomicon, can only be performed in the Dark Realm, requires 10000 PE, doesn't require a living sacrifice, which creates a Diamond by infusing a block of Dirt with 8 blocks of Dirt. For legacy reasons, you don't need to include the nbt parameter if you don't intend to have NBT sensitive inputs (as it defaults to not being NBT sensitive), however, in this case the ritual also transfers any enchantments applied on the Dirt block to the Diamond, so the nbt parameter needs to have a value applied to it. The bits afterwards are for localizing the Ritual name and description (so the ritual page in the Necronomicon has a name and a description).


Removing Infusion Rituals

mods.abyssalcraft.InfusionRitual.removeRitual(<output>)

Where: output is the Object output of the ritual(s) you want to remove.

Example: mods.abyssalcraft.InfusionRitual.removeRitual(<minecraft:diamond>);

This would remove the ritual we added above, preventing people from turning coal into diamonds through a Infusion Ritual.


Remove all Infusion Rituals

mods.abyssalcraft.InfusionRitual.removeAll();

This would remove all registered Infusion Ritual recipes.


Adding Potion/AoE Potion Rituals

mods.abyssalcraft.PotionRitual.addRitual(<unlocalizedName>, <bookType>, <dimension>, <requiredEnergy>, <livingSacrifice>, <potion>, [offerings], nbt*)

mods.abyssalcraft.PotionAoERitual.addRitual(<unlocalizedName>, <bookType>, <dimension>, <requiredEnergy>, <LivingSacrifice>, <potion>, [offerings], nbt*)

Where: unlocalizedName is a String representing the ritual (later perfixed with "ac.ritual", and with a decription String which is "ac.ritual.<unlocalizedName>.desc").
bookType and dimension are integers, where bookType is the Necronomicon "level" required in order to perform the ritual (0 = Normal, 1 = Abyssal Wasteland, 2 = Dreadlands, 3 = Omothol and 4 = Abyssalnomicon) and dimension is the dimension where you can perform it (current ones are the Overworld, the Abyssal Wasteland, the Dreadlands, Omothol and the Dark Realm, unless a mod adds support for it's dimension). If you specify the dimension as -1, the ritual can be performed in any available dimension.
requiredEnergy is a float representing the amount of Potential Energy required in order to perform the ritual (currently has no use, unless the AbyssalCraft version used is later than 1.8.9, in which Potential Energy should be implemented into the mod).
livingSacrifice is whether or not the rituals requires a living sacrifice (animals make pretty good sacrifices).
offerings is an array of Objects (with the maximum amount of 8), where offerings are the input (eg. items placed on the pedestals). The offerings should be specified as [<modid:name>, <modid:name>, <modid:name> etc] with the array size being 8 at most. The offerings can be OreDict entries as well as regular items.
potion is the ID of the Potion to add/spread through the ritual (this is a String modid:name ID in 1.8.9 and above).
nbt is a flag that determines if the ritual offerings should be NBT sensitive (eg. you can have it require a specific tag to be present on the inputs, and the ritual won't go through unless that tag is present), this is currently used for the rituals involving Buckets with the various fluids added by the mod (in Minecraft 1.9 and above), as those Items store their specific data in their NBT.
*This is optional

Example: mods.abyssalcraft.PotionRitual.addRitual("testpotionnormal", 0, -1, 1000, false, "minecraft:speed", [<minecraft:stone>, <minecraft:dirt>, <abyssalcraft:transmutationgem:*>], false); game.setLocalization("ac.ritual.testpotionnormal", "Test Potion Ritual"); game.setLocalization("ac.ritual.testpotionnormal.desc", "Testing MineTweaker Potion Ritual creation!");

mods.abyssalcraft.PotionAoERitual.addRitual("testpotionaoe", 0, -1, 1000, false, "minecraft:speed", [<minecraft:stone>, <abyssalcraft:transmutationgem:*>], false); game.setLocalization("ac.ritual.testpotionaoe", "Test Potion Ritual (AoE)"); game.setLocalization("ac.ritual.testpotionaoe.desc", "Testing MineTweaker Potion Ritual creation! This one is the Area-of-Effect variant!");

This would add both a normal and an Area-of-effect Potion Ritual that requires the base Necronomicon, can be performed anywhere, requires 1000 PE, doesn't require a living sacrifice, which inflicts the Speed Potion Effect from offering a block of Stone (and a block of Dirt for the normal variant) along with a Transmutation Gem (which will be damaged after the ritual, or destroyed if it's durability runs out). For legacy reasons, you don't need to include the nbt parameter if you don't intend to have NBT sensitive inputs (as it defaults to not being NBT sensitive). The bits afterwards are for localizing the Ritual name and description (so the ritual page in the Necronomicon has a name and a description).


Removing Potion/AoE Potion Rituals

mods.abyssalcraft.PotionRitual.removeRitual(<output>)

mods.abyssalcraft.PotionAoERitual.removeRitual(<output>)

Where: output is the ID of the Potion output of the ritual(s) you want to remove (this is a String modid:name ID in 1.8.9 and above).

*Example: mods.abyssalcraft.PotionRitual.removeRitual("minecraft:speed")
mods.abyssalcraft.PotionAoERitual.removeRitual("minecraft:speed")

This would remove the rituals we added above, resulting in there not being any rituals for applying the Speed Potion Effect.


Remove all Potion/AoE Potion Rituals

mods.abyssalcraft.PotionRitual.removeAll(); mods.abyssalcraft.PotionAoERitual.removeAll();

This would remove all registered Potion/AoE Potion Ritual recipes.


Adding Enchantment Rituals

mods.abyssalcraft.EnchantmentRitual.addRitual(<unlocalizedName>, <bookType>, <dimension>, <requiredEnergy>, <livingSacrifice>, <enchantment>, [offerings], nbt*)

Where: unlocalizedName is a String representing the ritual (later perfixed with "ac.ritual", and with a decription String which is "ac.ritual.<unlocalizedName>.desc").
bookType and dimension are integers, where bookType is the Necronomicon "level" required in order to perform the ritual (0 = Normal, 1 = Abyssal Wasteland, 2 = Dreadlands, 3 = Omothol and 4 = Abyssalnomicon) and dimension is the dimension where you can perform it (current ones are the Overworld, the Abyssal Wasteland, the Dreadlands, Omothol and the Dark Realm, unless a mod adds support for it's dimension). If you specify the dimension as -1, the ritual can be performed in any available dimension.
requiredEnergy is a float representing the amount of Potential Energy required in order to perform the ritual (currently has no use, unless the AbyssalCraft version used is later than 1.8.9, in which Potential Energy should be implemented into the mod).
livingSacrifice is whether or not the rituals requires a living sacrifice (animals make pretty good sacrifices).
offerings is an array of Objects (with the maximum amount of 8), where offerings are the input (eg. items placed on the pedestals). The offerings should be specified as [<modid:name>, <modid:name>, <modid:name> etc] with the array size being 8 at most. The offerings can be OreDict entries as well as regular items.
enchantment is the ID of the Enchantment (modid:name), with the optional to also include a level (eg. minecraft:sharpness:5 for Sharpness V). It defaults to level 1 if no level is specified.
nbt is a flag that determines if the ritual offerings should be NBT sensitive (eg. you can have it require a specific tag to be present on the inputs, and the ritual won't go through unless that tag is present), this is currently used for the rituals involving Buckets with the various fluids added by the mod (in Minecraft 1.9 and above), as those Items store their specific data in their NBT.
*This is optional

Example: mods.abyssalcraft.EnchantmentRitual.addRitual("testenchantment", 0, -1, 100, false, "minecraft:sharpness", [<ore:plankWood>, <minecraft:obsidian>, <minecraft:string>]); game.setLocalization("ac.ritual.testenchantment", "Test Enchantment Ritual"); game.setLocalization("ac.ritual.testenchantment.desc", "Testing MineTweaker Enchantment Ritual creation! This ritual applies the Sharpness Enchantment!");

This would add a Enchantment Ritual that requires the base Necronomicon, can be performed anywhere, requires 100 PE, doesn't require a living sacrifice, which applies the Sharpness Enchantment by offering a wooden plank registered in the Ore Dictionary, a block of Obsidian and a String. For legacy reasons, you don't need to include the nbt parameter if you don't intend to have NBT sensitive inputs (as it defaults to not being NBT sensitive). The bits afterwards are for localizing the Ritual name and description (so the ritual page in the Necronomicon has a name and a description).


Removing Enchantment Rituals

mods.abyssalcraft.EnchantmentRitual.removeRitual(<output>)

Where: output is the Enchantment ID used in the enchantment ritual(s) you want to remove.

Example: mods.abyssalcraft.EnchantmentRitual.removeRitual(<minecraft:sharpness>);

This would remove the ritual we added above, resulting in there not being any rituals for applying the Sharpness Enchantment.


Remove all Enchantment Rituals

mods.abyssalcraft.EnchantmentRitual.removeAll();

This would remove all registered Enchantment Ritual recipes.


Adding Summoning Rituals

mods.abyssalcraft.SummonRitual.addRitual(<unlocalizedName>, <bookType>, <dimension>, <requiredEnergy>, <livingSacrifice>, <entity>, [offerings], nbt*, customNBT*)

Where: unlocalizedName is a String representing the ritual (later perfixed with "ac.ritual", and with a decription String which is "ac.ritual.<unlocalizedName>.desc").
bookType and dimension are integers, where bookType is the Necronomicon "level" required in order to perform the ritual (0 = Normal, 1 = Abyssal Wasteland, 2 = Dreadlands, 3 = Omothol and 4 = Abyssalnomicon) and dimension is the dimension where you can perform it (current ones are the Overworld, the Abyssal Wasteland, the Dreadlands, Omothol and the Dark Realm, unless a mod adds support for it's dimension). If you specify the dimension as -1, the ritual can be performed in any available dimension.
requiredEnergy is a float representing the amount of Potential Energy required in order to perform the ritual (currently has no use, unless the AbyssalCraft version used is later than 1.8.9, in which Potential Energy should be implemented into the mod).
livingSacrifice is whether or not the rituals requires a living sacrifice (animals make pretty good sacrifices).
offerings is an array of Objects (with the maximum amount of 8), where offerings are the input (eg. items placed on the pedestals). The offerings should be specified as [<modid:name>, <modid:name>, <modid:name> etc] with the array size being 8 at most. The offerings can be OreDict entries as well as regular items.
entity is a String representing either the ID of an Entity ("modid:name", "name" in 1.10.2, whatever you would put in the /summon command), or the code path to a Entity class that extends EntityLivingBase (essentially any living Entity, "example.path.to.an.EntityClass").
nbt is a flag that determines if the ritual offerings should be NBT sensitive (eg. you can have it require a specific tag to be present on the inputs, and the ritual won't go through unless that tag is present), this is currently used for the rituals involving Buckets with the various fluids added by the mod (in Minecraft 1.9 and above), as those Items store their specific data in their NBT.
customNBT is a instance of crafttweaker.data.IData containing NBT tags you wish to change on the summoned mob.
*This is optional

Example: mods.abyssalcraft.SummonRitual.addRitual("testsummon", 0, -1, 100, false, "minecraft:zombie", [<ore:oreIron>, <minecraft:cobblestone>, <minecraft:stick>]); game.setLocalization("ac.ritual.testsummon", "Test Summoning Ritual"); game.setLocalization("ac.ritual.testsummon.desc", "Testing MineTweaker Summoning Ritual creation! This ritual summons a Zombie!");

This would add a Summoning Ritual that requires the base Necronomicon, can be performed anywhere, requires 100 PE, doesn't require a living sacrifice, which summons a Zombie by offering a Iron Ore registered in the Ore Dictionary, a block of Cobblestone and a Stick. For legacy reasons, you don't need to include the nbt parameter if you don't intend to have NBT sensitive inputs (as it defaults to not being NBT sensitive). The bits afterwards are for localizing the Ritual name and description (so the ritual page in the Necronomicon has a name and a description).

Example 2:mods.abyssalcraft.SummonRitual.addRitual("testsummon", 0, -1 as int, 100.0 as float, false, "minecraft:zombie", [<ore:oreIron>, <minecraft:cobblestone>, <minecraft:stick>] as crafttweaker.item.IIngredient[], {CustomName: "Test", CustomNameVisible: true} as crafttweaker.data.IData); game.setLocalization("ac.ritual.testsummon", "Test Summoning Ritual"); game.setLocalization("ac.ritual.testsummon.desc", "Testing MineTweaker Summoning Ritual creation! This ritual summons a Zombie!");

This would add the same ritual as above, except the Zombie summoned by this one would be named "Test". Some of the casting on the parameters (eg. "blahblah as int") might not be necessary, but I had to do it in order for it to work in my workspace.

If you wanted to, you could replace minecraft:zombie (Zombie in 1.10.2) with net.minecraft.entity.monster.EntityZombie for the same effect, but the String ID is more convenient to use (and the code path one is gonna be phased out in favor of the other).


Removing Summoning Rituals

mods.abyssalcraft.SummonRitual.removeRitual(<entity>)

Where: entity is either the Entity ID ("modid:name" or "name") or the code path to a Entity class that extends EntityLivingBase (essentially any living Entity, "example.path.to.an.EntityClass").

Example: mods.abyssalcraft.SummonRitual.removeRitual(<minecraft:zombie>);

This would remove the ritual we added above, resulting in there not being any rituals for summoning Zombies.


Remove all Summoning Rituals

mods.abyssalcraft.SummonRitual.removeAll();

This would remove all registered Summoning Ritual recipes.


Expanding Ritual Functionality to additional dimensions

mods.abyssalcraft.Rituals.mapDimensionToBookType(<dim>, <bookType>);

Where: dim and bookType are Integers, first one representing the ID of the dimension you want to add ritual functionality to (can't be -1 or 1), and the second represents the minimum Necronomicon book type required for any ritual functionality (0 = Normal, 1 = Abyssal Wasteland, 2 = Dreadlands, 3 = Omothol and 4 = Abyssalnomicon).

Example: mods.abyssalcraft.Rituals.mapDimensionToBookType(10, 4);

This maps The Beneath (again, default dim ID 10) to the Abyssalnomicon, allowing that to be used for ritual functionality inside that dimension.


Modifying properties of Rituals

Instead of replacing a Ritual with a slightly altered one, you can modify properties of existing Rituals

mods.abyssalcraft.Rituals.modifyRitualBookType(String name, int bookType); mods.abyssalcraft.Rituals.modifyRitualDimension(String name, int dimension); mods.abyssalcraft.Rituals.modifyRitualSacrificeRequirement(String name, boolean requiresSacrifice); mods.abyssalcraft.Rituals.modifyRitualEnergyRequirement(String name, float requiredEnergy); mods.abyssalcraft.Rituals.modifyRitualSacrifice(String name, IIngredient sacrifice); mods.abyssalcraft.Rituals.modifyRitualNbtSensitivity(String name, boolean nbtSensitive); mods.abyssalcraft.Rituals.modifyRitualNbtSensitivitySacrifice(String name, boolean nbtSensitiveSacrifice); mods.abyssalcraft.Rituals.modifyRitualOfferings(String name, IIngredient[] offerings); mods.abyssalcraft.Rituals.modifyRitualReplaceOffering(String name, IIngredient original, IIngredient replace, boolean nbt);

Where: name is the unlocalized name of the ritual (can be fetched through the /acritual command, don't include the "ac.ritual." prefix), the second parameter in the various methods is the property of the ritual you wish to change (the ritual altar sacrifice in modifyRitualSacrifice can only be modified if the ritual has a value assigned there prior to the modification, and the nbt boolean in modifyRitualReplaceOffering only needs to be true if the offering that's being replaced is nbt sensitive).

Example: mods.abyssalcraft.Rituals.modifyRitualBookType("oblivionCatalyst", 1);

This sets the required book type for the Oblivion Catalyst ritual to 1 (Abyssal Wasteland Necronomicon).

mods.abyssalcraft.Rituals.modifyRitualDimension("oblivionCatalyst", 50);

This sets the required dimension for the Oblivion Catalyst ritual to The Abyssal Wasteland.

mods.abyssalcraft.Rituals.modifyRitualSacrificeRequirement("oblivionCatalyst", false);

This sets the sacrifice requirement of the Oblivion Catalyst ritual to false (making it no longer require a sacrifice).

mods.abyssalcraft.Rituals.modifyRitualEnergyRequirement("oblivionCatalyst", 10000);

This sets the energy requirement for the Oblivion Catalyst ritual to 10000 PE.

mods.abyssalcraft.Rituals.modifyRitualSacrifice("oblivionCatalyst", <minecraft:nether_star>);

This sets the altar sacrifice for the Oblivion Catalyst ritual to a Nether Star. This won't have any effect if the ritual doesn't require an altar sacrifice.

mods.abyssalcraft.Rituals.modifyRitualNbtSensitivity("oblivionCatalyst", true);

This sets the offering NBT sensitivity of the Oblivion Catalyst ritual to true, requiring any placed offering to have identical NBT tags to that of the ones the ritual requires. This is useful if the offerings are things like Enchanted Books.

mods.abyssalcraft.Rituals.modifyRitualNbtSensitivitySacrifice("oblivionCatalyst", true);

This sets the altar sacrifice NBT sensitivity of the Oblivion Catalyst ritual to true, require the placed altar sacrifice to have identical NBT tags to that of the one the ritual requires. Like with the offerings one, useful for things like Enchanted Books.

mods.abyssalcraft.Rituals.modifyRitualOfferings("oblivionCatalyst", [<minecraft:coal>, <minecraft:dirt>, <minecraft:coal>, <minecraft:dirt>, <minecraft:coal>, <minecraft:dirt>, <minecraft:coal>, <minecraft:dirt>]);

This sets the offerings for the Oblivion Catalyst rituals to Coal and Dirt.

mods.abyssalcraft.Rituals.modifyRitualReplaceOffering("oblivionCatalyst", <minecraft:dirt>, <minecraft:diamond>, false);

This replaces the any offering of Dirt with Diamonds (provided there was any Dirt to replace) in the Oblivion Catalyst ritual. As neither of them were NBT sensitive, it wasn't set to check for NBT sensitivity prior to the replacement.


Removing Rituals by name

mods.abyssalcraft.Rituals.removeRitual(String name);

Where: name is the unlocalized name of the ritual (can be fetched through the /acritual command, don't include the "ac.ritual." prefix)

Example: mods.abyssalcraft.Rituals.removeRitual("respawnJzahar");

This would remove the "Ritual of Reversed Time" (used to respawn J'zahar if you failed to obtain the Essence of The Gatekeeper). I wouldn't recommend removing this particular ritual, but you could.

Remove all Rituals

mods.abyssalcraft.Rituals.removeAll();

This would remove all registered Rituals (including ones you can't create through the CraftTweaker integration).


Adding Ritual Stages

mods.abyssalcraft.RitualStages.addRitualStage(<stage>, <ritual>);

Where: stage and ritual are two Strings, first one representing the stage you want to lock the ritual behind, second the unlocalized name of the ritual (you can use the command /acritual in-game to either print out the unlocalized names of all registered rituals in chat or write a list with more detailed information to a text file).

This feature requires that the Game Stages mod is installed!

Example: mods.abyssalcraft.RitualStages.addRitualStage("one", "transmutationGem");

This would lock the ritual for creating a Transmutation Gem to those that haven't advanced to stage one.

⚠️ **GitHub.com Fallback** ⚠️