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
Unified BepInEx all-in-one modding pack - plugin framework, detour library
Preferred version: 5.4.2120README
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.

Feedback and Issues
- Have ideas or suggestions? Post them in the Feature Suggestions discussion
- Encountered performance issues? Create a performance issue report
- Encounted a bug? Create a bug report
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

- 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
RecipeCountfield to recipe chains- Recipes producing different quantities are now treated as distinct entries
Changed
- Partial
CraftUIupdate - 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
CurrentCraftablesevents
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
Pluginnow handles initialization only- Introduced
StateControllerto 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
CraftPlannerlogic
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