
Nourished
Nourished is a nutrition mod for NeoForge 1.21.1 that tracks six food groups, rewards a varied diet, and applies balance buffs and neglect penalties. Includes an on-screen HUD, diet screen, and configurable modules for servers and modpacks.
- Загрузки
- 840
- Подписчики
- 21
- Обновлён
- 2 июля 2026 г.
- Лицензия
- MIT
Опубликован 1 мая 2026 г.

I got sick of Minecraft's food system, so I built Nourished, a nutrition mod for NeoForge 1.21.1 that tracks five food groups, rewards a varied diet, and applies balance buffs and neglect penalties when you neglect them.
Eat a balanced diet, watch your bars on the HUD, open the diet screen for the full picture, and tune every module for your server or modpack.
📦 New as of this release: Nourished now requires MariesLib, a companion mod containing shared infrastructure (scanner, registries, compat framework, KubeJS bindings). This split lets that infrastructure be reused across my other mods and keeps Nourished itself focused on nutrition gameplay. Install both, see Upgrading notes in the changelog.
❤️ What you gain
When all five food groups are above 75%, you get:
- Health Boost I: passively while balanced
- Regeneration I: passively while balanced
Let any single group drop below 25% and a debuff kicks in:
| Group | Neglect Penalty |
|---|---|
| 🌾 Grains | Weakness I |
| 🥦 Vegetables | Slowness I |
| 🥩 Proteins | Mining Fatigue I |
| 🍎 Fruits | Unluck I |
| 🥛 Dairy | — |
Dairy has no penalty effect by default — it's tracked and affects your balance score but doesn't apply a debuff when depleted. This is configurable, and a Sugars group is planned for a future update.
🏆 Milestones & Achievements
Eating consistently pays off over time. Nourished tracks cumulative intake per food group and grants milestone rewards as you build healthy habits.

Each food group has its own three-tier progression, beginner, journeyman, master, plus a hidden "perfectly balanced" milestone for maintaining all Five groups at once. Milestones grant a temporary buff and unlock an entry in your Advancements tab.
Milestone goals, reward effects, and durations are fully configurable, and modpack authors can register entirely custom milestones through datapacks.
🍽️ Eating at full hunger
Vanilla hunger prevents eating at full hunger. Nourished lets you still eat and gain nutrition even when your hunger bar is full, light foods like berries and snacks can be eaten for nutrients without restoring hunger, while heavy meals follow vanilla rules by default.
Both behaviors are configurable: enableBlockHeavySources and enableBlockLightSource give server admins full control.
🥩 Raw Food & Gut Health
Eating raw or undercooked food has consequences. Nourished tracks a gut health value for every player that degrades when you eat raw food and recovers over time from cooked food and dietary variety.
Raw foods are classified into four tiers:
| Tier | Effect |
|---|---|
| Fine | No penalty |
| Mild | Minor debuff, short duration |
| Medium | Moderate debuff, longer duration |
| Severe | Strong debuff, extended duration |
Eating the same raw food repeatedly within a memory window increases sensitivity, the more you do it, the worse the penalty gets. Gut health recovers passively and faster when you eat cooked food and maintain dietary diversity.
Resistance can be built up over time, reducing penalty scale. Everything, tiers, durations, nutrient penalties, recovery rates, is configurable via config/nourished/raw_food.json and server module toggles.
📺 The HUD

Press H in game to enter edit mode. Drag it anywhere, resize it, anchor it to any corner. Zero bars hide automatically so it never feels cluttered.
Five color-coded bars sit on screen while you play. You always know where you stand without opening anything.
📋 The Diet Screen
Open your inventory and click the Nourished icon to pull up your full nutrition overview.

