The Crafting Menu lets a player browse a Crafter’s recipes, inspect their ingredients and outputs, choose a quantity, and craft with the bound Inventory. This page follows one complete runtime flow: 2 Herb + 1 Water -> 1 Health Potion, with Bag as the player’s main Item Collection.

Use the included menu for immediate, quantity-based crafting. A custom menu or custom Crafting Processor is a better fit for timed queues, minigames, manually chosen ingredients, or another result flow.

Before you begin

Prepare the following in the active Inventory System Database:

  • Herb, Water, and Health Potion Item Definitions;
  • a Brew Health Potion recipe that consumes 2 Herb and 1 Water and outputs 1 Health Potion;
  • a player Inventory whose main Item Collection is Bag; and
  • a Crafter that exposes the recipe through Crafting Categories or Miscellaneous Recipes.

Create or review those objects in Crafting, Crafting Category, and Crafting Recipe before configuring the runtime menu.

Create or select the menu

Open Tools > Opsive > Ultimate Inventory System > UI Designer, select Crafting, and create either:

  • Basic for a standalone menu panel; or
  • Main Menu for an inner panel whose parent is the Main Menu’s main content.

The generated object supplies a Crafting Menu, Crafting Recipe Grid, Recipe Panel, Quantity Picker Panel, Exit Button, and Display Panel. The Crafting UI Designer workflow covers creation, grid layout, navigation, tabs, and visual customization. The remainder of this page explains how those parts work together at runtime.

Connect the runtime parts

Part Runtime responsibility Health Potion example
Inventory Supplies ingredients and receives crafted output. Bag starts with Herb and Water and receives Health Potion.
Crafter Supplies recipes and owns the Crafting Processor. Exposes Brew Health Potion and uses the standard processor.
Crafting Recipe Grid Draws the Crafter’s recipes and reports selection or clicks. Shows Brew Health Potion once.
Recipe Panel Shows the selected output, ingredient amounts, descriptions, and optional Currency cost. Shows 2 Herb, 1 Water, and 1 Health Potion for quantity 1.
Quantity Picker Panel Changes the requested amount and confirms or cancels the craft. Quantity 2 previews 4 Herb, 2 Water, and 2 Health Potions.
Display Panel Opens, closes, and restores menu selection through the Display Panel Manager. Opens as a standalone panel or inside the Main Menu.

Crafting Menu Inspector with panel-owner Inventory binding enabled and references for the Crafter, Crafting Recipe Grid, Recipe Panel, Quantity Picker Panel, Exit Button, and Draw Recipes On Open

The legacy Inspector image shows the menu’s core object references. Current Version 1 also exposes the filtering, tab-data, quantity-panel behavior, Inventory Identifier binding, and completion-event settings described below.

Bind the player Inventory

The Crafting Menu inherits the standard Inventory panel binding. Choose one source:

  1. Keep Bind To Panel Owner Inventory enabled, which is the default, when the Display Panel Manager’s Panel Owner is the player.
  2. Set Bind To Inventory By Identifier to a nonzero Inventory Identifier ID when the player must be found by ID.
  3. Assign Inventory directly for a fixed runtime Inventory.

The direct Inventory reference takes priority, followed by Panel Owner binding and then the identifier lookup. For the sample, the resolved Inventory must use Bag as its main Item Collection.

Configure the Crafter’s Processor as Simple Crafting Processor With Currency, keep Externally Remove Ingredients disabled, and add Bag to Ingredient Item Collections. The standard processor then searches Bag for Herb and Water, removes them from the Inventory’s main collection, and adds Health Potion through that Inventory, which also targets the main collection.

If Ingredient Item Collections is empty, the processor searches the entire Inventory. Its normal removal and output paths still use the main Item Collection, so keeping the sample ingredients and output in the main Bag avoids an apparent match followed by a failed craft.

Configure the Recipe Panel

The Recipe Panel needs one result presentation and enough ingredient presentations for the selected recipe. For Brew Health Potion, provide at least two Ingredient Items entries: one can draw Herb and the other Water.

