Please disclose if any significant portion of your mod was created using AI tools by adding the 'AI Generated' category. Failing to do so may result in the mod being removed from Thunderstore.
FishQualityBonus
Recipes that consume a whole fish, like Fish 'n' Bread, pay out more when you use a higher-quality fish - reusing the game's own Fish (raw) scaling. Configurable, and it picks which fish to spend rather than leaving it to chance.
| Date uploaded | 2 days ago |
| Version | 0.1.0 |
| Download link | pandincus-FishQualityBonus-0.1.0.zip |
| Downloads | 32 |
| Dependency string | pandincus-FishQualityBonus-0.1.0 |
This mod requires the following mods to function
denikson-BepInExPack_Valheim
BepInEx pack for Valheim. Preconfigured with the correct entry point for mods and preferred defaults for the community.
Preferred version: 5.4.2333README
FishQualityBonus
Hello! I created this mod to fix a nitpick that felt, in my opinion, like an oversight, which is simply this: fishing recipes should reward you for the quality of the fish.
In Valheim, Raw Fish, prepared from an actual caught fish, are multiplied in value based on the quality of the fish caught. If I catch a big, quality-5 tuna, I can actually prepare 14 "raw fish" from that single tuna.
However, this does not apply to any recipes that consume a whole fish, which in my opinion completely wastes the higher quality fish in those recipes.
Since recipes like Fish 'n' Bread, currently one of the best stamina foods in the game, take a whole fish, the player is effectively penalized for using the better quality anglerfish in that recipe.
This mod adjusts it by applying the same raw fish computation formula to other whole-fish recipes, as well!
Behavior
output = amount + (fishQuality - 1) * amount * BonusPerQualityLevel + speciesBonus
BonusPerQualityLevel is configurable, but defaulted to 3 to match the existing
values used in computation of Fish (raw) (in the base game).
speciesBonus is the game's own +0/+1/+2 fish tiering based on the species of fish.
See Raw Fish, and note the flat bonus
based on the type. We access this data from m_extraAmountOnlyOneIngredient on
the Fish (raw) recipe and treat the values as a property of the species.
Essentially, this means that one anglerfish makes as many Fish 'n' Bread as it would raw fish.
Note that this is a flat bonus that doesn't scale with quality, just like vanilla.
So, even a little quality-1 anglerfish gets you 3 Fish 'n' Bread with this enabled.
If you would prefer the bonus from this mod more related to how big the fish was, you can
turn UseSpeciesBonus to false in the config and the species bonus will not apply.
This mod also makes ingredient selection deliberate: vanilla spends whichever fish you picked up first, no matter where it sits in your inventory, which is effectively random. This mod picks a quality on purpose (e.g. largest first or smallest first, configurable) and spends that.
This should be safe to pick up new recipes added via updates and mods, because we're
loading recipes at runtime and matching via ItemType.Fish. A recipe qualifies only if all of these hold:
- it is not flagged
m_requireOnlyOneIngredient(currently onlyFishRawuses this), - its output is not equipment, by the game's own
IsEquipable()check, - it requires exactly one fish species; scaling when more than one is involved feels messy,
- it passes the
IncludeMeadRecipesandExcludedRecipesconfigurable settings.
In vanilla and with default config, that means this mod applies to Fish 'n' Bread plus three mead bases: MeadBaseBugRepellent, MeadBaseStrength, and MeadBaseSwimmer.
Config
Written to BepInEx/config/pandincus.fishqualitybonus.cfg on first run, and
editable in-game with ConfigurationManager (F1). Changes apply immediately.
| Setting | Default | Meaning |
|---|---|---|
General.Enabled |
true |
Master switch; false restores vanilla behaviour entirely. |
Bonus.BonusPerQualityLevel |
3 |
Whole-number multiplier, 1-10. At 3 a 1-item recipe yields 1/4/7/10/13 for quality 1/2/3/4/5 — matching the game's own Fish (raw) tuning. At 1, 1/2/3/4/5. |
Bonus.FishToSpend |
SmallestFirst |
SmallestFirst spends the lowest-quality fish first, LargestFirst always spends your best fish first. |
Bonus.UseSpeciesBonus |
true |
Grant each species' flat +0/+1/+2 tier as well, read from the Fish (raw) recipe at load. Anglerfish is +2, so Fish 'n' Bread gains a flat 2. Not scaled by quality. |
Bonus.IncludeMeadRecipes |
true |
Whether mead bases brewed at the mead cauldron get the bonus too, if they use a whole fish as an ingredient. false effectively restricts the mod to food. |
Bonus.ExcludedRecipes |
(empty) | Comma-separated output prefab names to skip individually, e.g. MeadBaseStrength,MeadBaseSwimmer. |
Diagnostics.LogRecipeReport |
false |
Dumps every fish and fish-consuming recipe to the log, annotated with whether the bonus applies and why. Development aid; off by default, and also requires Enabled. |
Multiplayer
This is a client-side mod. The crafting result is computed locally and synced like any other inventory change, so the server does not need the mod. But everyone who crafts and wants this behavior needs it installed, or identical ingredients will give different results for different players.
Developing
Build instructions, tooling and tests are in the repo README.
This is my first mod! This was built through a combination of code-diving, wiki reading, and usage of Claude Code. Note that even though I used Claude Code to develop the code changes, I've reviewed each line of code, applied manual refactors, and have heavily rewritten code comments.
Please feel free to offer feedback and I would happily accept community contributions.
Future Work
This isn't perfect. If we get recipes in the future that involve more than one whole fish, I'll need to revisit this mod to eliminate the single-ingredient requirement. Further, I don't love that we get the fish-recipe-output multiplied, but don't also consume more of the other ingredients. Using Fish 'n' Bread as an example, additional bread dough should probably also be consumed, even though we've got 'more' fish to go around. The latter issue is one I will consider addressing in an upcoming release.
With Valheim 1.0 coming out soon, I'm not sure what will change that might impact this mod. Perhaps the devs have already fixed this issue! Or perhaps they'll add more fishing recipes and we'll want to test that this continues to work. But since I wrote this mod to use it, I will revisit and update in the near future.
See CHANGELOG.md for release notes.
CHANGELOG
Changelog
0.2.0 — 2026-08-23
You can now craft with fish of different qualities!
Vanilla Valheim will not let you: its requirement check looks at the biggest single-quality stack instead of your total, so for example, two trollfish of different sizes cannot brew a Troll Endurance mead that needs two (even though the ingredient list shows 2 of 2 and looks perfectly happy). The Craft button just sits there greyed out. This version addresses that for the recipes the mod already handles.
To do that, we had to modify the computation logic slightly.
- A craft that spends fish of several sizes is paid out on their average, rounded down. Two trollfish, one quality-1 and one quality-2, now brew 2 mead bases (so, a partial bonus) instead of being impossible.
SmallestFirst(if that's your desired setting) works better now, as a result. Before, a two-fish craft with one small fish and three big ones would pass over the small one and spend two big ones, because it needed a single size that could cover the whole craft. Now, because this mod supports mixed, you'd spend the small fish and only one bigger one.- New
AllowMixedQualitiessetting, on by default. Turn it off to keep vanilla's rule about requiring the same sizes (the mod will then focus essentially the same as 0.1.0).
Nothing else changes for a craft where every fish is the same size, so the payout is identical to 0.1.0.
0.1.0 — 2026-08-21
Initial release.
- Recipes that consume a whole fish pay out more for a higher-quality fish, using the same formula the game applies to Fish (raw).
- Each fish species' flat +0/+1/+2 bonus is read from the game at load and
applied too, so an anglerfish is worth more than a perch. Can be turned off
with
UseSpeciesBonus. - Which fish gets spent is now a deliberate choice — smallest or largest first — instead of whichever one you happened to pick up first.
- The crafting panel shows the real total before you craft.
- Everything is configurable, including a master switch that restores vanilla behaviour completely.
In vanilla this affects Fish 'n' Bread and three mead bases: MeadBaseBugRepellent, MeadBaseStrength and MeadBaseSwimmer.