HungerDial

Quick rating

Community listing page, reviews here may not be monitored by the author.

HungerDial

No reviews yet

Makes vanilla hunger drain slower or faster by one config multiplier applied to every exhaustion source: sprinting, mining, combat, damage, and natural regen. Default 35% slower. Optional on clients.

Mod Loaders
Minecraft

About

Description

What it does

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:

  • Food items — nutrition and saturation values stay exactly as the pack defines them.
  • The vanilla exhaustion cap (40.0) and the 4.0-per-food-point conversion.
  • Anything a mod does by writing FoodData#setExhaustion(float) directly instead of adding to it (see Known limitations below).

Why

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.

Example values

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.010.0.

Configuration

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).

Commands

/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.

Server / client requirements

  • Required on the server, and in singleplayer (which runs its own integrated server).
  • Optional on clients — Hunger Dial registers no packets, no registries and no client-side code, so a vanilla or unmodded client can join a server running it and will simply see the correct, already-scaled food bar.
  • Requires Fabric API (used only for command registration), Fabric Loader >=0.19.1, and Java 21.

Compatibility

  • Works with AppleSkin. AppleSkin reads the real, live exhaustion and saturation values from 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.
  • Scales other mods' exhaustion too, as long as they add exhaustion the vanilla way — through 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.
  • Known limitation: a mod that calls 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.

FAQ

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.010.0). A valid hand-edit picked up by /hungerdial reload (or the next server start) is respected as-is.