MC Toolkit

Guides / Commands & Data

Damage types: which 19 ignore armour, and why shields are the weaker guard

26.3 ships 51 damage types. 19 bypass armour, 30 bypass shields, and the overlap is not what people assume — every type that beats armour also beats a shield.

A damage type is not just a death message. It carries flags that decide whether armour counts, whether a raised shield counts, and whether Resistance counts — and datapacks read those same flags through #minecraft:bypasses_armor and friends. Every number below is counted from Mojang's shipped damage_type files for 26.3, which is what the browser on this page renders.

The counts

51 damage types. Of those, 19 ignore armour and 30 ignore a raised shield.

That second number surprises people. A shield looks like the stronger defence because it blocks a hit outright, but it is the flag that gets bypassed more often — by 30 types against armour's 19.

The overlap is one-directional

This is the part worth internalising, and it is a hard structural rule rather than a tendency:

Every damage type that bypasses armour also bypasses shields. There are no exceptions.

Counted directly: the set "bypasses armour but not shields" is empty. So the 19 armour-piercing types are a strict subset of the 30 shield-piercing ones, and 11 types sit in the gap — they go through a shield but armour still reduces them:

cactus, campfire, dry_out, falling_anvil, falling_stalactite, hot_floor, in_fire, lava, lightning_bolt, sulfur_cube_hot, sweet_berry_bush

Read that list and the logic is obvious once seen: they are environmental or overhead sources. You cannot raise a shield against the floor you are standing on, or against an anvil landing on your head, but plate still soaks some of it.

The practical version: if a hit went through your armour, the shield was never going to help either. Fall damage, drowning, freezing, starvation, /kill — armour and shield are both irrelevant. Reach for Feather Falling or Respiration instead — or leather armour against freezing — because those are protections the flags do not skip. (Frost Walker's immunity only covers magma blocks, not the cold.)

Only one type ignores everything

starve is the single damage type that bypasses armour, shields and status effects together — so Resistance does not touch it either. Nothing in the game protects you from an empty hunger bar except food.

Exhaustion is binary

Taking damage makes you hungrier, and the amount is not graded the way you might expect. Across all 51 types there are exactly two exhaustion values in 26.3: 0 and 0.1. 32 of the 51 apply 0.1; the rest apply none.

So there is no "big hits make you hungrier" rule. A creeper to the face and a scratch from a zombie cost the same exhaustion, while fall damage is one of the 19 types that cost nothing.

Scaling has two settings, not a curve

scaling decides whether difficulty multiplies the damage, and vanilla only ever uses two of its three values: when_caused_by_living_non_player (47 types) or always (4). A datapack can also pick never. There is no per-type difficulty curve to tune — a type is either scaled by difficulty or it is not.

Why this matters for commands

/damage <target> <amount> <type> takes any of the 51, and picking the wrong one quietly changes the outcome:

/damage @p 10 minecraft:fall      # armour ignored, shield ignored
/damage @p 10 minecraft:lava      # shield ignored, armour still reduces it
/damage @p 10 minecraft:starve    # armour, shield and Resistance all ignored

Three commands, the same 10, three different results on the same target. If a map is "balanced" against a player in full netherite, the type you pick decides whether that armour was part of the balance at all.

Minecraft Data Browsers — Set 1 →

More guides

Browse all →