Перейти к содержимому
Mineforgian

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 г.

Banner

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.

Milestone Tree

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

In-Game 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.

Main GUI

📸 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 enableBlockHeavySources and enableBlockLightSource
  • 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.

sourceConsumed is a generic MarieLib event and does not expose nutrientKey or newValue — use nutrientChanged instead.

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?

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 classification
  • createfood: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 validate has been replaced with:
/marieslib validate nourished
  • mod_compat.json has been replaced by source_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_tags writes tag_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 to config/nourished/nourished_nutrients_export.json (MarieLib id/data format; same live data, different layout)
  • config/nourished/OVERRIDES_README.md — auto-created on first load when missing; documents food_overrides.json and the export-to-override workflow

Per-nutrient response curves (opt-in, off by default)

  • NutrientCurveRegistry with 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: enableNutrientCurves and defaultCurvePreset
  • Nutrients tab: per-nutrient preset picker
  • When curves are off, legacy flat scale/clamp math is unchanged

Config validation framework

  • Ten MarieLib ConfigValidator registrations (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 inference
  • NamespaceBiasRule: 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 set and /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 nutrientGainScale and nutrientGainPerBiteMax settings still apply on top of the corrected math.

Other fixes

  • Legacy white (-1 / 0xFFFFFFFF) built-in nutrient colors in nutrients.json auto-repair on load to corrected bundled defaults; written back once
  • KubeJS startup scripts failing requireValueKey for built-in or persisted nutrients — nutrients sync into ValueRegistry immediately after NutrientRegistry.loadDefinitions()
  • Custom nutrients via API/KubeJS (registerExternal) not immediately classifiable — each registration now publishes to ValueRegistry right 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, and pear_with_rock_sugar moved from proteins to fruits
  • /nourished tag crashing with NoClassDefFoundError: TagAuditReportWriter against 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_allnourished_nutrients_export/ folder. There is no /nourished dump/marieslib dump nourished_nutrients writes nourished_nutrients_export.json (one file)

Upgrade notes (from 0.2.6-beta.2)

  1. Install MarieLib 0.1.1-beta.1+ before launching
  2. Nutrient colors in nutrients.json auto-repair on first load — no manual edit needed
  3. OVERRIDES_README.md is created on first launch if absent; existing edits are never overwritten
  4. Nutrient response curves are off by default — enable enableNutrientCurves in General config only when you want curve-based scaling
  5. Run /nourished audit_tags after upgrading in a modpack world to generate tag_audit_report.json and 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_balanced cross-group milestone
    • Datapack support
  • Added Diet Screen Edit Mode:

    • Press J while the Diet Screen is open
    • Drag, resize, and reposition UI elements
    • Layout, scale, and opacity persist

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

  • N key 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_version field, 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; NourishedAPI delegates to MarieLib.
  • Config: four module toggles renamed in nourished-common.toml (legacy JSON keys still accepted).
  • Scanner/datapacks: bundled scanner_spec.json uses 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 NourishedAPI bindings (optional; Nourished still loads without KubeJS).

Fixed

  • Preset registry init crash on load.
  • Client code updated for MarieLib API renames.
  • KubeJS events expose event.player on key nutrition events.

Upgrading from any earlier Nourished

  1. Install MarieLib: required from this version onward.
  2. Delete config/nourished/scanner_spec.json before first launch.
  3. Review nourished-common.toml if you customized module toggles (four keys renamed).
  4. Run /nourished reload or rejoin to refresh cached state.

Full changelog

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.

Комментарии

Загружаем…