promotional bannermobile promotional banner

External Override Model Library

Render-time layering for Minecraft item icons. Stack extra sprites on top of any item's icon — driven by resource packs and item properties, without writing any code.

eoml — External Override Model Library

Render-time layering for Minecraft item icons. Stack extra sprites on top of any item's icon — driven by resource packs and item properties, without writing any code. Cross-loader library for 1.20.1 (Forge), 1.21.1 (NeoForge) and 26.1.2 (NeoForge).

This is a library, not a content mod. Installing it alone changes nothing. It is a dependency for resource packs and mods that want layered item icons. See "What it does" for one-paste examples that work right away.


What it does

Give any item an additional icon layer that appears only when a condition is true.

// assets/mymod/eoml/layers/runeblade.json  — just drop this into a resource pack
{
  "targets": ["mymod:runeblade", "#minecraft:swords"],

  "layers": [
    { "sprite": "mymod:runes/base_glow" },

    { "sprite": "mymod:runes/drawn_crown",
      "when": { "type": "eoml:item_property", "property": "minecraft:pull", "min": 0.65 } },

    { "sprite": "mymod:runes/cracked",
      "when": { "type": "eoml:variable_range", "name": "property:minecraft:damage", "min": 0.5 } }
  ]
}

Layers are accumulative — list order is draw order. Each layer can carry its own condition, and conditions can be combined with all_of / any_of / none_of.

That is the whole feature. No Java, no datapack, no server-side install.


Features

Layer rules Arbitrary extra layers on any item icon, condition-gated, multi-layer
Pattern trims Take over a vanilla armor trim pattern and give it your own sprite layer, expanded per slot / material / base model
Item overrides Predicate-based model switching (assets/<ns>/overrides/item/)
Model overrides Feed external model JSON to vanilla's own model loader
Plugin API Other mods register their own variables and condition types; eoml exposes the layer system as a general extension platform

Built-in conditions: always, variable_equals, variable_range, item_property (vanilla and modded item properties), item_in, all_of / any_of / none_of.

Built-in variables: the item id, any item tag, and any vanilla/modded item property — so a pack can already gate layers on damage, stack size, pull progress, trim material and more.


Supported versions

Minecraft Loader Status
1.20.1 Forge 47.x
1.21.1 NeoForge 21.1.x
26.1.2 NeoForge 26.1.x

The same rule JSON works across all three versions. The only version-specific part is property: — for example minecraft:pulling exists on 1.20.1 / 1.21.1 but not on 26.1.2, where the crossbow/pull axis is used instead.


Client / server

Client-side only in practice. All data is read from the resource stack, so the definitions live on the client and work on vanilla servers — no server-side install, no datapack required. The mod itself loads on both sides and is safe on dedicated servers.


Modpacks

You are free to include eoml in any modpack. No permission needed.

The External Override Model Library Team

profile avatar
  • 2
    Followers
  • 9
    Projects
  • 20.7K
    Downloads

man!

More from lying_iceView all