Mineuniverse
Mods
damageoverhaul

damageoverhaul

MOD
This mod adds config to implement a Dark Souls‑style damage.
by ZeroChen
Download Claim this project
395 downloads
0 likes
Updated Oct 14, 2026
0 hypes
Addons API and Library
Advertisement Remove ads with Premium →

This mod adds config to implement a Dark Souls‑style damage. It automatically generates five configuration files that cover: damage types, weapon damage types and their distribution, entity resistances, armor resistances, mob damage typesThese settings also apply to entities and weapons from other mods. I can't speak English. If you find bugs, tell me.
This is how to use it

================================================================
  Damage Overhaul Mod Usage Tutorial
  For Minecraft 1.20.1 Forge
================================================================

[Table of Contents]
  I. Mod Introduction
  II. Installation and Startup
  III. Explanation of the Eight Damage Types
  IV. Tooltip Explanation
  V. Command Overview
  VI. Config File Overview and Common Modification Examples
  VII. Enchantment System
  VIII. Projectile System and Entity Replacement
  IX. Gun Mod Compatibility (Scorched Guns / TACZ, etc.)
  X. Block-Source Damage Configuration
  XI. Charm System (Built-in Gems + Third-Party Charm Bonuses)
  XII. Equipment Scaling System (requires more_attributes attribute points)
  XIII. Potion Effect System (Resistance Up/Down + Damage Amplification/Weakening)
  XIV. Toughness and Impact Force System
  XV. Mana Repair (requires Botania)
  XVI. Display Toggles and Server Sync
  XVII. Automatic Migration and Backup Mechanism
  XVIII. Patchouli Manual Explanation
  XIX. Frequently Asked Questions (FAQ)

================================================================
I. Mod Introduction
================================================================

Damage Overhaul is a damage system overhaul mod. It splits the vanilla
single damage value into 8 damage types (slashing/blunt/piercing/magic/
fire/lightning/dark/holy), and allows you to freely control through JSON
config files:

  - The damage composition dealt by each weapon (e.g., iron sword = 60% slashing + 30% piercing + 10% blunt)
  - Each mob's resistance to different damage types
  - Each piece of armor's resistance to different damage types
  - The damage distribution of each projectile (arrow, trident, snowball, fireball, ...)
  - The environmental damage distribution caused by each block (magma block, campfire, cactus, ...)
  - Weapon damage distributions for gun-type mods (Scorched Guns, TACZ, etc.)
  - Charm system: 8 built-in damage gems, plus configuring damage bonuses
    and type resistances for any other mod's Curios charms (automatic scan,
    no need to manually enter item IDs)
  - Potion effect system: each damage type registers 4 potion effects
    (resistance up / resistance down / damage amplification / damage weakening),
    with per-level values configured through mob_effects_config.json
  - Equipment scaling system (soft dependency on more_attributes): based on
    the player's 9 invested base ability points, configure multipliers per
    weapon/armor by damage type. Weapons increase dealt damage, armor reduces
    received damage piece by piece multiplicatively. Tooltip shows SABCDE letter grades.
  - Enchantment level decoupling: enchantment caps are relaxed from vanilla
    level 4 to a configurable value (default 255). Ultra-high-level enchantments
    work normally according to linear formulas.

All configs can be hot-reloaded in-game with commands, no game restart needed.
(Note: adding new damage types / adding new built-in charm entries / adding new
potion effects requires a restart, because enchantments, items, and effects are
registered frozen at startup. Values for already registered entries hot-reload.)

================================================================
II. Installation and Startup
================================================================

1. Environment requirements: Minecraft 1.20.1 + Forge (47.x).
2. Prerequisite mod: Curios API (charm slots). The mod cannot load without Curios.
3. Put damageoverhaul-1.0.0.jar into the mods folder.
4. (Optional) Install Patchouli to get this mod's in-game illustrated manual.
   Without Patchouli, the mod still runs normally.
5. On first startup, all config files (with default values) are automatically
   generated under config/damageoverhaul/; at the same time, a Curios charm
   slot (charm) is automatically added to players.

[How to get the in-game manual]
- When Patchouli is installed, the "Tools & Utilities" creative tab contains
  "Damage Overhaul Guide" (purple book model). It can also be obtained by command:
    /give @s patchouli:guide_book{patchouli:book:"damageoverhaul:guide"}
- In survival mode, you can add an acquisition method through a datapack recipe.

================================================================
III. Explanation of the Eight Damage Types
================================================================

  Slashing  -- sword slashing/cleaving damage
  Blunt     -- hammer strikes, explosions, falling, crushing
  Piercing  -- arrows, spikes, cactus, berry bushes
  Magic     -- potions, enchantment damage, phantoms, etc.
  Fire      -- burning, lava, campfire
  Lightning -- lightning strikes
  Dark      -- wither, shadow-type damage
  Holy      -- light-type damage (reserved for expansion)

How are damage types determined?
Every vanilla damage instance carries a "damage source identifier" (damage type),
for example minecraft:arrow (arrow), minecraft:explosion (explosion).
The mod translates these identifiers into the 8 types through
damage_type_mappings.json, and supports "splitting one source into multiple
types as a mixed distribution", for example:

  "minecraft:explosion": { "blunt": 0.7, "fire": 0.3 }

means explosion damage is 70% settled as blunt and 30% as fire.