📸 Screenshots taken with PureBDCraft resource pack. UI works on vanilla textures but will appear in the default Minecraft style.
| What you see | |
|---|---|
| Trend arrows | Whether each group is rising or falling |
| Balance score | How evenly spread your nutrition is |
| Active effects | What your current diet is doing to you |
| Calorie tracking | Daily intake at a glance |
| Recently eaten | What you've had lately |
| Neglected categories | What you should probably eat next |
🍽️ Variety is always rewarded
Eating the same food repeatedly becomes less effective over time, so rotating what you eat always pays off. Memory fades naturally, so foods you've avoided recover their full value on their own.
🤝 Mod Compatibility
Nourished works with modded food items that use vanilla FoodProperties. You do not need to write integration code for basic nutrition tracking.
Bundled compatibility data helps foods from popular kitchen and farming mods show up on your nutrient bars out of the box. For edge cases, server owners can adjust behavior through config files and tags.
| Mod | Status |
|---|---|
| Farmer's Delight | ✅ Supported |
| Pam's HarvestCraft 2 | ✅ Supported |
| Create: Food | ✅ Supported |
| Croptopia | ✅ Supported |
| Farmer's Croptopia | ✅ Supported |
| Croptopia Delight | ✅ Supported |
| Farm & Charm | ✅ Supported |
| Ender's Delight | ✅ Supported |
| L_Ender's Delight | ✅ Supported |
| Ars Delight | ✅ Supported |
| Autochef's Delight | ✅ Supported |
| Spice of Life: Onion | ✅ Integration |
| KubeJS | ✅ Scripting hooks |
| Peak Stamina | ✅ Nutrition affects stamina |
| JEI / REI / EMI | ✅ Tooltips in recipe viewers |
| Legendary Survival Overhaul | ⚠️ Effects disabled (LSO takes priority) |
| Other mods with edible food items | ✅ Works with standard food items |
🔧 Configurable for your server
Everything ships with sensible defaults. Server owners and modpack authors can tune behavior without touching Java:
- Toggle individual modules on or off (HUD, decay, effects, gut health, and more)
- Adjust decay rates and thresholds per nutrient
- Add, remove, or replace effects via
config/nourished/effects.json - Tune eating rules with
enableBlockHeavySourcesandenableBlockLightSource - Edit food values, overrides, colors, scanner spec, and compat settings under
config/nourished/ - Save and share full config snapshots with a single share code
🔍 The Food Scanner
- Run /nourished scan_analysis in-game to analyze all loaded food items and generate classification reports under config/nourished/scanner_analysis/.
The scanner produces:
multi_value_recommendations.json — foods confidently assigned to one or more nutrient groups
unassigned_sources.txt — foods that couldn't be classified automatically and need manual review
scanner_metrics.txt — summary stats across the full item registry
Copy recommended tag entries into your datapack to make classifications permanent.
Unassigned items can be tagged manually using the example above.
📁 Data & overrides
Most customization happens in config/nourished/ after first launch, effects, food values, overrides, colors, presets, and module locks.
Nourished also ships bundled defaults under data/nourished/ (nutrient tags, compat entries, presets). Advanced pack authors can override some JSON through datapacks where supported; config files remain the primary path for server tuning.
The in-game Food Scanner (config screen) can help inspect and assign foods in singleplayer and write generated tag files into your world's datapack folder for manual review.
Example — adding a food to a nutrient tag
Create the following file inside your datapack:
your_datapack/
data/
nourished/
tags/
item/
nutrients/
vegetables.json
{
"replace": false,
"values": [
{
"id": "pamhc2foodextended:honeyglazedcarrotsitem",
"required": false
}
]
}
"replace": false means your entries merge with Nourished's defaults, nothing gets overwritten.
🟨 KubeJS Support
Optional KubeJS integration for modpack authors. Requires KubeJS on the pack. Scripts go in kubejs/server_scripts/ and kubejs/startup_scripts/.
KubeJS support is split across two layers:
- MarieLib provides generic value tracking events (
MarieEvents.*) available to any MarieLib-based mod - Nourished provides nutrition-specific aliases (
NourishedEvents.*) on top
Server scripts — nutrition events:
NourishedEvents.nutrientChanged(event => {
if (event.nutrientKey === 'proteins' && event.newValue < 0.25) {
event.player.tell('Eat some protein!')
}
})
NourishedEvents.nutrientModifier(event => {
if (event.nutrientKey === 'vegetables') {
event.amount *= 2
}
})
NourishedEvents.foodEaten(event => {
event.nutrientDeltas.forEach((value, key) => {
console.log(key + ': ' + value)
})
})
Also available: nutrientCritical, nutrientExcess, rawFoodPenalty, gutHealthChanged.
sourceConsumedis a generic MarieLib event and does not exposenutrientKeyornewValue— usenutrientChangedinstead.
Server scripts — generic MarieLib events:
MarieEvents.valueChanged(event => {
console.log(event.playerId + ' ' + event.valueKey + ': ' + event.newValue)
})
MarieEvents.valueDeltaModifier(event => {
if (event.valueKey === 'proteins') {
event.amount *= 1.5
}
})
Also available: valueCritical, valueExcess, sourceConsumed, decayTick, playerSynced.
Startup scripts — register custom nutrients:
NourishedAPI.registerNutrient({
id: 'omega3',
displayName: 'Omega-3',
color: 0x4AA3FF,
decayRate: 0.0012,
critical: 0.12,
low: 0.30,
excess: 0.90
})
See API.md on GitHub for the full event and binding reference.
⚙️ Requirements
| Minecraft | 1.21.1 |
| NeoForge | 21.1.x |
| MariesLib | v0.1.0-beta.4+ (new dependency — see note above) |
| Cloth Config | required at runtime |
| Patchouli | optional (in-game guide) |
| Java | 21 |
Support & feedback
Found a bug, have a suggestion, or need help?
- GitHub Issues: report bugs and feature requests
- Discord: https://discord.gg/EZnFJsfQup, support and development updates
Please include logs, screenshots, or reproduction steps when reporting issues.
Roadmap
Nourished is focused on nutrition gameplay: balance, effects, gut health, HUD/UX, multiplayer sync, and modpack-friendly config.
Planned (Nourished)
- Spice of Life (Onion) integration
- Extended Farmers Delight hooks
- Quest and progression integration
- Curios / accessories integration
- More preset profiles for casual vs hardcore servers
MIT licensed — free to use in modpacks, forks, and addons.
Ченджлог
0.2.6-beta.5Бета1.21.1 · 2 июля 2026 г.
Nourished: 0.2.6-beta.5
Changes
- Improved compatibility handling for modded food items with incomplete recipe definitions
- Refined fallback classification when recipe inheritance is unavailable
- Better logging and trace output for resolver cache misses
- Improved stability of nutrient inference pipeline for composite foods
Improvements
- More consistent behavior when recipe graphs are missing or incomplete
- Clearer distinction between:
- recipe-based classification
- inference-based classification
- cached external classification
- Milk Bottles Now Register Dairy vaules.
Fix / Known Issue Note: Source Inspector Debug Trace
Some Create cutting board recipes are not exposed as standard recipe entries.
The /source_inspector debug output may show incorrect values in Weighted Totals and Why X Won when an item’s classification is changed by a recipe-level override.
This is caused by the trace displaying intermediate keyword-scoring results even after a later override is applied. The override is correct and fully reflected in-game, this issue only affects the debug visualization.
If you see mismatched breakdowns (correct final category but inconsistent intermediate values), that’s the cause.
No gameplay impact. Debug trace fix coming in the next update.
Example:
createfood:hamburger_onion→ missing protein classificationcreatefood:hamburger_onion_lettuce→ works when ingredient chain is explicit
Cause
- Create cutting board recipes do not register as standard recipe sources, breaking inheritance resolution.
Impact
- Some composite foods may be misclassified or partially unclassified
Status
- Not fixable in this release
- Requires Synthetic Recipe Resolver (future system)
- Confirmed via trace dumps and reproduction
0.2.6-beta.4Бета1.21.1 · 28 июня 2026 г.
Nourished 0.2.6-beta.4
This update focuses on improving food classification accuracy, expanding modpack customization, and continuing the migration of shared infrastructure into the Marie ecosystem.
Highlights
Per-Item Nutrient Weights
Nourished now supports per-item nutrient weight files.
Instead of relying solely on tags, individual foods can now bias how strongly they contribute to multiple nutrient groups. This allows much finer balancing without creating large numbers of explicit overrides.
Bundled weight files are included for:
- Farmer's Delight
- Croptopia
- Pam's HarvestCraft 2
This should significantly improve the accuracy of many complex meals.
Improved Export & Configuration Tools
Export commands have been refactored and cleaned up.
A new SOURCE_CLASSIFICATIONS_README.md is bundled with the mod to document the source classification format and make creating overrides much easier for modpack authors.
The Food Override documentation has also been updated to better explain the available export workflows.
Better Classification Pipeline
Several internal improvements have been made to the classification system.
Highlights include:
- Recipe inheritance now runs through MarieLib's shared resolver.
- Expanded bundled nutrient tags.
- Improved multi-nutrient balancing through weight files.
- Reduced duplicate and incorrect bundled classifications.
These changes should result in more accurate nutrient assignments across supported food mods.
Architecture Changes
Shared infrastructure continues moving out of Nourished and into the Marie ecosystem.
This release removes several internal systems from Nourished in favor of MarieLib, reducing duplicated code and allowing future Marie-based mods to reuse the same framework.
Configuration validation is now handled through MarieLib, and recipe inheritance is provided by the shared runtime.
Compatibility Changes
Compatibility integrations have been separated from Nourished as part of the ongoing framework refactor.
Support for:
- Legendary Survival Overhaul
- Peak Stamina
- Spice of Life: Onion
has been moved into Marie's Compat, a new companion mod dedicated entirely to compatibility between Marie-based mods and other popular Minecraft mods.
Keeping compatibility in its own project allows integrations to be updated, expanded, and maintained independently of Nourished itself.
Marie's Compat will be available soon.
Upgrade Notes
If updating from 0.2.6-beta.3:
- Update MarieLib to 0.1.1-beta.2 or newer.
/nourished validatehas been replaced with:
/marieslib validate nourished
mod_compat.jsonhas been replaced bysource_classifications.json.- Old compatibility config options are no longer used and can safely be removed from your configuration files.
Thanks again to everyone testing beta builds and reporting issues. Many of the improvements in this release were driven directly by community feedback and testing.
For a complete technical breakdown of every change, API update, and internal refactor, see the project's GitHub changelog and wiki.
0.2.6-beta.3Бета1.21.1 · 22 июня 2026 г.
Nourished 0.2.6-beta.3
Requires MarieLib 0.1.1-beta.1+: update MarieLib on Modrinth before launching this version.
Highlights
- Food saturation now affects nutrient gain: high-saturation meals finally contribute more to nutrient bars than low-saturation snacks with the same hunger restore (see Fixed below)
- Nutrient export for modpack authors - categorized food reference files + GUI button +
/nourished export_all - Per-nutrient response curves: opt-in diminishing returns, confidence gating, synergy presets (off by default)
- Config validation framework: 10 validators, auto-run on load,
/nourished validate - Tag audit tooling - bundled tags vs live inference;
/nourished audit_tagswritestag_audit_report.json
Added
Nutrient export (modpack authors)
- MarieLib export resolver
nourished_nutrients— per-item nutrients + calories from the live classification cascade - Categorized export to
config/nourished/nourished_nutrients_export/(one JSON per nutrient key:fruits.json,proteins.json, etc.) via Export All Foods (Scanner tab, singleplayer with an active world) or/nourished export_all(op 2) /marieslib dump nourished_nutrients— single-file export toconfig/nourished/nourished_nutrients_export.json(MarieLibid/dataformat; same live data, different layout)config/nourished/OVERRIDES_README.md— auto-created on first load when missing; documentsfood_overrides.jsonand the export-to-override workflow
Per-nutrient response curves (opt-in, off by default)
NutrientCurveRegistrywith presets:FLAT,DIMINISHING,CONFIDENCE_GATED,SYNERGY, plus custom grid support- Override stack: bundled defaults →
config/nourished/nutrient_curves.json→ datapack → KubeJS (NourishedAPI.registerNutrientCurve) - General tab:
enableNutrientCurvesanddefaultCurvePreset - Nutrients tab: per-nutrient preset picker
- When curves are off, legacy flat scale/clamp math is unchanged
Config validation framework
- Ten MarieLib
ConfigValidatorregistrations (nutrients.json,colors.json,food_overrides.json,scanner_spec.json, source overrides/values, effects, food values, locks, raw food config) - Runs automatically after initial registry load; FAIL/WARN counts log to the server console
/nourished validate(op 2) — per-validator status and findings- Client toast on FAIL directing you to run the command
Tag audit tooling (modpack authors)
TagInferenceMismatchRule: bundled tag vs live runtime inferenceNamespaceBiasRule: bundled tag vs scanner namespace weights/nourished audit_tags,/nourished audit,/nourished tag(aliases, op 2)/marieslib audit_tags nourished- same quiet chat behavior- Writes
config/nourished/tag_audit_report.json; chat shows only the report path
Commands
/nourished set_all <value> <player>(op 2) - set every registered nutrient bar to the same fill (0.0–1.0) without clearing diminishing-returns memory. Complements/nourished setand/nourished reset
Fixed
Hunger & saturation (major gameplay fix)
- Food saturation now contributes to nutrient gain. Previously, saturation was hardcoded to zero in the diet-delta path — only hunger points were counted, so a dense high-saturation meal gave the same nutrient bump as a light snack restoring the same hunger. Saturation should now flows through correctly: richer, more filling foods contribute meaningfully more to nutrient bars.
- Affects all food eaten from this version forward with no config change required. Existing
nutrientGainScaleandnutrientGainPerBiteMaxsettings still apply on top of the corrected math.
Other fixes
- Legacy white (
-1/0xFFFFFFFF) built-in nutrient colors innutrients.jsonauto-repair on load to corrected bundled defaults; written back once - KubeJS startup scripts failing
requireValueKeyfor built-in or persisted nutrients — nutrients sync intoValueRegistryimmediately afterNutrientRegistry.loadDefinitions() - Custom nutrients via API/KubeJS (
registerExternal) not immediately classifiable — each registration now publishes toValueRegistryright away (startup and mid-game) - Food Scanner config tab showing a stale dark list panel after leaving a world
- Mis-tagged Fruits Delight items —
durian_flesh,hawberry_roll, andpear_with_rock_sugarmoved from proteins to fruits /nourished tagcrashing withNoClassDefFoundError: TagAuditReportWriteragainst published MarieLib jars
Changed
- Cloth Config screen refactored into per-tab category classes (behavior unchanged)
- Tag audit commands no longer spam findings into chat — only the report path is shown; use the JSON file for full detail
- Full categorized export is
/nourished export_all→nourished_nutrients_export/folder. There is no/nourished dump—/marieslib dump nourished_nutrientswritesnourished_nutrients_export.json(one file)
Upgrade notes (from 0.2.6-beta.2)
- Install MarieLib 0.1.1-beta.1+ before launching
- Nutrient colors in
nutrients.jsonauto-repair on first load — no manual edit needed OVERRIDES_README.mdis created on first launch if absent; existing edits are never overwritten- Nutrient response curves are off by default — enable
enableNutrientCurvesin General config only when you want curve-based scaling - Run
/nourished audit_tagsafter upgrading in a modpack world to generatetag_audit_report.jsonand review bundled-tag disagreements****
0.2.6-beta.2Бета1.21.1 · 19 июня 2026 г.
Nourished 0.2.6-beta.2
Added
Added full milestone system:
- 18 per-nutrient milestones
- Beginner, Journeyman, and Master tiers
perfectly_balancedcross-group milestone- Datapack support
Added Diet Screen Edit Mode:
- Press
Jwhile the Diet Screen is open - Drag, resize, and reposition UI elements
- Layout, scale, and opacity persist
- Press
Just A Note That the only two thing that are resizable with inside of the Diet Screen are recent meals & Eat More> I do plan on making the whole Diet Screen Configurable.
Added per-nutrient HUD color customization
- Config screen preview
- Updated default nutrient colors
Added template export commands:
/nourished export_effects_template/nourished export_values_template/nourished export_colors_template
Fixed
- Fixed decay rate config being ignored
- Fixed KubeJS nutrients/classifications not persisting after reload
- Fixed API registered classifications not applying
- Fixed HUD colors resetting on load
- Fixed per-nutrient decay overrides not applying
Changed
Nkey now opens the Diet Screen instead of the config screen
Requirements
⚠️ Requires MarieLib 0.1.0-beta.5+
0.2.6-beta.1-HotfixБета1.21.1 · 16 июня 2026 г.
Hotfix
Fixed
- Milestone advancement tab not appearing, bundled milestone JSON files were missing the required
marie_schema_versionfield, causing all 16 milestone definitions to fail datapack validation silently
No other changes from 0.2.6-beta.1. If you installed beta.1 and didn't see the "Nourished Milestones" tab in your Advancements screen, this fixes it.
Requires MarieLib 0.1.0-beta.4+
0.2.6-beta.1Бета1.21.1 · 16 июня 2026 г.
What's New
Milestones & Achievements
- 18 per-nutrient milestones across Fruits, Vegetables, Proteins, Grains, and Dairy, beginner → journeyman → master tier chains
- perfectly_balanced cross-group milestone fires when all groups reach master-tier cumulative intake
- Milestone advancement tree displays correctly in the Advancements tab under "Nourished Milestones"
- Food tooltips show "Counts toward: X beginner" for the next incomplete milestone tier
Datapack Effects
- Datapack effect overrides now correctly replace bundled effects instead of duplicating them
- /nourished export_effects_template: generates a starter effects datapack in your world folder
- /nourished export_values_template: generates a starter values datapack
- All template exports include comment* documentation fields
HUD & Colors
- Dairy color updated to cream (#E8D5B7)
- Grains color updated to amber (#D9A521)
Fixes
- Milestone system not loading from datapacks at all: registerReloadListener was never wired
- Milestone cumulative goals corrected to realistic values: 0.5 beginner / 2.0 journeyman / 5.0 master
- HUD bars showing white: nutrient colors from nutrients.json now correctly apply to bars and tooltips
Removed
- test_fruits example milestone replaced by the full tier chain
- Sugars milestone files removed: no sugars nutrient in this release, planned for a future version
Requires
- MarieLib 0.1.0-beta.3+
0.2.5-beta.5Бета1.21.1 · 14 июня 2026 г.
Major refactor: MarieLib required
This is the refactor release. Nourished now hard-depends on MarieLib 0.1.0-beta.1+. Install MarieLib before or alongside this version .
Shared infrastructure (scanner, tracking, datapacks, compat framework, registries, client widgets, most public API) lives in MarieLib. Nourished keeps nutrition gameplay, config, and datapacks.
What changed
- Architecture: duplicate API/registry/scanner code removed;
NourishedAPIdelegates to MarieLib. - Config: four module toggles renamed in
nourished-common.toml(legacy JSON keys still accepted). - Scanner/datapacks: bundled
scanner_spec.jsonuses MarieLib schema keys; delete old generated config to regenerate. - Compat: Nourished-owned compat catalog; LSO, Peak Stamina, and Spice of Life Onion hooks moved here.
- KubeJS: new server events and
NourishedAPIbindings (optional; Nourished still loads without KubeJS).
Fixed
- Preset registry init crash on load.
- Client code updated for MarieLib API renames.
- KubeJS events expose
event.playeron key nutrition events.
Upgrading from any earlier Nourished
- Install MarieLib: required from this version onward.
- Delete
config/nourished/scanner_spec.jsonbefore first launch. - Review
nourished-common.tomlif you customized module toggles (four keys renamed). - Run
/nourished reloador rejoin to refresh cached state.
Dev-Notes
So the reasoning behind this refactor is Nourished was becoming more of a framework than it was a nutrition mod I decided to split it, which will make it easier for me to work on features for nourished.
0.2.5-beta.4Бета1.21.1 · 9 июня 2026 г.
Nourished 0.2.5-beta.4
Multiplayer
Fixed a critical dedicated server synchronization issue where clients could simulate nutrition using local config values instead of the server-authoritative configuration. Multiplayer nutrition is now fully server-authoritative.
- Config snapshot is guaranteed to arrive before diet data on join, so simulation never starts with wrong values
Client state resets fully on disconnect server config no longer bleeds into the next session
/nourished reload now re-syncs config and full diet state to all connected players
Raw Food
- Added enableGutHealth toggle gut health tracking and recovery can now be disabled independently of raw food penalties
Stability
- Network protocol bumped to version 3 version mismatches between client and server now produce a clear warning and discard the packet instead of silently corrupting state
Notes
- For detailed technical changes, implementation notes, and developer-facing updates, see the full changelog on GitHub.
Комментарии
Загружаем…