Stats information and calculations
There are 6 different stats that are upgraded through skills:
Health increases the max HP of the player.
Adds a AttributeModifier to Attribute.GENERIC_MAX_HEATLH
Applied on PlayerJoinEvent, health stat changes, and config reloads
How Health is calculated based on stat level:
Attribute.GENERIC_MAX_HEALTH = 20.0 + (Stat.HEALTH * Setting.HEALTH_MODIFIER)
Where Stat.HEALTH is the Health Stat Level visible with /stats and Setting.HEALTH_MODIFIER is the config option "health.modifier" (Default value 0.5)
A "health.modifier" of 1.0 means that every Health Stat Level increases player HP by 1.0
Health Scaling:
If "health.health-scaling" is set to true, the amount of hearts displays on the player's screen is affected by their max health, preventing a player's health from blocking their entire screen. This means that the amount of hearts the player sees will not be 1 heart = 2 HP if their health is greater than 20.0
Health scaling caps at a maximum of 2 full rows of hearts
HP Indicator Scaling
Changed through config option "health.hp-indicator-scaling"
HP Indicator Scaling is the amount the player's raw attribute health should be multiplied by to get the displayed HP on the action bar.
The default value of 5 makes it so that 20.0 raw HP = 100 Displayed Action Bar HP
See the Health page for more detailed information
Strength increases the damage a player does in attacks
Strength is applied on EntityDamageByEntityEvent
How damage is calculated from strength:
Damage = InitialDamage + (Stat.STRENGTH * Setting.STRENGTH_MODIFIER)
Where Stat.Strength is the Strength Stat Level visible with /stats and Setting.STRENGTH_MODIFIER is the config option "strength.modifier" (Default value 0.1)
If use-percent is set to true:
Damage = InitialDamage * (1 + (Stat.STRENGTH * Setting.STRENGTH_MODIFIER) / 100)
Toughness decreases the damage dealt by enemy attacks
Toughness is applied on EntityDamageEvent
How Toughness is calculated:
Damage = OriginalDamage * (1 - (-1 * (1.01)^(-1 * Stat.TOUGHNESS * Setting.TOUGHNESS_MODIFIER) + 1))
Where Stat.Toughness is the Toughness Stat Level visible with /stats and Setting.Toughness_MODIFIER is the config option "toughness.new-modifier" (Default value 1)
Regeneration increases the natural regeneration rate
Two options: Vanilla or Custom
Vanilla
Used when "regeneration.custom-regen-mechanics" is set to false
Changes the amount regenerated on EntityRegainHealthEvent if regain reason equals RegainReason.SATIATED
If player saturation is greater than 0:
AmountRegenerated = VanillaAmount + (Stat.REGENRATION * Setting.SATURATED_MODIFIER)
Where Stat.REGENERATION is the Stat Level and Setting.SATURATED_MODIFIER is the config option "regeneration.saturated-modifier" (Default value 0.05)
If player hunger is full (20) but saturation = 0:
AmountRegenerated = VanillaAmount + (Stat.REGENRATION * Setting.HUNGER_FULL_MODIFIER)
Where Stat.REGENERATION is the Stat Level and Setting.HUNGER_FULL_MODIFIER is the config option "regeneration.hunger-full-modifier" (Default value 0.025)
If player hunger is greater than 14 but not full:
AmountRegenerated = VanillaAmount + (Stat.REGENRATION * Setting.HUNGER_ALMOST_FULL_MODIFIER)
Where Stat.REGENERATION is the Stat Level and Setting.HUNGER_ALMOST_FULL_MODIFIER is the config option "regeneration.hunger-almost-full-modifier" (Default value 0.025)
Custom
Used when "regeneration.custom-regen-mechanics" is set to true
Non-saturated regen:
Applied every Setting.HUNGER_DELAY ticks ("regeneration.custom-regen-options.hunger-delay", Default 60)
If player hunger is full (20):
AmountRegenerated = Setting.BASE_REGEN + (Stat.REGENERATION * Setting.HUNGER_FULL_MODIFIER
Where Setting.BASE_REGEN is config option "regeneration.base-regen" (Default value 1)
If player hunger is greater than 14 but not full:
AmountRegenerated = Setting.BASE_REGEN + (Stat.REGENERATION * Setting.HUNGER_ALMOST_FULL_MODIFIER
Saturated regen:
Applied every Setting.SATURATED_DELAY ticks ("regeneration.custom-regen-options.hunger-delay", Default 20)
AmountRegenerated = Setting.BASE_REGEN + (Stat.REGENERATION * Setting.SATURATED_MODIFIER
Where Setting.SATURATED_MODIFIER is config option "regeneration.saturated-modifier" (Default value 0.05)
Changes to Setting.SATURATED_DELAY and Setting.HUNGER_DELAY will only take effect on server restart
Increase Luck attribute (better chest and fishing loot) and chance for double drops
Modifies Attribute.GENERIC_LUCK
Luck = Stat.LUCK * Setting.LUCK_MODIFIER
Setting.LUCK_MODIFIER is config option "luck.modifier" (Default value 0.1)
Applied on PlayerJoinEvent, luck stat changes, and config reloads
Chance to give double drops when breaking certain blocks
Includes stone, cobblestone, sand, dirt, gravel, grass_block, andesite, diorite, and granite
% Chance = Stat.LUCK * Setting.DOUBLE_DROP_MODIFIER * 100
Setting.DOUBLE_DROP_MODIFIER is config option "luck.double-drop-modifier" (Default value 0.005)
Maxes out at a chance of Setting.DOUBLE_DROP_PERCENT_MAX ("luck.double-drop-percent-max", default value 100)
Increases experience gained from any source and decreases anvil costs
ExperienceGained = InitialExperience * (1 + (Stat.WISDOM * Setting.EXPERIENCE_MODIFIER))
Setting.EXPERIENCE_MODIFIER is config option "wisdom.experience-modifier" (Default value 0.01)
NewCost = OriginalCost * (1 - (-1 * 1.025^(-1 * Stat.WISDOM * Setting.ANVIL_COST_MODIFIER) + 1))
Setting.ANVIL_COST_MODIFIER is config option "wisdom.anvil-cost-modifier" (Default value 0.25)
Guide to stat modifiers with commands, items, and armor
Modifiers are temporary Stat buffs or changes on a player. They come in 3 different types and are interacted with primarily using commands.
Regular modifiers are the simplest type of modifier. You add and remove them using commands. Each modifier has 3 properties, a name
, stat
, and value
.
The name
is used to identify the modifier. You cannot have more than one modifier with the same name on a single player.
The stat
property is which stat the modifier should be applied on. You must use the official stat names, which are health
, strength
, regeneration
, luck
, wisdom
, and toughness
.
The value
property is how much the stat should increase/decrease. For example, a value
of 50
would add 50 levels to whatever stat it was applied on. Negative values subtract levels.
The commands used to interact with them are:
/sk modifier add [player] [stat] [name] [value] (silent)
- Adds a stat modifier to a player
/sk modifier remove [player] [name] (silent)
- Removes a specific stat modifier from a player
/sk modifier list (player) (stat)
- Lists all or a specific stat's modifiers for a player
/sk modifier removeall (player) (stat) (silent)
- Removes all stat modifiers from a player
Item modifiers are like regular modifiers but stored on items. The modifier will only be applied when the player is holding the item. The commands will by default apply lore displaying the modifier's stat and value. The item modifier itself is independent of lore and is stored as custom NBT data. Therefore, you can modify lore however you want and it will still work. You can add multiple modifiers, but you can only have 1 modifier of each stat type.
The commands used to interact with them are:
/sk item modifier add [stat] [value] (lore)
- Adds an item stat modifier to the item held, along with lore by default
/sk item modifier remove [stat] (lore)
- Removes an item stat modifier from the item held, and the lore associated with it by default
/sk item modifier list
- Lists all item stat modifiers on the item held
/sk item modifier removeall
- Removes all item stat modifiers from the item held
Armor modifiers are exactly like item modifiers, except they only apply when the player is wearing the item as armor. You can have both item and armor modifiers on the same item and can have an item with an item and armor modifier of the same stat.
The commands used to interact with them are:
/sk armor modifier add [stat] [value] (lore)
- Adds an armor stat modifier to the item held, along with lore by default
/sk armor modifier remove [stat] (lore)
- Removes an armor stat modifier from the item held, and the lore associated with it by default
/sk armor modifier list
- Lists all item armor modifiers on the item held
/sk armor modifier removeall
- Removes all armor stat modifiers from the item held
The following info is for advanced users with prior knowledge about the NBT format
The following is the NBT tag structure used for item and armor modifiers. It can be used in places such as the give command to create items with modifiers already added.
Replace [Type] with either Armor for armor modifiers or Item for item modifiers. Replace [Stat] with the name of the stat with first letter capitalized (e.g. Health). Replace [value] with the value of the modifier (a number).
Full example of a Health item modifier with value 100:
Multiple modifiers can also be used:
Both item and armor modifiers can be used on the same item:
Detailed guide to health options
Health increases the max HP of the player. It works by adding an AttributeModifier to the GENERIC_MAX_HEALTH attribute. It is applied on PlayerJoinEvent, health stat changes, and config reloads.
Health is calculated based on the Health stat level:
GENERIC_MAX_HEALTH = 20.0 + (Stat.HEALTH * health.modifier)
Where Stat.HEALTH is the Health Stat Level visible with /stats and health.modifier is the config option health.modifier
(Default value 0.5)
A health.modifier
of 1.0 means that every Health Stat level increases the player's HP by 1.0
If health.health-scaling
is set to true, the amount of hearts displayed on the player's screen is affected by their max health, preventing a player's health from blocking their entire screen. This means that the amount of hearts the player sees will not be 1 heart = 2 HP if their health is greater than 20.0
The amount of hearts displayed on the screen can be customized in the config under the health.hearts
section of config.yml. The key is the number of heart, and the value is the Minecraft health that amount of hearts is unlocked at. For example, if two entries are '12': 29 and '13': 37, this means the player will have 12 hearts shown on their screen when their Minecraft health is from 29 (inclusive) to 37 (exclusive).
This supports hearts below 10 and hearts above 20, just add entries with the key as the number of hearts. The order of keys and values should be sequential, otherwise, higher heart entries will override lower ones.
This is purely cosmetic, changing these options does not change the actual hp you have, and it only works if you have health.health-scaling
set to true.
HP Indicator Scaling is the amount the player's raw attribute health should be multiplied by to get the displayed HP on the action bar. It is changed through the config option health.hp-indicator-scaling
. The default value of 1 makes it so that the action bar HP matches the Minecraft HP (20 HP on action bar = 20 HP in Minecraft). This is also cosmetic and does not affect the actual amount of health a player has.