All Mods Resource Packs Data Packs Shaders Modpacks Plugins
A Balanced Diet

A Balanced Diet

by pawjwp • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

About

A Balanced Diet is a fork of the Diet mod, which facilitates the creation and management of dietary food groups in Minecraft. Diet comes with a default configuration that creates five classical food groups (fruits, grains, vegetables, proteins, and sugars). The mod is highly configurable; users and modpack developers can define their own food groups, classifications, diet effects, notifications, etc.

This fork was created to add some additional clarity, balance, and quality of life features. These would have been made as a PR to the original mod, but the author stated the mod is not likely to have any further 1.20.1 updates. These new features are almost entirely optional and data-driven, and include a notification system for crossing specified thresholds, quality overlays to the diet bars that show what thresholds start providing positive or negative effects, and per-food nutrition definition.

Downloads

Available on Modrinth Available on Curseforge

Features

Food Groups

Food groups are custom dietary groups that represent the types of food that you have eaten. Each group has a value ranging between 0% and 100% depending on how much of that particular category a player has eaten. These values increase depending on what types of food a player eats and every group gradually decays when the player uses up their hunger bar.

By default, Diet comes with five classical food groups: Fruits, Grains, Proteins, Vegetables, and Sugars. Nutrition values are typically determined by tags. However, if enabled in the config, they can be set per-food instead.

By creating data files, users and modpack developers can create their own custom food groups. Data files can be loaded as part of a datapack or using a mod like KubeJS or Open Loader. Configurable options include:

  • Name
  • Item Icon
  • Hexcode Color
  • Ordering
  • Default Value
  • Gain Multiplier
  • Decay Multiplier
  • Beneficial or not

Dietary Effects

Dietary effects are custom rewards or penalties applied to players based on certain, configurable food group values. These effects are defined in diet suites, which are created through data files in the same way as food groups. A diet suite lists the food groups it uses along with the effects that come from them.

Possible effects can include any registered potion effect, vanilla and modded, as well as modifying attributes directly (i.e. increasing maximum health by an arbitrary value). The conditions for these effects are highly configurable, including checking specific values, checking only subsets of groups, applying effects cumulatively for each matching test, and much more.

Quality View

The quality view shows the "quality" of a food group, which indicates to players what thresholds will provide positive or negative effects. Using the qualityDisplayMode option in the client config, it can be set to appear upon hovering over a group bar, by clicking a button in the corner of the Diet screen, both, or neither (the default).

Quality values can be defined for any effect in a diet suite using the quality field, which is set to a string containing a hex color code (ex: "#3FDF3F"). This color is drawn over that region of the bar whenever the quality view is visible.

Per-Food Nutrition

If the enableDataFoodValues option is enabled in the server config, nutrition values can be set per-food rather than generated based on tags. Diet will reference data files at diet/food_values to get food values on a per-food basis, which are used in place of the tag-based ones.

The default datapack has values configured for ~20 mods. The list of compatible mods in these data files can be viewed here.

Notifications

Notifications are an optional system that alerts players in chat when their food group values cross a threshold. They are customized from within a diet suite by adding a notification object to a diet effect. Configurable options include:

  • Notification ID
  • Message (uses translation keys)
  • Notification Sets (used for bulk-muting)
  • Trigger (controls what causes the notification to appear)
  • Default Frequency (how many times the notification will appear)
    • always, notification will appear every time its trigger is met
    • once, notification will appear once and then set itself to never
    • never, notification will not appear unless triggered by testing commands

If a notification's frequency is set to always, it will provide a prompt for the player to mute it. When clicked, the mute menu opens in chat with options to mute this notification, all notifications in the same set, all notifications for the same food group, or all diet notifications. Players can also adjust their notification settings manually using the /diet notifications commands and the entire notification system can be disabled with the notificationsEnabled option in the server config.

Further Reading

Please refer to the wiki for more detailed information about the mod's features, including food groups, food categorization, per-food nutrient values, and diet suites. Examples of most mod features in-action can be found here, in the data files of my modpack, Desolate Planet.

Commands

