promotional bannermobile promotional banner

Armor Model Backport

Lets resource packs replace the 3D model of worn armor — EMF's per-piece armor models, backported to 1.21.1.

Lets resource packs replace the 3D model of worn armor. EMF's per-piece armor models, backported to Minecraft 1.21.1.

What it does

Minecraft 1.21.1 locks worn armor to a fixed shape. Resource packs can only change the texture — and even that is pinned to a 64×32 layout.

This mod removes both limits. A pack can define armor geometry in OptiFine CEM format, at any texture size.

Why it exists

3D armor packs are built from per-piece CEM models — helmet.jemchestplate.jemleggings.jemboots.jem. EMF's support for those is 1.21.2+ only, so 1.21.1 has no equivalent.

Enable a 3D armor pack on 1.21.1 and the armor renders garbled: the pack's 64×64 texture gets sampled by a model that assumes 64×32, so only the top half is stretched across the whole piece. This mod supplies the missing piece.

The vanilla equipment system added in 1.21.4 (equipment/*.json) only defines texture layers, not geometry. That is not what this mod replaces.

Usage

1. Put the jar in mods. Client-side only — not needed on servers.

2. Put the 3D armor pack in resourcepacks and enable it in game. No editing needed — packs built for 1.21.4 and newer work as they are.

3. Put armor on. The log should say:

[armorcem] loaded 4 armor models [HEAD, CHEST, LEGS, FEET] (json 0 / jem 4)

If it loads 0 models, the pack has no armor models or isn't enabled.


Companion mods

These cover other parts of the same pack. Armor works without them.

Mod Covers
Modefite Item appearance in hand and in the inventory
EMF Entity models — horse armor, trident, armor stands

What it reads

It looks for these in the resource pack. If none are present it does nothing and vanilla armor renders as usual.

assets/minecraft/optifine/cem/helmet.jem
assets/minecraft/optifine/cem/chestplate.jem
assets/minecraft/optifine/cem/leggings.jem
assets/minecraft/optifine/cem/boots.jem

It also bridges texture paths. Newer packs ship textures/entity/equipment/humanoid/<material>.png, while 1.21.1 looks for textures/models/armor/<material>_layer_1.png. The mod checks the newer path and uses it when present, leaving older packs untouched.


If the pack doesn't show up

Newer packs often declare min_format / max_format with no pack_format. 1.21.1's parser requires pack_format, so parsing fails and the pack never appears in the list at all — the most common reason a 3D armor pack won't enable.

The mod fills it in for you. As a side effect the pack is treated as a 1.21.1 pack, so newer-version overlays no longer match and stay inactive — their core shaders never get compiled, so they can't break the resource reload either.


For pack authors — hand-authored models

If jem parsing comes out wrong, override it with a pre-converted definition at assets/minecraft/armorcem/humanoid.json. It takes priority over any .jem.

{
  "helmet": {
    "textureSize": [64, 64],
    "parts": [
      {
        "part": "head",
        "pivot": [0, 0, 0],
        "mirror": false,
        "boxes": [
          { "origin": [-4, -8, -4], "size": [8, 8, 8], "inflate": 1.0, "uv": [0, 0] }
        ]
      }
    ]
  }
}
Field Meaning
top-level key helmetchestplateleggingsboots
textureSize UVs are divided by this — the 64×32 limit is gone
part headhatbodyright_armleft_armright_legleft_leg
pivot Part origin, in vanilla entity model space (y down, origin near the neck)
mirror Flips the texture horizontally
origin / size Box corner and dimensions, relative to pivot
inflate Grows the box on every side — same as vanilla's armor deformation
uv Texture offset, same convention as vanilla models

Pieces and parts are optional. Anything you leave out stays vanilla.

What it does not do

  • No per-material geometry. One model per piece; materials differ by texture only.
  • Vanilla armor items only. Modded armor is left alone.
  • Held and inventory item models are out of scope — that's Modefite's job.
  • Horse armor and entity models are EMF's job.
  • Client-side only.


Compatibility

NeoForge 1.21.1.

Model replacement uses NeoForge's official IClientItemExtensions hook. Only the texture path and the pack-format fallback use mixins, and both are single return-value tweaks, so conflicts are unlikely.

If another mod registers client extensions for the same vanilla armor items, only one will apply.


Permissions

You may include this mod in any modpack — public or private, on any
platform — without asking. A link back to this page is appreciated but
not required.

You may not reupload the mod itself as a separate project.

The Armor Model Backport Team

profile avatar
  • 2
    Projects
  • 100
    Downloads

More from zapzap_wav