Every source of damage in Minecraft is backed by a damage type definition that controls exhaustion, difficulty scaling, and which death message the game displays. This explorer lets you browse all 51 damage types and inspect their exact properties from the game data.
Minecraft damage types became data-driven in Java Edition 1.19.4, which means datapack creators can modify existing damage behavior or define entirely new damage sources. Each of the 51 damage types has a unique mix of properties: 32 apply hunger exhaustion of 0.1 per hit, 19 apply zero exhaustion, 47 use living-non-player scaling, and 4 use always scaling.
Whether you are building a custom datapack, writing advancement conditions, or just curious why your death message said "intentional game design" after a bed explosion in the Nether, this tool gives you the full picture.
1. Search by name or ID. Type a damage type name like "arrow", "fall", or "cactus" to jump straight to it.
2. View properties. Each damage type shows its exhaustion value, scaling mode, message ID, and whether it has a special death message type.
3. Filter by scaling. Narrow results to only "always" or "when_caused_by_living_non_player" scaling modes to see which sources change with difficulty.
4. Reference for datapacks. Use the exact namespaced IDs (such as minecraft:fall) when writing predicates, advancements, or the /damage command.
Exhaustion is the hunger exhaustion applied to the player when taking that type of damage. 32 damage types apply 0.1 exhaustion per hit (
arrow,
cactus, mob attack, and more), while 19 damage types apply 0 exhaustion (starvation, freezing, wither effect, magic, and others). The more damage you take, the faster your food bar drains.
Scaling controls whether damage adjusts with game difficulty. 47 damage types use when_caused_by_living_non_player, meaning they only scale when a non-player mob deals the damage. 4 damage types use always scaling: bad_respawn_point, explosion, player_explosion, and sonic_boom.
Death message type decides how the game phrases your death. Most damage types use the default format ("Player was slain by Zombie"). A few have special types, such as intentional_game_design (the clickable death message for bed and respawn anchor explosions).
| Property | What it controls | Common values |
|---|---|---|
| exhaustion | Hunger drained per hit | 0 or 0.1 |
| scaling | Whether damage scales with difficulty | when_caused_by_living_non_player, always |
| message_id | Translation key for the death message | death.attack.* |
| death_message_type | Special death message formatting | intentional_game_design |
The /damage command deals specific damage types to entities. For example, /damage @e[type=zombie] 5 minecraft:fall deals 5 fall damage to all zombies. Use this explorer to find the exact damage type ID you need.
Create custom damage types by adding JSON files to data/namespace/damage_type/. Each file needs the exhaustion, scaling, and message_id fields. You can also add them to damage type tags to interact with protection enchantments.
Minecraft groups damage types into damage type tags such as #minecraft:bypasses_armor, #minecraft:is_fire, and #minecraft:is_freezing. These tags determine how protection enchantments reduce damage and how the game handles immunity.
There are 51 damage types in Minecraft Java Edition. They cover basic combat (arrow, mob_attack, player_attack), environmental hazards (cactus, fall, drown, freeze), and special cases (bad_respawn_point, generic_kill, outside_border). Each one has its own exhaustion, scaling, and death message properties.
Damage exhaustion is the hunger exhaustion added when the player takes damage from a specific source. 32 of the 51 damage types apply 0.1 exhaustion per hit, while 19 damage types (like starve, freeze, and magic) apply 0 exhaustion. More exhaustion means your food bar drains faster.
Damage scaling controls whether damage adjusts based on difficulty. 'when_caused_by_living_non_player' means the damage scales with difficulty only when dealt by a non-player mob. 'always' means it scales with difficulty in all cases, including environmental sources. 47 types use living-non-player scaling and 4 use always scaling.
The message 'Player was killed by [Intentional Game Design]' appears when you die from a bed explosion in the Nether or End, or a respawn anchor explosion in the Overworld. The bad_respawn_point damage type has a special death_message_type of 'intentional_game_design' that creates this clickable text.
Damage types in the #minecraft:bypasses_armor tag ignore armor protection entirely. This includes magic, starvation, wither effect, freezing, and void damage. The Protection enchantment reduces some of these, but starvation and void damage bypass everything.
Yes. Since Java Edition 1.19.4, damage types are data-driven. Place a JSON file in data/namespace/damage_type/ in your datapack and define the exhaustion, scaling, and message_id fields. You can then apply it with the /damage command and add it to damage type tags.
Browse more Minecraft tools: