Scaling Health

Scaling Health

23M Downloads

Join Silent's Discord! Your questions can also be answered here or you can just come hangout!

Please read the "Help!" section before commenting. Many common questions are answered there.
For datapack questions, please read the wiki page, an introductory explanation to datapacks and what is needed to configure scaling health.

Found a bug or have a feature suggestion? Use the issue tracker on GitHub. If you report a bug in the comments, I will not fix it. I need the proper information to fix issues, and the issue tracker makes sure it is provided. Comments are fine for questions and small suggestions. Please don't make me disable comments.

Introduction

Minecraft too easy for you? After playing the game for years, I can't help but feel it is. Or perhaps it's too hard with all the crazy mods you've added? Scaling Health aims to balance out modpacks, by allowing players, mobs, or both to gain extra health! Or players can start with less health, if that's what you want. The mod is highly configurable.

This mod started as an unofficial port of Difficult Life, a mod I personally loved playing with. Eventually, I decided to rebuild the mod from the ground up, fixing bugs, adding more config options and widening the scope of the mod to include players who need an easier experience, not just a harder one. The difficulty system is very server-friendly, unlike the system used in Difficult Life.

Feedback and constructive criticism are always appreciated.

Key Features

  • A per-player difficulty system. A difficulty value is tracked for each player. There are several factors that can increase/decrease your difficulty. By default, it increasing slowly as time passes. As difficulty increases, mobs become stronger. Mob strength is calculated based on one of several methods (see below). This feature can be tweaked/disabled to your heart's content.
  • More player health! Or less. Players can obtain heart crystals that increase their maximum health. Normally, you keep the extra health even after dying (configurable). The player's starting health can also be changed, and the max health cap is configurable as well. You can also set health to increase/decrease with XP levels.
  • Lots of control. Plenty of config options to let you play the game however you like! There's even an in-game config screen (1.12 only), so you can tweak options without restarting Minecraft.

Requirements

  • Silent Lib and Java 8 or higher (Java 16+ from 1.17 onwards).
  • You can also add Configured, to ease modifications of client config.

Difficulty

Player Difficulty

A difficulty value is tracked for each player. By default, this increases slowly over time. You can also set the mod to increase/decrease difficulty when players kill certain types of mobs, or when the player dies. You can also set difficulty to reset at certain intervals, like every week.

Player difficulty is typically used to calculate difficulty when spawning mobs, but some modes use other methods (see next section). The starting and maximum difficulty levels and the amount added each second are configurable. By default, idle players accumulate difficulty more slowly.

The difficulty value will determine how much extra health mobs can have. Mobs will also gain bonus attack damage and potion effects. Higher difficulty values also increase the chance of mobs spawning as blights...

Area Difficulty

When mobs are spawned, an "area difficulty" value is calculated for the position the mob is spawned at. This value is then used to determine extra health/damage, chance of becoming a blight, etc. Depending on the mode, this is usually based on the difficulty level of all nearby players. "Nearby" means within the search radius, which is configurable.

Modes

  • average - 2 fields: "radius", which is an integer greater than 64 and an optional boolean "weighted" which defaults to true. The mode takes the (weighted or not) average of all players in the specified radius.
  • maxima - 2 fields: "radius, which is an integer greater than 64 and an optional boolean "min" which defaults to true. Takes the min or max player difficulty in the specified radius.
  • distance - 2 fields: "distanceFactor", which is a positive real number (a double), and an optional boolean "fromOrigin" which defaults to false. Difficulty is based on distanced from the origin or the spawn, multiplied by the distanceFactor.
  • distance_and_time - 2 fields: "average" and "distance", which are the objects mentioned above.
  • server_wide - no fields, the difficulty is not per player but the same for the whole server.

Health Scaling

Mobs (both passive and hostile by default) will gain extra health as difficulty increases. The way extra health is added can be changed in the config file.

  • Multiplier modes (MULTI, MULTI_HALF, and MULTI_QUARTER) - The mob's health is multiplied, so that mobs with a higher base health will get a bigger boost. MULTI applies the same multiplier to all mobs, while MULTI_HALF and MULTI_QUARTER apply less for mobs with greater than 20 health. All of these should still apply more health than ADD mode. MULTI_HALF is the default.
  • Additive mode (ADD) - A flat increase for all mobs. This is what Difficult Life used.

Damage Scaling

You can increase the amount of damage players take from various sources. By default, no damage scaling is performed. You can customize this in the config under player/damage.

You can choose one of three modes: scale with player max health, player difficulty, or area difficulty. Max health mode is proportional to the starting health you set in the config. So if you have 100 health and starting health is 20, that's a 4x multiplier (100 - 20)/20. The difficulty modes multiply the difficulty value by a "weight" value you can tweak in the config. The weight defaults to 0.04, which would result in a 10x multiplier at 250 difficulty (0.04*250=10). I'll call this number the mode amount.

