UnifyTags

UnifyTags

3.2k Downloads

Issue with Tinker's Construct + Thermal Series (+others?) recipes for gold cast creation

Rhyssia opened this issue ยท 7 comments

commented

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

commented

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.

commented

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.

commented

With RECIPE_UNIFY value of TRUE.
2023-10-14_21 56 30
2023-10-14_21 56 43

With RECIPE_UNIFY value of FALSE.
2023-10-14_22 00 29
2023-10-14_22 00 45

-edit-
RECIPE_DEDUPE value is FALSE in both comparisons.
I've tried to add "tconstruct:ingot_cast" to the exclusion list ( global["unifyexcludegen"] ? ) but not sure if I am experiencing a user error as to correct item to add.

commented

replaceInput() should not modify recipes that take tags as input? Are the kubejs developers crazy or something? This seems like a bug with KubeJS

commented

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"
]
commented

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.

commented

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'}, ...]}