First Steps with EMF (Entity Model Features) for Minecraft
EMF (Entity Model Features) is a Minecraft utility mod that lets you load and animate custom entity models, and this guide covers what it does, where its settings live, and how to get custom models loaded.
What EMF Does
EMF replaces and extends the way entity models are handled in the game. It supports custom entity model files (`.jem`) and drives them with animation math. It also includes a large set of compatibility options for other mods and for OptiFine-style resource packs.
Where the Settings Live
All of EMF's options are reached through its in-game settings interface, which is organised into sections. The main areas you will use are:
- Models — lists every entity model EMF can modify, and lets you export models.
- Animation — controls how animations are computed and optimised.
- Performance — options that reduce animation cost on large numbers of mobs.
- Debug — tools for inspecting what EMF is doing.
- Animation Math — reference lists of the variables and functions available to animation authors.
Each option in the interface has a tooltip explaining what it does. Read those before changing anything, since several options trade performance for visual fidelity.
Loading Custom Entity Models
EMF works with `.jem` model files. There are two ways to get one:
- Export an existing model. In the Models section, pick a model and use Export model as .jem file. The file is written to `MC_DIRECTORY/emf/export`. It contains pivots, boxes, and UVs, and opens directly in Blockbench. The log also prints where the file should be placed to be used by a resource pack.
- Write or edit one yourself in a model editor, then place it where EMF looks for custom models.
A few models are supported but do not appear in the model list: arrow.jem and spectral_arrow.jem, plus player_cape.jem, which is a copy of player.jem containing only the cloak part.
Each model entry has a toggle for whether that `.jem` file is loaded at all. If a model fails to export, the interface reports Model cannot be exported, because: followed by the reason.
Controls and Debugging
EMF adds a control action that shows EMF debug data on an entity when you right-click it. Bind it through the controls menu; the settings screen does not assign a key for you. A related option restricts debug rendering to only the entity you are currently hovering over.
Useful First Settings
- asmmaths — leave this on. Turning it off falls back to a slower expression-tree path that is mainly useful for debugging.
- animate once — on by default. Models animate once per entity per render. Mobs shown in inventory screens can flicker oddly, particularly if the same mob is also visible in the world.
- Show reload error toast — enable this so a toast appears when a resource reload hits errors. You can then re-print the errors from the debug section of the model settings, either plainly or with a stack trace.
- optifine fallback properties — when a specific `.properties` file is missing, EMF will try a more general one instead.
- armor hack — restores the older behaviour where armor copies the base model's custom animations, which no longer happens naturally in newer versions.
Compatibility Notes
- force models tries to keep other mods from overriding EMF's models. It does not work with every mod.
- ebe config modify lets EMF adjust the Enhanced Block Entities mod's config to disable EBE for block entities that have a custom EMF model. EMF cannot re-enable those settings for you afterwards.
- double chest fix suppresses repeated log errors about the missing left and right halves of the large chest model, and partially fixes animations that reference the opposite half. Keeping the two halves separate in your animations is still recommended.
- iris shadow skip should stay on; it stops models animating twice per frame for the normal and shadow passes.
Performance Options
Animation LOD distance sets how far away animations start skipping frames. A value of 16 skips one frame per sixteen blocks of distance; lower values skip more and gain more performance at the cost of visibly choppier animation. large mob lod softens this for big mobs, and low fps lod softens it when your framerate drops below 60.
Animation Math
The Animation Math section lists every variable and function available to animation files, including ones registered by other mods through EMF's API. Click any entry for details. Functions cover trigonometry, rounding, interpolation, easing curves, splines, randomness, boolean helpers, and conversions between degrees and radians. Variables cover entity state such as health, hurt time, swing progress, movement direction, fluid depth, and flags like burning, invisible, or riding. Entity variables (`var.` and `varb.`) and global variables (`global_var.` and `global_varb.`) let animations carry values between frames, and model part variables such as `tx`, `ry`, or `visible` address individual parts.