跳到正文

Appetite: Nutrition

作者:skvipers

Eat varied food or pay for it: a diet system tracking five food groups that works out what modded food is made of from its tags and recipes.

收藏

截图

介绍

中文介绍正在准备中,下面暂时显示原文。

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.

  1. What a pack stated through Appetite’s data map. Overrules everything below.
  2. 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.
  3. 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.
  4. 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 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.

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.

常见问题

Appetite: Nutrition 支持哪些 Minecraft 版本?

Appetite: Nutrition 支持 Minecraft Java 版 1.21.1,可用的加载器:NeoForge。下载时注意选择和你游戏版本一致的文件。

Appetite: Nutrition 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。

评论

登录后评论和评分

skvipers 的其他作品

查看全部 →