You are viewing a potentially older version of this package. View all versions.
rainorshine-CookBook-1.1.1 icon

CookBook

A quality-of-life mod for Risk of Rain 2 that provides a structured, searchable, and expandable view of craftable items and their possible crafting paths.

Date uploaded 3 weeks ago
Version 1.1.1
Download link rainorshine-CookBook-1.1.1.zip
Downloads 4540
Dependency string rainorshine-CookBook-1.1.1

This mod requires the following mods to function

bbepis-BepInExPack-5.4.2120 icon
bbepis-BepInExPack

Unified BepInEx all-in-one modding pack - plugin framework, detour library

Preferred version: 5.4.2120
RiskofThunder-HookGenPatcher-1.2.9 icon
RiskofThunder-HookGenPatcher

MMHOOK generation at runtime.

Preferred version: 1.2.9

README

Chef’s CookBook

CookBook is a quality-of-life mod for Risk of Rain 2 that provides a structured, searchable, and expandable view of craftable items and their possible crafting paths.

Instead of mentally tracking multi-step recipes or juggling external spreadsheets, CookBook presents crafting information in-game with a clean, scalable UI designed for large inventories and complex recipe graphs.

CookBook Overview

Features

  • Lists all currently craftable results based on your inventory
  • Live filtering via a search bar
  • Clear grouping by result type, rarity, and quantity
  • Each recipe row can be expanded to reveal all valid crafting paths
  • Paths are displayed hierarchically, showing exact ingredient requirements
  • Accordion-style UI keeps only one recipe expanded at a time to reduce clutter
  • Unique crafting paths are treated as distinct recipes even if they produce the same item
  • Crafting paths are grouped by quantity of the result item produced
  • Rows grow and collapse naturally with content
  • Built with optimization in mind:
    • Unified Equipment & Item arrays
    • Hash-based recipe deduplication
  • Backend cleanly separates data, logic, and UI for extensibility
  • Robust against other mods:
    • Includes hooks to refresh recipe logic for custom or modded recipes

Controls

  • Click a recipe row to expand or collapse its available crafting paths
  • The search bar filters results in real time
  • Result counts are displayed inline, appended as [xN]
  • Expand a recipe row, select the path you want, then select Craft
    • The full chain of crafts will be completed automatically

Technical Overview

  • Extensive use of templating to maximize rendering performance
  • No prefabs baked into the scene
  • Minimal layout group usage for predictable behavior

UI Architecture

  • Dynamic layout groups
  • Content size fitting for automatic row expansion
  • Explicit hierarchy control for stable rendering
  • UI logic structured to avoid per-frame allocations (no performance dips)

Future updates may introduce pooling for recipe rows if necessary.


Development Status

This mod is under active development.

Planned but not yet implemented features include:

  • Configuration menu with in-built sorting controls
    (alphabetical, depth, path count, etc.)
  • Visual polish and UI refinements for UI frontend (this is my first mod, and Unity UI is painful)

Compatibility

  • Does not modify gameplay logic
  • Does not interact with networking (no host required)
  • Should be compatible with most content mods that introduce new items or recipes

Feedback and Issues

If you encounter bugs, layout issues, or have feature suggestions,
please report them on the mod’s GitHub page.

CHANGELOG

Changelog

Dates are listed in MM/DD/YY format.


v1.2.10 — 1/7/26

Fixed

  • Fixed drone list not updating after drone death.
  • Drone tier is now properly factored into its itemweight calculation.
  • Added many safety guards in state controller.
  • Fixed Mathematical Value Drift in the planner that caused deep-crafting paths to be culled as inefficient.
  • Fixed Signature Collisions by switching to a non-canceling additive hash.

Changed

  • Simplified InventoryTracker to only hook oninventorychangeglobal rather than both local and global
  • Reduced the complexity of the efficiency culling logic minorly. Tested with all items + quality mod + 5 depth, 650 ms -> 570 ms.
  • Hardened crafting logic to protect deeper chains, now properly respects intermediate item surpluses.
  • Craftable rebuilds gated to only occur if the dirtied drone index actually contributed to chains.
  • Completely rewrote the backend of the crafting handler, now follows vanilla semantics 1:1.

