Issue with Tinker's Construct + Thermal Series (+others?) recipes for gold cast creation
Rhyssia opened this issue ยท 7 comments
Unify script faces issues with creating certain gold casts when using RECIPE_UNIFY value of TRUE.
With tconstruct:ingot_cast instead of using forge:ingots tag for the casting it defaults to forge:ingots/bronze and won't allow any other ingot to be used
With tconstruct:nugger_cast instead of using forge:nuggets tag it defaults to forge:nuggets/copper
With tconstruct:plate_cast instead of using forge:plates tag it defaults to... forge:plates/iron
with tconstruct:gear_cast instead of using... forge:gears it defaults to... forge:gears/iron
It seems to latch on to things that have thermal series only outputs and defaults to those types of input items. I think it might be related to line 341
event.replaceInput({}, itemId, "#" + tag)
may be related to issue #21
Try replacing the line event.replaceInput({}, itemId, "#" + tag)
in the script with event.replaceInput({input: itemId}, itemId, "#" + tag)
. If that doesn't work, then there's nothing I can do to help, I'm afraid. There's a possibility you configured the script wrong, but that would be my only guess.
Can you be a bit more specific, and provide something like a video or images? Like I said in #21, The #forge:ingots tag is not unified by default, only subtags of it are. replaceInput() will replace the inputs of recipes who exclusively work with one ingredient, not with a tag.
You can disable and enable many things in the script, it is not always going to work with everything by default, see #11. You are free to modify and manipulate the script as you wish. Try turning off RECIPE_DEDUPE if you haven't already.
replaceInput() should not modify recipes that take tags as input? Are the kubejs developers crazy or something? This seems like a bug with KubeJS
with
RECIPE_UNIFY = true
RECIPE_DEDUPE = false
and 342 altered to event.replaceInput({input: itemId}, itemId, "#" + tag)
for (let itemId of stacks) {
if (global["unifyexclude"].has(itemId)) continue
// Replace any time the item appears as an input, with the whole tag
event.replaceInput({input: itemId}, itemId, "#" + tag)
// Replace any time the item appears as an output, with the priority item
// (Unless this is the priority item itself, then do nothing)
if (itemId != priorityId) event.replaceOutput({}, itemId, priorityId)
}
The issue is still present.
Would it be possible to manually exclude each cast recipe? If so, would it be possible to ask for an exact procedure?
-Edit-
Only additional edits made were ...
// Mod priorities
global["unifypriorities"] = [
"techreborn",
"tconstruct",
"mekanism",
"create",
"assemblylinemachines",
"futurepack",
"thermal",
"tinkers_reforged",
"minecraft"
]
// Items to exclude (will not be unified)
global["unifyexcludegen"] = [
// "minecraft:stone"
"mna:aum",
"tconstruct:ingot_cast"
]
You can prevent certain recipes from being modified or unified using the filter:
{not: [{id: 'tconstruct:recipeidgoeshere'}, {id: 'tconstruct:recipeidgoeshere'}, ...]}
Or disable recipes from one mod from being unified entirely using:
{not: {mod: 'tconstruct'}}
as opposed to using
{input: itemId}
See this page on the KubeJS wiki for more filters.
I'm closing this as not planned, as there's not really anything I can do about a function from kubejs not working correctly.
Thank you for looking into it!
-Edit-
For ID/etc use F3+H
For anyone else running into this issue, you'll want to follow the above but instead of
{not: [{id: 'tconstruct:recipeidgoeshere'}, {id: 'tconstruct:recipeidgoeshere'}, ...]}
You'll want to use output... which is generally shorter
{not: [{output: 'tconstruct:recipegoeshere'}, {output: 'tconstruct:recipegoeshere'}, ...]}