The mod also automatically scans all damage types registered in the game
(including those added by other mods), infers mappings by tags, and writes
them into the config. Those with the is_fire tag are inferred as fire, those
without tags default to blunt. Everything can be modified in the config.

================================================================
IV. Tooltip Explanation
================================================================

Hover the mouse over an item:

  Weapon   -> Shows "Damage Distribution": each line = damage type + value
              (base attack × ratio) + percentage, sorted descending by ratio
  Armor    -> Shows "Armor Resistance": non-zero resistances sorted descending,
              red = vulnerability, green = resistance
  Projectile -> Shows "Projectile Damage Distribution": percentage only
              (damage is determined by the bow)
  Enchantment -> Enchanted item titles append "(Enchanted)", and each line ends
              with green text listing the values/percentages added by enchantments
  Gun      -> Guns have no attack damage attribute; tooltip automatically parses
              the damage number labeled by the gun mod itself as the base
              (e.g., "Damage: 10.0"). If parsing fails, only percentages are shown.
  Mana Repair -> Shows enabled status and mana cost per durability point
  Built-in Charm -> Shows associated damage type, attack bonus, and damage resistance
  Third-Party Charm -> Other-mod charms with configured non-0 factors show
              "External Charm Bonus": red = damage amplification, green = type
              resistance. Types with 0 effect are not displayed.
  Equipment Scaling -> After installing more_attributes, weapons/armor show an
              "Ability Scaling" section: each line = damage type + letter grade
              (SABCDE) + percentage,
              e.g. Fire S (+150%) (weapon damage bonus, red) /
                   Fire S (-150%) (armor damage mitigation, green),
              calculated in real time based on the current viewing player's
              attribute points, only showing positive scaling.

Displayed content can be controlled by the 8 toggles in display_config.json
(see Section XVI).

================================================================
V. Command Overview
================================================================

All commands require OP level 2.

  /damageoverhaul reload
      Reload all config files, and automatically fill in missing
      resistance/weapon/mapping entries for new damage types.

  /damageoverhaul migrate
      Force a migration check (equivalent to reload, semantically emphasizes migration).

  /damageoverhaul migrations
      Show the detailed migration log from the most recent load: which files
      were changed, which entries were added, and backup locations.

  /damageoverhaul status
      Show the mod's current status: damage type count, three enchantment
      counts (and level cap), potion effect status (type rows), deflection
      mechanics, default ranged source, projectile config stats, dual-use list,
      mana repair, block distribution entry count, built-in charm count and
      third-party charm bonus status (indexed entry count, startup scan toggle),
      equipment scaling status (weapon/armor indexed counts, ability column
      count, more_attributes loaded status).

================================================================
VI. Config File Overview and Common Modification Examples
================================================================

All configs are located in config/damageoverhaul/:

  damage_types.json              Damage type definitions (core; other files auto-sync)
  damage_type_mappings.json      Damage source -> type mappings (supports mixed distributions)
  weapon_distributions/          Weapon distributions + gun auto-learning (folder, split by mod)
  unarmed_distributions.json     Unarmed/mob bare-hand distributions
  entity_resistances/            Entity resistances + mob base toughness/impact resistance (folder, split by mod)
  armor_resistances.json         Armor resistances
  ranged_config/                 Ranged sources and projectile distributions (folder, split by mod)
  projectile_item_mappings.json  Projectile mappings and entity replacement
  block_distributions.json       Block-source damage
  special_mechanics.json         Special mechanics such as damage deflection
  mana_repair_config.json        Mana repair
  display_config.json            Tooltip display toggles
  projectile_strike_config.json  Projectile enchantment bonuses
  charms.json                    Built-in charms (8 damage gems, including toughness)
  external_charms.json           Third-party charm factor table (auto-scan generated, including toughness)
  mob_effects_config.json        Potion effect value table (4 effects per type)
  weapon_scaling/                Weapon scaling multiplier tables (folder, requires more_attributes)
  armor_scaling/                 Armor scaling multiplier tables (folder, requires more_attributes)
  weapon_guard_break.json        Weapon guard break values + associated impact effects
  armor_toughness.json           Armor toughness table
  player_config.json             Player base toughness + impact resistance (immunity/remap)
  impact_effects.json            Impact effect presets (displacement/stun)

Note: Paths ending with "/" are folder structures, internally split into
multiple small JSON files by mod name (namespace), avoiding oversized single
files in large modpacks. On first load, old single files are automatically
migrated to folders and backed up.

[Example 1: Modify the iron sword distribution]
Open minecraft.json in the weapon_distributions/ folder, find "minecraft:iron_sword":
  "damage_distribution": {
    "slashing": 0.6, "piercing": 0.3, "blunt": 0.1, ... all others 0
  }
Save after editing, then run /damageoverhaul reload in-game.

[Example 2: Make skeletons immune to fire]
Open minecraft.json in the entity_resistances/ folder, find "minecraft:skeleton",
and change "fire" to -1.0 (-100% immunity).

[Example 3: Change explosion to 70% blunt + 30% fire]
Open damage_type_mappings.json:
  "minecraft:explosion": { "blunt": 0.7, "fire": 0.3 }

