All Mods Resource Packs Data Packs Shaders Modpacks Plugins
Armor Model API

Armor Model API

by ZsoltMolnarrr • Downloads: 0 • Followers: 0
Description
Gallery
Changelog
Versions

Armor Model API

Renders armor with custom geometry authored in the Bedrock/GeckoLib .geo.json format, through the vanilla armor rendering pipeline.

BB to Game

Capabilities

  • Custom armor geometry per armor set: robes, pauldrons, hats, skirts — any cuboid-based Blockbench model
  • Per-slot rendering with the standard armor bone convention, including separate boot bones and a chest-anchored waist bone for leg pieces
  • Armor trims with per-set trim textures (vanilla smithing-table trims, your art)
  • Emissive glowmasks — the hand-authored _glowmask.png convention; pixels that stay bright in the dark
  • Radiant glow — a high-luminance variant that burns toward white and feeds shader-pack bloom
  • Custom render layers — a small interface for adding your own passes (extra overlays, effects)
  • Everything vanilla armor does comes for free: pose and animation following, sneaking/swimming, armor stands, baby mobs, dyed leather color, enchantment glint, the glowing outline effect

How it works

  • Loading — on resource load (and every F3+T reload), each registered .geo.json is parsed and baked once into a vanilla ModelPart tree (the same TexturedModelData every vanilla entity model is built from), cached until the next reload. Textures are plain resources, resolved by the render layers on demand — nothing is preprocessed.
  • Hooking in — when an armor piece is about to render, the library steps in per registered item: on Fabric through Fabric API's ArmorRenderer hook, on NeoForge through a small equivalent mixin. Vanilla's overlay rendering is skipped for that piece and the dispatcher renders the baked model instead — vanilla pose copied on, slot visibility applied. Unregistered items are untouched.
  • Pass order — each piece draws as a stack of passes over the same model: base texture → your render layers (glow, then trim so it lands on top), with enchantment glint riding the base pass. Renderers built through the fluent API keep the layers sorted into that stack automatically; a renderer constructed with an explicit layer list draws them in list order (see Render layers). Every extra pass is just the model rendered again with a different render layer and buffer.

From bake to buffer this is 100% the vanilla code path — the same pose copy, render layers, and buffers vanilla armor uses. That is the whole compatibility and performance story: Sodium, Iris, and anything else that works with vanilla armor sees ordinary vanilla model rendering. There is no custom vertex pipeline.

For developers

For developer documentation, check out the GitHub readme.

All Versions

+ Add Version
Name Game version Platforms Published Downloads Actions
26.3
Neoforge
1d ago 1
26.3
Fabric
1d ago 1
26.2
Fabric
1d ago 1
26.1.x
Fabric
1d ago 1
26.2
Neoforge
1d ago 1
26.1.x
Neoforge
1d ago 1
26.2
Neoforge
1d ago 1
26.2
Fabric
1d ago 1
26.1.x
Neoforge
1d ago 1
26.1.x
Fabric
1d ago 1
1.20.1
Fabric
1d ago 1
1.20.1
Forge Neoforge
1d ago 1
26.2
Neoforge
1d ago 1
26.2
Fabric
1d ago 1
26.1.x
Neoforge
1d ago 1
26.1.x
Fabric
1d ago 1
1.21.1
Neoforge
1d ago 1
1.21.1
Fabric
1d ago 1
1.21.11
Fabric
1d ago 1
1.21.11
Neoforge
1d ago 1
26.1.x
Fabric
1d ago 1
26.1.x
Neoforge
1d ago 1
1.21.11
Fabric
1d ago 1
1.21.11
Neoforge
1d ago 1
1.21.1
Neoforge
1d ago 1
1.21.1
Fabric
1d ago 1
[1.1.2+26.3-neoforge] 1.1.2+26.3 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.2

  • Minecraft 26.3 support
  • Trims now use the game's paletted textures: each greyscale trim texture needs a .png.mcmeta with
{"palette": {"base_palette": "minecraft:trim_base"}}, and atlases/armor_trims.json can be deleted
  • TrimLayer.spriteId renamed to textureId (no trim material suffix)
  • ArmorRenderContext#submit takes a UvMapping; added glintPending() / submitPendingGlint()
  • Glow and radiant layers work with Improved Transparency
  • Geo armor follows Entity Model Features player animations again (Fresh Animations Player, Entity Player Compat)
  • Geo armor no longer shows in first person during Better Combat animations

[1.1.2+26.3-fabric] 1.1.2+26.3 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.2

  • Minecraft 26.3 support
  • Trims now use the game's paletted textures: each greyscale trim texture needs a .png.mcmeta with
{"palette": {"base_palette": "minecraft:trim_base"}}, and atlases/armor_trims.json can be deleted
  • TrimLayer.spriteId renamed to textureId (no trim material suffix)
  • ArmorRenderContext#submit takes a UvMapping; added glintPending() / submitPendingGlint()
  • Glow and radiant layers work with Improved Transparency
  • Geo armor follows Entity Model Features player animations again (Fresh Animations Player, Entity Player Compat)
  • Geo armor no longer shows in first person during Better Combat animations

[1.1.2+26.2-fabric] 1.1.2+26.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.2

  • Geo armor follows Entity Model Features player animations again (Fresh Animations Player, Entity Player Compat)
  • Geo armor no longer shows in first person during Better Combat animations

[1.1.2+26.1.2-fabric] 1.1.2+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.2

  • Geo armor follows Entity Model Features player animations again (Fresh Animations Player, Entity Player Compat)
  • Geo armor no longer shows in first person during Better Combat animations