The important references are:

  • Total Craft Cost for a recipe type that also consumes Currency;
  • Result Item > Item View and Item Description for Health Potion;
  • Ingredient Items for each visible ingredient Item View and description;
  • Ingredient View Parent for generated ingredient views; and
  • Ingredient Description Parent for generated descriptions.

Recipe Panel Inspector with Total Craft Cost, a result Item View and description, four ingredient entries, and ingredient view and description parents

The panel multiplies every displayed input, output, and Currency amount by the selected quantity. It also listens for updates from the bound Inventory, so the availability presentation refreshes after items change.

Choose the important settings

Setting Version 1 default Use it when
Bind Filter Sorters To Grid Enabled The menu’s combined recipe filters should drive the Crafting Recipe Grid.
Use Grid Filter Sorter Enabled The grid’s own filter or sorter should participate.
Use Tab Control Tab Data Enabled Recipe tabs use Crafting Tab Data to add category filters.
Draw Recipes On Open Enabled The list should reflect the current Crafter every time the panel opens.
Close Quantity Picker Panel On Close Enabled Leaving the menu should also dismiss the quantity choice.
Open Quantity Picker Panel On Recipe Click Enabled Clicking a recipe should immediately ask for a quantity.
On Craft Complete No persistent listener required Another component should react to the success Boolean.

Keep the first Health Potion menu without tabs unless several recipe groups need filtering. When tabs are present, each tab’s Crafting Tab Data must allow Brew Health Potion through its Item Category or Crafting Category filter.

Reuse one menu for several crafting stations

A Crafter can live directly on the Crafting Menu for one fixed recipe set. To reuse the same menu with several stations, put a Crafter and Crafting Menu Opener on each station instead.

Configure the opener with:

  • Panel Manager Index, default 1, for the intended Display Panel Manager;
  • Panel Name or a direct Menu reference for the Crafting Menu;
  • Client Inventory Identifier Index, default 0, or Client Inventory when the opener is not driven by an interactor; and
  • Crafter for that station’s recipe set.

Opening binds the supplied player Inventory, assigns the station’s Crafter through SetCrafter, and smart-opens the menu. A Menu Interactable Behavior can supply the interacting player’s Inventory and update the panel-manager index before opening. This keeps the UI shared while allowing an alchemy table and forge to show different recipes.

How it runs

  1. Opening the Display Panel binds the player Inventory to the menu and Recipe Panel.
  2. With Draw Recipes On Open enabled, the menu reads the Crafter’s current recipes, applies grid and tab filters, and selects the first recipe button.
  3. Selecting Brew Health Potion updates the Recipe Panel.
  4. Clicking the recipe makes it the craft target, opens the Quantity Picker Panel when that option is enabled, and sets the displayed quantity to 1.
  5. Each quantity change calls the processor’s CanCraft check. The Recipe Panel scales its amounts, and the confirm action is disabled when Bag cannot supply that quantity.
  6. Confirming Craft asks the processor to validate and remove the ingredients, then create and add the output.
  7. The menu invokes On Craft Complete with the success result, redraws the recipes, resets quantity to 1, and refreshes the Recipe Panel.
  8. Closing the menu also closes the Quantity Picker Panel when Close Quantity Picker Panel On Close is enabled.

Editor checkpoint

Before entering Play Mode, confirm that:

  • the Crafting Menu belongs to the intended Display Panel Manager or Main Menu;
  • its Inventory binding resolves the player whose main collection is Bag;
  • Crafter, Crafting Recipe Grid, Recipe Panel, and Quantity Picker Panel are assigned;
  • the Crafter exposes Brew Health Potion exactly once;
  • its processor has Externally Remove Ingredients disabled and Bag in Ingredient Item Collections;
  • the Recipe Panel has two ingredient presentations plus a valid Health Potion result presentation;
  • optional tabs and filters allow the recipe through;
  • Exit Button points to the intended close button; and
  • the Canvas has an Event System and the correct input module for the player.