[Example 4: Adjust a certain gun's distribution]
First shoot once with that gun (auto-learning will generate an entry), then
modify the corresponding entry and reload.

[Example 5: Add fire damage bonus to another mod's charm]
After starting the world, external_charms.json has already automatically indexed
all Curios charms. Find the corresponding item row, and change "fire" in
attack_bonuses to 0.15 (see Section XI for details).

[Example 6: Make an iron sword gain fire scaling from strength]
Open the corresponding mod's json in the weapon_scaling/ folder, find
"minecraft:iron_sword", and in the "fire" row change "strength" to 0.02
(see Section XII for details):
When strength is invested to level 30 (effective 20 points), fire scaling =
0.02×20 = +40%.

Standard process: edit -> save -> /damageoverhaul reload -> done.
Missing fields/entries in all files are automatically filled and written back;
manual adjustments will not be overwritten.

================================================================
VII. Enchantment System
================================================================

At startup, the mod automatically registers three enchantment sets per damage
type (8 types × 3 categories = 24):

  protect_<type>   Armor resistance enchantment, 5%/level
                   (settled after armor resistance and before armor value)
  strike_<type>    Weapon damage bonus enchantment, 10%/level
                   (only increases the corresponding type's share, does not
                   squeeze out other types)
  projectile_strike_<type>  Projectile damage bonus enchantment
                   (only applicable to pure projectile items, such as arrows;
                   values same as strike)

[Level Cap Decoupling]
The level caps of the three enchantment sets are controlled by the
max_enchant_level field in damage_types.json, default 255 (vanilla is 4).
The value formula remains linear:
  Level N = N × per-level value (e.g., protect 5%/level × level 10 = 50% resistance)
After modifying max_enchant_level, a game restart is required. The enchanting
table still produces at most level 4 (limited by vanilla enchantment logic),
but any level granted by anvil stacking/commands works normally according to
the formula.

Acquisition method: protect/strike can be used in enchanting tables and anvils.
Vanilla arrows cannot be normally enchanted. The mod takes over the anvil merge
process to implement projectile enchantment:
  Put a weapon on the left (with the corresponding strike enchanted book),
  put arrows on the right -> merge to get enchanted arrows.

Note: Enchantment registration is frozen at game startup. After adding a new
damage type, the game must be restarted to generate the corresponding
enchantment; value configs for existing enchantments can hot-reload.

================================================================
VIII. Projectile System and Entity Replacement
================================================================

[Projectile Distribution] ranged_config/
  - ranged_damage_source: global ranged determination method
      "projectile" = by projectile distribution (default)
      "weapon"     = by weapon distribution
  - Each projectile entry has a follow_default field:
      true  = follow global default
      false = use that entry's own distribution
  - Dual-use items (such as tridents, which are both weapons and projectiles)
    refuse to follow the default by default.

[Projectile Item and Entity Mapping]
The same entity can correspond to multiple items (enchanted arrow/spectral
arrow/normal arrow are all minecraft:arrow). The mod uses a three-layer mechanism:
  1) Same-name matching: entity ID is the same as item ID
  2) Tag scan: members of minecraft:arrows / forge:arrows tags are
     automatically mapped to minecraft:arrow
  3) Manual extension: add custom mappings in projectile_item_mappings.json

[Entity Replacement] projectile_item_mappings.json
  Want arrows to shoot TNT? In the mapping write:
    "minecraft:arrow": {
      "entity": "minecraft:tnt",
      "replace_entity": true
    }
  And set the global toggle allow_dangerous_replace to true.

  Explanation:
  - Replacement occurs at the moment the projectile is created; the original
    entity is cancelled, and the new entity inherits position/velocity/rotation/owner
  - The replaced entity's damage is settled according to the distribution of the
    entity mapped from the original projectile item. If not configured, it falls
    back to damage type mapping (TNT explosion -> blunt)
  - Risk warning: mapping to large entities such as the Ender Dragon may cause
    abnormal behavior

================================================================
IX. Gun Mod Compatibility (Scorched Guns / TACZ, etc.)
================================================================

Characteristics of gun-type mods: damage values are stored in the gun JSON,
settled by projectile entities, and are completely different from the vanilla
weapon system (guns have no attack damage attribute, projectile entity IDs are
not the same as gun item IDs, and ammunition does not carry damage).

This mod's general compatibility solution (does not hardcode any mod):
  1. Source weapon fallback: after a gun projectile hits, if no projectile
     distribution is found, automatically check the distribution of the gun in
     the shooter's hand in weapon_distributions/ and split damage according to it
  2. Auto-learning: when auto_learn_ranged_weapons = true (default), the first
     time a gun deals damage it automatically generates an entry (default
     piercing 100%) and writes it to the config
  3. Tooltip base: automatically parses the damage number labeled by the gun mod
     as the display base

