Description
Appetite
Minecraft lets you live forever on one stack of steak. Appetite is the mod that notices.
Every meal you eat is sorted into food groups, each group drains as you play, and neglecting one starts to cost you. Nothing here is a chore bar: a player who eats a normal, varied diet will barely notice the mod is installed. It is the player who lives on a single crop for a week who finds out.
What it does
- Food groups. Five by default — fruits, vegetables, grains, proteins and sugars. Every group is held as a fraction of its own norm, so a pack can decide that protein is "full" at a different amount than grain and the player never has to know.
- Meals fill the groups they belong to, weighted by how nourishing the food is. Overeating one group past its norm is allowed, up to a configurable ceiling, with optional diminishing returns.
- Groups drain with activity, with time, or both. Two knobs cover a combat pack and a skyblock where nobody moves.
- A shortage costs you. An attribute penalty fades in as a group empties; a status effect switches on when it is nearly gone. Penalties only — there is no bonus for a perfect diet, because a bonus would recast the ordinary state as a deficit and turn the mod into a grind for a stat.
- A dietary rose on the HUD shows balance and nourishment at once, and looks like part of the game rather than a chart pasted over it.
- Hunger itself is tunable — exhaustion rate, passive drain, saturation caps — and works with the diet system switched off entirely, if the hunger knobs are all you came for.
Modded food is classified for you
This is the part that took the longest to get right, and it is what sets Appetite apart from hand-maintained lists of per-mod configuration.
An item is resolved through a chain, from certain to speculative. The first layer with an answer wins outright; layers are never blended, because a pack that took the trouble to classify something meant it.
- What a pack stated through Appetite's data map. Overrules everything below.
- Item tags. The common
c:foods/*tags classify most raw ingredients without anyone writing a line. Food marked as spoiled or poisonous fills a player without nourishing them. - Recipes. Food that carries no tag is worked out by walking its recipes back to ingredients that are already classified — which is how a hamburger, a plate of dumplings or a bowl of fried rice get sorted, none of which any mod tags, because no single tag would be true of them.
- A configurable fallback for whatever is left: spread evenly, or grant nothing.
On a pack built around eleven food mods — Farmer's Delight and its addons, Croptopia, Aquaculture, Caupona — 664 of 765 food items classify with no configuration at all, and recipes carry most of it: 461 from recipes against 199 from tags. On a 306-mod kitchen sink the figure is 199 of 290. What limits it there is not the walk but mods that neither tag their food nor ship recipes for it, and no amount of inference can read a dish that is assembled in code.
Every call the classifier makes is inspectable. /appetite why — available to every player, not
just operators — reports which layer claimed an item and what it matched on, because a guess nobody
can inspect is indistinguishable from a bug.
What a shortage costs
The defaults are deliberately mild, and every one of them is defined by datapack rather than hardcoded:
| Group | As it runs low | When it is nearly gone |
|---|---|---|
| Fruits | movement speed −15% | — |
| Vegetables | max health −20% | — |
| Grains | block break speed −25% | Mining Fatigue |
| Proteins | attack damage −25% | Weakness |
| Sugars | — | — |
Sugars carry no penalty on purpose: nobody needs candy to stay healthy, and one group without one shows a pack author that penalties are per group rather than mandatory.
Attribute penalties ramp — they fade in from nothing at their threshold to full strength at an empty group — so there is no cliff to fall off, and they come off the moment the diet recovers. Effects are applied without particles, keeping only the icon: a standing condition that sprays particles forever is unbearable to play with.
For modpack authors
Everything is data. Groups, what counts as which food, and what a shortage does are datapack files, not code.
- Ship your own groups. Three, or eight, instead of the default five — colour, icon, norm, decay rate and penalties included.
- Correct any classification with a data map entry keyed by item id or by tag. An entry written empty means "edible, but not food", which is how a decorative drink is excluded outright.
- Classify a whole pack in one pass.
/appetite export unmatchedwalks every registered food item, and writes the ones the chain had to guess at into a file that is already in the format you would correct them in. Fix the weights, drop it into your pack, done./appetite exportwrites all of them, guesses included.
There is a full reference for pack and mod authors in the repository, covering every field, every config option on both sides, and the Java API an addon can build on.
Commands
| Command | Who | What |
|---|---|---|
/appetite get |
anyone, for themselves | Show a player's diet |
/appetite why |
anyone | Explain how an item is classified |
/appetite set, add, reset |
operators | Adjust a player's diet |
/appetite export [unmatched] |
operators | Write compositions out as a data map |
/appetite hunger, exhaustion |
operators | Set vanilla hunger, for testing |
Honest limitations
- A recipe whose output is a list rather than a single stack cannot be read — the game exposes only one result and such recipes leave it empty. Cutting-board style recipes work this way.
- Food served from a placed block, where the edible item has no recipe of its own, is out of reach for the same reason.
- A mod that assembles its dishes in code, with neither tags nor recipes to read, cannot be inferred at all.
All three fall to the configured fallback, and all three are exactly what the export is for.
Compatibility and licence
Needed on both the client and the server: the server owns the diet, the client only draws it. Safe to add to an existing world.
Appetite is an independent, clean-room implementation of the food group idea. It shares no code, assets or configuration with any other diet mod, and is released under the Mozilla Public License 2.0 — anyone may use, fork, redistribute and bundle it, including in commercial modpacks, while changes to Appetite's own files stay open. Code that merely depends on its API is unaffected and may use any licence.
Bug reports and pull requests are welcome on GitHub.