Diet registers a few commands to help aid debugging and server management.

  • /diet
    • get <player> <group>
    • set <player> <group> <value>
    • add <player> <group> <value>
    • subtract <player> <group> <value>
    • reset <player>
    • suite <player> [<suite>]
    • pause <player>
    • resume <player>
    • export <filter> <argument>
    • notify <target> <notification_id>
    • notifications list
    • notifications all
    • notifications group <group_id>
    • notifications set <set_id>
    • notifications message <message_id>
    • notifications options <message_id>
    • notifications reset

Support

Please report all bugs, issues, and feature requests using the issue tracker on the mod's GitHub page. Please do not make issues on the original mod's GitHub page for features only present in this fork.

If preferred, I am active in the Discord server for my current modpack, Desolate Planet. Feel free to ping me there and I should respond when able.

License

All source code and assets are licensed under LGPL 3.0.

Donations

Donations to the original mod's author can be sent through Ko-fi.

All proceeds from the ad revenue on this project will be donated to GiveWell.

Compatibility

The standard "five food groups" tag system supports many mods, which can be viewed here, in the original mod's description.

A smaller subset of mods are supported by the custom food values system. A list of these mods can be found in the mod's default datapack. These default values assume a decreased drain rate for fruits and vegetables, and greatly increased drain rates for sugars.

If you would like to request additional support for this system, please open an issue or open a pull request to contribute directly.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
1.20.x
Forge
24d ago 1
1.20.x
Fabric
24d ago 1
1.20.x
Forge
5mo ago 1
1.20.x
Fabric
5mo ago 1
1.20.x
Forge
6mo ago 1
1.20.x
Fabric
6mo ago 1
1.20.x
Forge
6mo ago 1
1.20.x
Fabric
6mo ago 1
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG.md).

## [3.1.0+1.20.1] - 2026.10.02
This update completes some partially implemented features related to diet suite switching, allows diet gain at full hunger, and fixes multiplayer syncing with custom food values enabled.
### Added
  • Diet suites can now be switched in-game
  • /diet suite <player> <suite> switches the player to another suite
  • /diet suite <player> shows a player's current suite
  • Food groups in both suites keep their values, while any new groups start at their default_value
  • A player's suite is now saved with the rest of their diet data and persists through death and reloads
  • If a suite cannot be loaded, players are moved back to the default suite
  • The DietApi methods getSuite, setSuite, and getSuites are now functional, so other mods can read and change a player's suite
  • Tooltips and eaten food only apply to groups in the selected suite
  • New server config options:
  • defaultSuite lets the default suite be changed to something other than builtin by default
  • requireHungerGain restores the previous behavior where food only increases diet values if it also increases the player's hunger
  • Added Spanish translation, thanks to [elbuda](https://github.com/elbuda)
### Changed
  • Foods can now increase diet values even if they don't increase hunger (meaning foods like golden apples and chorus fruit can continuously increase diet values)
  • The default diet suite now gives Hunger III instead of Hunger IV at high sugars
### Fixed
  • Fixed food value syncing on multiplayer servers, tooltips on the client should now show the right food values.
  • Fixed food_values files loading in an arbitrary order, they now load like vanilla tags
  • First, the version of a file from all datapacks is combined in the datapacks' order
  • replace will now discard only lower priority versions of the same file
  • Values from higher priority datapacks override lower ones
  • Errored files are now skipped earlier to avoid possibly overriding other files
  • Fixed some foods having the wrong food_values
  • Farmer's Delight cabbage
  • Farmer's Delight minced beef
  • Fixed the wrong error message appearing for an invalid status effect
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG.md).