Usage steps (using Scorched Guns as an example):
  1. Enter the game, take any gun and shoot once
  2. Open weapon_distributions/, and you can see the scguns:xxx entry
  3. Modify its damage_distribution (e.g., change a flamethrower's fire ratio)
  4. /damageoverhaul reload to apply

Ammunition does not need configuration -- damage is determined entirely by the gun.
TACZ and other "gun JSON + projectile" type mods are equally applicable.

================================================================
X. Block-Source Damage Configuration
================================================================

block_distributions.json configures environmental damage by block ID
(magma block, campfire, cactus, powder snow, wither rose, etc.).

Format:
  "minecraft:magma_block": {
    "use_default": true,                  <- true=use default mapping chain
    "damage_distribution": { ... }        <- this distribution applies when false
  }

Determination condition: the damage source has no entity (such as hot_floor
damage from standing on a magma block). The mod checks the block your body is
in (campfire/fire/cactus, etc.) and the block under your feet (magma block).

Auto-learning: when auto_learn_block_damage = true (default), the first time
an entity takes damage from a block, that block is automatically registered in
the config (use_default=true, behavior unchanged). Afterward, change
use_default to false and fill in the distribution to take over that block.

Campfires and magma blocks can use completely different distributions -- this
is fine-grained control that damage_type_mappings cannot achieve.

================================================================
XI. Charm System (Built-in Gems + Third-Party Charm Bonuses)
================================================================

The charm feature depends on Curios API. Players have a charm Curios slot
(automatically added by the mod, coexisting with rings/necklaces from other
mods in modpacks without conflict).

[11.1 Built-in Charms: 8 Damage Gems]

The mod includes 8 charms (found in the creative inventory):
  Slashing Gem / Blunt Gem / Piercing Gem / Magic Gem / Flame Gem /
  Thunder Gem / Shadow Gem / Holy Gem
Default: +15% attack damage of the corresponding type, -10% damage taken of
the corresponding type.

Stacking rule: multiple charms of the same type (including third-party charms)
only take the highest value, no stacking.
Settlement position:
  - Attack: that type's damage ×(1+bonus)
  - Defense: after mob resistance, armor resistance, and enchantment resistance,
    independently reduce by type ×(1-resistance) (only for configured types;
    each part of mixed damage is reduced separately)

charms.json can adjust each gem's values and texture frame animation; note that
adding/removing built-in charm entries is an item registration change and
requires a game restart. Values for already registered entries hot-reload.

[11.2 Third-Party Charm Bonuses: external_charms.json (Important)]

No need to manually look up item IDs, no need to hand-write entries in a format
-- the mod automatically traverses:

  1) Startup/reload full scan: all other-mod charms in the item registry that
     have the curios tag and can fit into Curios slots are automatically indexed
     into the table
  2) Equip-time supplementary scan: when a player actually equips a charm into
     a slot (checked at login and every 10 seconds afterward), if a missed item
     is found (such as mods whose tags are dynamically generated by in-memory
     datapacks), it is automatically added to the table

Each charm has one row in the table, listing factors for all damage types, for example:

  {
    "item_id": "botania:sojourner_sash",
    "attack_bonuses": {
      "slashing": 0, "blunt": 0, "piercing": 0, "magic": 0,
      "fire": 0.15, "lightning": 0, "dark": 0, "holy": 0
    },
    "defense_resistances": {
      ...same as above, "fire": 0.1 means fire damage reduced by 10%...
    }
  }

Value meanings:
  attack_bonuses       Damage amplification, 0.15 = that type's damage +15%
  defense_resistances  Type resistance, 0.10 = that type's damage -10%
  0 = no effect (produces no effect, and tooltip does not show that line)

Usage process:
  1. Start a world once (table is automatically generated)
  2. Open config/damageoverhaul/external_charms.json
  3. Find the target charm's row, change the corresponding type's 0 to the desired factor
  4. /damageoverhaul reload (servers require reconnect to sync client display)

Two master switches (at the top of the file):
  enable_external_charms   Master switch, false = third-party charm feature fully stopped
  auto_scan_curios_items   Startup scan switch, false = only keep existing entries,
                           no longer automatically index new charms (equip
                           supplementary scan also stops)

Features and rules:
  - When adding a damage type, automatically add a 0 column for that type to
    all charms in the table
  - All-zero entries do not participate in network sync, so any number of
    modpack charms will not affect login speed
  - For the same damage type: when built-in gems and third-party charms are
    worn together, merge and take the highest
  - Old hand-filled entries automatically migrate and retain values; old files
    are automatically backed up
  - Must be truly equipped in a Curios slot to take effect (placing in backpack
    has no effect)

================================================================
XII. Equipment Scaling System (requires more_attributes attribute points)
================================================================

[Soft Dependency]
After installing more_attributes (org.mantodea.more_attributes), this system
automatically enables; when not installed, equipment scaling does not take
effect, and all other mod features work as usual.
That mod provides 9 allocatable base abilities:
  strength / health / focus / stamina / endurance / intelligence / agility /
  skill / luck

[How Scaling Is Calculated]
Each piece of equipment has multipliers filled per "damage type × base ability":
  Scaling = Σ(multiplier × effective attribute points)
  Effective attribute points = invested level − that ability's baseLevel
