MineTweaker methods (1.8.9, 1.9, 1.9.4) - 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.8.9+, check the other page for 1.7.10 methods, as some things were different back then


Transmutator recipes are added this way:

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.removeTransmutation(<input>);

Where: input is the input ItemStack that you want to remove a recipe for.

Example: mods.abyssalcraft.Transmutator.removeTransmutation(<minecraft:dirt>);

This would remove the recipe we added above, preventing you from transmuting Dirt into Diamonds.


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.removeCrystallization(<input>);

Where: input is the input ItemStack that you want to remove a recipe for.

Example: mods.abyssalcraft.Crystallizer.removeCrystallization(<minecraft:dirt>);

This would remove the recipe(s) we added above, preventing you from doing any of the above crystallizations.


Creation Rituals are added this way:

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.


Infusion Rituals are added this way:

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.


Potion/AoE Potion Rituals are added this way:

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.


Enchantment Rituals are added this way:

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 1000 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.InfusionRitual.removeRitual(<minecraft:sharpness>);

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


Necronomicon Stuff:

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>)

1.8.9 and above only 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.


Used Identifiers:

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

The Lesser Shoggoth Lists are used this way:

As of ACI 1.4.2, you can now add Blocks to the Lesser Shoggoth Block blacklist (used to prevent the Lesser Shoggoths from converting certain blocks into Shoggoth Ooze) and add Entities to the Lesser Shoggoth Food list (used to specify what the Lesser Shoggoth should consider food) through MineTweaker! Due to these lists being separated from the internal ones, they should be empty by default (unless another mod present adds things to them), so there will only be methods for adding things to them.

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.

Blacklisting a Block:

mods.abyssalcraft.shoggoth.addShoggothBlacklist(<block>)

Where: block is an ItemStack containing a Block (<minecraft:dirt> for a Dirt Block etc.).

Example: mods.abyssalcraft.shoggoth.addShoggothBlacklist<minecraft:gold_ore>);

This would blacklist Gold Ore from being converted into Shoggoth Ooze.

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