Skip to content

Recipe Selector

LlaGuiTo edited this page Oct 5, 2026 · 2 revisions

Recipe Selector

Applies to Utility Nexus QoL 1.1.3 for Minecraft 1.21.1 (NeoForge).

The problem it solves

Two different crafting recipes can match the same ingredients and produce different results. This is common in a modded pack — one mod adds a recipe using an ingredient another mod also uses, or two mods each add their own interpretation of a combination.

Vanilla resolves this silently: it picks one, you get an item you did not ask for, and there is no indication that an alternative existed. You put your materials in and something else comes out.

What you see

A small swap-arrows button appears above the result slot in:

  • the crafting table, and
  • the 2×2 inventory grid.

Click it and a panel of result icons opens. Pick one, and:

  • it previews the result before you commit, and
  • then really crafts it.

Your choice is remembered for the session and synced to the server, so it does not need re-picking, and so the client and server agree on what is being made.

On by default

Enabled by default. Disable it with:

# config/utility_nexus/qol/recipe-select.toml
[recipeSelect]
enabled = false

Integrations

Recipe conflicts are hard to detect generically, because mods disagree about what "the same ingredients" means. This mod therefore handles two mods specially:

Mod Behaviour
Polymorph Steps aside. Polymorph ships its own recipe-conflict selector for vanilla crafting screens, so this mod suppresses its duplicate overlay there — otherwise you would get two competing buttons over the same result slot.
Tom's Storage Adds coverage. TomsStorageRecipeSelectorAdapter plus MixinCraftingTerminalBlockEntity make the selector appear in Tom's Storage crafting terminals, which are not vanilla crafting menus.

Both are optional, and the two relationships are opposites: with Polymorph you get someone else's selector instead of this one, with Tom's Storage you get this one where it would otherwise be absent.

Implementation notes

If you are reading the source, the interesting parts:

Class Role
MixinCraftingMenu Detects conflicts and adds the button.
MixinCraftingTerminalBlockEntity Same, for Tom's Storage crafting terminals.
ServerRecipePreferences Server-side storage of the session preferences, synced to clients.
RecipeSelectorScreenAdapter / RecipeSelectorScreens The result panel and its UI.
RecipeSelectNetwork Client/server packets.
PolymorphCompat Detects Polymorph and suppresses this mod's button where Polymorph's own selector already appears.

What it does not do

  • It does not add recipes. It chooses between recipes that already exist.
  • It does not persist your choice across restarts. Session-only, by design — a preference that silently rewrites what your materials turn into is not something you want to forget you set.
  • It does not resolve conflicts in non-crafting containers beyond the ones it explicitly integrates. A mod with a bespoke crafting GUI you have not heard of will not be covered.

Performance

Conflict detection runs when a crafting container is open. It is bounded by the number of recipes matching the current grid contents, which in a heavily modded pack can be noticeable in a container with very many recipes. If the selector feels sluggish in one specific container, that is the reason.

No cost when no crafting screen is open.

Clone this wiki locally