(strength baseLevel=10, others are 0; negative values are allowed, fully
consistent with more_attributes' own scaling semantics)

[Two Config Files]
  weapon_scaling/   Weapon scaling table
  armor_scaling/    Armor scaling table
On first entering the world, a full registry scan automatically generates:
  - Weapons: swords/axes/bows/crossbows/tridents, any item with an attack
    damage attribute, guns already in weapon_distributions/
  - Armor: all ArmorItem
Each piece of equipment has one row, default all 0 (pure indexing: no effect,
no display, no sync traffic).

File structure (weapon table as example):
  {
    "enable_weapon_scaling": true,
    "base_attributes": ["strength","health",...9 total],
    "grade_thresholds": {"S":1.5,"A":1.0,"B":0.75,
                         "C":0.5,"D":0.25,"E":0.0},
    "items": {
      "minecraft:iron_sword": {
        "fire":      { "strength": 0.02, "other abilities": 0 },
        "slashing":  { "strength": 0.01, ... }
      }
    }
  }
The armor table has the same structure; the switch name is enable_armor_scaling.

Multiplier meaning: 0.02 = each effective attribute point brings 2% scaling.
Example: strength invested to level 30 -> effective 20 points -> a certain type
multiplier 0.02
      -> that type's scaling = 0.02 × 20 = +40%.
Filling 0 = that ability has no scaling for that damage type.

[Weapon Settlement] Only takes effect for players (mobs have no attribute
points), independent by damage type, additively merged into the existing attack
multiplier:
  Type damage × (1 + charm bonus + potion bonus + weapon scaling)
The attacking weapon uses the player's held item (if the main hand has a scaling
entry, use main hand; otherwise check offhand).

[Armor Settlement] Only takes effect for players, head/chest/legs/feet 4 pieces
multiply sequentially, independent by type, located "after enchantment + potion
resistance, before charm type resistance":
  Damage × (1−helmet scaling) × (1−chestplate scaling) × (1−leggings scaling) × (1−boots scaling)
Note this is multiplicative, not additive: 4 pieces each 10% fire scaling ->
  0.9×0.9×0.9×0.9 ≈ 0.656, i.e. fire damage taken is about -34% (not -40%).

[Letter Grade Display]
The tooltip's "Ability Scaling (Damage Bonus/Mitigation)" section is calculated
in real time based on the current viewing player's attribute points. Each line =
type + letter grade + percentage, sorted descending by scaling:
  Weapon: Fire S (+150%) (red percentage)
  Armor: Fire S (-150%) (green percentage, indicating reduced damage taken of
         that type)
Types with scaling ≤ 0 are not displayed (but negative scaling still
participates in actual settlement).
Letter thresholds can be customized in each file's grade_thresholds, default:
  S≥150%  A≥100%  B≥75%  C≥50%  D≥25%  E≥0%

[Display Toggle] display_config.json:
  show_equipment_scaling   Equipment scaling section master toggle (default true)

[Automatic Maintenance]
  - New damage type -> all equipment automatically gets that type row added
  - more_attributes new ability (datapack extension) -> automatically add ability column
  - Install a mod with new weapons/armor -> startup scan automatically indexes all-0 rows
  - Old files automatically migrate and back up to backups/, hand-filled values
    are not lost
  - All-0 rows do not participate in network sync

================================================================
XIII. Potion Effect System (Resistance Up/Down + Damage Amplification/Weakening)
================================================================

At startup, the mod automatically registers potion effects per damage type
(8 types × 4 effects = 32):

  resist_<type>        Resistance up (beneficial): when hit, that type's
                       resistance +X%/level
                       Additively merged into the enchantment resistance pool
                       (same settlement stage as protect enchantment)
  vulnerable_<type>    Resistance down (harmful): when hit, that type's
                       resistance -X%/level
  amplify_<type>       Damage amplification (beneficial): when attacking, that
                       type's damage +X/level
                       Additively merged into the charm damage bonus multiplier
  weaken_<type>        Damage weakening (harmful): when attacking, that type's
                       damage -X/level

Effect name examples: resist_fire (fire resistance up), amplify_slashing
(slashing damage amplification), vulnerable_dark (dark resistance down), etc.

[Value Config] mob_effects_config.json:

  enable_mob_effects    Master switch (default true)
  defaults              Default per-level values (used when adding rows for new
                        damage types):
                          resist_up_per_level    5.0  (+5% resistance per level)
                          resist_down_per_level  5.0  (-5% resistance per level)
                          damage_up_per_level    0.10 (+10% damage per level)
                          damage_down_per_level  0.10 (-10% damage per level)
  per_type              Per-type overrides (can set values individually for each
                        damage type)

When adding a damage type, effect value rows are automatically filled according
to defaults; when deleting a damage type, corresponding rows are automatically
removed. Effect registration requires a game restart; values hot-reload.

[How to Grant Effects]
Effects are granted by command (there is no brewable potion form):
  /effect give @s damageoverhaul:resist_fire 60 1
  (effect ID, 60 seconds, level 1 -> +5% fire resistance)
  /effect give @s damageoverhaul:amplify_slashing 60 2
  (60 seconds, level 2 -> +20% slashing damage)

Other mods/datapacks can also grant these effects through /effect or effect pools.
Effects also work on mobs (e.g., give a mob vulnerable_fire to lower its fire
resistance).

[Settlement Position]
Complete settlement chain (potion effects in bold):
  Adjusted damage = original damage ×(1+charm bonus+potion bonus+weapon scaling)
              ×(1-mob resistance)×(1-armor resistance)
              ×(1-enchantment resistance-potion resistance)
              ×armor scaling 4 pieces ∏(1−single piece scaling)
              ×(1-charm type resistance)

Potion resistance and enchantment resistance share the same additive pool
(percentages are added and then reduced together). Potion damage bonus and charm
damage bonus share the same multiplier (ratios are added and then multiplied
together).

[Effect Icons]
Effect icons are located at assets/damageoverhaul/textures/mob_effect/,
named resist_fire.png, amplify_slashing.png, etc. You can replace them with
hand-drawn textures (recommended 18×18 pixels).