Added

  • Added a toggle to visually display the voided item you will receive if you crafting an item you already own the void version of
  • added a toggle for debug mode to add some extra prints at the crafting execution stage so you can see how a craft chain looks step-by-step.
  • Added a simple integration with cleanerchef to turn off hiding corrupted recipes if cleanerchef is enabled.

v1.2.9 — 1/2/26

Fixed

  • Hardened Stage transition logic as it was throwing exceptions due to abort trying to fire on a null craftingcontroller (oops).

Added

  • Added cool little indicators for the category selection button (yippee!).

v1.2.8 — 1/1/26

Changed

  • Stage entry logic now checks for an existing craftingcontroller (ie a chef) rather than relying on stage transitions.

v1.2.7 — 1/1/26 🎉

Changed (many optimizations)

  • Now uses a commutative hash to cheaply cull permutations EARLY.
  • Added final pass in recipeprovider to validate and cull all recipes that are permutations of one another, as well as remove all malformed recipes (those that use uncraftable items).
  • Moved the logic from IsChainEfficient into IsCausallyLinked to cull chains early.
  • Implemented Dominance Culling to kill chains early if a better path exists based on item weighting.
  • Updated inventorytracker hook to only fire on real inventory changes (no longer fires from using equipment or gaining/losing temp items).
  • Figured out how to change the active equipment slot in a client-safe fashion, automatically happens before the craft is attempted (MUL-T included!).

Added

  • Added support for controlling where equipment recipe rows go in the tiermanager sorting.
  • Added support for controlling the sort order by index.
  • Added support for repeatedly executing a craft chain N times via a text box next to the final craft button.
  • Added protection against crafting illegal items (if you own a voided item, blocks using the non-voided version in chains). Toggleable in settings.

v1.2.6 — 12/31/25

Added

  • Added sorting support to craftUI to sort based on item type (visual only to avoid recomputation).

v1.2.5 — 12/29/25

Fixed

  • Added inter-client confirmation via networked commands so that non-modded users can still participate. It sends the objective in raw text via chat!
  • Muted command audio to not play the annoying chat blip on send.
  • Further optimized craftplanner backend.

v1.2.4 — 12/29/25

Changed

  • Err... I may have accidentally been attempting to call a networked event from the client, which explains why crafting wasnt working on non-host clients in multiplayer... Fixed now!
  • Finalized chat-based networking! invisible to the player, and completely avoids the messy ror2 netcode!

v1.2.3 — 12/28/25

Changed

  • Added tint for ingredient sources to differentiate self sourced items from traded items. Cleaned up ingredient icon templating to eliminate runtime costs, just instantiation now.

v1.2.2 — 12/28/25

Added

  • Multiplayer pooling support, please provide feedback on this. it relies on the SPEX npc to transfer items between allied players.
  • Added Risk_Of_Options integration for configuring crafting depth, multiplayer pooling, and other relevant features. Please suggest any other configurable settings that are missing.

Changed

  • Further optimized the craftexecutionhandler to now only handle iterating through the steps generated by the craftplanner. The craftplanner now properly adds drone scrap and/or trading steps.
  • To provide more choice for the user , item trades and Drone Scrap paths are now shown in parallel rather than exclusively preferring a specific route type.

v1.2.1 — 12/28/25

Fixed

  • Refactored the craftplanner backend filtering to be more lenient on potentially useful crafting chains (ex:4x drones -> 4x green scrap -> 2x regen scrap -> red scrap), while still culling wasteful chains before ui time.

Changed

  • RecipeProvider now consolidates bulked recipes (recipes with more than 1 of an ingredient), allowing cheaper chain traversal as we dont need to iterate over all individual ingredients.

v1.2.0 — 12/27/25

Added

  • Added Drone scrap support.
  • Added Objectives to make Crafting State more clear to the user.
  • Added a hotkey for aborting a craft. Currently set to holding left alt. Will be configurable eventually once I get around to it.

Fixed

  • Replaced usage of massive int arrays with sparse dictionaries to greatly reduce memory usage. (11 GB game usage -> ~3.6 with identical inventory).
  • No longer fully rebuilds paths on inventory change, preserves unchanged paths from previous snapshot.
  • Reduced menu rendering time by nearly a factor of 4 in typical scenarios via sparse reads.
  • Fixed the pathrow buttons consuming scroll actions (no one mentioned this somehow :sob:)

