You are viewing a potentially older version of this package. View all versions.
rainorshine-CookBook-1.2.8 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 a week ago
Version 1.2.8
Download link rainorshine-CookBook-1.2.8.zip
Downloads 3713
Dependency string rainorshine-CookBook-1.2.8

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 Wiki tabs, CookBook presents crafting information in-game with a clean, scalable UI designed for large inventories and complex recipe graphs.

CookBook Overview

Feedback and Issues


Features

Frontend

  • Lists all currently craftable results based on your inventory, grouped by result type, rarity, and quantity
  • Live filtering via a search bar
  • Each recipe row can be expanded to reveal all valid crafting paths
  • Highly configurable via ROO settings integration for your performance needs Settings Integration
  • Paths are displayed hierarchically, showing exact ingredient requirements
  • Accordion-style UI keeps only one recipe expanded at a time to reduce clutter
  • Rows grow and collapse naturally with content
  • Support for repeatedly executing a specific craft chain N times in a single automated sequence
  • Automatically calculates and displays the "Max Affordable" repetitions for any selected path, physically clamping user input to current inventory limits
  • Event system to prompt other mod users if someone is requesting their assistance in a recipe!

Backend

  • Robust against other mods
  • Highly encapsulated, doesn't touch any external logic
  • Automated sequences include logic to orient active equipment slots and sets
  • Backend cleanly separates data, logic, and UI for extensibility
  • Optimization layer that kills redundant crafting chains early if a more efficient path (based on item weighting) is already discovered for the same result
  • Recipes are culled early in the compute phase using IsCausallyLinked to prevent the generation of circular or impossible crafting paths
  • Hooks specifically monitor permanent item stacks and equipment sets, ignoring temporary buffs and activations
  • Affordability logic accounts for the entire team's potential by tracking scrapable drones and allied inventory trade limits

Controls

  • Configure various keybinds and crafting features in the Mod's settings menu
  • Click a recipe row to expand or collapse its available crafting paths
  • The search bar filters results in real time
  • Expand a recipe row, select the path you want, then select craft
    • The Objectives panel will be updated to visualize the status of the craft chain
    • Hold left alt to cancel an in progress craft

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 features include:

  • Visual polish and UI refinements for UI frontend (this is my first mod, and Unity UI is painful)
  • In-Progress run recipe tracking
    • An in-progress view to view all recipes and their completion status, accessed by holding tab (inspectable so that the game can be paused while reading)

Compatibility

  • Does not modify gameplay logic
  • Does not interact with networking (no host required!)
  • Entirely client-sided, other players are NOT required to have the mod installed.
  • Should be compatible with most content mods that introduce new items or recipes

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