================================================================
XIV. Toughness and Impact Force System
================================================================

The mod implements a dynamic toughness system. A weapon's guard break value
deducts the target's toughness. When toughness reaches zero, an impact effect
is triggered.

[Core Concepts]
  guard_break     Weapon attribute; each attack deducts target toughness
  toughness       Dynamic value resisting guard break; broken when it reaches zero
  impact_effect   Effect associated with the weapon (displacement/stun),
                  triggered when toughness is broken

[Toughness Formula]
  maxToughness = base toughness + Σ armor toughness + Σ charm toughness
    Player base: player_config.json's base_toughness
    Mob base: entity_resistances/ corresponding entity's base_toughness
  When hit: currentToughness -= weapon guard_break
  Trigger condition: currentToughness <= 0 -> toughness broken -> trigger impact effect

[Toughness Recovery]
  Player: linear recovery per tick (maxToughness - currentToughness) / 40
          (about 2 seconds to full), no delay, no need to stop taking damage.
  Mob: after stopping taking damage for 1 second, recovers at the same speed.
  After toughness is broken and affected by an impact effect, reset to max
  (not reset when immune/not triggered).
  When equipment changes cause maxToughness to change, currentToughness scales
  proportionally.

[Impact Resistance] (only player base + mob base, does not affect guard_break)
  1. Immunity: impact effect IDs listed in immune_impact_effects are completely ignored
  2. Remap: in impact_effect_remap, {"D": "C"} means impact D is treated as impact C

[Config Files]
  weapon_guard_break.json    Weapon guard break values + associated impact effect IDs
  unarmed_distributions.json Mob/player unarmed guard break values + associated impact effect IDs
  armor_toughness.json       Armor toughness (4 pieces stack)
  player_config.json         Player base toughness + immunity list + remap
  impact_effects.json        Impact effect presets (direction/distance/stun duration/AI pause)
  charms.json / external_charms.json  Charm toughness field

[Impact Effect Presets] impact_effects.json
  Each effect contains:
    up_down           Up/down direction: + up, - down, 0 none
    left_right        Left/right direction: + right, - left, 0 none
    forward_backward  Forward/backward direction: + forward, - backward, 0 none
                      (all three axes are relative to the victim's facing; can
                      be combined arbitrarily, e.g., diagonal knockback)
    distance          Displacement distance (blocks)
    duration_tick     Stun duration (ticks). Mob=completely disables AI
                      (no movement, no targeting, no attacking);
                      Player=completely disables all input (movement/attack/
                      jump/use item/interact/hotkeys).
                      Implemented via NBT marker + network packet sync, not a
                      potion effect.
    ai_pause_tick     Mob AI extra pause ticks (optional, reserved field)

  [Interrupt Behavior During Stun] When stun is active, besides pausing AI, it
  also cancels the target's ongoing behavior and returns it to base state
  (continuously cancels every tick during the stun to prevent re-triggering):
    - Bow drawing/crossbow charging/drinking potion/using item, etc.: immediately
      stopUsingItem
      (also applies to players: the server directly interrupts channeling;
      channeling is wasted, and releasing will not shoot)
    - Targeting and pathfinding: clear current target, stop pathfinding
    - Creeper explosion charge: swell reset to zero, charge direction reset,
      clear ignited (otherwise the charge restarts)
    - Warden sonic boom: abort ongoing sonic boom behavior and return to base
      state (enter cooldown).
      Note: does not clear the Warden's targeting/anger memory; after the stun
      ends it will continue chasing the original target.
    - Better Combat swing: interrupt ongoing swing and prevent attack settlement
      when channeling ends;
      during stun also release attack/use keys to avoid holding left click being
      continuously re-triggered.
      When Better Combat is not installed, this logic automatically skips, does
      not affect vanilla behavior, and adds no dependency.

[Example: Add guard break and knockback effect to an iron sword]
1. Open impact_effects.json, confirm or add an effect:
     "light_knockback": {
       "up_down": 0.0, "left_right": 0.0, "forward_backward": -1.0,
       "distance": 2.0, "duration_tick": 20, "ai_pause_tick": 10
     }
2. Open weapon_guard_break.json, find "minecraft:iron_sword":
     "guard_break": 15.0,
     "impact_effect": "light_knockback"
3. After reload, each iron sword attack deducts 15 toughness from the target.
   When toughness reaches zero, the target is knocked backward 2 blocks and
   stunned for 20 ticks.

[Example: Diagonal launch (forward and upward)]
     "launch_forward_up": {
       "up_down": 1.0, "left_right": 0.0, "forward_backward": 1.0,
       "distance": 3.0, "duration_tick": 30, "ai_pause_tick": 15
     }

[Example: Add guard break and knockback to unarmed attacks]
Open unarmed_distributions.json, find the corresponding mob (e.g., "minecraft:zombie"):
  "guard_break": 8.0,
  "impact_effect": "light_knockback"
After reload, that mob's unarmed attack deducts 8 toughness per hit. When
toughness reaches zero, it triggers knockback.
The same applies to player unarmed attacks; the corresponding entry is
"minecraft:player".

[Example: Make the player immune to a certain impact effect]
Open player_config.json:
  "immune_impact_effects": ["heavy_knockback"]
This effect is completely invalid for the player (guard break still deducts
toughness, but the effect is not triggered).