Changed

  • Reduced pressure on garbage collection from reinitializing a bunch of arrays for calculating chain costs,. Now uses a "scratchpad" that just repeatedly gets cleared (no repeated initialization calls).
  • Reworked path planning to take a lazy approach to reduce passive mem usage.

v1.1.0 — 12/18/25

Fixed

  • Updated README to include visuals (Why doesn't Thunderstore allow edits?)

v1.0.0 — 12/18/25

Release

  • First stable public release
  • Core UI, crafting logic, and backend systems finalized

v0.7.2 — 12/17/25

Changed

  • Combined pickup logic refactor completed
  • Crafting control logic finalized and stabilized

v0.7.1 — 12/16/25

Changed

  • Fully working version prior to backend refactor for combined pickup logic

v0.7.0 — 12/15/25

Added

  • Completed automated crafting system
  • Crafting automation now relies on user pickup events rather than fixed delays

Changed

  • Removed naive time-based polling for inventory checks

v0.6.1 — 12/15/25

Changed

  • Hardened autocrafting logic
  • Craft chains now wait for the user to collect produced items before continuing

v0.6.0 — 12/15/25

Added

  • Fully implemented backend for sending craft chains to CraftingController
  • Crafting logic now obeys all internal network constraints
  • Imitates local user actions for reliability

Compatibility

  • Reliable in multiplayer scenarios
  • No host-based dependency

v0.5.3 — 12/14/25

Changed

  • Optimized menu rendering to avoid reattaching modified UI on repeat renders
  • Prevented UI duplication during craft chain execution

Added

  • Crafting chain support directly in the UI (visual polish pending)

v0.5.2 — 12/13/25

Changed

  • Major backend overhaul of CraftPlanner
  • Clean indexing-based planning logic
  • Proper aborts on circular, recursive, or redundant recipe paths

Performance

  • Cached all major UI references at template creation
  • ~20% UI rendering performance improvement

v0.5.1 — 12/11/25

Added

  • Proper dropdown event handling
  • Isolated CookBook UI via its own canvas

Changed

  • Reduced menu stutter
  • Implemented simple time slicing for row rendering to eliminate menu-open hitching

v0.4.0 — 12/11/25

Added

  • Initial implementation of dropdown menus

Changed

  • Frontend UI refactor

v0.4.2 — 12/08/25

Changed

  • Updated UI icon prefab

v0.4.1 — 12/08/25

Added

  • RecipeCount field to recipe chains
  • Recipes producing different quantities are now treated as distinct entries

Changed

  • Partial CraftUI update
  • Planned migration toward RoR2-native prefab styling

v0.4.0 — 12/07/25

Added

  • Seamless insertion of CookBook into vanilla crafting UI
  • Dynamic resizing based on vanilla UI dimensions
  • Recipe list populated directly from CurrentCraftables events

Performance

  • Cached each built row for fast, render-only searching
  • No row recomputation or culling required

v0.3.3 — 12/04/25

Changed

  • Hardened UI positioning against resolution scaling
  • All layout derived from base UI dimensions

v0.3.2 — 12/04/25

Changed

  • Reduced debug and print verbosity for proven systems

v0.3.1 — 12/07/25

Fixed

  • Edge case where Chef UI could fail to detach on stage transitions

v0.3.0 — 12/04/25

Added

  • Began prototyping UI layout and injection for custom features

Changed

  • Cleaned up Chef NPC dialogue hooks

v0.2.4 — 12/03/25

Removed

  • Several external dependencies
  • Removed R2API entirely
  • Removed all reflection usage

Changed

  • General codebase cleanup

v0.2.3 — 12/03/25

Changed

  • Refactored overall architecture
  • Plugin now handles initialization only
  • Introduced StateController to manage events and UI interaction

v0.2.2 — 12/03/25

Fixed

  • Minor bugs in TierManager

Changed

  • Proper initialization of tier manager
  • Reduced verbosity in state controller (logic proven stable)

v0.2.1 — 12/03/25

Changed

  • Hardened CraftPlanner logic

v0.2.0 — 12/02/25

Added

  • Inventory tracking logic
  • Complete recipe provider
  • Tier manager for clean sorting and UI organization

v0.1.0 — 12/01/25

Added

  • Initial DFS-based dictionary generation
  • Fast-read backend foundations