Protection Not Points
Protection Not Points gives Minecraft's existing vanilla defense attributes direct, readable meanings:
- Armor becomes diminishing-return percentage reduction:
Armor / (Armor + K). - Armor Toughness becomes flat damage reduction:
Toughness × flatReductionPerPoint. - Toughness applies first, armor applies second, and a configurable minimum-damage floor applies last.
The mod continues to use the entity's effective minecraft:generic.armor and minecraft:generic.armor_toughness values, including equipment, effects, commands, accessories, and other attribute modifiers.
It also exposes the converted values as attributes for character sheets and integrations:
protectionnotpoints:damage_resistance— armor reduction as a0.0–1.0fraction.protectionnotpoints:damage_reduction— flat toughness reduction in damage points.
Items that provide vanilla Armor or Armor Toughness also expose their converted contribution through these attributes. Their registered base values remain zero.
Converted attributes are omitted from vanilla item tooltips.
The display attributes describe equipment contributions. Actual combat calculations use the entity's effective vanilla Armor and Armor Toughness values so non-item modifiers still affect mitigation.
Damage Pipeline
Protection Not Points replaces vanilla armor absorption while leaving the surrounding damage pipeline intact.
The order is:
- Armor durability and earlier damage handling.
- Toughness flat reduction.
- Armor percentage reduction.
- Configured minimum-damage floor.
- Resistance, protection enchantments, absorption, and health loss.
Shield blocking and other damage handling that occurs before armor remain unchanged.
Damage tagged minecraft:bypasses_armor skips both armor and toughness by default.
Set:
toughnessRespectsArmorBypass = false
to allow toughness to reduce armor-bypassing damage without enabling armor against it.
Vanilla armor-effectiveness modifiers from weapon enchantments are retained.
Configuration
Gameplay settings are stored in:
config/protectionnotpoints-server.toml
Server settings are synchronized to clients so client-side calculations and API consumers use the same rules.
[armor]
scalingConstant = 30.0
maximumReduction = 0.95
[toughness]
flatReductionPerPoint = 0.25
[damage]
minimumDamageFraction = 0.0
toughnessRespectsArmorBypass = true
applyToMobs = true
Armor
scalingConstant controls the diminishing-return curve:
Armor / (Armor + scalingConstant)
Lower values make each point of armor stronger.
maximumReduction caps the percentage of incoming damage armor can remove.
Toughness
flatReductionPerPoint controls how much flat damage each point of Armor Toughness removes:
Toughness × flatReductionPerPoint
Damage
minimumDamageFraction sets the minimum fraction of the original incoming damage that must remain after toughness and armor.
toughnessRespectsArmorBypass controls whether minecraft:bypasses_armor also bypasses toughness.
applyToMobs controls whether the replacement armor rules apply to non-player living entities.
The mod does not replace the HUD or add additional item tooltip text.
Balancing Commands
/armormath debug
Shows the entity's effective defense attributes and active Protection Not Points rules.
/armormath testdamage <amount>
Previews the toughness, armor, minimum-damage floor, and final damage stages for an eligible generic hit.

