Minecraft Commands Guide: How to use damage_resistant component
This simple mechanic lets you create indestructible relics, lava-proof loot, or armor that resists only certain attacks. The magic lies in correctly using SNBT and tagging your damage types. Once you know how to use it, you’ll have full control over item survival and selective immunity.

What is the damage_resistant component
The damage_resistant component makes an item ignore certain damage types. It works in two ways. First, if the item is dropped on the ground (in entity form), it becomes immune to the specified types of damage - like fire, explosions, or falling anvils. Second, if the item is equipped by a player or mob, it won’t be damaged or degraded when the wearer takes damage of that type. This makes it incredibly useful for preserving tools in harsh environments, or designing adventure gear that lasts only under certain conditions. The component uses a single key: types, which is a tag referring to one or more damage types.
How to format the SNBT structure
The damage_resistant component is compact and powerful. It only needs one key types. This key defines which types of damage the item is immune to. But here’s the catch Minecraft does not accept raw damage type names here. You must use a damage tag, which is a special identifier starting with .
You cannot write "minecraft:lava" or "minecraft:fall" directly. These will break the command. Instead, you have to write something like:
types:"#minecraft:is_fire"

This refers to a tag that contains multiple damage types. For example, minecraft:is_fire includes lava, fire blocks, and flame-based damage.
Here’s a reusable pseudo-structure:

Replace <item> with any item ID (like netherite_sword, diamond_helmet) and <damage_type_tag> with one of the valid tag names listed below.
Built-in damage tags in Minecraft
Here are the vanilla tags available in the game that you can use without needing datapacks:
- #minecraft:is_fire — fire-based damage (lava, fire, flame projectiles)
- #minecraft:is_projectile — arrows, tridents, snowballs, fireballs
- #minecraft:is_fall — fall damage (from dropping)
- #minecraft:is_lightning — lightning strikes
- #minecraft:is_explosion — TNT, creepers, bed explosions, respawn anchors
- #minecraft:bypasses_shield — damage that ignores shields
- #minecraft:ignores_invulnerability — damage that affects even entities with invulnerability (e.g. void damage)
- #minecraft:bypasses_armor — armor-piercing damage
- #minecraft:in_fire — standing in fire block
- #minecraft:not_drowning — excludes drowning (used for some logic)
These are defined by Minecraft itself and can be used in any types:”#..." line.

Where to find or define more tags
If the built-in tags don’t cover your needs, you can define your own tags in a datapack. Custom damage type tags go in:
data/<your_namespace>/tags/damage_type/<tag_name>.json
Example content for lava_only.json:
{
"values": ["minecraft:lava"]
}
Then you can reference it like:
types:”#your_namespacelava_only"
This gives you total flexibility - you can target only specific damage types like "minecraft:fall", "minecraft:cactus", "minecraft:anvil", etc., by placing them in your own tag.
How to use damage tags
The types field accepts only tag references. So you’ll need to either:
1. Use existing tags like #minecraft:is_fire or #minecraft:in_fire
2. Create your own tags in a datapack like #my_pack:fall_damage or #custom:anvil_crush
Then use those tags in the component. If the item takes damage not included in that tag, it behaves normally. This is great for making selective immunity instead of total indestructibility.

Examples and advanced usage
Imagine you’re building a volcano dungeon where players can only retrieve loot if it doesn’t burn in lava. You can spawn reward gear with this component and #minecraft:is_fire so that it survives the hazards:
/give @p book[minecraft:damage_resistant={types:"#minecraft:is_fire"}]
Or make boots that never wear out from falling by tagging them with fall damage resistance:
/give @p leather_boots[minecraft:damage_resistant={types:"#minecraft:is_fall"}]
Want to create armor that protects against lightning but not anything else? Here’s a helmet that resists only lightning strikes:
/give @p iron_helmet[minecraft:damage_resistant={types:"#minecraft:is_lightning"}]
You could also make shields that stay pristine during explosive battles:
/give @p shield[minecraft:damage_resistant={types:"#minecraft:is_explosion"}]
And for magical scenarios, here’s a golden sword that ignores durability loss from potion-based or magic damage:
/give @p golden_sword[minecraft:damage_resistant={types:"#minecraft:is_magic"}]
These examples show how easy it is to protect gear from specific damage types using only the console and built-in tags. No datapack required.

The damage_resistant component may be small, but it’s incredibly versatile. Combine it with tags, custom damage types, and adventure design, and you’ve got the tools to build truly indestructible gear — exactly when and where you want it.
