Vintage Story Mod DB · Vintage Story mod
Diet Setup
Configurable food preferences, nutrition profiles and spoilage responses, with optional race integration. Diet Setup 1.1.0 makes food personal without pretending that every food combination has been tested. You can tune what a diet likes, how much satiety and
Quick answer
Which Diet Setup release should I use?
Diet Setup 1.2.2 targets 1.22.6, 1.22.7. It must be installed on the client. Installation on the dedicated server is optional. No extra mods listed for this file.
Where it goes
Is Diet Setup required on the client, server, or both?
It must be installed on the client. Installation on the dedicated server is optional.
This release supports both sides, but the source does not require it on the server.
What else does Diet Setup 1.2.2 need?
1.2.2. Change the file and its required mods may change too.
This file does not list any required mods. Do not add a library just because a different file uses it.
We only count dependency files that match this setup. A file for another loader does not fill the gap.
Before you install it
Add Diet Setup without breaking your instance.
Built for Diet Setup 1.2.2. Pick another file and the loader, install side or required mods may change.
- 01
Stick to this file
Use 1.2.2. It targets 1.22.6, 1.22.7; another release may have different loader, side or dependency requirements.
- 02
Bring the mods it needs
This file does not list any required mods. Do not add a library just because a different file uses it.
- 03
Put it on the correct side
It must be installed on the client. Installation on the dedicated server is optional.
- 04
Pick the file you checked
Use the “Get this file” button beside 1.2.2. It opens that exact file at the source.
About this project
What does Diet Setup add?
Configurable food preferences, nutrition profiles and spoilage responses, with optional race integration.
Diet Setup 1.1.0 makes food personal without pretending that every food combination has been tested. You can tune what a diet likes, how much satiety and nutrition it gets, how freshness changes the result, and which unusual materials are allowed at all. I have been playing and checking this on my own test worlds; that is useful evidence, not a promise of universal compatibility. If you have questions, ask on Discord.
Requirements and installation
For Vintage Story 1.22.6, with Survival 1.22.6. Diet Setup is required on both the server and client. Diet Setup works without Race Framework or RF Mechanics. Installing either companion does not bind races to diets automatically. A fresh installation uses the built-in base diet. Race Framework's separate character-selection companions are Racial Equality and Player Model Library.
The download contains the built-in base, human, dwarf, elf, orc and goblin profiles. The Half-Giant diet is an optional example, not a built-in default. The ZIP also contains the inactive example files under ModConfig-examples/; they are not enabled just because they are present.
Upgrade note for the three related releases: Race Framework 1.1.0, RF Mechanics 1.2.0 and Diet Setup 1.1.0 are meant to be installed together. Close the game and server gracefully, back up the complete world and ModConfig, replace all three together, keep exactly one copy of each, and install the same versions on the server and every client. Race Framework 1.1.0 without RF Mechanics 1.2.0 breaks existing Mountain or Hill Dwarf characters when they load because Player Model Library raises an error for the missing class; RF Mechanics 1.2.0 makes those characters Commoners at login.
What it does
Diet Setup changes the result of eating, not the normal perish timers. A diet can multiply satiety, nutrition and freshness responses for tagged food; explicit spoilage curves can replace vanilla spoilage loss, while ordinary foods keep vanilla decay. Meals, pies, drinks, expanded foods and their ingredients are resolved instead of relying only on an outer container label. Hydration integration is not included.
Satiety, nutrition and permission
- Satiety is stomach fullness. A satiety response changes how much room the food fills, subject to the player's current stomach and the food's vanilla serving rules.
- Nutrition fills the five food-category bars. Capacity decides which bars a diet supports and how their fullness contributes to the nutrition health bonus. The Diet Setup bonus is capped at 12.5 health points.
- Permission is different from both. A ModConfig grant can make a material edible only for named diets. A refused material is stopped on the server before anything is removed or credited, including when it is inside a bowl, pie, vessel or expanded food, and the player receives a short message.
Label glossary: Inedible means the item is eaten but contributes zero satiety and zero nutrition; it is not a permission refusal. Harmful and Nourishing are ratings, not automatic damage or healing. Damage or other consequences need a separately authored effect and only fire after a positive consumption. Tooltip tiers include “A feast to you”, “Good food for your kind”, “Sits poorly with you”, “Barely touches your hunger”, “Fills your belly, nothing more” and “Your body takes nothing from this”. Freshness can add “At its best for you now”, “Better with some age on it” or “Past its best for you”. Race-specific rules can use their own voice, such as the Goblin, Elf and Dwarf lines.
Race context
These comparisons use the Human Race Framework values as the 1× baseline. They describe the time from a full stomach to an empty stomach at the same activity, not how long the same-sized meal lasts: Human 1×; Dwarf stomach +30% with unchanged hunger, about 1.3× full-stomach duration; Elf stomach −30% and hunger −47.5%, about 1.33× (about 1.57× with RF Mechanics' default extra 15% Elf hunger reduction); Orc stomach +150% and hunger +40%, about 1.8×; Goblin stomach −30% and hunger +15%, about 0.6×; Half-Giant stomach +630% (7.3×) and hunger ×5.31, about 1.4×. These example diets are provisional, inactive proposals rather than automatic racial balance.
Example race diets
Each spoiler is one candidate file from the 1.1.0 ZIP. None is active by default. Each opts into demand-normalised nutrition with nutritionRequirement: 1.0 and proportional overflow; copy and select one on the server only after deciding that its provisional values suit your world.
Provisional, inactive Human example
The Human candidate keeps all five nutrition capacities at 1.0, has no special food rules, and uses the neutral fallback. It is the reference diet: fruit, vegetables, grain, protein and dairy all count normally.
Race Framework's Human baseline is a 1× stomach and 1× hunger rate. Copy ModConfig-examples/candidate-diets/human.json to ModConfig/dietsetup/diets/human.json only if you want this opt-in nutrition model instead of the built-in profile.
Provisional, inactive Dwarf example
The Dwarf candidate favours preserved roots, leafy foods, fruit, meat and fish, with the preserved source rules taking priority. Fungus is nourishing, cooked grain and alcohol receive their authored responses, and raw meat is deliberately poor. A fish rule excludes shellfish and egg, so those identities do not accidentally become fish.
Dwarves have a stomach 30% larger than Human with the same hunger rate, giving about 1.3× full-stomach duration on the shared baseline. This is a candidate diet, not an automatic racial binding.
Provisional, inactive Elf example
The Elf candidate marks meat and standalone organ foods such as supported offal as Inedible. Fish remains permitted without the fresh-food bonus and declines gradually as it spoils; seed and nut foods are nourishing, preserved foods are Harmful, and the dairy capacity is zero. Its generic spoiled-food curve starts at the fresh value so the first spoil tick is not an artificial cliff.
Elves have a 30% smaller stomach and a 47.5% lower hunger rate than Human, about 1.33× full-stomach duration on the shared baseline, or about 1.57× with RF Mechanics installed. The candidate is inactive until an administrator copies and selects it.
Provisional, inactive Orc example
The Orc candidate has no fruit or vegetable capacity, a reduced grain and dairy share, and a larger protein share. Cooked supported meat is Nourishing, raw meat is usable at a lower nutrition response, organs are Nourishing, and fish and insects are usable with a smaller nutrition response. Seeds and nuts fill the stomach poorly. The raw-meat grant is not active automatically: copy the example food-overrides.json as well, so the listed Orc and Goblin diets are allowed to eat supported raw red meat, poultry or bushmeat.
Orcs have a stomach 150% larger than Human and a 40% higher hunger rate, about 1.8× full-stomach duration on the shared baseline. Race Framework and RF Mechanics still do not select this Diet Setup profile unless the administrator binds it.
Provisional, inactive Goblin example
The Goblin candidate makes supported rotten food nourishing, favours insects, and lets supported meat, fish and organ foods improve as they age before declining. Fresh fruit, leaves and roots are Harmful and poor; fungus is neutral; juice has its own souring curve. The optional raw-meat grants list Goblin with Orc, but the grants still require an administrator to install them.
Goblins have a 30% smaller stomach and a 15% higher hunger rate than Human, about 0.6× full-stomach duration on the shared baseline. The Goblin voice may say “Too fresh to do you much good”, “Half-spoiled: just how you like it” or “Past its best, but still good”, depending on the winning rule and spoil level.
Provisional, inactive Half-Giant example
Half-Giant is not one of the six built-in profiles. The candidate gives agricultural and herding foods room to matter: supported dairy and grain are Nourishing, roots receive a smaller boost, and cooked meat is Nourishing. It uses demand-normalised nutrition so its very large racial food demand is measured against the Human reference scale.
Race Framework's Half-Giant value is a 7.3× stomach and ×5.31 hunger rate, about 1.4× full-stomach duration on the shared baseline. Copy ModConfig-examples/candidate-diets/halfgiant.json, and add rf-halfgiant-positive to the bindings file, only when using the Race Framework release that provides that trait. RF Mechanics is not required by Diet Setup, but use its Half-Giant-supporting release if you install it too.
Configuration and compatibility
Server setup
Install the same dietsetup_1.1.0.zip on the server and every client. Copy ModConfig-examples/bindings.json.example from the ZIP to the server's ModConfig/dietsetup/bindings.json, removing .example. The supplied example maps rf-human-positive, rf-dwarf-positive, rf-elf-positive, rf-orc-positive, rf-goblin-positive and rf-halfgiant-positive to their matching diet IDs, with base as the default.
Copy a candidate diet to ModConfig/dietsetup/diets/<race>.json before selecting it. Run /dietreload, then /dietdiag to check the selected diet and snapshot revision/hash. A restart is not needed for ordinary binding, diet or tag reloads when /dietreload succeeds. The server sends effective diets, tags, bindings, configuration and grants to clients on join/reload; clients do not need matching local ModConfig files.
For a server without Race Framework, an administrator with controlserver privilege can use /dietassignrules <id>; /dietassignrules clear returns to trait/default selection. Changes to the definition of an edibility grant require a world restart. The master switch can suspend or re-enable existing grants immediately.
Opt-in versus shared behavior
nutritionModel: demandNormalisedis opt-in per diet. Nutrition gain is measured as if the eater had the 1500-point Human stomach and appetite, divided bynutritionRequirement(default 1.0, with optional per-category values), and supported bars decay on the Human curve while cold and other hunger effects still apply. Diets without this field keep the legacy model.overflowNutrition: proportionalis opt-in per diet and changes the default whole-item nutrition credit only when the mouthful offers more satiety than the stomach has room for. The share that fits receives the corresponding share of nutrition. Bowls and pies already cut a serving to available space, so their fitting fraction stays 1.- A mouthful that starts on a full stomach gives no nutrition, even though vanilla may still allow the eating operation. The 12.5-health-point nutrition bonus cap and the stomach-size reconciliation apply to Diet Setup nutrition generally, not just the examples.
When stomach size or a diet changes, each bar keeps its share of the old stomach only when both old and new diets support that category; a newly unsupported or newly supported bar starts empty as appropriate. Excess satiety above a smaller stomach is removed on the next hunger tick, attack or meal, not when a world loads. Separately, after a race change the new stomach size only applies once the world is reloaded.
The Human, Orc and Half-Giant files under ModConfig-examples/nutrition-pilot/ demonstrate the three opt-in fields. The six candidate race diets also opt in, but remain inactive until copied and selected.
What gets resolved
Diet Setup follows ingredients where the game exposes them. A heated pot meal treats its raw ingredients as cooked. A pie uses the pie's baked state and age for its fillings; a mixing-bowl food stays unheated. Filled drinks use the consumed liquid's facts. Expanded Foods rows can contribute additional nutrition categories, while an outer bowl or pie label cannot honestly summarize a mixed meal whose ingredients disagree.
Mappings are partial, not blanket support. The shipped tags cover selected vanilla foods plus selected items from Expanded Foods (aged meat, sausages, pemmican, fish nuggets, broths and lime eggs), Butchering (offal, blood, sausages, black pudding and blood bread), Cannibalism (hearts, meats and smoked meats), Primitive Survival (fish, crabmeat and cooked roe), A Culinary Artillery (egg portions and expanded-food rows), and Wet Crops (selected grain, flour, dough, bread and root foods). A heart is treated as meat, and shellfish remains distinct from fish and egg.
Some prepared foods have no per-ingredient quantities available. assets/dietsetup/config/food-composition.json therefore declares recipe-based satiety shares for selected sausages, pemmican and blood foods. Those compositions are explicit approximations; a supported mod does not mean every food from that mod is mapped. Hydration is not part of this compatibility.
Diet Setup's rot-intake tracker records a bounded, decaying dietsetup:intake:rot attribute for actual rot intake; fresh, failed, cancelled and zero-serving operations add nothing. /dietrotintake inspects or sets it for testing. RF Mechanics currently responds to literal game:rot consumption and does not read this attribute, so the two systems should not be advertised as an automatic integration.
Server commands
Players with the commandplayer privilege can use /dietdiag (player state or an item code), /dietshow <id>, /dietfood held, /dietfood target, /dietfood last and /dietfactsqueue. /dietfood requires a player; its reports distinguish preview facts from an actual consumed mouthful and show ingredient portions where available.
Administrators with controlserver can use /dietreload, /dietassignrules, /dietdrainsatiety, /dietsetnutrition and /dietrotintake. The client-side author checks /diettags and /dietresolve <dietId> inspect the active hotbar item without applying anything.
For a useful bug report, include the mod version and ZIP SHA-256, Vintage Story version, packaged build identity, other food mods, spoilage state, consumed quantity, bowl/pie/drink type, singleplayer or dedicated-server context, and the relevant /dietdiag, /dietfood held or /dietfood last output.
Known limitations
The example race diets are provisional and inactive. Food-mod coverage is partial, and prepared-food composition rows are approximations. Mixed fillings, pies, external drink integrations, custom-namespace tags, multiplayer reconnects and broad live gameplay acceptance still need more testing. I have been testing on my own worlds, but I have not comprehensively tested multiplayer or adding and removing this mod from existing saves.
Existing worlds: install on an existing save at your own risk. Make a complete backup and test a separate copy first. Keep the original backup: removing the mod does not necessarily undo saved nutrition or other changes. I am not responsible for lost progress or save damage.
Plans
Future work remains separate from what this download provides. I still plan to consider profiles for Halflings, Gnomes, Giants, Frogs, Merpeople, Bugs, Dragon-kin and Cows, along with further tuning of the existing diets, broader food-mod coverage, and more distinctive uses for prepared, aged and fermented foods. These are plans, not promises or current features. Suggestions and feedback are welcome on Discord.
I've been a developer for about five years, and for the last two years I've worked closely with advanced AI models. C# is a language I have much less experience with, so I use LLM coding tools to supplement my knowledge of the language and Vintage Story's modding API.
AI has a substantial role in this project, including generated code, debugging, research and documentation. I direct development, playtest as work progresses, and handle release decisions and maintenance. Not every situation has been tested. The source is available for inspection, contributions and forks.
Original work is MIT-licensed. Fork, modify and redistribute it while retaining the included license notices. Third-party material remains under its own terms; see THIRD_PARTY_NOTICES.md and CREDITS.md.
Thanks to Anego Studios for Vintage Story and its modding API, and to the creators of A Culinary Artillery, Expanded Foods, Butchering, Primitive Survival, Wildcraft and the other food mods studied during development. Those projects informed food-format research; this acknowledgement does not mean every combination has been tested.
Diet Setup on Vintage Story Mod DB · Source at v1.1.0 · Discord · Report a problem · Race Framework · RF Mechanics
Project description from Vintage Story Mod DB.
Pick your setup
Diet Setup releases for each Vintage Story version.
Choose the version and loader you play, then open the matching release.
1.22.7
1 loader build1.22.6
1 loader buildCheck the dependencies, then try the file in a copied instance before changing a world you care about.
Recent files
Diet Setup versions and loaders
1.2.2
dietsetup_1.2.2.zip
13 Oct 2026
1.2.1
dietsetup_1.2.1.zip
11 Oct 2026
1.2.0
dietsetup_1.2.0.zip
7 Oct 2026
1.1.0
dietsetup_1.1.0.zip
4 Oct 2026
1.0.2-dev.1
dietsetup_1.0.2-dev.1.zip
24 Sept 2026
1.0.0
dietsetup_1.0.0.zip
7 Sept 2026
Looking for an older file? The official Vintage Story Mod DB project page is in Resources.