Verify in Play Mode

  1. Put 1 Herb and 1 Water in Bag, open the menu, and select Brew Health Potion.
  2. Confirm that the Recipe Panel shows 2 Herb, 1 Water, and 1 Health Potion and that crafting is unavailable.
  3. Add a second Herb. Confirm that the menu refreshes and quantity 1 can be crafted.
  4. Craft once. Verify that exactly 2 Herb and 1 Water leave Bag and 1 Health Potion enters Bag.
  5. Add 4 Herb and 2 Water, select quantity 2, and verify that the preview changes to 4 Herb, 2 Water, and 2 Health Potions.
  6. Confirm the craft and compare the actual Inventory changes with that preview.
  7. Navigate the recipe grid, quantity picker, confirm, cancel, and exit controls with each supported input device.
  8. Close and reopen the menu. Confirm that recipes redraw and the quantity returns to 1.

For a shared station menu, repeat the test at two stations and confirm that each opener supplies the correct Crafter while both use the interacting player’s Bag.

Save and network boundaries

A successful craft changes the Inventory immediately. The Inventory saver can therefore persist the resulting Herb, Water, and Health Potion amounts. The Crafting Menu itself does not save the selected recipe, open panel, quantity, filter, or transient button selection, and the standard processor does not provide a timed queue or in-progress craft to save.

Version 1 does not replicate Crafting Menu state or craft commands over a network. A network integration must establish player ownership and authority, run the craft once on the authoritative side, and replicate the resulting Inventory changes. Display Panel Manager and Inventory Identifier IDs are local lookup keys rather than network identities.

Troubleshooting

Symptom Check Fix
The menu opens with no recipes Crafter, Crafting Categories, Miscellaneous Recipes, active database, and Draw Recipes On Open. Assign the correct Crafter and include Brew Health Potion once from the active database.
Brew Health Potion appears twice The recipe comes from both a Crafting Category and Miscellaneous Recipes. Remove one source.
The ingredient or result panel is blank Recipe Panel, its result references, or its Ingredient Items list is incomplete. Assign the result presentation and at least two ingredient entries for Herb and Water.
Craft remains unavailable with enough ingredients The menu is bound to the wrong Inventory, the processor searches another collection, or the recipe amounts/types do not match. Bind the intended player, use Bag in Ingredient Item Collections, and recheck the recipe.
Ingredients are found but the craft fails Bag is not the Inventory’s main collection or Externally Remove Ingredients has no callback handler. Make Bag the main collection for this workflow and disable external removal unless a handler reports success.
Health Potion does not enter Bag Main-collection capacity or restrictions reject it. Allow Health Potion in Bag and make room before crafting.
Clicking a recipe does not open the quantity choice Open Quantity Picker Panel On Recipe Click is disabled or Quantity Picker Panel is unassigned. Enable the option and assign the generated panel.
The quantity panel remains after closing Close Quantity Picker Panel On Close is disabled or the menu references another panel. Enable the option and correct the reference.
A tab hides the recipe Its Crafting Tab Data filter excludes the recipe. Correct the Item Category or Crafting Category filter, or remove tabs from the single-group example.
The wrong player’s Bag changes Panel Owner, identifier binding, direct Inventory, or station opener points to another player. Use one intentional binding route and verify the opener receives the interacting Inventory.
Buttons do not respond Event System, input module, selection, or grid navigation is incorrect. Repair the player’s Event System route and UI navigation.

Developer details

CraftingMenuBase exposes the assigned Crafter and SelectedRecipe, plus SetCrafter, DrawRecipes, CraftingAmountChanged, and DoCraft. CraftingMenuOpener.Open binds an Inventory, assigns its Crafter, and calls SmartOpen on the Display Panel.

The processor raises the Inventory events for CanCraft and Craft, with the latter supplying the CraftingRecipe and CraftingResult. The menu separately invokes its On Craft Complete UnityEvent with CraftingResult.Success. When Externally Remove Ingredients is enabled, a listener must handle the processor’s ingredient-removal callback and report success; without that listener, the standard craft fails.