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