[Example: Remap impact A to impact B]
Open player_config.json (or the corresponding mob in entity_resistances):
  "impact_effect_remap": { "light_knockback": "launch_up" }
When receiving light_knockback, launch_up is actually triggered (upward launch).

================================================================
XV. Mana Repair (requires Botania)
================================================================

When Botania is installed, mana_repair_config.json allows durability items to
consume mana to automatically repair:

  - Each item entry must be enabled individually
  - Can configure "mana consumed per durability point" (ratio freely adjustable)
  - When Botania is not installed, this feature is automatically disabled and
    the mod runs normally

Tooltip displays enabled status and mana consumption ratio.

================================================================
XVI. Display Toggles and Server Sync
================================================================

display_config.json controls eight types of tooltip display:

  show_weapon_distribution      Weapon damage distribution
  show_armor_resistance         Armor resistance
  show_projectile_distribution  Projectile damage distribution
  show_mana_repair              Mana repair status
  show_external_charm_bonus     Third-party charm bonus
  show_equipment_scaling        Equipment ability scaling (requires more_attributes)
  show_weapon_guard_break       Weapon guard break value and impact effect
  show_armor_toughness          Armor toughness

Server-side priority: in multiplayer, the server's display config prevails and
is automatically synced to the client on login, ensuring consistent display
across the server. Singleplayer directly uses the local config.

================================================================
XVII. Automatic Migration and Backup Mechanism
================================================================

Each time configs are loaded (startup/reload/migrate):

  1. Validate each file's _schema_version; old formats are automatically
     migrated to the new format
  2. Missing damage types/entries are automatically filled and written back
     to the file
  3. Before modification, the original file is automatically backed up to:
       config/damageoverhaul/backups/<timestamp>/
  4. All automatic changes are recorded in the migration log (view with
     /damageoverhaul migrations)

Manual adjustments will never be overwritten.

================================================================
XVIII. Patchouli Manual Explanation
================================================================

The mod includes a complete Patchouli manual, "Damage Overhaul Guide" (the
in-game version of this tutorial), with contents and table of contents:

  - Mod Introduction: Welcome / Eight Damage Types / Quick Start
  - System Details: Weapon Distribution / Resistances / Enchantments /
    Projectiles / Entity Replacement / Gun Compatibility / Block Damage /
    Charm System / Equipment Scaling / Potion Effects / Mana Repair /
    Special Mechanics and Display
  - Config Files: Overview / Modification and Reload Process
  - Commands: Detailed Explanation of the Four Commands
  - FAQ

The manual supports Chinese and English (automatically follows game language).
Manual entries can hot-reload: in-game, Shift+click the pencil icon at the
bottom left of the manual to refresh the content.

================================================================
XIX. Frequently Asked Questions (FAQ)
================================================================

Q1: The client cannot see the server's distribution config?
A: No manual sync is needed -- the server automatically pushes all configs when
   the player logs in. If you just changed server configs, reconnect.

Q2: After adding a damage type, the enchantment does not appear?
A: Enchantments and potion effects are registered frozen at startup. Restart
   the game to generate new enchantments and new potion effects. Value configs
   for already registered entries can hot-reload.

Q3: Config changes do not take effect?
A: Run /damageoverhaul reload. If the JSON format is incorrect, check the error
   messages in the startup log.

Q4: Want to customize the distribution of a gun mod's gun?
A: First shoot once with that gun (auto-learning will register an entry), then
   edit the corresponding entry in weapon_distributions/ and reload.

Q5: If I change arrows to shoot TNT, how is damage calculated?
A: See Sections IX/X. TNT explosions default to the blunt mapping, and can be
   refined in the mapping table or block/projectile config.

Q6: Want to hide certain tooltips?
A: display_config.json has eight toggles; server-side prevails.

Q7: Can vanilla arrows be enchanted?
A: Yes. Through an anvil: left weapon + strike enchanted book, right arrows,
   merge to get enchanted arrows. projectile_strike enchantment only applies to
   pure projectile items.

Q8: Will configs be lost after upgrading the mod version?
A: No. Automatic migration preserves your manual adjustments, and old files are
   backed up to the backups directory first.

Q9: How do I add damage bonus or resistance to other mods' rings/charms?
A: No need to hand-write config. After starting the world, the mod has already
   automatically indexed all Curios charms into external_charms.json. Find the
   corresponding item row, change the desired damage type factor from 0 to a
   value (e.g., 0.15), and reload. See Section XI for details.

Q10: Third-party charm values were changed but there is no effect/display?
A: Check in order: ① whether the charm is truly equipped in a Curios slot
   (placing in backpack has no effect); ② whether the factor is non-zero
   (0 has no effect and is not displayed); ③ whether reload was executed
   (multiplayer servers also require reconnect to sync display);
   ④ whether enable_external_charms is true.

Q11: The modpack has too many charms and external_charms.json is too long?
A: File length does not affect performance (all-0 rows are not synced and do
   not participate in settlement). If you do not want to automatically index
   new charms, set auto_scan_curios_items to false; you can also directly
   delete unneeded rows (they will be re-indexed on the next scan).