For the scale value for each damage source, a value of 0 (default) results in no scaling. A value of 1 would scale proportional to the mode amount, so survivability would not increase with health. Between 0 and 1 might be ideal, but you could also set it higher than 1 if you want to buff certain damage types.

The final calculation multiples the scale by the mode amount by the original damage amount, then adds that to the damage dealt. So, something like damage = original * (1 + scale * modeAmount).


Blights


Blights are extremely powerful mobs. These are ordinary mobs (even from other mods) that have spawned with far more health, higher damage-dealing potential, and a variety of potion effects including a large speed boost. They also tend to spawn with armor. Blights have a purple fire effect at all times which makes them easy to identify, even if submerged in water.

By default, blights drop more heart crystals than standard mobs (0-2 each by default, instead of a small chance of getting one) and ten times the XP. Blights have a variety of config options available, and can even be disabled entirely if that's what you want.


Blocks and Items

Heart Crystal

Heart crystals are used to increase players' maximum health. They can drop when mobs are killed (with configurable rates for different mob types) or crafted from heart crystal shards. Simply use (right-click) them to gain one extra heart per container. Heart crystals also restore a couple extra hearts.

Gaining health from heart crystals can be disabled in the config, allowing them to act only as a healing item. Heart crystals will make a "ding" sound when giving extra health.

Drops are controlled by loot tables so you need to override Scaling Health's mob type loot tables to change drop rates.

Power Crystal

(No texture yet)

Power crystals behave similarly to heart crystals, but they increase a player's base attack power when used. By default, it is a 0.5 (quarter heart) increase per crystal used. They are less common than heart crystals by default.

Cursed Heart and Enchanted Heart

The cursed heart will increase difficulty when used. The enchanted heart will decrease difficulty when used. These drop occasionally from certain mob types at certain difficulty levels. This can be changed by editing Scaling Health's loot tables for mob types.

Bandages and Medkits

Bandages and medkits will restore a percentage of your maximum health when used. To apply one, use it (hold right-click) for 5 seconds. You will be given the "Bandaged" potion effect and a portion of your health will be restored each second, but you will move more slowly while this is in effect. The effect is removed if your health is fully restored. Both bandages and medkits require heart dust to craft, so they won't be very economical to make until your maximum health is higher.

Miscellaneous

  • Heart/power crystal ore - Drops heart/power crystals when mined. Becomes more common as you travel further from spawn.
  • Heart/power crystal shards - Dropped when heart/power crystal ore blocks are mined. These sometimes drop from killed mobs as well. 
  • Heart dust - Crafted from a heart container and used to make bandages and medkits. A single heart container makes 24 dust.

Difficulty Bar


A difficulty bar will appear on your HUD from time-to-time (there's also a keybinding to show it). This bar actually has two parts, although you can't tell in most cases. The upper part of the bar (the largest part) is the Area Difficulty at your location. You may see this portion grow when near other players on a server, or when using a distance-based mode. The lower part is your Player Difficulty. That's the difficulty your player accumulates over time, which is used to calculate Area Difficulty in most cases.


Commands

Scaling Health includes a couple of commands. These are good for testing, goofing off, and working around bugs... 

  • /sh_difficulty - Check or change player difficulty
  • /sh_health - Check or change player health
  • Modes
  • get - Check the value. The [value] parameter must be left out.
  • set - Set the value to [value].
  • add - Adds [value] to the current value.

Help!

FAQ, tech support, and such.

  • Q: How do I configure the mod?
    A: You must edit the config files with a text editor (config/scalinghealth). In the server config, there are debug modes and the different features to enable. The features are more configurable in a datapack with the mechanics files, see the user_starter_pack.zip distributed with SH versions.
  • Q: How do I disable X?
  • A: In the server config, find the feature you want to disable and change "true" to "false", if the option is not available, it is because it needs to be done via datapacks.
  • Q: Is the health system compatible with other mods?
    A: It depends. Mods that use modifiers to change health seem to work well enough together. For player health, Tough As Nails has no issues, but Cyclic's heart containers are completely overridden by Scaling Health. For mobs, I've seen some cases where modifiers stack together in undesirable ways. Probably best to just allow one mod to tinker with health in each case.
  • Q: There's a config/feature I wanted, but the mod doesn't have it...
    A: Let me know about it! There's a good chance I'll add it for you, if it fits with the mod. Please use the issue tracker (link at top of page), otherwise I will not do it.
  • Q: Can I use this in a mod pack, make videos/streams with the mod installed, or share/publish config files?
    A: YES! And I'd love to see your work! Send links if you want, but it's not required.
  • Q: Can I redistribute your mod on another site? (Not part of a mod pack)
    A: NO! Absolutely not! You can link back to here for downloads if you want to promote my work on another site, but all downloads should happen through CurseForge.
  • Q: Can we get a port to <insert ancient Minecraft version here>?
    A: No.