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