About Entity Model Features
Entity Model Features (EMF) is Traben's companion to Entity Texture Features. It loads Custom Entity Models, OptiFine's resource-pack format for reshaping mobs and animating them. Packs like Fresh Animations consist almost entirely of model and animation files, and vanilla Minecraft ignores every one of them. EMF reads those files on Fabric, Quilt, NeoForge and Forge, so a player running Sodium and Iris can use the same packs that once required OptiFine.
What a CEM pack actually contains
A Custom Entity Models pack swaps an entity's model for a .jem file: a list of boxes, pivots and texture coordinates that define its shape. Each part of the model can carry animation expressions, short formulas that move a limb according to what the mob is doing: how fast it walks, where its head points, whether it is in water, how much health it has left. Because these formulas are evaluated as the mob moves rather than played back as recorded clips, a well-made pack reacts to the world. That is where Fresh Animations' gesturing villagers and staggering skeletons come from.
EMF's author states the aim as nearly one-to-one parity with OptiFine, and most packs written for OptiFine work unchanged. The documented differences are narrow: some animation variables for block entities and non-living entities may return different values than OptiFine's, sprites are not supported, and trident models cannot declare texture overrides. If a pack misbehaves in one of those corners, the difference is known rather than a bug in your setup.
Why ETF has to come along
EMF will not start without Entity Texture Features. It relies on ETF for choosing random models, for texture changes inside a single model and for its settings screen, which is why the two appear together in every install guide for animated packs. The versions are tied as well. The current EMF 3.3 series requires ETF 7.2 or newer, and ETF 7.2 refuses EMF releases older than 3.3, so updating one without the other is a common cause of a crash at launch.
Put simply, ETF decides how a mob's surface looks and EMF decides its shape and movement. A pack that ships only textures needs ETF alone. A pack with .jem files needs both.
What EMF can do that OptiFine cannot
- Player models.
player.jem, player_slim.jem and player_cape.jem let a pack animate players, which is why Fresh Animations' Player Extension works with EMF only. A setting applies custom player models to your own character alone in multiplayer.
- Armor models for humanoid mobs, as separate inner and outer armor files.
- Shield, elytra and trident spin-attack models, none of which OptiFine's CEM covers.
- Modded entities. EMF detects the models of mobs added by other mods, so pack makers can target them too.
- A larger animation toolkit: variables such as
is_climbing, is_crawling, distance and fluid_depth, keyframe functions and more than thirty easing curves.
Under OptiFine, the parts of a pack that rely on these features simply do not apply. That is a limit of OptiFine's format rather than a broken pack.
Settings that affect frame rate
Animation formulas run for every custom-modelled mob on screen, so the cost grows with crowds: a village, a mob farm, a busy server spawn. EMF's performance options work on exactly that. Animation LOD distance skips animation frames for mobs far from you. At 16, one frame is skipped for every 16 blocks of distance, lower values skip more, and None turns it off. Retain LOD for larger mobs and Retain LOD at low fps soften the effect where missing frames would be easy to spot, on big mobs and below 60 fps.
Model update rate controls how often a model refreshes for changes such as health and age, from Never to Instant. The tooltip warns that Instant can lag with hundreds of mobs. With Iris installed, EMF avoids animating each model twice per frame when Iris renders shadows, an option its author says should always stay on. The project page also recommends Entity Culling alongside animation-heavy packs, because a mob that is never drawn needs no animation.
Tools for pack makers
EMF includes tools OptiFine never offered. Any model it knows can be exported as a .jem file ready for Blockbench, with correct pivots and UV coordinates, from Models, then All models, then that model's entry. Exports land in emf/export inside the game directory, and a batch mode exports every model, or only the unknown ones, on each resource reload. A debug render mode flashes custom parts green or draws them as wireframes over the texture. After a reload with errors, a notification says so, and a button prints every loading error to the log again.
Conflicts worth knowing
- OptiFine and OptiFabric. EMF declares both incompatible. One installation uses EMF or OptiFine, never both.
- dorianpb's CEM mod, an older Fabric implementation of the same format, is also marked incompatible.
- Enhanced Block Entities. When a pack gives a chest or bed a custom model, an EMF option can switch off EBE's handling for that block entity so the model shows. EMF reports which settings it changed and cannot switch them back on for you.
- Armor since Minecraft 1.21.9. Armor no longer copies a mob's custom animations by itself. The option Armor copies custom animations restores the older behaviour.
When another mod changes the same model
Other mods sometimes replace a vanilla model too, for a better-looking animal or a new animation of their own, and then two mods compete for the same entity. EMF has two options aimed at this. Allowed models decides which models EMF touches at all: every model, only the known vanilla and OptiFine ones, or only the unknown, mostly modded ones. Try to prevent EMF models being overridden pushes entity renderers to use EMF's version, which can win back a model another mod changed, although the tooltip is candid that it will not work with every mod.
Two settings exist purely for OptiFine quirks that some packs depend on. One makes a missing pig_baby.properties fall back to pig.properties, as OptiFine does. Another enforces OptiFine's stricter animation syntax. If a pack behaves differently under EMF than it did under OptiFine, those are worth a look before reporting a bug.
Versions and loaders
EMF has builds from Minecraft 1.18.2 to 26.3. Fabric builds also load on Quilt, and NeoForge is covered on every recent version. Forge support ends with 1.21.11, so players on Minecraft 26.x use the Fabric or NeoForge file. EMF is client-side: nothing goes on the server, and other players see ordinary mobs unless they run it too.
EMF is always installed as a pair with ETF, and the two must be built for the same Minecraft version and the same loader.
How to Download Entity Model Features for Minecraft
In the Entity Model Features Downloads section, narrow the table to your Minecraft version and loader, then use that row's Download button, which opens the exact EMF file on Modrinth. On Quilt, the Fabric row is the right one.
How to Install Entity Model Features in Minecraft
- Set up a Fabric, NeoForge or Forge profile for your Minecraft version and launch it once so its folders exist.
- Download ETF from the Entity Texture Features Downloads section, choosing the same Minecraft version and loader as your EMF file. Current EMF (3.3 and newer) needs ETF 7.2 or newer, so update the two together.
- Put both jars, EMF and ETF, into the profile's
mods folder. Neither needs Fabric API.
- Remove OptiFine or OptiFabric from that folder if either is there. EMF will not run beside them.
- Launch, then enable your CEM pack from the Resource Packs screen under Options. Fresh Animations installs this way.
Switching from OptiFine
Nothing about the pack changes. EMF reads the same .jem files OptiFine did, so the pack you already have is the one to enable. If you used OptiFine for shaders too, Iris takes over that job and runs happily next to EMF.
Checking that it loaded
Find a mob your pack animates and watch it move. With Fresh Animations, villagers and pillagers are the easiest test, since they were among the first mobs it covered. Stiff mobs with the vanilla shape mean the models are not being read: check that both mods are in the mod list, that the pack is enabled, and that no other resource pack above it replaces the same mobs.
If EMF shows a notification about loading errors after the pack loads, the pack has models it could not read. The option to log all loading errors again, in EMF's model settings, prints them in full. For a crash on launch, first compare the EMF and ETF versions, then see mods that are not working.