Custom Trim Builder - New Armor Trim Datapack

Build new armor trim patterns and materials as a Java 1.20+ datapack. Pick a version and the JSON matches that game version exactly. Download the ready-to-drop datapack.

Game version
Loading vanilla trim data...
JSON matched to 26.3

Patterns drop template_item (removed in 1.21.5, the template link moved to data). Materials are just palette_id and description. 26.3 moved palettes to textures/palettes/trim and darker palettes per armor into that armor's equipment file, which the download writes for you.

Namespace (groups all your new trims)

Your trims will be mytrims:<id>. Lowercase letters, numbers, _ . - only.

1 - Define the pattern
Pattern id (unique, no spaces)
Display name (shown in smithing UI)
data/mytrims/trim_pattern/celtic.json
{
  "asset_id": "mytrims:celtic",
  "description": {
    "translate": "trim_pattern.mytrims.celtic",
    "fallback": "Celtic"
  },
  "decal": false
}
Patterns in this pack (1)
mytrims:celtic
Celtic
/give @s minecraft:diamond_chestplate[trim={pattern:"mytrims:celtic",material:"mytrims:amber"}]
Resource pack textures needed
assets/mytrims/textures/trims/entity/humanoid/celtic.pngassets/mytrims/textures/trims/entity/humanoid_leggings/celtic.png
2 - Pack settings
My Custom Trims
Get a link to this design. Sign in to keep it and publish it. Browse custom trims

Build new armor trims as a datapack

Armor trims became data-driven in Java Edition 1.20, which means you can register your own patterns and materials with a datapack instead of editing the game. This builder writes the trim_pattern and trim_material JSON for you, matches every key to the version you pick, shows a live preview, and hands back a ready-to-install zip.

A finished trim has two halves. The pattern is the shape (a trim_pattern entry with an asset_id and description), and the material is the color (a trim_material entry with a tint color and a palette). The game pairs any pattern with any material, so a handful of each gives you a large set of looks.

Pick a game version first. The JSON for both registries changed across updates: trim_pattern dropped template_item in 1.21.5, and trim_material dropped item_model_index in 1.21.4 and ingredient in 1.21.5. 26.3 cut trim_material down to palette_id and description, and rejects the older shape outright, which stops the world from loading with the datapack. The tool emits the exact shape your version reads.

What the datapack and resource pack each do

The datapack registers the new pattern and material so the game knows they exist and can apply them in a smithing table or through the trim component. The resource pack supplies the textures the registry entries point at. A pattern needs two greyscale overlay textures (one for the body, one for the leggings layer) under trims/entity; a material needs a color palette under trims/color_palettes (palettes/trim from 26.3), plus a darker palette for each armor override.

The armor_trims atlas uses paletted permutations, so one greyscale pattern overlay is recolored by every material palette automatically. That is why you draw a pattern once in greyscale and it works with gold, diamond, your own amber color and anything else. The game only stitches the pairs it is told about, so up to 26.2 a new pattern or material needs its own atlas entries, and from 26.3 each overlay needs a small .png.mcmeta instead. The download's resourcepack folder holds those files, and the tool prints the exact path for every image you add.

Install and apply your trims

1. Build and download the datapack, then copy its folder into saves/<world>/datapacks/.

2. Add the listed overlay and palette textures to a resource pack under assets/<namespace>/ and enable it.

3. In game, run /reload, then use the give command shown next to each entry to get a piece of armor wearing your trim, or apply it at a smithing table once the template item is in your world.

Keep ids unique. The tool lists the vanilla pattern and material ids for your version so you do not clash with a built-in one. New ids live under your own namespace, so vanilla trims stay untouched.

Community custom armor trims

See all 24

Open any of these in the Custom Trim Builder to change it. Save your own with the Save & share button above, then publish it to the custom armor trims gallery.

Frequently Asked Questions

How do I make a custom armor trim in Minecraft?

Armor trims are data-driven on Java Edition 1.20 and later, so you add new ones with a datapack. This tool writes a trim_pattern JSON for each new pattern and a trim_material JSON for each new color, packs them into a datapack, and gives you the give command to apply a trim. You also add the matching greyscale overlay and color palette textures in a resource pack. Drop the datapack into your world's datapacks folder and run /reload.

What is the difference between a trim pattern and a trim material?

A trim pattern is the shape of the trim, like coast or sentry, and lives in a trim_pattern JSON with an asset_id and a description. A trim material is the color, like gold or diamond, and lives in a trim_material JSON with a color and a palette (an asset_name with per-armor overrides up to 26.2, a palette_id from 26.3). The game combines one pattern with one material to draw the trim on a piece of armor.

Why do the trim_pattern and trim_material keys change between versions?

Mojang reworked the trim schema several times. trim_pattern carried a template_item field through 1.21.4 but it was removed in 1.21.5. trim_material had item_model_index through 1.21.2 and an ingredient field through 1.21.4, both removed by 1.21.5, and the override map key changed from a bare material id to a namespaced item id. This tool reads your selected version and emits exactly the keys that version expects, so the JSON loads without errors.

What is override_armor_assets in a trim material?

Shiny armor like diamond and netherite would hide a same-color trim, so a material can point those armor types at a darker palette instead. override_armor_assets maps an armor material to an alternate palette name, for example minecraft:diamond to diamond_darker. On versions before 1.21.4 the same idea uses override_armor_materials with a bare key like diamond. Add a darker palette row per armor type in the tool and it writes the correct map for your version. 26.3 moved this out of the material: the darker palette is now a trim_overrides entry in the armor's own equipment file in the resource pack, and the download writes that file for you.

Which textures does my trim datapack need in a resource pack?

A new pattern needs two greyscale overlay textures inside assets/<namespace>/, under trims/entity/humanoid and trims/entity/humanoid_leggings (trims/models/armor before 1.21.2). A new material needs a color palette under trims/color_palettes, or palettes/trim from 26.3, plus a darker palette for each override. The tool lists the exact paths next to each entry. Up to 26.2 the armor_trims atlas has to list every new pattern and palette pair; from 26.3 each overlay needs a .png.mcmeta naming the trim_base palette instead. The download's resourcepack folder already has those files, so you only add the images.

Does this work on Bedrock Edition?

No. Data-driven trim_pattern and trim_material registries are a Java Edition feature from 1.20 onward. Bedrock does not load armor trims from datapacks, so this tool is Java only. The datapack it builds installs in a Java world's datapacks folder.

Preview trims on armor, or browse more Minecraft tools: