Vanilla tracks a hidden "exhaustion" counter per player. Sprinting, jumping, mining, attacking, swimming, taking damage, and regenerating health all add to it; every 4.0 points of exhaustion costs one saturation point, and once saturation runs out, one half-shank of food.
Hunger Dial multiplies every amount added to that counter by one number you control. In Minecraft 1.21.1, every source of player exhaustion funnels through a single method:
Player#causeFoodExhaustion(float) — the entry point vanilla and other mods use for movement,
combat, mining and damage — forwards straight to FoodData#addExhaustion(float).FoodData#tick(Player) charges the two natural-regeneration costs (saturated healing and the
slow 80-tick heal) by calling addExhaustion as well.Hunger Dial scales the argument of FoodData#addExhaustion(float) right at the start of that
method, so every source is scaled exactly once and nothing is scaled twice — including
exhaustion added by other mods, as long as they go through the vanilla methods above. Zero,
negative and non-finite amounts pass through untouched.
What it does not change:
FoodData#setExhaustion(float) directly instead of adding to it
(see Known limitations below).Vanilla's hunger pace is a fixed difficulty knob every player experiences the same way. Some modpacks make survival much more demanding — more traveling, more combat, more building — without touching food supply to match, and hunger ends up feeling like a chore rather than a challenge. Hunger Dial gives the pack (or the server operator) one number to retune that pace, in either direction, without reworking every food item's values by hand.
| Multiplier | Effect |
|---|---|
0.0 |
never hungry — exhaustion never accumulates |
0.5 |
hunger drains at half speed |
0.65 |
35% less hunger (the shipped default) |
1.0 |
vanilla, unchanged |
2.0 |
hunger drains twice as fast |
The allowed range is 0.0–10.0.
config/hungerdial.json, created with defaults the first time the mod starts:
{
"_comment": "1.0 = vanilla, 0.65 = 35% less hunger, 0.5 = half, 0.0 = never hungry, 2.0 = double; range 0.0-10.0; change in game with /hungerdial set <value>",
"exhaustionMultiplier": 0.65
}
exhaustionMultiplier must be a finite number between 0.0 and 10.0. A value out of range, a
wrong type, or malformed JSON produces exactly one warning in the server log, falls back to
0.65, and leaves the file on disk untouched — a hand-edit is never silently overwritten by a
typo elsewhere in the file. The effective multiplier is also logged once at startup, e.g.
Exhaustion multiplier 0.65 (35% less hunger).
/hungerdial, permission level 2 (operators), and it also works from the server console.
| Command | Effect |
|---|---|
/hungerdial |
show the current multiplier |
/hungerdial get |
same |
/hungerdial set <0.0-10.0> |
apply immediately and write it to the config file |
/hungerdial reload |
re-read the config file from disk |
set keeps whatever _comment the file already had. All feedback is plain literal text rather
than translation keys, so a client without the mod installed still reads the response correctly
instead of seeing a raw, unresolved translation key.
>=0.19.1, and
Java 21.FoodData; since Hunger Dial changes those real values rather than only how they're displayed,
AppleSkin's overlay shows accurate, already-scaled numbers with no special integration needed.Player#causeFoodExhaustion(float) or FoodData#addExhaustion(float) directly. A mod's custom
action (e.g. a special ability that costs hunger) is scaled exactly like a vanilla one would be.FoodData#setExhaustion(float) directly — replacing the
exhaustion value outright instead of adding to it — bypasses Hunger Dial's scaling entirely,
since nothing is added through the scaled method in that case.Does it change food or saturation values? No. Item nutrition and saturation are untouched; only the rate exhaustion accumulates at is scaled.
Do players need it installed? No. It's optional on clients — only the server (or singleplayer world) needs it, and unmodded clients can join normally.
Can I make hunger harder instead of easier?
Yes. Set exhaustionMultiplier above 1.0 (up to 10.0) — 2.0 doubles the drain, for example.
Can I change the multiplier without restarting the server?
Yes. /hungerdial set <value> applies instantly and saves to the config file; /hungerdial reload re-reads the file from disk if you'd rather hand-edit it.
Will editing the config file by hand ever get overwritten?
Only if the value you write is invalid (wrong type, malformed JSON, or outside 0.0–10.0). A
valid hand-edit picked up by /hungerdial reload (or the next server start) is respected as-is.