## [3.1.0+1.20.1] - 2026.10.02
This update completes some partially implemented features related to diet suite switching, allows diet gain at full hunger, and fixes multiplayer syncing with custom food values enabled.
### Added
  • Diet suites can now be switched in-game
  • /diet suite <player> <suite> switches the player to another suite
  • /diet suite <player> shows a player's current suite
  • Food groups in both suites keep their values, while any new groups start at their default_value
  • A player's suite is now saved with the rest of their diet data and persists through death and reloads
  • If a suite cannot be loaded, players are moved back to the default suite
  • The DietApi methods getSuite, setSuite, and getSuites are now functional, so other mods can read and change a player's suite
  • Tooltips and eaten food only apply to groups in the selected suite
  • New server config options:
  • defaultSuite lets the default suite be changed to something other than builtin by default
  • requireHungerGain restores the previous behavior where food only increases diet values if it also increases the player's hunger
  • Added Spanish translation, thanks to [elbuda](https://github.com/elbuda)
### Changed
  • Foods can now increase diet values even if they don't increase hunger (meaning foods like golden apples and chorus fruit can continuously increase diet values)
  • The default diet suite now gives Hunger III instead of Hunger IV at high sugars
### Fixed
  • Fixed food value syncing on multiplayer servers, tooltips on the client should now show the right food values.
  • Fixed food_values files loading in an arbitrary order, they now load like vanilla tags
  • First, the version of a file from all datapacks is combined in the datapacks' order
  • replace will now discard only lower priority versions of the same file
  • Values from higher priority datapacks override lower ones
  • Errored files are now skipped earlier to avoid possibly overriding other files
  • Fixed some foods having the wrong food_values
  • Farmer's Delight cabbage
  • Farmer's Delight minced beef
  • Fixed the wrong error message appearing for an invalid status effect
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG).

## [3.0.2+1.20.1] - 2026.05.18
This is a bugfix update to fix a problem from the previous major update. See the [3.0 Changelog](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG.md#3001201---20260505) for details about the new features.
### Fixed
  • Fixed a command permission registration issue that stopped clients from joining servers
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG).

## [3.0.2+1.20.1] - 2026.05.18
This is a bugfix update to fix a problem from the previous major update. See the [3.0 Changelog](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG.md#3001201---20260505) for details about the new features.
### Fixed
  • Fixed a command permission registration issue that stopped clients from joining servers
The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG.md).

## [3.0.1+1.20.1] - 2026.05.07
This is a minor update to fix a few problems from the previous major update. See the [3.0 Changelog](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG.md#3001201---20260505) for details about the new features.
### Added
  • Drinks and other non-food edible items can now provide nutrition if present in the food_values config. Items must use the eating or drinking animation to be considered edible.
  • Milk buckets now provide protein when data-driven food values are enabled in the config.
### Fixed
  • Fixed some foods having the wrong food_values
  • Vanilla beetroot soup
  • Farmer's Delight tomato sauce
  • Farmer's Delight cabbage
  • Fixed some typos in the default food_values that prevented some modded foods from registering nutrition properly
  • 10 food items from Corn Delight
  • 5 food items from Vegan Delight
  • 2 food items from Cultural Delights

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG).

## [3.0.1+1.20.1] - 2026.05.07
This is a minor update to fix a few problems from the previous major update. See the [3.0 Changelog](https://github.com/pawjwp/diet/blob/1.20.x/CHANGELOG.md#3001201---20260505) for details about the new features.
### Added
  • Drinks and other non-food edible items can now provide nutrition if present in the food_values config. Items must use the eating or drinking animation to be considered edible.
  • Milk buckets now provide protein when data-driven food values are enabled in the config.
### Fixed
  • Fixed some foods having the wrong food_values
  • Vanilla beetroot soup
  • Farmer's Delight tomato sauce
  • Farmer's Delight cabbage
  • Fixed some typos in the default food_values that prevented some modded foods from registering nutrition properly
  • 10 food items from Corn Delight
  • 5 food items from Vegan Delight
  • 2 food items from Cultural Delights

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/illusivesoulworks/diet/blob/1.20.x/CHANGELOG.md).