[1.1.2+26.2-neoforge] 1.1.2+26.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.2

  • Geo armor follows Entity Model Features player animations again (Fresh Animations Player, Entity Player Compat)
  • Geo armor no longer shows in first person during Better Combat animations

[1.1.2+26.1.2-neoforge] 1.1.2+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.2

  • Geo armor follows Entity Model Features player animations again (Fresh Animations Player, Entity Player Compat)
  • Geo armor no longer shows in first person during Better Combat animations

[1.1.1+26.2-neoforge] 1.1.1+26.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.1

  • Geo armor is now posed from the entity's own body model: armor on armor stands no longer sways
with the idle animation, and baby mobs get properly fitted armor (no trims on babies, like vanilla)

[1.1.1+26.2-fabric] 1.1.1+26.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.1

  • Geo armor is now posed from the entity's own body model: armor on armor stands no longer sways
with the idle animation, and baby mobs get properly fitted armor (no trims on babies, like vanilla)

[1.1.1+26.1.2-neoforge] 1.1.1+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.1

  • Geo armor is now posed from the entity's own body model: armor on armor stands no longer sways
with the idle animation, and baby mobs get properly fitted armor (no trims on babies, like vanilla)

[1.1.1+26.1.2-fabric] 1.1.1+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.1

  • Geo armor is now posed from the entity's own body model: armor on armor stands no longer sways
with the idle animation, and baby mobs get properly fitted armor (no trims on babies, like vanilla)

[1.0.0+1.20.1-fabric] 1.0.0+1.20.1 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.0.0

Port of 1.0.0 to Minecraft 1.20.1 (Fabric + Forge 47). Same feature set; no functional changes.

  • Forge replaces NeoForge: the armor hook is a mixin on ArmorFeatureRenderer#renderArmor
  • Dye color read through DyeableItem, trims through the stack's Trim NBT
  • Shader awareness gates on Iris (Fabric) or Oculus (Forge)

Initial release.

  • Renders Bedrock/GeckoLib geo armor models through the vanilla armor pipeline
  • Armor bone convention with boot bones and a chest-anchored waist bone
  • Armor trims with per-set trim textures, with greyscale fallback for third-party trim materials
  • Emissive glowmasks (AzureLib _glowmask convention) and a radiant glow mode that feeds shader-pack bloom

[1.0.0+1.20.1-forge] 1.0.0+1.20.1 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.0.0

Port of 1.0.0 to Minecraft 1.20.1 (Fabric + Forge 47). Same feature set; no functional changes.

  • Forge replaces NeoForge: the armor hook is a mixin on ArmorFeatureRenderer#renderArmor
  • Dye color read through DyeableItem, trims through the stack's Trim NBT
  • Shader awareness gates on Iris (Fabric) or Oculus (Forge)

Initial release.

  • Renders Bedrock/GeckoLib geo armor models through the vanilla armor pipeline
  • Armor bone convention with boot bones and a chest-anchored waist bone
  • Armor trims with per-set trim textures, with greyscale fallback for third-party trim materials
  • Emissive glowmasks (AzureLib _glowmask convention) and a radiant glow mode that feeds shader-pack bloom

[1.1.0+26.2-neoforge] 1.1.0+26.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Minecraft 26.2 support
  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+26.2-fabric] 1.1.0+26.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Minecraft 26.2 support
  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+26.1.2-neoforge] 1.1.0+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+26.1.2-fabric] 1.1.0+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+1.21.1-neoforge] 1.1.0+1.21.1 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+1.21.1-fabric] 1.1.0+1.21.1 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+1.21.11-fabric] 1.1.0+1.21.11 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+26.1.2-fabric] 1.1.0+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.1.0+26.1.2-neoforge] 1.1.0+26.1.2 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.1.0

  • Per-item model and texture overrides through the vanilla minecraft:custom_data component
({armor_model_api:{model, texture, glowmask, trim}}), settable by commands, loot tables,
recipes and datapacks - no custom component, the library stays client-side
  • A stack naming both model and texture takes over an item nobody registered (any vanilla or
third-party armor piece), with a default glow + trim pass stack
  • ArmorRenderContext carries the base texture in effect (texture()) and the stack's overrides();
layers deriving assets from the base texture should read it from there

[1.0.2+1.21.11-fabric] 1.0.2+1.21.11 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.0.2

  • 1.21.11 support
  • Player armor uses a PlayerEntityModel-based geo model, so player animation libraries (PAL) pose it
  • Fix GeoArmorModel construction (missing biped parts)

# 1.0.2

  • 1.21.11 support
  • Player armor uses a PlayerEntityModel-based geo model, so player animation libraries (PAL) pose it
  • Fix GeoArmorModel construction (missing biped parts)

[1.0.0+1.21.1-neoforge] 1.0.0+1.21.1 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.0.0

Initial release.

  • Renders Bedrock/GeckoLib geo armor models through the vanilla armor pipeline
  • Armor bone convention with boot bones and a chest-anchored waist bone
  • Armor trims with per-set trim textures, with greyscale fallback for third-party trim materials
  • Emissive glowmasks (AzureLib _glowmask convention) and a radiant glow mode that feeds shader-pack bloom

[1.0.0+1.21.1-fabric] 1.0.0+1.21.1 by ZsoltMolnarrr on Oct 18, 2026
Download
# 1.0.0

Initial release.

  • Renders Bedrock/GeckoLib geo armor models through the vanilla armor pipeline
  • Armor bone convention with boot bones and a chest-anchored waist bone
  • Armor trims with per-set trim textures, with greyscale fallback for third-party trim materials
  • Emissive glowmasks (AzureLib _glowmask convention) and a radiant glow mode that feeds shader-pack bloom

Armor Model API Icon
Download Armor Model API
Select game version
Select platform