Minecraft Custom Armor Trims: Patterns and Materials
Make minecraft custom armor trims with a data pack: add a trim pattern and material, then give the trimmed armour with /give in 26.3.
Updated 5 Nov 2026Written for Minecraft 26.33 min read
Written for Minecraft 26.3.
Minecraft custom armor trims are defined in a data pack (the pattern and the material) and drawn by a resource pack (the textures). You add one JSON file for each, then apply the result with the trim item component.
Before you start
Minecraft Java Edition 26.3: data pack format 121.0, resource pack format 97.1.
A data pack and a resource pack. New to packs? Read pack basics first.
An image editor for the pattern texture and an 8 by 1 pixel palette image.
Both packs need a pack.mcmeta. In 26.3 you use min_format and max_format and leave out pack_format:
{
"pack": {
"description": "Custom trims",
"min_format": 121,
"max_format": 121
}
}For the resource pack use "min_format": [97, 1] and "max_format": [97, 1].
Add the trim pattern and material
Create
data/example/trim_pattern/stripes.json. Theasset_idnames the pattern's texture.decalis optional and defaults to false.Create
data/example/trim_material/ender.json. Since 26.3 snapshot 1 the material usespalette_id(a palette texture ID) instead of the oldasset_name.
The pattern, in stripes.json:
{
"asset_id": "example:stripes",
"description": { "translate": "trim_pattern.example.stripes" }
}The material, in ender.json:
{
"palette_id": "example:trim/ender",
"description": { "color": "#258474", "translate": "trim_material.example.ender" }
}A palette ID namespace:path resolves to namespace:textures/palettes/path.png. Here that is assets/example/textures/palettes/trim/ender.png, an image 8 pixels wide and 1 pixel tall. Vanilla palettes also live in textures/palettes/trim/ since 26.3 snapshot 1.
Let players craft the trim
A smithing recipe ties a template item to your pattern. Save it as data/example/recipe/stripes_armor_trim.json:
{
"type": "minecraft:smithing_trim",
"addition": "#minecraft:trim_materials",
"base": "#minecraft:trimmable_armor",
"template": "minecraft:stick",
"pattern": "example:stripes"
}To make your own material work in the smithing table, add its item to the minecraft:trim_materials item tag (data/minecraft/tags/item/trim_materials.json) and give that item the provides_trim_material component.
Add the resource pack assets
Add your grayscale pattern textures to the resource pack under the
examplenamespace, matching the file layout vanilla uses for the pattern'sasset_id.Add the palette image from the previous section.
Add language keys in
assets/example/lang/en_us.json:trim_pattern.example.stripesandtrim_material.example.ender.
Armour that wants a different look for one material or pattern uses trim_overrides in its equipment asset (see custom armor). Each entry has a when object with material and/or pattern, plus a texture and/or a palette. The first match wins.
Restart after changes. Trim pattern and material files do not apply on /reload: leave and reopen the world, or restart the server.
Apply a trim with /give
Give yourself armour that already carries the trim:
/give @s leather_leggings[trim={pattern:"example:stripes",material:"example:ender"}]The give command builder helps with the bracket syntax. Players can also trim armour at a smithing table once the recipe above is loaded.
Check it worked
Hover the armour: the tooltip should list your pattern and material names in the colour you set.
Wear it. The pattern should show, tinted by your palette.
Run
/give @s stickand try the smithing table with your template, armour and material item.
Common problems
The tooltip shows raw keys
The language file is missing or the keys do not match the translate values exactly.
The pattern is invisible
The pattern texture is not where the game looks for the asset_id, or the palette image is missing.
The recipe is not found
Check the folder is recipe (singular) and the pack loaded. Run /datapack list.
Old pack from before 26.3 breaks
Older materials used asset_name and override_armor_assets. Both changed in 26.3 snapshot 1. Update the JSON and move palettes to textures/palettes/trim/.