## [3.0.0+1.20.1] - 2026.05.05
This update was made by [Pawjwp](https://github.com/pawjwp) to add some clarity, balance, and quality of life features. This will be published on a fork of the Diet mod.
### Added
  • Tooltips
  • Each diet group now has a tooltip showing the effects that come from it, in addition to the aggregate tooltip at the top of the screen
  • Quality view (optional, data-driven)
  • Adds a system to show the “quality” of a food group to indicate to players what thresholds will provide positive or negative effects.
  • The quality display can be configured to appear upon hovering over a group bar, by clicking a button in the corner of the Diet screen, both, or neither.
  • Quality values can be defined for any effect in a diet suite using the quality field, which is set to a string containing a hex color code (ex: "#3FDF3F"). This value is drawn over that region of the bar whenever the quality view is visible.
  • Per-food nutrient control (optional, data-driven)
  • Added a config option that allows nutrition values to be set per-food rather than generated based on tags. When enabled, Diet will reference datapack files at /diet/food_values to get food values on a per-food basis. These are used in place of the tag-based ones.
  • The default datapack has default values configured for ~20 mods, more may be added in the future or upon request. These default values assume decreased drain rate for fruits and vegetables, and greatly increased drain rates for sugars.
  • Notification system (optional, data-driven)
  • Adds an optional notification system, customizable from within a diet suite. This is handled through a notification object that can be added to each effect block in the suite.
  • Fields:
  • notification_id (required)
  • message, uses translation keys and %s will be replaced by diet group name (required)
  • notification_sets, an array of strings used for bulk-muting
  • trigger, what change causes the notification to appear, can be one of:
  • enter, when the player enters the specified threshold (default if omitted)
  • rise_into, when the player enters the specified threshold from below
  • fall_into, when the player enters the specified threshold from above
  • rise_through, when the player enters or passes through the specified threshold from below
  • fall_through, when the player enters or passes through the specified threshold from above
  • exit, when the player leaves the specified threshold
  • rise_out, when the player leaves the specified threshold
  • fall_out, when the player leaves the specified threshold
  • all, when the player enters or exits the specified threshold
  • default_frequency, how many times the notification will appear. A config option sets the default values for when default_frequency is omitted.
  • always, notification will appear every time its trigger is met
  • once, notification will appear once and then set itself to never
  • never, notification will not appear unless triggered by testing commands
  • Effects can declare a notification without declaring any attributes or status effects
  • Notifications appear in chat based on their triggers and frequency. If a notification’s frequency is set to once, it will set itself to never after being triggered the first time. If a notification’s frequency is set to always, it will provide a prompt for the player to mute it (set its frequency to never). When clicked, the mute menu opens in chat with the following options:
  • Mute this, which mutes this specific notification ID
  • Mute set, which mutes all of the notifications that are part of the selected set
  • Mute group, which mutes all notifications with the same food group as the current notification
  • Mute all, which mutes all diet notifications
  • Clicking one of these buttons runs the new /diet notifications command with the appropriate parameters, but these commands can be run by the player to manually adjust their notification settings. The options for the command are:
  • /diet notifications list, which will list the notification defaults and current settings for each individual message ID
  • /diet notifications all, which will change notification frequency for all notifications
  • /diet notifications group <group_id>, which will change notification frequency for everything with the specified group ID
  • /diet notifications set <set_id>, which will change notification frequency for everything with specified set ID
  • /diet notifications message <message_id>, which will change notification frequency for the specified message ID
  • /diet notifications options <message_id>, which will show the mute menu for the specified message ID
  • /diet notifications reset, which will reset all notifications to their configured defaults (this will cause once notifications to re-trigger)
  • An additional new command has been added to manually test notifications. /diet notify <target> <notification_id> will trigger the notification with the specified ID.
  • New config options have been added to the server config:
  • notificationsEnabled, to enable or disable the entire notification system
  • notificationsDefaultFrequency, to set the frequency if the default_frequency field is omitted from a notification block in the diet suite
  • The default diet suite has been updated to include notifications for entering each of its three effects, and a new localization file was created under the “example” namespace to register the messages.

The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html).

