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.
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.
c:foods/* tags classify most raw ingredients without anyone writing a
line. Food marked as spoiled or poisonous fills a player without nourishing them.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.
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.
Everything is data. Groups, what counts as which food, and what a shortage does are datapack files, not code.
/appetite export unmatched walks 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 export writes
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.
| 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 |
All three fall to the configured fallback, and all three are exactly what the export is for.
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.