Q12: How do I temporarily add/subtract damage/resistance for players or mobs?
A: Use the /effect command. Each damage type has 4 effects:
   resist_<type> (resistance up), vulnerable_<type> (resistance down),
   amplify_<type> (damage amplification), weaken_<type> (damage weakening).
   For example, /effect give @s damageoverhaul:amplify_fire 60 2 gives
   60 seconds of +20% fire damage. Effects also work on mobs. See Section XIII.

Q13: Can the enchantment level cap exceed level 4?
A: Yes. The max_enchant_level field in damage_types.json controls the whole
   series' enchantment level cap, default 255. Any level granted by anvil
   stacking and commands works normally according to the linear formula
   (e.g., level 10 protect = 50% resistance). The enchanting table still
   produces at most level 4 (vanilla limit). Modifying the cap requires a restart.

Q14: How do I configure equipment scaling? How are attribute points calculated?
A: You need more_attributes installed. After first entering the world,
   weapon_scaling/ and armor_scaling/ automatically index all weapons/armor
   (all-0 rows).
   Scaling = Σ(multiplier × effective attribute points), effective attribute
   points = invested level − baseLevel (strength baseLevel=10, others 0, can be
   negative). A 0.02 multiplier = +2% per point.
   Weapon scaling is additively merged into the attack multiplier; armor's 4
   pieces multiply sequentially for mitigation. See Section XII.

Q15: I installed more_attributes but the tooltip has no "Ability Scaling" section?
A: Check in order: ① whether that equipment's multipliers are all 0 (all 0 is
   not displayed; first fill in a non-0 multiplier in the json and reload);
   ② whether the player has allocated points in more_attributes (when effective
   attribute points are all 0, it is not displayed); ③ whether
   show_equipment_scaling and enable_weapon_scaling / enable_armor_scaling are
   true; ④ multiplayer servers require reconnect to sync the scaling table.

Q16: What is the difference between guard break and impact force?
A: guard_break is a weapon attribute used to deduct target toughness;
   impact_effect is the effect triggered when toughness is broken
   (displacement/stun). A weapon can have only guard break (only deducts
   toughness and triggers no effect), or both. Impact resistance
   (immunity/remap) only affects impact effects, not guard break deduction.

Q17: Why did I set guard_break for a weapon but there is no impact effect?
A: Check whether the impact_effect field for that weapon in
   weapon_guard_break.json is filled with a valid effect ID (it must be defined
   in impact_effects.json). If impact_effect is empty, after toughness is broken
   it only deducts toughness and triggers no effect.

Q18: How do I make a certain mob completely immune to impact force?
A: In entity_resistances/, find that mob, and add the corresponding impact
   effect ID to the immune_impact_effects list. Note that guard break still
   deducts toughness; it simply does not trigger that impact effect when
   toughness is broken.

Q19: Toughness recovery is too slow/too fast. How do I adjust it?
A: The recovery speed is a fixed linear rate (about 2 seconds from 0 to full),
   currently not configurable. You can increase total toughness by raising base
   toughness/armor toughness/charm toughness, or raise weapon guard break to
   break toughness faster. See Section XIV.

================================================================
  End of tutorial. Have fun!
================================================================

damageoverhaul-1.3.1.jar
MC Client, 1.20.1, Forge, Server
Release 2026-10-14 Get
damageoverhaul-1.3.0.jar
MC Client, 1.20.1, Forge, Server
Release 2026-10-09 Get
damageoverhaul-1.2.1.jar
MC Client, 1.20.1, Forge, Server
Release 2026-10-04 Get
damageoverhaul-1.2.2.jar
MC Client, 1.20.1, Forge, Server
Release 2026-10-04 Get
damageoverhaul-1.2.0.jar
MC Client, 1.20.1, Forge, Server
Release 2026-10-03 Get
damageoverhaul-1.2.0.1.jar
MC Client, 1.20.1, Forge, Server
Release 2026-10-03 Get
damageoverhaul-1.1.2.jar
MC Client, 1.20.1, Forge, Server
Release 2026-09-19 Get
damageoverhaul-1.1.0.jar
MC Client, 1.20.1, Forge, Server
Release 2026-09-01 Get
damageoverhaul-1.1.1.jar
MC Client, 1.20.1, Forge, Server
Release 2026-09-01 Get
damageoverhaul-1.0.18.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-31 Get
damageoverhaul-1.0.19.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-31 Get
damageoverhaul-1.0.17.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-29 Get
damageoverhaul-1.0.16.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-27 Get
damageoverhaul-1.0.15.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-26 Get
damageoverhaul-1.0.14.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-25 Get
damageoverhaul-1.0.13.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-22 Get
damageoverhaul-1.0.10.jar(don't download it)
MC Client, 1.20.1, Forge, Server
Release 2026-08-21 Get
damageoverhaul-1.0.11.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-21 Get
damageoverhaul-1.0.9.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-17 Get
damageoverhaul-1.0.8.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-16 Get
damageoverhaul-1.0.4.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-12 Get
damageoverhaul-1.0.5.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-12 Get
damageoverhaul-1.0.6.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-12 Get
damageoverhaul-1.0.7.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-12 Get
damageoverhaul-1.0.2.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-11 Get
damageoverhaul-1.0.3.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-11 Get
damageoverhaul-1.0.1.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-10 Get
damageoverhaul-1.0.0.jar
MC Client, 1.20.1, Forge, Server
Release 2026-08-09 Get
Advertisement Remove ads with Premium →

You Might Also Like