This commit is contained in:
sainagh
2025-08-01 14:14:52 -05:00
27 changed files with 84 additions and 55 deletions
+3 -3
View File
@@ -4034,7 +4034,7 @@ mods.jei.JEI.addDescription([
[
"Flux Networks are used to transfer energy wirelessly, and are the preferred energy transfer method in the pack.",
"",
"To create your own Flux Network, you need a Controller. You can specify the name of teh network and a color in the Controller GUI. Each Flux Networks machine will have to be bound to a network to function.",
"To create your own Flux Network, you need a Controller. You can specify the name of the network and a color in the Controller GUI. Each Flux Networks machine will have to be bound to a network to function.",
"",
"Flux Plugs are used to move energy from a source to a network.",
"",
@@ -4201,7 +4201,7 @@ mods.jei.JEI.addDescription([
"",
"Be proactive with automation! The best way to expand your infrastructure is to set up automations for new materials and recipes as soon as you unlock them! If a material shows up in a side quest, it's a good idea to automate it!",
"",
"Take your time! Completing and automating things from side quests, or for general base convenience, before doing more main line content is almost always the best way to do things! You will run into many hard 'wall' recipes, and the side quests will prepare you for these! This refers to weapond and armor upgrades too, side content often provides good upgrades for your gear!",
"Take your time! Completing and automating things from side quests, or for general base convenience, before doing more main line content is almost always the best way to do things! You will run into many hard 'wall' recipes, and the side quests will prepare you for these! This refers to weapon and armor upgrades too, side content often provides good upgrades for your gear!",
"",
"Take your time with JEI! Many items have multiple recipes and ways of obtaining, some will be easier than others at different points in progression!",
"",
@@ -4327,7 +4327,7 @@ mods.jei.JEI.addDescription([
"",
"This method is slow, for fast automation passive packaged auto is recommended (it has its own JEI info box), but this method is simpler, and fast enough for some resources.",
"",
"Place an Automation Interface on top of an extended crafting table (including the Ender Crafting Table), and click 'Save Recipe' to set the ercipe to be automated.",
"Place an Automation Interface on top of an extended crafting table (including the Ender Crafting Table), and click 'Save Recipe' to set the recipe to be automated.",
"",
"The Automation Interface can be set to auto-pull under 'Config'.",
"",
+5 -5
View File
@@ -39,21 +39,21 @@ var meatballiumscrubber = RecipeBuilder.newBuilder("meatballiumscrubber", "meatb
meatballiumscrubber.addEnergyPerTickInput(10000);
meatballiumscrubber.addScrubber(1);
meatballiumscrubber.addRecipeTooltip("Acts as a radiation scrubber in a 3x3 chunk area centered around the machine");
meatballiumscrubber.addRecipeTooltip("Make sure all chunks in range are loaded");
meatballiumscrubber.addRecipeTooltip("The scrubber skips unloaded chunks.");
meatballiumscrubber.build();
var meatballiumscrubberradiant = RecipeBuilder.newBuilder("meatballiumscrubberradiant", "radiant_meatballium_radiation_scrubber", 3600);
meatballiumscrubberradiant.addEnergyPerTickInput(10000);
meatballiumscrubberradiant.addScrubber(2);
meatballiumscrubberradiant.addRecipeTooltip("Acts as a radiation scrubber in a 5x5 chunk area centered around the machine");
meatballiumscrubberradiant.addRecipeTooltip("Make sure all chunks in range are loaded");
meatballiumscrubberradiant.addRecipeTooltip("The scrubber skips unloaded chunks.");
meatballiumscrubberradiant.build();
var meatballiumscrubbercursed = RecipeBuilder.newBuilder("meatballiumscrubbercursed", "cursed_meatballium_radiation_scrubber", 3600);
meatballiumscrubbercursed.addEnergyPerTickInput(10000);
meatballiumscrubbercursed.addScrubber(4);
meatballiumscrubbercursed.addRecipeTooltip("Acts as a radiation scrubber in a 9x9 chunk area centered around the machine");
meatballiumscrubbercursed.addRecipeTooltip("Make sure all chunks in range are loaded");
meatballiumscrubbercursed.addRecipeTooltip("The scrubber skips unloaded chunks.");
meatballiumscrubbercursed.build();
@@ -67,7 +67,7 @@ activesuperscrubber1.addRadiationInput(4,1);
activesuperscrubber1.addBiomeInput("integrateddynamics:biome_meneglin");
activesuperscrubber1.addItemOutput(<contenttweaker:arc_residue>);
activesuperscrubber1.addRecipeTooltip("Removes 1 full rad every second from a 9x9 chunk area");
activesuperscrubber1.addRecipeTooltip("Make sure all chunks in range are loaded");
activesuperscrubber1.addRecipeTooltip("The scrubber skips unloaded chunks.");
activesuperscrubber1.build();
var activesuperscrubber2 = RecipeBuilder.newBuilder("activesuperscrubber2", "active_meatballium_scrubbing_unit", 20);
@@ -80,5 +80,5 @@ activesuperscrubber2.addRadiationInput(4,10);
activesuperscrubber2.addBiomeInput("integrateddynamics:biome_meneglin");
activesuperscrubber2.addItemOutput(<contenttweaker:arc_residue>);
activesuperscrubber2.addRecipeTooltip("Removes 10 full rad every second from a 9x9 chunk area");
activesuperscrubber2.addRecipeTooltip("Make sure all chunks in range are loaded");
activesuperscrubber2.addRecipeTooltip("The scrubber skips unloaded chunks.");
activesuperscrubber2.build();
+1 -1
View File
@@ -2811,7 +2811,7 @@
<bloodmagic:blood_shard:1>.addTooltip(format.red("Right click a Demon from Bwitchemnt with a Bound Stick"));
<bloodmagic:blood_shard:1>.addTooltip(format.red("Right click a Demon from bewitchment with a Bound Stick"));
<bloodmagic:blood_shard:1>.addTooltip(format.red("Can be obtained through the Sentient Coagulator multiblock"));
+27
View File
@@ -0,0 +1,27 @@
#modloaded thaumcraft
#loader lateAddTC
#priority 10
import native.net.minecraft.item.ItemStack;
import crafttweaker.item.IItemStack;
static unifiedPlates as IItemStack[IItemStack] = {
<thaumcraft:plate:0>: <techreborn:plates:18>, // brass
<thaumcraft:plate:1>: <thermalfoundation:material:32>, // iron
<bewitchment:silver_plate>: <thermalfoundation:material:322>, // silver
};
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;
}
function unifyPlates(stackIn as ItemStack) as ItemStack {
return unifyStack(stackIn, unifiedPlates);
}
+5 -19
View File
@@ -6,20 +6,16 @@ import native.thaumcraft.api.golems.parts.GolemHead;
import native.thaumcraft.api.golems.parts.GolemLeg;
import crafttweaker.item.IItemStack;
import scripts.thaumcraft.Unifier;
/*
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);
material.componentBase = Unifier.unifyPlates(baseComponent);
}
}
# Head
@@ -29,7 +25,7 @@ for head in GolemHead.getHeads() {
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);
components[i] = Unifier.unifyPlates(stack);
}
}
}
@@ -40,21 +36,11 @@ for leg in GolemLeg.getLegs() {
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);
components[i] = Unifier.unifyPlates(stack);
}
}
}
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;
}
+17 -1
View File
@@ -1,15 +1,20 @@
#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;
import scripts.thaumcraft.Unifier;
/*
Hard-coded, non-JSON, research pages to replace crafting requirements for consume requirements.
Hard-coded, non-JSON, research pages to edit.
- Replaces crafting requirements for consume requirements.
This is so we can make these ingredients obtainable through non-crafting recipes,
but still make associated research completable.
- Unifies plates from rewards.
See config/thaumcraftfix/patches for research page changes that are JSON-based.
*/
@@ -41,6 +46,9 @@ convertCraftToConsume(t3SmelterStage, mithminitePlate);
var scytheStage = findCraftingStage("TAR_MITHMINITE_SCYTHE", mithminitePlate);
convertCraftToConsume(scytheStage, mithminitePlate);
# TC plate unification
convertRewardItems("TAR_CRYSTAL_CRUSHER", Unifier.unifiedPlates);
function findCraftingStage(researchName as string, targetItem as IItemStack) as ResearchStage {
var stages = ResearchCategories.getResearch(researchName).getStages();
for stage in stages {
@@ -80,3 +88,11 @@ function convertCraftToConsume(stage as ResearchStage, itemToConvert as IItemSta
stage.setObtain((consumed as ItemStack[]) + itemToConvert.native);
}
}
function convertRewardItems(researchName as string, itemsToReplace as IItemStack[IItemStack]) {
var rewards = ResearchCategories.getResearch(researchName).getRewardItem();
for i in 0 to rewards.length {
var reward = rewards[i];
rewards[i] = Unifier.unifyStack(reward, itemsToReplace);
}
}