# Minecraft Tutorial Custom Armor Trim

> Minecraft Tutorial: Custom Armor Trims 自定义盔甲装饰教程（Java 1.21.5+）：Data Pack 数据包（Recipe 配方 smithing_trim 模板+基底+添加物+图案、Trim Pattern 装饰图案 asset_id+description+decal、Trim Material 装饰材料 provides_trim_material 数据组件 而非配方字段 asset_name+description）、Resource Pack 资源包（Equipment Model Atlas 装备模型图集 覆盖assets/minecraft/atlases/armor_trims.json 合并非替换原版 paletted_permutations 调色板置换 palette_key+permutations+textures；Item Model Atlas 物品模型图集 覆盖blocks.json 原版纹理复用；Item Models 物品模型 select property minecraft:trim_material 按材料选择层 texture layer0+layer1）。

- Skill: `zmjjkk123-hub/minecraft-tutorial-custom-armor-trim` (Agent Skill)
- Install (CLI): `npx skillmds@latest add zmjjkk123-hub/minecraft-tutorial-custom-armor-trim`
- Raw SKILL.md: https://api.skillmd.com/api/skills/zmjjkk123-hub/minecraft-tutorial-custom-armor-trim/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: ZMJJKK123-hub (https://skillmd.com/u/zmjjkk123-hub)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/zmjjkk123-hub/minecraft-tutorial-custom-armor-trim

---


# Tutorial: Custom Armor Trims

Java Edition, for 1.21.5+ (older versions: "Custom armor trim/old"). Prerequisites: datapack basics. Tools: the Misode Recipe/Atlas/Item generators (Ctrl+S saves into the web datapack).

## Data Pack

### Recipe

The smithing table has 3 inputs (template, base, addition) + 1 output. A `smithing_trim` recipe e.g. bamboo pattern + blaze powder addition:

```json
{
  "type": "minecraft:smithing_trim",
  "template": "minecraft:bamboo",
  "base": "#minecraft:trimmable_armor",
  "addition": "minecraft:blaze_powder",
  "pattern": "example:bamboo"
}
```

`#minecraft:trimmable_armor` = all trimmable armor (extend it to add more). To also allow vanilla trim materials as additions, add the new item to `#minecraft:trim_materials` and use that tag as `addition`.

### Trim Pattern

`data/example/trim_pattern/bamboo.json`:

```json
{
  "asset_id": "example:bamboo",
  "description": { "translate": "trim_pattern.example.bamboo", "fallback": "Bamboo Trim" },
  "decal": false
}
```

### Trim Material

The material is NOT a recipe field — it comes from the addition item's `provides_trim_material` data component:

```mcfunction
give @s blaze_powder[provides_trim_material="example:blaze_powder"]
```

Then `data/example/trim_material/blaze.json`:

```json
{
  "asset_name": "blaze",
  "description": { "translate": "trim_material.example.blaze", "fallback": "Blaze Trim Material" }
}
```

## Resource Pack

### Equipment Model Atlas

Trim textures on equipment models come from atlases. Override `assets/minecraft/atlases/armor_trims.json` (merges, doesn't replace vanilla). Draw two textures (`example:textures/trims/entity/humanoid/bamboo.png` and `humanoid_leggings/bamboo.png` — BlockBench "Armor (Main)"/"Armor (Leggings)" templates help; the palette maps palette-key pixels to permutation pixels, others unchanged):

```json
{
  "sources": [
    {
      "type": "paletted_permutations",
      "textures": [ "example:trims/entity/humanoid/bamboo", "example:trims/entity/humanoid_leggings/bamboo" ],
      "palette_key": "minecraft:trims/color_palettes/trim_palette",
      "permutations": { "blaze": "example:trims/color_palettes/blaze" }
    }
  ]
}
```

`palette_key` = the base grayscale colors; `permutations` keys = the material's `asset_name`; `textures` = the patterns to tint.

### Item Model Atlas

Item trim textures are generated from `assets/minecraft/atlases/blocks.json` (merge). Vanilla textures reused:

```json
{
  "sources": [
    {
      "type": "paletted_permutations",
      "palette_key": "minecraft:trims/color_palettes/trim_palette",
      "permutations": { "blaze": "example:trims/color_palettes/blaze" },
      "textures": [
        "minecraft:trims/items/helmet_trim", "minecraft:trims/items/chestplate_trim",
        "minecraft:trims/items/leggings_trim", "minecraft:trims/items/boots_trim"
      ]
    }
  ]
}
```

This produces e.g. `minecraft:trims/items/helmet_trim_blaze`.

### Item Models

Item model definitions select trim textures by the `trim` component: `assets/minecraft/items/iron_chestplate.json` uses a `select` with `property: minecraft:trim_material` and cases per material (`minecraft:quartz`, `minecraft:iron`, `minecraft:netherite`, `minecraft:redstone`, `minecraft:copper`, `minecraft:gold`, ...) with a fallback to the untrimmed model; add a case for your material (here `example:blaze` → `example:item/iron_chestplate_blaze_trim`).

The model file itself (per armor piece; helmet example shown):

```json
{
  "parent": "minecraft:item/generated",
  "textures": {
    "layer0": "minecraft:item/iron_helmet",
    "layer1": "minecraft:trims/items/helmet_trim_blaze"
  }
}
```

`layer0` renders first, `layer1` (from the blocks atlas) over it. Repeat the pattern/leggings/boots equivalents for full coverage.

The complete file set for this tutorial is in the linked public GitHub repository (see the wiki page).

