Compatibility
Minecraft: Java Edition
Platforms
Supported environments
Links
Creators
Details
Peak Stamina
Replaces vanilla sprinting mechanics with a resource management system based on fatigue and hunger. Comes with compat with tough as nails and cold sweat (parcool as well but in alpha). If that is not enough or you would like to define more penalties, refer to the guide below under advanced features.
Features
- Action Costs: Stamina is drained by sprinting, jumping, attacking, mining, swimming, climbing, and using items.
- Fatigue: Dropping below 25% stamina and staying there for a configurable amount of time accumulates "Fatigue", which temporarily reduces your maximum stamina cap.
- Food Poisoning: Eating bad food can apply a lingering "Poison" penalty (Purple bar) that blocks your max stamina until it decays.
- Weight System: Carrying heavy items reduces your max stamina. The more you carry, the greater the penalty.
- Climbing: Ladders consume stamina. Holding Shift allows for a "Slow Climb" (40% speed) that costs no energy and allows you to regen stamina at a slower rate.
- Hunger Penalty: Low food levels reduce your maximum stamina cap.
- HUD: A custom, low-profile stamina bar with visual indicators for fatigue, poison, weight, and penalties.

Base Configuration
All values are adjustable in config/peak_stamina-common.toml.
General Settings
enableStamina(Default:true): Master switch for the mod.disableInCreative(Default:true): If true, players in Creative mode will not consume or use the stamina system.disableInSpectator(Default:true): If true, players in Spectator mode will not consume or use the stamina system.initialMaxStamina(Default:100.0): The starting maximum stamina value for all players. This sets the base attribute value that penalties and modifiers are calculated against.
Action Depletion (Cost)
0 to disable any of these
depletionSprint(Default:0.15): Drain per tick while running.depletionJump(Default:0.85): Instant drain on jump.depletionAttack(Default:3.45): Instant drain on weapon swing.depletionBlockBreak(Default:1.1): Instant drain on block break.depletionClimb(Default:0.7): Drain per tick on ladders.depletionSwim(Default:0.05): Drain per tick in water.
Recovery
recoveryPerTick(Default:0.36): Base regeneration speed.recoveryRestMult(Default:1.45): Multiplier when standing still.recoveryClimbMult(Default:0.7): Multiplier when resting on a ladder.recoveryDelay(Default:50): Ticks before regen starts after an action.
Penalties & Limits
fatigueThreshold(Default:0.25): Stamina % where fatigue begins accumulating.fatigueDurationToPenalty(Default:180): Ticks spent in critical stamina before fatigue penalty begins.maxExertionPenalty(Default:30.0): Max stamina lost due to fatigue.maxHungerPenalty(Default:30.0): Max stamina lost due to starvation.hungerPenaltyThreshold(Default:6): Food level (3 shanks) where penalties begin.minMaxStamina(Default:10.0): Hard floor for max stamina.penaltyRecoveryDelay(Default:100): Ticks before fatigue heals after resting.penaltyBuildupRate(Default:0.1): How much penalty accumulates per tick when conditions worsen.penaltyDecayRate(Default:0.05): How much penalty recovers per tick when conditions improve.
Advanced Features
Weight System
The Weight System tracks the total weight of items in your inventory and applies stamina penalties when you carry too much.
Related Configs:
enableWeightSystem(Default:true): Enable/disable weight calculations.weightPenaltyThreshold(Default:125.0): Weight where penalty starts (0%).weightPenaltyLimit(Default:400.0): Weight where penalty reaches maximum (100%).maxWeightPenaltyAmount(Default:40.0): Max stamina reduction at full weight.maxWeightRecursionDepth(Default:3): How deep to scan nested containers.autoWeightBase(Default:10.0): Base weight for unlisted items.
How It Works:
- Every item has a weight calculated from three priority tiers:
- Explicit Item Weights (
customItemWeights) - Tag Weights (
customTagWeights) - Auto-Weigher (Heuristic:
autoWeightBase / MaxStackSize × Count)
- Explicit Item Weights (
- Containers (shulkers, backpacks) include the weight of their contents
- Weight penalty scales linearly from threshold to limit
Auto-Weigher Formula:
Weight = (autoWeightBase / MaxStackSize) × Count
With autoWeightBase = 10.0:
- 1 Sword (stack 1) = 10.0 weight
- 16 Ender Pearls (stack 16) = 10.0 weight (0.625 each)
- 64 Dirt (stack 64) = 10.0 weight (0.156 each)
Priority 1: Explicit Item Weights
Format: "modid:item;weight"
Each individual item has this weight (not per stack).
customItemWeights = [
"minecraft:netherite_chestplate;15.0",
"minecraft:diamond_sword;4.0",
"minecraft:obsidian;1.2"
]
Priority 2: Tag Weights
Format: "tag;weight"
Each individual item in the tag has this weight.
customTagWeights = [
"forge:ores;0.25",
"forge:storage_blocks;0.15",
"forge:ingots;0.2"
]
Custom Container Paths
For backpack mods that store items in NBT.
Format: "modid:item;path.to.list"
Built-in support: Shulker Boxes, Curios, PackedUp (most backpack mods should work by default but if some dont, add it to this list)
customContainerPaths = [
"somemod:satchel;Inventory",
"anothermod:backpack;StorageTag.Items"
]
Weight Limit Attribute
Increase weight capacity using /stamina attr weight_limit <value>
- Adds 0.5 weight capacity per point to both threshold and limit
- Example: +20 weight_limit = +10 threshold, +10 limit
Item Depletion Costs
You can assign specific stamina costs to any item in the game. You can now stack multiple cost types on a single item (e.g., a shield that costs stamina to hold AND to block).
Related Configs:
itemCosts: The list of item rules.itemInterruptionCooldown(Default:80): If you run out of stamina while using an item, a cooldown is applied to prevent spamming/glitching.
Format: "ItemId;TYPE;Cost;TYPE;Cost..."
Types:
- TICK: Drains stamina continuously while the item is being used (e.g., drawing a bow, holding up a shield). If you run out, the action is cancelled.
- BLOCK: Drains stamina only when a Shield successfully blocks damage. Now supports dynamic scaling. (2 Arguments: Base Cost; Damage Multiplier)
- USE: Drains stamina instantly upon right-clicking (e.g., throwing a Snowball).
Examples:
Shield: Costs 0.2/tick to hold up. When hit, drains 2.0 flat stamina PLUS 80% of the incoming damage amount.
"minecraft:shield;TICK;0.2;BLOCK;2.0;0.8"
Bow: Costs 0.5/tick to draw and hold.
"minecraft:bow;TICK;0.5"
Fishing Rod: Costs 3.0 stamina to cast.
"minecraft:fishing_rod;USE;3.0"
Consumables System
You can now chain multiple effects onto a single item to create complex interactions.
Related Configs:
consumable_values: The list of attribute modifiers applied when eating.penaltyReliefDuration(Default:25): Seconds the "Resistance" buff lasts after eating a relief item.maxPoisonPenalty(Default:40.0): Max stamina blocked by food poisoning.poisonDecayDelay(Default:45): Seconds to wait after eating before poison starts to heal.poisonDecayRate(Default:0.05): How fast the poison bar drains after the delay.
Format: "ItemId;TYPE;Args...;TYPE;Args..."
Types:
- INSTANT;Amount
- Instantly restores Amount stamina.
- POISON;Amount
- Applies a "Food Poisoning" penalty (Purple Bar) of Amount. This blocks Max Stamina and decays over time and after
poisonDecayDelayseconds.
- Applies a "Food Poisoning" penalty (Purple Bar) of Amount. This blocks Max Stamina and decays over time and after
- REGEN;Amount;Seconds
- Modifies your regeneration speed for Seconds.
- Positive (0.2): Increases speed (+20%).
- Negative (-0.3): Decreases speed (-30%).
- PENALTY;Amount
- Removes Amount of existing penalty debt (Fatigue/Hunger/Poison).
- Grants Resistance for penaltyReliefDuration seconds, significantly reducing penalty gain (the formula is 30% + amount%).
Examples:
Rotten Flesh: Restores 8 stamina, but poisons you for 15 points and slows your regen by 30% for 30 seconds.
"minecraft:rotten_flesh;INSTANT;8.0;REGEN;-0.3;30;POISON;15.0"
Sweet Berries: Restores 3 stamina, cures 5 points of penalty, and grants resistance.
"minecraft:sweet_berries;INSTANT;3.0;PENALTY;5.0"
Golden Apple: Restores 10 stamina, cures 10 penalty, and buffs regen speed by 25% for 60s.
"minecraft:golden_apple;INSTANT;10.0;REGEN;0.25;60;PENALTY;10.0"
Exhaustion Penalties
Define what happens when a player hits 0 Stamina.
Related Configs:
exhaustionCooldownDuration(Default:60): How many ticks (3s) the penalties persist after hitting 0.customExhaustionPenalties: A list of Attribute Modifiers to apply.exhaustedSpeedPenalty(Default:-0.65): Controls the sprint speed reduction when sprinting while exhausted (0 stamina), players will not regen stamina when doing this.
Format: "AttributeName;Amount;Operation" (Operations: 0 = Add, 1 = Multiply Base, 2 = Multiply Total)
Example:
Slow down player by 15%
"minecraft:generic.movement_speed;-0.15;2"
Universal Compatibility (NBT & Status Effects)
Link ANY mod's data (Thirst, Temperature, Radiation, Magic) to the stamina system with advanced comparators for instant application and multiplier modes.
Related Configs:
universalPenalties: A list of rules defining external penalties.showIcons: True or False to turn on or off the icons (located inpeak_stamina-client.toml). [Only for certain versions (The config comments will tell you)]
Format: "Type;Key;Comparator;Threshold;WorstValue;MaxPenalty;ColorInt;IconText"
| Parameter | Description |
|---|---|
| Type | NBT (checks player data) or EFFECT (checks potion amplifier/level). |
| Key | The NBT path (e.g., thirstLevel) or Effect ID (e.g., minecraft:poison). |
| Comparator | Logic for calculating the penalty. See comparator modes below. |
| Threshold | The safe value where penalty starts (0%). |
| WorstValue | In SCALE mode: The value where penalty reaches 100%. In MULTIPLIER mode: The Maximum total penalty allowed (Hard Cap). |
| MaxPenalty | In SCALE mode: Total penalty amount at WorstValue. In MULTIPLIER mode: Penalty amount per 1 unit of difference. |
| ColorInt | Decimal color code for the HUD overlay (e.g., 16711680 is Red). |
| IconText | Emoji or text to display on the bar. Write none to disable. |
EFFECT: Checks the Amplifier level NOT THE EFFECT LEVEL.
Comparator Modes
SCALE MODES (Linear penalty between two points):
>: Penalty increases as value rises above Threshold, maxing at WorstValue.<: Penalty increases as value falls below Threshold, maxing at WorstValue.
MULTIPLIER MODE (Penalty stacks per unit):
*(or*>): Each point ABOVE Threshold adds MaxPenalty to total.- Formula:
(CurrentValue - Threshold) × MaxPenalty
- Formula:
*<: Each point BELOW Threshold adds MaxPenalty to total.- Formula:
(Threshold - CurrentValue) × MaxPenalty
- Formula:
INSTANT FLAG:
!: Add!before any comparator (!>,!<,!*,!*<) to apply penalty instantly.- Without
!, penalties build up gradually over time.
- Without
| Operator | Mode | Behavior |
|---|---|---|
> |
Scale | Linear penalty from Threshold to WorstValue (increasing) |
< |
Scale | Linear penalty from Threshold to WorstValue (decreasing) |
* |
Multiply | Penalty per point above Threshold (capped at WorstValue) |
*< |
Multiply | Penalty per point below Threshold (capped at WorstValue) |
!> |
Instant Scale | Instant version of > |
!< |
Instant Scale | Instant version of < |
!* |
Instant Multiply | Instant version of * |
!*< |
Instant Multiply | Instant version of *< |
Instant Flag (!):
- Prefix any comparator with
!to apply penalties instantly - Bypasses gradual buildup/decay
Multiplier Mode (*):
- Penalty = (Difference × MaxPenalty)
- WorstValue acts as hard cap
About Icons: The 8th argument Icon allows you to customize what appears on the bar.
- Text/Emoji: Directly type a character (e.g.,
!,💧,🔥). - Custom Image: If the string ends in
.png(e.g.,thirst.png), the mod will look for that file inconfig/peak_stamina/penalty_icons/(this isnt added yet but It shouldn't be too hard to do, expect an update soon). - Disable: Type
noneto hide the icon.
Scale Mode Examples:
Tough As Nails (Thirst)
"NBT;thirstLevel;<;6;0;20.0;38143;💧"
Cold Sweat (Body Temperature)
"NBT;targetTemperatureLevel;>;2;4;20.0;16724016;🔥"
"NBT;targetTemperatureLevel;<;2;0;20.0;65535;❄"
Instant Application:
"NBT;thirstLevel;!<;6;0;20.0;38143;💧"
Multiplier Mode Examples:
# Below 6 thirst: each point lost adds 2.0 penalty (builds over time)
# Thirst 5 = 2.0, Thirst 4 = 4.0, Thirst 2 = 8.0 (capped at 30)
"NBT;thirstLevel;*<;6;30;2.0;38143;💧"
# Each poison level adds 5.0 penalty (builds over time)
# Poison I = 5.0, Poison II = 10.0, Poison III = 15.0 (capped at 50)
"EFFECT;minecraft:poison;*;0;50;5.0;4488448;☣"
Instant Application:
# Each poison level instantly adds 5.0 penalty
"EFFECT;minecraft:poison;!*;0;50;5.0;4488448;☣"
# Infection mod: each level instantly adds 10.0 penalty
"EFFECT;hordes:infected;!*;0;80;10.0;8388736;🦠"
ParCool Compat
As long as you have any stamina remaining (> 0), you can initiate a ParCool action, even if the cost is higher than what you have left (you will simply drop to 0). Keep in mind that the fast run and fast swim costs are added onto the regular sprinting and swimming costs.
Related Configs:
parCoolActionCosts: The list defining stamina usage for specific parkour moves.
Format: "ActionName;START;Cost;CONTINUE;Cost"
Types:
- START: One-time cost when the action begins (e.g., Vault, Jump).
- CONTINUE: Cost per tick while the action is active (e.g., Wall Running, Sliding).
Examples:
Vault: Costs 8.0 stamina instantly.
"Vault;START;8.0"
Wall Run: Costs 15.0 to start, then 0.5 per tick to maintain.
"WallRun;START;15.0;CONTINUE;0.5"
Attributes & Commands
Attributes: [1.3.8+]
peak_stamina:stamina_regenpeak_stamina:stamina_usagepeak_stamina:current_staminapeak_stamina:penalty_gain_multiplierpeak_stamina:penalty_decay_multiplierpeak_stamina:penalty_amount_multiplierpeak_stamina:slow_climb_speedpeak_stamina:sprint_speedpeak_stamina:weight_limitpeak_stamina:current_weight
Attributes: [1.3.7 and below]
peak_stamina:generic.stamina_regenpeak_stamina:generic.stamina_usagepeak_stamina:generic.current_staminapeak_stamina:generic.penalty_gain_multiplierpeak_stamina:generic.penalty_decay_multiplierpeak_stamina:generic.penalty_amount_multiplierpeak_stamina:generic.slow_climb_speedpeak_stamina:player.sprint_speed
Commands:
/stamina get: View your current stamina and max stamina./stamina set <amount>: Set your current stamina to a specific value./stamina attr <regen|usage|penalty_gain|penalty_decay|weight_limit> <value>: Modify your personal stamina attributes./stamina debug: View a detailed debug readout of all your stamina stats, penalties, and attribute multipliers.
Debugging Guide
How to find the correct NBT Path
First, guess the path in your config. Then launch the game and check logs/latest.log. If the path is wrong, the mod will print a WARNING showing available keys. Use those keys to fix your config.
How to get Colors
Minecraft configs use Decimal colors. Go to a Hex to Decimal Converter, enter your Hex color (e.g., FF0000 for Red), and copy the result (e.g., 16711680).
Q&A
Q: Can you make this mod work with X mod (hydration, temperature)?
A: You can do it yourself now! Using the Universal Compatibility config section described above.
Q: How do I disable just the Hunger penalty?
A: Go to the config and set maxHungerPenalty to 0.0. You can do the same for maxExertionPenalty (Fatigue).
Q: How do I disable the Weight System?
A: Set enableWeightSystem to false in the config.
Q: Do I need this mod on the server?
A: Yes.
Q: Does this mod work well for multiplayer on servers?
A: While I haven't tested all versions, the versions I have tested on a server with a friend did not suffer from any issues.



