MineTweaker methods - Shinoow/AbyssalCraft-Integration GitHub Wiki
As of version 1.2.0, AbyssalCraft Integration now has support for MineTweaker, allowing you to add recipes to AbyssalCraft machines through MineTweaker scripts.
The following information is meant for people who know how to use MineTweaker. If you are not one of them, then click here for information on that.
The integration allows you to add Transmutator recipes, Crystallizer recipes, Creation Rituals, Infusion Rituals, modify information displayed in the Necronomicon and also allows you to add things to the Lesser Shoggoth Block blacklist and Food list.
Note: this is for 1.12.2, check the other pages for 1.7.10 respective 1.8.9+ methods, as some things were different back then
mods.abyssalcraft.Transmutator.addTransmutation(<input>, <output>, <exp>);
Where: input
and output
are ItemStacks, and exp
is a float.
Example: mods.abyssalcraft.Transmutator.addTransmutation(<minecraft:dirt>, <minecraft:diamond>, 0.5);
This would transmute a block of Dirt into a Diamond, and give you 0.5 exp per block transmuted.
They can also be removed:
mods.abyssalcraft.Transmutator.removeTransmutationInput(<input>);
mods.abyssalcraft.Transmutator.removeTransmutationOutput(<output>);
Where: input
is the input ItemStack that you want to remove a recipe for, and output
is the output ItemStack that you want to remove all recipes for.
Example: mods.abyssalcraft.Transmutator.removeTransmutationInput(<minecraft:dirt>);
This would remove the recipe we added above, preventing you from transmuting Dirt into Diamonds.
Example: mods.abyssalcraft.Transmutator.removeTransmutationOutput(<minecraft:diamond>);
This would remove any recipes where the output is a Diamond, including the one we added above.
You can also add fuel:
mods.abyssalcraft.Transmutator.addFuel(<fuel>, <burnTime>)
Where: fuel
is the ItemStack you want to register as fuel, and burnTime
is an int is the burn time for the fuel.
Example: mods.abyssalcraft.Transmutator.addFuel(<minecraft:dirt>, 1000);
This would add Dirt as a fuel source that lasts 1000 ticks.
You can also remove fuel:
mods.abyssalcraft.Transmutator.removeFuel(<fuel>)
Where: fuel
is the ItemStack you want to remove from fuels.
Example: mods.abyssalcraft.Transmutator.removeFuel(<minecraft:dirt>);
This would remove Dirt from being a fuel source.
You can also remove all recipes:
mods.abyssalcraft.Transmutator.removeAll();
This would remove all registered Transmutator recipes.
Crystallizer recipes are added in two ways (to separate dual-output recipes with single-output recipes):
Single output:
mods.abyssalcraft.Crystallizer.addSingleCrystallization(<input>, <output>, <exp>);
Where: input
and output
are Objects, and exp
is a float.
Example: mods.abyssalcraft.Crystallizer.addSingleCrystallization(<minecraft:dirt>, <abyssalcraft:crystalshard:0> * 3, 0.5);
This would crystallize a block of Dirt into 3 Crystallized Iron Shards, and give you 0.5 exp per block crystallized.
Dual output:
mods.abyssalcraft.Crystallizer.addCrystallization(<input>, <output1>, <output2>, <exp>);
Where: input
, output1
and output2
are ItemStacks, and exp
is a float.
Example: mods.abyssalcraft.Crystallizer.addCrystallization(<minecraft:dirt>, <abyssalcraft:crystalshard:0> * 3, <abyssalcraft:crystalshard:4> * 2, 0.5);
This would crystallize a block of Dirt into 3 Crystallized Iron Shards, 2 Crystallized Oxygen Shards and give you 0.5 exp per block crystallized.
They can also be removed:
mods.abyssalcraft.Crystallizer.removeCrystallizationInput(<input>);
mods.abyssalcraft.Crystallizer.removeCrystallizationOutput(<output>);
Where: input
is the input ItemStack that you want to remove a recipe for, and output
is the output ItemStack that you want to remove all recipes for.
Example: mods.abyssalcraft.Crystallizer.removeCrystallizationInput(<minecraft:dirt>);
This would remove the recipe(s) we added above, preventing you from doing any of the above crystallizations.
Example: mods.abyssalcraft.Crystallizer.removeCrystallizationOutput(<abyssalcraft:crystalshard:0>);
This would remove any recipe where the output is Crystallized Iron Shards, including the one we added above.
You can also add fuel:
mods.abyssalcraft.Crystallizer.addFuel(<fuel>, <burnTime>)
Where: fuel
is the ItemStack you want to register as fuel, and burnTime
is an int is the burn time for the fuel.
Example: mods.abyssalcraft.Crystallizer.addFuel(<minecraft:dirt>, 1000);
This would add Dirt as a fuel source that lasts 1000 ticks.
You can also remove fuel:
mods.abyssalcraft.Crystallizer.removeFuel(<fuel>)
Where: fuel
is the ItemStack you want to remove from fuels.
Example: mods.abyssalcraft.Crystallizer.removeFuel(<minecraft:dirt>);
This would remove Dirt from being a fuel source.
You can also remove all recipes:
mods.abyssalcraft.Crystallizer.removeAll();
This would remove all registered Crystallizer recipes.
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).
They can also be removed:
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.
You can also remove all recipes:
mods.abyssalcraft.CreationRitual.removeAll();
This would remove all registered Creation Ritual recipes.
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).
They can also be removed:
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.
You can also remove all recipes:
mods.abyssalcraft.InfusionRitual.removeAll();
This would remove all registered Infusion Ritual recipes.
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).
They can also be removed:
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.
You can also remove all recipes:
mods.abyssalcraft.PotionRitual.removeAll();
mods.abyssalcraft.PotionAoERitual.removeAll();
This would remove all registered Potion/AoE Potion Ritual recipes.
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).
They can also be removed:
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.
You can also remove all recipes:
mods.abyssalcraft.EnchantmentRitual.removeAll();
This would remove all registered Enchantment Ritual recipes.
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).
They can also be removed:
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.
You can also remove all recipes:
mods.abyssalcraft.SummonRitual.removeAll();
This would remove all registered Summoning Ritual recipes.
As of ACI 1.4.0, you can now edit the Necronomicon! The things you can do is add/edit/remove Chapters (collections of Pages), and add/edit/remove Pages (simply a Page, can be plain text, an ItemStack, a Crafting Recipe or an Image with text underneath). There's currently 232 editable Pages, so you have A LOT of things to mess around with.
Adding a Chapter:
mods.abyssalcraft.necronomicon.internal.addChapter(<uniqueidentifier>, <chaptertitle>, <necroDataUniqueidentifier>)
Where:
uniqueidentifier
is a String representing the Category (should be unique for the NecroData, eg. only a single Category can have a specific identifier)
chaptertitle
is a String representing a title (either localized, if possible in the .zs file, or just a name)
necroDataUniqueidentifier
is a String representing the NecroData you want to add your category to.
There will be a list at the bottom of the page naming all used NecroData and Category identifiers.
Removing a Chapter:
mods.abyssalcraft.necronomicon.internal.removeChapter(<uniqueidentifier>, <necroDataUniqueidentifier>)
Where:
uniqueidentifier
is a String representing the Category (should be unique for the NecroData, eg. only a single Category can have a specific identifier) you want to remove
necroDataUniqueidentifier
is a String representing the NecroData you want to remove the category from.
Adding Pages:
mods.abyssalcraft.necronomicon.internal.addNormalPage(<pageNum>, <pagetext>, <chapterIdentifier>, <necrodataIdentifier>)
mods.abyssalcraft.necronomicon.internal.addItemPage(<pageNum>, <displayitem>, <pagetext>, <chapterIdentifier>, <necrodataIdentifier>)
mods.abyssalcraft.necronomicon.internal.addImagePage(<pageNum>, <resourcepath>, <pagetext>, <chapterIdentifier>, <necrodataIdentifier>)
mods.abyssalcraft.necronomicon.internal.addCraftingPage(<pageNum>, <output>, <pagetext>, <chapterIdentifier>, <necrodataIdentifier>)
mods.abyssalcraft.necronomicon.internal.addCraftingPage(<pageNum>, <output>, [inputs], <pagetext>, <chapterIdentifier>, <necrodataIdentifier>)
mods.abyssalcraft.necronomicon.internal.addURLPage(<pageNum>, <url>, <pagetext>, <chapterIdentifier>, <necrodataIdentifier>)
Where:
pageNum
is a Integer representing the Page's number (setting that as the number of an already existing page will override it).
pagetext
is a String representing the text displayed on the page (localized string or plain text).
chapterIdentifier
is a String representing the identifier of the Chapter this Page should be added to.
necrodataIdentifier
is a String representing the identifier of the NecroData the aforementioned Chapter belongs to.
displayitem
is an ItemStack used to display on the Page. Only that type is allowed.
resourcepath
is a String representing a ResourceLocation to an image (like 'modid:path/to/texture.png", or "path/to/texture.png" which would default to Minecraft's texture resources).
output
is a Item/Block/ItemStack representing the output of a Crafting Recipe (if used without the array, any registered recipe will automatically be fetched).
inputs
is an array of Items/Blocks/ItemStacks used to display the recipe (in cases where you want to show a specific recipe for something with multiple recipes). In it's code form, it can accept null values, as it requires 9 Objects (so if there's a substitute for null Objects, use that for any blanks in the recipe).
url
is a website URL pointing to an image. The format of the image should be the same as that which you'd use for a ResourceLocation-based image.
Removing a Page:
mods.abyssalcraft.necronomicon.internal.removePage(<pagenum>, <chapterIdentifier>, <necrodataIdentifier>)
Where:
pageNum
is a Integer representing the number of the Page to be removed.
chapterIdentifier
is a String representing the identifier of the Chapter this Page should be removed from.
necrodataIdentifier
is a String representing the identifier of the NecroData the aforementioned Chapter belongs to.
It should be noted that not all Chapter identifiers are used in every NecroData instance.
NecroData:
- greatoldones
- overworld
- abyssalwasteland
- dreadlands
- omothol
- darkrealm
- rituals
- miscinfo
Chapter:
- outergods
- greatoldones
- materials
- progression
- entities
- specialmaterials
- armortools
- gettingstarted
- potentialenergy
- enchantments
As of ACI 1.4.2, you can now add Entities to the Lesser Shoggoth Food list (used to specify what the Lesser Shoggoth should consider food) through MineTweaker! Due to this list being separated from the internal one, it should be empty by default (unless another mod present adds things to it), so there will only be methods for adding things to it.
Listing an Entity as food:
mods.abyssalcraft.shoggoth.addShoggothFood(<clazz>)
Where: clazz
is a String representing the code path to a Entity class that extends EntityLivingBase
(essentially any living Entity).
Example: mods.abyssalcraft.shoggoth.addShoggothFood("net.minecraft.entity.monster.EntitySpider")
This would add the Spider as Shoggoth food.
mods.abyssalcraft.UpgradeKit.addUpgrade(<kit>, <input>, <output>);
Where: input
and output
are ItemStacks, and kit
is an ItemStack containing a Upgrade Kit item.
Example: mods.abyssalcraft.UpgradeKit.addUpgrade(<abyssalcraft:cobbleu>, <minecraft:planks:*>, <minecraft:cobblestone>);
This would upgrade any vanilla Plank block into a block of Cobblestone.
They can also be removed:
mods.abyssalcraft.UpgradeKit.removeUpgrade(<input>);
Where: input
is the input ItemStack that you want to remove a recipe for.
Example: mods.abyssalcraft.UpgradeKit.removeUpgrade(<minecraft:planks:*>);
This would remove the recipe we added above, preventing you from upgrading Planks to Cobblestone.
You can also remove all recipes:
mods.abyssalcraft.UpgradeKit.removeAll();
This would remove all registered Upgrade Kit recipes.
mods.abyssalcraft.GatewayKey.addOverride(<dimId>, <type>);
Where: dimId
and type
are Integers, first one representing the ID of the dimension you want to add an override for, and the second represents which portal to create (0 = The Abyssal Wasteland, 1 = The Dreadlands, 2 = Omothol).
Example: mods.abyssalcraft.GatewayKey.addOverride(10, 2);
This adds a Gateway Key override for The Beneath (default dim ID for this dimension is 10), allowing you to place Omothol portals in there.
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.
mods.abyssalcraft.Rituals.mapDimensionToName(<dim>, <name>);
Where: dim
is the Integer ID of the dimension, and name
is a String representing the name of the dimension.
Example: mods.abyssalcraft.Rituals.mapDimensionToName(10, "The Beneath);
This maps The Beneath (yadda yadda default dim ID) to be displayed in the Necronomicon as "The Beneath" for dimension-specific rituals.
mods.abyssalcraft.Rituals.mapDimensionToBookTypeAndName(<dim>, <bookType>, <name>);
Which combines the above 2 methods, mapping both a dimension to a book type and the same dimension to a name displayed for dimension-specific rituals.
Example: mods.abyssalcraft.Rituals.mapDimensionToBookTypeAndName(10, 4, "The Beneath");
There isn't really a reason not to use the combined method right away, but some edge case where only one method is required could pop up in the future ¯\_(ツ)_/¯
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.
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.
mods.abyssalcraft.Rituals.removeAll();
This would remove all registered Ritual recipes (including ones you can't create through the CraftTweaker integration).
mods.abyssalcraft.Materializer.addMaterialization(IIngredient output, IItemStack[] input);
Where: output
is what the Materializer should produce from the input
array (which can have a maximum size of 5, where any input has to be a crystal, which can easily be checked either by the script throwing errors or the item/block can be placed in a crystal bag, look a bit further down for a method used to make something count as a crystal). The output
can either be an ItemStack or an Ore Dictionary ingredient (in which case everything tied to that Ore Dictionary name would get the same Materialization recipe). The wildcard value (*) is also supported (so a block with subtypes would get a Materialization recipe for each subtype).
Example: mods.abyssalcraft.Materializer.addMaterialization(<minecraft:dirt:*>, [<abyssalcraft:crystal:4>, <abyssalcraft:crystalshard:10>*4]);
This will enable you to materialize Dirt (and its subtypes Podzol and Coarse Dirt) from 1 Crystallized Oxygen and 4 Crystallized Methane Shards.
Example: mods.abyssalcraft.Materializer.addMaterialization(<ore:oreCopper>, [<abyssalcraft:crystal:17>])
This will enable you to materializer any Copper Ore added to the Ore Dictionary from 1 Crystallized Copper.
They can also be removed:
mods.abyssalcraft.Materializer.removeMaterialization(IItemStack output);
Where: output
is the materialization result you wish to remove the recipe for. This supports the wildcard value (*), so if you supply that, any subtype of the Item/Block will also be removed from the recipes.
Example: mods.abyssalcraft.Materializer.removeMaterialization(<minecraft:elytra>);
This will remove the Materializer recipe for the Elytra.
You can also remove all recipes:
mods.abyssalcraft.Materializer.removeAll();
This would remove all registered Materializer recipes.
mods.abyssalcraft.Materializer.addCrystal(IItemStack stack, int burnTime*);
Where: stack
is an ItemStack containing whatever you want to include in the Crystal List. By adding something to this list, it becomes a valid recipe component for the Materializer, and can conveniently be placed in a Crystal Bag. If you also supply the second argument, burnTime
, the crystal will be added as fuel for the Crystallizer and Transmutator.
*This is optional
It's very important that you run this method BEFORE using the item/block as a recipe component in a materialization recipe!
Example: mods.abyssalcraft.Materializer.addCrystal(<minecraft:diamond>);
This allows diamonds to be treated as crystals.
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
.