MC Toolkit

Guides / Building & Resources

The armor texture you replace is not the one you think

Armor is layered and split by material, so painting the wrong file leaves your pack looking untouched in game.

Armor is the most common first project for a texture pack, and the most common first failure. You paint a chestplate, load the pack, and nothing changes — because the file you edited is not the file the game reads for that piece.

Every armor material is a separate file

There is no single armor.png. Chainmail, copper, iron, gold, diamond, netherite, leather and turtle scute each carry their own files (leather adds a leather_overlay for the dye), and each layer is its own image. A full set is not one texture; it is a small family of them, split by slot and by layer.

The practical consequence: a pack that recolors diamond armor does nothing to iron. If your goal is "make all armor look like X", you are editing one file per material, not one file total.

The layer split, and why it matters

A player's armor reads two files per material:

FileWhat it covers
humanoid/<material>.pngHelmet, chestplate, boots
humanoid_leggings/<material>.pngLeggings only

Leggings get their own file because they use the same body and leg regions of the unwrap as the chestplate and boots, drawn on a slightly smaller model underneath them. Paint humanoid/ and wonder why the leggings are untouched, and you have found the split the hard way. Baby mobs read a third file, humanoid_baby/<material>.png.

Elytra and the trim trap

An elytra is not armor in the file sense — it has its own texture, and it does not inherit armor materials. A pack that reskins chestplates leaves elytra alone.

Trims are worse. Trim patterns and trim materials are separate registries, and a trim renders as a palette-shifted overlay on top of the base armor texture. You cannot paint a trim into the armor file; the game composites it at runtime. Recoloring armor under a trim changes the base, not the trim.

Java and Bedrock differ here

Java reads armor from assets/minecraft/textures/entity/equipment/humanoid/<material>.png and .../humanoid_leggings/<material>.png, and assets/minecraft/equipment/<material>.json says which files a material uses. The old textures/models/armor/ folder, still in many tutorials, has not been read since 1.21.2. Bedrock uses its own layout and its own naming, and a pack built for one will not load in the other. If you are targeting both, you are building two packs.

Working at the real size

Armor textures are not 16×16. They are 64×32, laid out as an unwrapped model — head, body, arms and legs in one image, in fixed regions. Painting a 16×16 square and scaling it up gives you a smeared result, because you are stretching one region across the whole unwrap.

The reliable approach is to start from the vanilla file itself, at its native size, and paint over it. That way the regions line up, the alpha channel survives, and the output path matches what the game replaces.

The Texture Maker covers the square block and item textures; for armor, open the vanilla 64×32 file in an image editor and paint over it at that size.

Texture Maker →

More guides

Browse all →