Merge pull request #42 from jchung01/thaumcraft-research
Thaumcraft research-related changes
This commit is contained in:
@@ -0,0 +1 @@
|
||||
/.idea/
|
||||
@@ -1,8 +1,27 @@
|
||||
# Configuration file
|
||||
|
||||
general {
|
||||
# Allow insertion of zs execution during mod loading stage
|
||||
# Format: scriptLoaderName;modid;stageMarker;before|after
|
||||
# Valid stage marker: C (Construction) H (Preinit) I (Init) J (Postinit) A (Available)
|
||||
# Example: custom;mekanism;J;before -> runs `#loader custom` scripts before mekanism runs its code on post-initialization stage
|
||||
# Note:
|
||||
# 1. On construction stage and preinit stage before crafttweaker, only native methods are available
|
||||
# 2. Many recipe modifications are staged. For example, scripts are loaded on init, but recipe modifications for crafting table and furnace are staged on postinit
|
||||
# It means recipe modifications MAY NOT be executed after their loading stage
|
||||
# ZenUtils will re-execute crafttweaker recipe modifications after all custom script load entrypoint on POSTINIT, but other crafttweaker addons not
|
||||
S:customScriptEntrypoint <
|
||||
lateAddTC;modtweaker;A;after
|
||||
>
|
||||
|
||||
# Enable mixinzs. Default: false
|
||||
B:enableMixin=true
|
||||
|
||||
# Enable RandomTickEvent. It patches hotspot random tick code, which may produce performance loss. Do not enable it if you don't need it. Default: false
|
||||
B:enableRandomTickEvent=false
|
||||
|
||||
# Enable fast script loading. Note: If enabled, ONLY PREPROCESSORS AT SCRIPT HEADER ARE EFFECTIVE. (except mixin scripts) Default: false
|
||||
B:fastScriptLoading=false
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,36 @@
|
||||
[
|
||||
{
|
||||
"key": "ARCANEASSEMBLER",
|
||||
"ops": [
|
||||
{
|
||||
"op": "move",
|
||||
"from": "stages/0/required_craft",
|
||||
"path": "stages/0/required_item"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"key": "ARCANEINSCRIBER",
|
||||
"ops": [
|
||||
{
|
||||
"op": "move",
|
||||
"from": "stages/0/required_craft",
|
||||
"path": "stages/0/required_item"
|
||||
}
|
||||
]
|
||||
}
|
||||
{
|
||||
"key": "KNOWLEDGECORE",
|
||||
"ops": [
|
||||
{
|
||||
"op": "remove",
|
||||
"path": "stages/0/required_craft"
|
||||
},
|
||||
{
|
||||
"op": "replace",
|
||||
"path": "stages/0/required_item/0",
|
||||
"value": "contenttweaker:complex_gearbox"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
@@ -245,6 +245,7 @@ resources {
|
||||
minecraft:gold_ingot_from_block
|
||||
minecraft:gold_ingot_from_nuggets
|
||||
minecraft:gold_block
|
||||
immersiveengineering:compat/plate_thaumium_brass
|
||||
>
|
||||
|
||||
# Recipe names that you want to be removed.
|
||||
|
||||
@@ -66,14 +66,15 @@ recipes.addShaped(<thaumicaugmentation:starfield_glass:2>*4,
|
||||
[<aoa3:rusted_iron_ingot>, <divinerpg:teaker_staff>.reuse(), <aoa3:rusted_iron_ingot>],
|
||||
[<minecraft:glass>, <aoa3:rusted_iron_ingot>, <minecraft:glass>]]);
|
||||
|
||||
// mods.thaumcraft.ArcaneWorkbench.removeRecipe(<thaumicenergistics:arcane_terminal>);
|
||||
|
||||
recipes.removeShaped(<thaumcraft:plate:2>);
|
||||
recipes.removeShaped(<thaumcraft:plate:3>);
|
||||
// recipes.removeShaped(<thaumadditions:mithrillium_plate>);
|
||||
// recipes.removeShaped(<thaumadditions:adaminite_plate>);
|
||||
// recipes.removeShaped(<thaumadditions:mithminite_plate>);
|
||||
|
||||
# See scripts/thaumcraft/research/LateResearch.zs for related research adjustments
|
||||
recipes.removeShaped(<thaumadditions:mithrillium_plate>);
|
||||
recipes.removeShaped(<thaumadditions:adaminite_plate>);
|
||||
recipes.removeShaped(<thaumadditions:mithminite_plate>);
|
||||
# See config/thaumcraftfix/patches/thaumic_energistics.json for related research adjustments
|
||||
mods.thaumcraft.ArcaneWorkbench.removeRecipe(<thaumicenergistics:arcane_terminal>);
|
||||
mods.thaumcraft.ArcaneWorkbench.removeRecipe(<thaumicenergistics:blank_knowledge_core>);
|
||||
mods.thaumcraft.Infusion.removeRecipe(<thaumicenergistics:arcane_assembler>);
|
||||
|
||||
val arcaneassembler = RecipeBuilder.newBuilder("arcaneassemblerinf","arcane_autoinfuser",120);
|
||||
@@ -92,8 +93,6 @@ arcaneassembler.addItemInput(<contenttweaker:complex_gearbox>);
|
||||
arcaneassembler.addItemOutput(<thaumicenergistics:arcane_assembler>);
|
||||
arcaneassembler.build();
|
||||
|
||||
mods.thaumcraft.ArcaneWorkbench.removeRecipe(<thaumicenergistics:blank_knowledge_core>);
|
||||
|
||||
mods.thaumcraft.Crucible.registerRecipe("easierseal1", "", <thaumcraft:seal:12>, <thaumcraft:seal:0>, [<aspect:instrumentum>*20,<aspect:humanus>*10]);
|
||||
mods.thaumcraft.Crucible.registerRecipe("easierseal2", "", <thaumcraft:seal:8>, <thaumcraft:seal:0>, [<aspect:bestia>*20,<aspect:sensus>*10]);
|
||||
mods.thaumcraft.Crucible.registerRecipe("easierseal3", "", <thaumcraft:seal:7>, <thaumcraft:seal:0>, [<aspect:herba>*20,<aspect:vitreus>*10]);
|
||||
@@ -108,53 +107,6 @@ mods.thaumcraft.Infusion.registerRecipe("infuseshimmerleaf", "",
|
||||
<aoa3:holly_top_seeds>,
|
||||
[<thaumcraft:quicksilver>, <thaumcraft:quicksilver>, <thaumcraft:quicksilver>, <thaumcraft:quicksilver>]);
|
||||
|
||||
|
||||
mods.thaumcraft.Infusion.removeRecipe(<thaumictinkerer:kami_chest>);
|
||||
|
||||
mods.thaumcraft.Infusion.registerRecipe("infkamichest", "",
|
||||
<thaumictinkerer:kami_chest>, 10,
|
||||
[<aspect:lux>*250,<aspect:aer>*150,<aspect:praemunio>*125,<aspect:volatus>*125,<aspect:ordo>*125,<aspect:alienis>*60],
|
||||
<thaumictinkerer:ichor_chest>,
|
||||
[<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>,
|
||||
<thaumictinkerer:kamiresource:2>, <thaumictinkerer:kamiresource:2>,
|
||||
<minecraft:chorus_fruit_popped>, <minecraft:golden_chestplate>,
|
||||
<thaumcraft:cloud_ring>, <minecraft:elytra>,
|
||||
<minecraft:shield>, <minecraft:feather>,
|
||||
<minecraft:ghast_tear>, <minecraft:arrow>]);
|
||||
|
||||
mods.thaumcraft.Infusion.registerRecipe("infkamiboots", "",
|
||||
<thaumictinkerer:kami_boots>, 10,
|
||||
[<aspect:lux>*250,<aspect:terra>*150,<aspect:praemunio>*125,<aspect:instrumentum>*125,<aspect:motus>*125,<aspect:volatus>*60],
|
||||
<thaumictinkerer:ichor_boots>,
|
||||
[<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>,
|
||||
<thaumictinkerer:kamiresource:2>, <thaumictinkerer:kamiresource:2>,
|
||||
<minecraft:chorus_fruit_popped>, <minecraft:golden_boots>,
|
||||
<minecraft:wheat_seeds>, <minecraft:grass>,
|
||||
<thaumcraft:lamp_growth>, <thaumcraft:turret>,
|
||||
<minecraft:wool:0>, <minecraft:lead>]);
|
||||
|
||||
mods.thaumcraft.Infusion.registerRecipe("infkamilegs", "",
|
||||
<thaumictinkerer:kami_legs>, 10,
|
||||
[<aspect:lux>*250,<aspect:ignis>*150,<aspect:praemunio>*125,<aspect:volatus>*125,<aspect:ordo>*125,<aspect:alienis>*60],
|
||||
<thaumictinkerer:ichor_legs>,
|
||||
[<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>,
|
||||
<thaumictinkerer:kamiresource:2>, <thaumictinkerer:kamiresource:2>,
|
||||
<minecraft:chorus_fruit_popped>, <minecraft:golden_leggings>,
|
||||
<minecraft:potion>.withTag({Potion: "minecraft:fire_resistance"}), <thaumictinkerer:energetic_nitor>,
|
||||
<thaumcraft:lamp_arcane>, <minecraft:lava_bucket>,
|
||||
<minecraft:fire_charge>, <minecraft:blaze_rod>]);
|
||||
|
||||
mods.thaumcraft.Infusion.registerRecipe("infkamihelm", "",
|
||||
<thaumictinkerer:kami_helm>, 10,
|
||||
[<aspect:lux>*250,<aspect:aqua>*150,<aspect:auram>*125,<aspect:praemunio>*125,<aspect:cognitio>*125,<aspect:victus>*60],
|
||||
<thaumictinkerer:ichor_helm>,
|
||||
[<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>,
|
||||
<thaumictinkerer:kamiresource:2>, <thaumictinkerer:kamiresource:2>,
|
||||
<minecraft:chorus_fruit_popped>, <minecraft:golden_helmet>,
|
||||
<minecraft:potion>.withTag({Potion: "minecraft:night_vision"}), <thaumictinkerer:energetic_nitor>,
|
||||
<thaumcraft:goggles>, <minecraft:ghast_tear>,
|
||||
<minecraft:fish>, <minecraft:cake>]);
|
||||
|
||||
recipes.addShaped(<thaumictinkerer:kamiresource:3>,
|
||||
[[null, <aoa3:blazium_ingot>, null],
|
||||
[<thaumictinkerer:kamiresource:2>, <thaumcraft:ingot:0>, <thaumictinkerer:kamiresource:2>],
|
||||
|
||||
@@ -45,12 +45,15 @@ recipes.addShapeless(<techreborn:ingot:1>*9, [<ore:blockBrass>]);
|
||||
|
||||
val brassplate = <ore:plateBrass>;
|
||||
brassplate.remove(<railcraft:plate:11>);
|
||||
brassplate.remove(<thaumcraft:plate:0>);
|
||||
|
||||
recipes.removeByRecipeName("thaumcraft:brassplate");
|
||||
|
||||
mods.immersiveengineering.MetalPress.removeRecipe(<railcraft:plate:11>);
|
||||
mods.immersiveengineering.MetalPress.addRecipe(<techreborn:plates:18>, <ore:ingotBrass>, <immersiveengineering:mold:0>, 2000);
|
||||
|
||||
recipes.removeShapeless(<techreborn:plates:18>, [<immersiveengineering:tool:0>], true);
|
||||
recipes.addShapeless(<techreborn:plates:18>,
|
||||
recipes.removeShapeless(<thaumcraft:plate:0>, [<immersiveengineering:tool:0>], true);
|
||||
recipes.addShapeless("plate_brass_ie", <techreborn:plates:18>,
|
||||
[<immersiveengineering:tool:0>,
|
||||
<ore:ingotBrass>]);
|
||||
|
||||
@@ -68,8 +71,6 @@ recipes.addShaped(<techreborn:ingot:1>,
|
||||
mods.immersiveengineering.ArcFurnace.removeRecipe(<railcraft:ingot:9>);
|
||||
mods.immersiveengineering.ArcFurnace.addRecipe(<techreborn:ingot:1>, <ore:ingotZinc>, null, 100, 512, [<ore:dustCopper>*3]);
|
||||
mods.immersiveengineering.ArcFurnace.addRecipe(<techreborn:ingot:1>, <ore:dustZinc>, null, 100, 512, [<ore:ingotCopper>*3]);
|
||||
mods.immersiveengineering.ArcFurnace.addRecipe(<techreborn:ingot:1>, <ore:dustZinc>, null, 100, 512, [<ore:dustCopper>*3]);
|
||||
mods.immersiveengineering.ArcFurnace.addRecipe(<techreborn:ingot:1>, <ore:ingotZinc>, null, 100, 512, [<ore:ingotCopper>*3]);
|
||||
|
||||
|
||||
//==================================================================
|
||||
@@ -286,11 +287,13 @@ silverplate.remove(<bewitchment:silver_plate>);
|
||||
silverplate.remove(<immersiveengineering:metal:33>);
|
||||
silverplate.remove(<railcraft:plate:5>);
|
||||
|
||||
recipes.removeByRecipeName("bewitchment:compat/silver_plate");
|
||||
|
||||
mods.immersiveengineering.MetalPress.removeRecipe(<immersiveengineering:metal:33>);
|
||||
mods.immersiveengineering.MetalPress.addRecipe(<thermalfoundation:material:322>, <ore:ingotSilver>, <immersiveengineering:mold:0>, 2000);
|
||||
|
||||
recipes.removeShapeless(<immersiveengineering:metal:33>, [<immersiveengineering:tool:0>], true);
|
||||
recipes.addShapeless(<thermalfoundation:material:322>,
|
||||
recipes.addShapeless("plate_silver_ie", <thermalfoundation:material:322>,
|
||||
[<immersiveengineering:tool:0>,
|
||||
<ore:ingotSilver>]);
|
||||
|
||||
@@ -691,26 +694,20 @@ irondust.remove(<careerbees:ingredients:4>);
|
||||
val ironplate = <ore:plateIron>;
|
||||
ironplate.remove(<immersiveengineering:metal:39>);
|
||||
ironplate.remove(<railcraft:plate:0>);
|
||||
// ironplate.remove(<techreborn:plates:0>);
|
||||
ironplate.remove(<thaumcraft:plate:1>);
|
||||
ironplate.remove(<libvulpes:productplate:1>);
|
||||
|
||||
recipes.remove(<thaumcraft:plate:1>);
|
||||
recipes.addShaped(<thermalfoundation:material:32>*3,
|
||||
[[<ore:ingotIron>,<ore:ingotIron>,<ore:ingotIron>]]);
|
||||
recipes.removeByRecipeName("thaumcraft:ironplate");
|
||||
|
||||
mods.immersiveengineering.MetalPress.removeRecipe(<immersiveengineering:metal:39>);
|
||||
mods.immersiveengineering.MetalPress.addRecipe(<thermalfoundation:material:32>, <ore:ingotIron>, <immersiveengineering:mold:0>, 2000);
|
||||
|
||||
recipes.removeShapeless(<immersiveengineering:metal:39>, [<immersiveengineering:tool:0>], true);
|
||||
recipes.addShapeless(<thermalfoundation:material:32>,
|
||||
recipes.addShapeless("plate_iron_ie", <thermalfoundation:material:32>,
|
||||
[<immersiveengineering:tool:0>,
|
||||
<ore:ingotIron>]);
|
||||
|
||||
recipes.addShapeless(<thaumcraft:plate:1>*3,
|
||||
[<ore:plateIron>,
|
||||
<ore:plateIron>,
|
||||
<ore:plateIron>]);
|
||||
|
||||
mods.immersiveengineering.Crusher.removeRecipe(<immersiveengineering:metal:18>);
|
||||
mods.immersiveengineering.Crusher.addRecipe(<thermalfoundation:material:0>*2, <ore:oreIron>, 2048, <thermalfoundation:material:69>, 0.1);
|
||||
mods.immersiveengineering.Crusher.addRecipe(<thermalfoundation:material:0>, <ore:ingotIron>, 2048);
|
||||
|
||||
@@ -1192,10 +1192,6 @@
|
||||
<contenttweaker:fourth_recursive_lock>.addTooltip(format.red("Use inside the Recursion Prison Key Dungeon"));
|
||||
<contenttweaker:fifth_recursive_lock>.addTooltip(format.red("Use inside the Recursion Prison Key Dungeon"));
|
||||
|
||||
<ore:plateMithrillium>.addTooltip(format.red("If you want to complete the Thaumonomicon entries that require plates, make sure you craft them, making them in a compactor won't work"));
|
||||
<ore:plateAdaminite>.addTooltip(format.red("If you want to complete the Thaumonomicon entries that require plates, make sure you craft them, making them in a compactor won't work"));
|
||||
<ore:plateMithminite>.addTooltip(format.red("If you want to complete the Thaumonomicon entries that require plates, make sure you craft them, making them in a compactor won't work"));
|
||||
|
||||
<contenttweaker:rftools_syringe>.addTooltip(format.red("The actual item has been hidden from JEI for lag reasons, ignore the structure voids"));
|
||||
|
||||
|
||||
|
||||
@@ -2612,7 +2612,6 @@ import crafttweaker.item.IItemCondition;
|
||||
<akashictome:tome>.addTooltip(format.red("WARNING: don't combine with Astral Tome, Thaumonomicon, Lexica botania, Necronomicon, Alkahestry"));
|
||||
|
||||
<thaumicenergistics:arcane_terminal>.addTooltip(format.red("WARNINGS: This is very crashy, you shouldn't need to use it much"));
|
||||
<thaumicenergistics:arcane_terminal>.addTooltip(format.red("Vis discount does not work with voidseers pearl"));
|
||||
|
||||
<libvulpes:advstructuremachine>.addTooltip(format.red("HiaggTM had to upgrade his hatch"));
|
||||
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
#modloaded thaumcraft techreborn
|
||||
#loader mixin
|
||||
|
||||
import native.net.minecraft.item.Item;
|
||||
import native.net.minecraft.item.ItemStack;
|
||||
|
||||
import native.techreborn.items.ingredients.ItemPlates as TRPlates;
|
||||
|
||||
/*
|
||||
Unify plate drops for arcane bore.
|
||||
|
||||
Created by ChaosStrikez for Thaumcraft v6.1.BETA-26.
|
||||
*/
|
||||
#mixin {targets: "thaumcraft.common.entities.construct.EntityArcaneBore"}
|
||||
zenClass mixinEntityArcaneBore {
|
||||
#mixin Redirect
|
||||
#{
|
||||
# method: "func_70628_a",
|
||||
# at: {
|
||||
# value: "NEW",
|
||||
# target: "(Lnet/minecraft/item/Item;)Lnet/minecraft/item/ItemStack;",
|
||||
# ordinal: 5
|
||||
# }
|
||||
#}
|
||||
function mbc_unifyBrassPlate(original as Item) as ItemStack {
|
||||
return TRPlates.getPlateByName("brass");
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
#modloaded thaumcraft techreborn thermalfoundation
|
||||
#loader mixin
|
||||
|
||||
import native.net.minecraft.item.Item;
|
||||
import native.net.minecraft.item.ItemStack;
|
||||
|
||||
import native.cofh.thermalfoundation.item.ItemMaterial as ThermalPlates;
|
||||
import native.techreborn.items.ingredients.ItemPlates as TRPlates;
|
||||
|
||||
/*
|
||||
Unify plate drops for advanced crossbow turret.
|
||||
|
||||
Created by ChaosStrikez for Thaumcraft v6.1.BETA-26.
|
||||
*/
|
||||
#mixin {targets: "thaumcraft.common.entities.construct.EntityTurretCrossbowAdvanced"}
|
||||
zenClass MixinEntityTurretCrossbowAdvanced {
|
||||
#mixin Redirect
|
||||
#{
|
||||
# method: "func_70628_a",
|
||||
# at: {
|
||||
# value: "NEW",
|
||||
# target: "(Lnet/minecraft/item/Item;II)Lnet/minecraft/item/ItemStack;",
|
||||
# ordinal: 4
|
||||
# }
|
||||
#}
|
||||
function mbc_unifyBrassPlate(original as Item, amount as int, meta as int) as ItemStack {
|
||||
return TRPlates.getPlateByName("brass");
|
||||
}
|
||||
|
||||
#mixin Redirect
|
||||
#{
|
||||
# method: "func_70628_a",
|
||||
# at: {
|
||||
# value: "NEW",
|
||||
# target: "(Lnet/minecraft/item/Item;II)Lnet/minecraft/item/ItemStack;",
|
||||
# ordinal: 5
|
||||
# }
|
||||
#}
|
||||
function mbc_unifyIronPlate1(original as Item, amount as int, meta as int) as ItemStack {
|
||||
return ThermalPlates.plateIron.copy();
|
||||
}
|
||||
|
||||
#mixin Redirect
|
||||
#{
|
||||
# method: "func_70628_a",
|
||||
# at: {
|
||||
# value: "NEW",
|
||||
# target: "(Lnet/minecraft/item/Item;II)Lnet/minecraft/item/ItemStack;",
|
||||
# ordinal: 6
|
||||
# }
|
||||
#}
|
||||
function mbc_unifyIronPlate2(original as Item, amount as int, meta as int) as ItemStack {
|
||||
return ThermalPlates.plateIron.copy();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
#modloaded thaumcraft
|
||||
#loader lateAddTC
|
||||
import native.net.minecraft.item.ItemStack;
|
||||
import native.thaumcraft.api.golems.parts.GolemMaterial;
|
||||
import native.thaumcraft.api.golems.parts.GolemHead;
|
||||
import native.thaumcraft.api.golems.parts.GolemLeg;
|
||||
|
||||
import crafttweaker.item.IItemStack;
|
||||
/*
|
||||
Unify plates visually shown in the golem press.
|
||||
*/
|
||||
var unifiedPlates = {
|
||||
<thaumcraft:plate:0>: <techreborn:plates:18>, // brass
|
||||
<thaumcraft:plate:1>: <thermalfoundation:material:32>, // iron
|
||||
<bewitchment:silver_plate>: <thermalfoundation:material:322>, // silver
|
||||
} as IItemStack[IItemStack];
|
||||
|
||||
# Materials
|
||||
for material in GolemMaterial.getMaterials() {
|
||||
if (isStackValid(material.componentBase)) {
|
||||
var baseComponent as IItemStack = material.componentBase.wrapper;
|
||||
material.componentBase = unifyStack(baseComponent, unifiedPlates);
|
||||
}
|
||||
}
|
||||
# Head
|
||||
for head in GolemHead.getHeads() {
|
||||
var components = head.components;
|
||||
for i in 0 to components.length {
|
||||
var component = components[i];
|
||||
if (component instanceof ItemStack && isStackValid(component as ItemStack)) {
|
||||
var stack as IItemStack = (component as ItemStack).wrapper;
|
||||
components[i] = unifyStack(stack, unifiedPlates);
|
||||
}
|
||||
}
|
||||
}
|
||||
# Leg
|
||||
for leg in GolemLeg.getLegs() {
|
||||
var components = leg.components;
|
||||
for i in 0 to components.length {
|
||||
var component = components[i];
|
||||
if (component instanceof ItemStack && isStackValid(component as ItemStack)) {
|
||||
var stack as IItemStack = (component as ItemStack).wrapper;
|
||||
components[i] = unifyStack(stack, unifiedPlates);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function isStackValid(stack as ItemStack) as bool {
|
||||
return !(isNull(stack) || stack.isEmpty());
|
||||
}
|
||||
|
||||
function unifyStack(stackIn as ItemStack, unifiedDict as IItemStack[IItemStack]) as ItemStack {
|
||||
var stack as IItemStack = stackIn.wrapper;
|
||||
for original, unified in unifiedDict {
|
||||
if (stack.anyAmount().matches(original)) {
|
||||
return (unified * stack.amount).native;
|
||||
}
|
||||
}
|
||||
return stackIn;
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
#modloaded thaumcraft modtweaker
|
||||
#loader lateAddTC
|
||||
import native.com.blamejared.compat.thaumcraft.handlers.ThaumCraft;
|
||||
import native.com.blamejared.mtlib.helpers.InputHelper;
|
||||
import native.net.minecraft.util.ResourceLocation;
|
||||
import native.thaumcraft.api.ThaumcraftApi;
|
||||
import native.thaumcraft.api.ThaumcraftApiHelper;
|
||||
import native.thaumcraft.api.crafting.InfusionRecipe;
|
||||
|
||||
import crafttweaker.item.IIngredient;
|
||||
import crafttweaker.item.IItemStack;
|
||||
import thaumcraft.aspect.CTAspectStack;
|
||||
|
||||
/*
|
||||
Infusion recipes that REPLACE existing recipes tied to research. Removal is unnecssary, the recipes will be overwritten.
|
||||
This is to keep the recipe available in the research page.
|
||||
*/
|
||||
var tcAdditions = "thaumadditions";
|
||||
var tcTinkerer = "thaumictinkerer";
|
||||
# KAMI armor
|
||||
registerInfusionRecipeFromAddon(`${tcTinkerer}:kami_helm`, "TT_KAMIHELM",
|
||||
<thaumictinkerer:kami_helm>, 32,
|
||||
[
|
||||
<aspect:aqua> * 150, <aspect:auram> * 125, <aspect:cognitio> * 125,
|
||||
<aspect:victus> * 60, <aspect:lux> * 250, <aspect:praemunio> * 125
|
||||
],
|
||||
<thaumictinkerer:ichor_helm>,
|
||||
[
|
||||
<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>, <thaumictinkerer:kamiresource:2>,
|
||||
<thaumictinkerer:kamiresource:2>, <minecraft:chorus_fruit_popped>, <minecraft:golden_helmet>,
|
||||
<minecraft:potion>.withTag({Potion: "minecraft:night_vision"}), <thaumcraft:goggles>, <minecraft:ghast_tear>,
|
||||
<minecraft:fish>, <minecraft:cake>, <minecraft:ender_eye>
|
||||
]
|
||||
);
|
||||
registerInfusionRecipeFromAddon(`${tcTinkerer}:kami_chest`, "TT_KAMICHEST",
|
||||
<thaumictinkerer:kami_chest>, 32,
|
||||
[
|
||||
<aspect:aer> * 150, <aspect:praemunio> * 125, <aspect:volatus> * 125,
|
||||
<aspect:ordo> * 125, <aspect:lux> * 250, <aspect:alienis> * 60
|
||||
],
|
||||
<thaumictinkerer:ichor_chest>,
|
||||
[
|
||||
<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>, <thaumictinkerer:kamiresource:2>,
|
||||
<thaumictinkerer:kamiresource:2>, <minecraft:chorus_fruit_popped>, <minecraft:golden_chestplate>,
|
||||
<thaumcraft:cloud_ring>, <minecraft:elytra>, <minecraft:shield>,
|
||||
<minecraft:feather>, <minecraft:ghast_tear>, <minecraft:arrow>
|
||||
]
|
||||
);
|
||||
registerInfusionRecipeFromAddon(`${tcTinkerer}:kami_legs`, "TT_KAMILEGS",
|
||||
<thaumictinkerer:kami_legs>, 32,
|
||||
[
|
||||
<aspect:aer> * 150, <aspect:praemunio> * 125, <aspect:volatus> * 125,
|
||||
<aspect:ordo> * 125, <aspect:lux> * 250, <aspect:alienis> * 60
|
||||
],
|
||||
<thaumictinkerer:ichor_legs>,
|
||||
[
|
||||
<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>, <thaumictinkerer:kamiresource:2>,
|
||||
<thaumictinkerer:kamiresource:2>, <minecraft:chorus_fruit_popped>, <minecraft:golden_leggings>,
|
||||
<minecraft:potion>.withTag({Potion: "minecraft:fire_resistance"}), <thaumictinkerer:energetic_nitor>, <thaumcraft:lamp_arcane>,
|
||||
<minecraft:lava_bucket>, <minecraft:fire_charge>, <minecraft:blaze_rod>
|
||||
]
|
||||
);
|
||||
registerInfusionRecipeFromAddon(`${tcTinkerer}:kami_boots`, "TT_KAMIBOOTS",
|
||||
<thaumictinkerer:kami_boots>, 32,
|
||||
[
|
||||
<aspect:terra> * 150, <aspect:praemunio> * 125, <aspect:instrumentum> * 125,
|
||||
<aspect:motus> * 125, <aspect:lux> * 250, <aspect:herba> * 60,
|
||||
<aspect:volatus> * 60
|
||||
],
|
||||
<thaumictinkerer:ichor_boots>,
|
||||
[
|
||||
<thaumadditions:mithrillium_ingot>, <thaumadditions:mithrillium_ingot>, <thaumictinkerer:kamiresource:2>,
|
||||
<thaumictinkerer:kamiresource:2>, <minecraft:chorus_fruit_popped>, <minecraft:golden_boots>,
|
||||
<minecraft:grass>, <minecraft:wheat_seeds>, <thaumcraft:lamp_growth>,
|
||||
<thaumcraft:turret:2>, <minecraft:wool:0>, <minecraft:lead>
|
||||
]
|
||||
);
|
||||
|
||||
# Fix crystal crusher in JEI
|
||||
registerInfusionRecipeFromAddon(`${tcAdditions}:crystal_crusher`, "TAR_CRYSTAL_CRUSHER",
|
||||
<thaumadditions:crystal_crusher>, 3,
|
||||
[
|
||||
<aspect:fabrico> * 20, <aspect:exitium> * 20, <aspect:instrumentum> * 20
|
||||
],
|
||||
<thaumcraft:mechanism_complex>,
|
||||
[
|
||||
makeCrystal(<aspect:aer>), makeCrystal(<aspect:terra>), makeCrystal(<aspect:ignis>),
|
||||
makeCrystal(<aspect:aqua>), makeCrystal(<aspect:ordo>), makeCrystal(<aspect:perditio>),
|
||||
<thaumcraft:plate:2>, <thaumcraft:plate:2>, <thaumcraft:plate:2>,
|
||||
<thaumcraft:slab_arcane_stone>, <thaumcraft:slab_arcane_stone>, <thaumcraft:slab_arcane_stone>,
|
||||
<thaumadditions:salt_essence>.withTag({Aspects: [{amount: 1, key: "praemunio"}]}), <thaumadditions:salt_essence>.withTag({Aspects: [{amount: 1, key: "praemunio"}]})
|
||||
]
|
||||
);
|
||||
|
||||
# Unify brass plates
|
||||
registerInfusionRecipeFromAddon(`${tcAdditions}:crystal_bore`, "TAR_CRYSTAL_BORE",
|
||||
<thaumadditions:crystal_bore>, 5,
|
||||
[
|
||||
<aspect:exitium> * 20, <aspect:terra> * 10, <aspect:perditio> * 30
|
||||
],
|
||||
<thaumcraft:morphic_resonator>,
|
||||
[
|
||||
<thaumcraft:stone_arcane>, <techreborn:plates:18>, <thaumcraft:stone_arcane>,
|
||||
<techreborn:plates:18>, <thaumcraft:stone_arcane>, <thaumcraft:mechanism_complex>
|
||||
]
|
||||
);
|
||||
|
||||
/*
|
||||
The same as Infusion.registerRecipe(), but allows a namespace in the resource location.
|
||||
ModTweaker only allows infusion recipes with the "thaumcraft" namespace, this allows any namespace.
|
||||
*/
|
||||
function registerInfusionRecipeFromAddon(resourceLocation as string, research as string, output as IItemStack, instability as int,
|
||||
aspects as CTAspectStack[], centralItem as IIngredient, recipe as IIngredient[]) {
|
||||
var infusionRecipe = InfusionRecipe(
|
||||
research, output.native, instability,
|
||||
ThaumCraft.getAspects(aspects), centralItem.native, InputHelper.toObjects(recipe)
|
||||
);
|
||||
ThaumcraftApi.addInfusionCraftingRecipe(ResourceLocation(resourceLocation), infusionRecipe);
|
||||
}
|
||||
|
||||
function makeCrystal(aspect as CTAspectStack) as IItemStack {
|
||||
return ThaumcraftApiHelper.makeCrystal(ThaumCraft.getAspect(aspect)).wrapper;
|
||||
}
|
||||
@@ -0,0 +1,82 @@
|
||||
#modloaded thaumcraft
|
||||
#loader lateAddTC
|
||||
import native.net.minecraft.item.ItemStack;
|
||||
import native.thaumcraft.api.research.ResearchCategories;
|
||||
import native.thaumcraft.api.research.ResearchStage;
|
||||
|
||||
import crafttweaker.item.IItemStack;
|
||||
|
||||
/*
|
||||
Hard-coded, non-JSON, research pages to replace crafting requirements for consume requirements.
|
||||
This is so we can make these ingredients obtainable through non-crafting recipes,
|
||||
but still make associated research completable.
|
||||
|
||||
See config/thaumcraftfix/patches for research page changes that are JSON-based.
|
||||
*/
|
||||
|
||||
# Mithrillium plates
|
||||
var mithrilliumPlate = <thaumadditions:mithrillium_plate>;
|
||||
var t1JarStage = findCraftingStage("TAR_MITHRILLIUM_JAR", mithrilliumPlate);
|
||||
convertCraftToConsume(t1JarStage, mithrilliumPlate);
|
||||
|
||||
var t1SmelterStage = findCraftingStage("TAR_MITHRILLIUM_SMELTER", mithrilliumPlate);
|
||||
convertCraftToConsume(t1SmelterStage, mithrilliumPlate);
|
||||
|
||||
# Adaminite plates
|
||||
var adaminitePlate = <thaumadditions:adaminite_plate>;
|
||||
var t2JarStage = findCraftingStage("TAR_ADAMINITE_JAR", adaminitePlate);
|
||||
convertCraftToConsume(t2JarStage, adaminitePlate);
|
||||
|
||||
var t2SmelterStage = findCraftingStage("TAR_ADAMINITE_SMELTER", adaminitePlate);
|
||||
convertCraftToConsume(t2SmelterStage, adaminitePlate);
|
||||
|
||||
# Mithminite plates
|
||||
var mithminitePlate = <thaumadditions:mithminite_plate>;
|
||||
var t3JarStage = findCraftingStage("TAR_MITHMINITE_JAR", mithminitePlate);
|
||||
convertCraftToConsume(t3JarStage, mithminitePlate);
|
||||
|
||||
var t3SmelterStage = findCraftingStage("TAR_MITHMINITE_SMELTER", mithminitePlate);
|
||||
convertCraftToConsume(t3SmelterStage, mithminitePlate);
|
||||
|
||||
var scytheStage = findCraftingStage("TAR_MITHMINITE_SCYTHE", mithminitePlate);
|
||||
convertCraftToConsume(scytheStage, mithminitePlate);
|
||||
|
||||
function findCraftingStage(researchName as string, targetItem as IItemStack) as ResearchStage {
|
||||
var stages = ResearchCategories.getResearch(researchName).getStages();
|
||||
for stage in stages {
|
||||
var crafts = stage.getCraft();
|
||||
// Check this stage has the target crafting requirement
|
||||
if (!isNull(crafts)) {
|
||||
var craftsAsItems = crafts as ItemStack[];
|
||||
for stack in craftsAsItems {
|
||||
if (ItemStack.areItemStacksEqual(stack, targetItem.native)) {
|
||||
return stage;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function convertCraftToConsume(stage as ResearchStage, itemToConvert as IItemStack) {
|
||||
var newCrafts = [] as [ItemStack];
|
||||
var oldCrafts = stage.getCraft() as ItemStack[];
|
||||
for stack in oldCrafts {
|
||||
if (!ItemStack.areItemStacksEqual(stack, itemToConvert.native)) {
|
||||
newCrafts += stack;
|
||||
}
|
||||
}
|
||||
// Remove item from crafting requirement
|
||||
if (newCrafts.length == 0) {
|
||||
stage.setCraft(null);
|
||||
} else {
|
||||
stage.setCraft(newCrafts);
|
||||
}
|
||||
// Add item to consume requirement
|
||||
var consumed = stage.getObtain();
|
||||
if (isNull(consumed) || consumed.length == 0) {
|
||||
stage.setObtain([itemToConvert.native] as ItemStack[]);
|
||||
} else {
|
||||
stage.setObtain((consumed as ItemStack[]) + itemToConvert.native);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user