This is a copy of the changelog for the most recent version. For the full version history, go [here](https://github.com/illusivesoulworks/diet/blob/1.20.x/CHANGELOG.md).

## [3.0.0+1.20.1] - 2026.05.05
This update was made by [Pawjwp](https://github.com/pawjwp) to add some clarity, balance, and quality of life features. This will be published on a fork of the Diet mod.
### Added
  • Tooltips
  • Each diet group now has a tooltip showing the effects that come from it, in addition to the aggregate tooltip at the top of the screen
  • Quality view (optional, data-driven)
  • Adds a system to show the “quality” of a food group to indicate to players what thresholds will provide positive or negative effects.
  • The quality display can be configured to appear upon hovering over a group bar, by clicking a button in the corner of the Diet screen, both, or neither.
  • Quality values can be defined for any effect in a diet suite using the quality field, which is set to a string containing a hex color code (ex: "#3FDF3F"). This value is drawn over that region of the bar whenever the quality view is visible.
  • Per-food nutrient control (optional, data-driven)
  • Added a config option that allows nutrition values to be set per-food rather than generated based on tags. When enabled, Diet will reference datapack files at /diet/food_values to get food values on a per-food basis. These are used in place of the tag-based ones.
  • The default datapack has default values configured for ~20 mods, more may be added in the future or upon request. These default values assume decreased drain rate for fruits and vegetables, and greatly increased drain rates for sugars.
  • Notification system (optional, data-driven)
  • Adds an optional notification system, customizable from within a diet suite. This is handled through a notification object that can be added to each effect block in the suite.
  • Fields:
  • notification_id (required)
  • message, uses translation keys and %s will be replaced by diet group name (required)
  • notification_sets, an array of strings used for bulk-muting
  • trigger, what change causes the notification to appear, can be one of:
  • enter, when the player enters the specified threshold (default if omitted)
  • rise_into, when the player enters the specified threshold from below
  • fall_into, when the player enters the specified threshold from above
  • rise_through, when the player enters or passes through the specified threshold from below
  • fall_through, when the player enters or passes through the specified threshold from above
  • exit, when the player leaves the specified threshold
  • rise_out, when the player leaves the specified threshold
  • fall_out, when the player leaves the specified threshold
  • all, when the player enters or exits the specified threshold
  • default_frequency, how many times the notification will appear. A config option sets the default values for when default_frequency is omitted.
  • always, notification will appear every time its trigger is met
  • once, notification will appear once and then set itself to never
  • never, notification will not appear unless triggered by testing commands
  • Effects can declare a notification without declaring any attributes or status effects
  • Notifications appear in chat based on their triggers and frequency. If a notification’s frequency is set to once, it will set itself to never after being triggered the first time. If a notification’s frequency is set to always, it will provide a prompt for the player to mute it (set its frequency to never). When clicked, the mute menu opens in chat with the following options:
  • Mute this, which mutes this specific notification ID
  • Mute set, which mutes all of the notifications that are part of the selected set
  • Mute group, which mutes all notifications with the same food group as the current notification
  • Mute all, which mutes all diet notifications
  • Clicking one of these buttons runs the new /diet notifications command with the appropriate parameters, but these commands can be run by the player to manually adjust their notification settings. The options for the command are:
  • /diet notifications list, which will list the notification defaults and current settings for each individual message ID
  • /diet notifications all, which will change notification frequency for all notifications
  • /diet notifications group <group_id>, which will change notification frequency for everything with the specified group ID
  • /diet notifications set <set_id>, which will change notification frequency for everything with specified set ID
  • /diet notifications message <message_id>, which will change notification frequency for the specified message ID
  • /diet notifications options <message_id>, which will show the mute menu for the specified message ID
  • /diet notifications reset, which will reset all notifications to their configured defaults (this will cause once notifications to re-trigger)
  • An additional new command has been added to manually test notifications. /diet notify <target> <notification_id> will trigger the notification with the specified ID.
  • New config options have been added to the server config:
  • notificationsEnabled, to enable or disable the entire notification system
  • notificationsDefaultFrequency, to set the frequency if the default_frequency field is omitted from a notification block in the diet suite
  • The default diet suite has been updated to include notifications for entering each of its three effects, and a new localization file was created under the “example” namespace to register the messages.

A Balanced Diet Icon
Download A Balanced Diet
Select game version
Select platform