An implementation of custom entity models heavily based off of Optifine's format that aims to achieve feature parity with Optifine's custom entity models.
This mod is currently in ALPHA, meaning that things MAY or MAY NOT work properly! There is absolutely no guarantee that things will work as intended or at all!
Check out Modrinth page, the CurseForge page, or build it yourself. This mod requires the installation of the Fabric Loader. If you want to configure this mod, the installation of YACL is also required.
Additionally, this resource pack or a derivative of it is required to work with optifine CEM.
This mod loads .jem and .jpm files from "assets/dorianpb/cem" folder in resource packs. For resource packs intended to be used with Optifine, renaming " assets/minecraft/optifine/cem" to "assets/dorianpb/cem" should work fine. If you install the optional dependencies, this isn't necessary as there is an option within the config to just load from optifine's folder structure.
Join my discord server here: https://discord.gg/3qxFZm7Ycw
The file format for the .jem and .jpm is identical to the Optfine's (check out here , here, and here). The folder structures inside "assets/dorianpb/cem" does not matter. If you want to assign a custom model for a creeper, you could put the file as "assets/dorianpb/cem/creeper.jem", "assets/dorianpb/cem/creeper/creeper.jem", " assets/dorianpb/cem/za/waurdo/creeper.jem", etc.
Most living entites should have support, and some non-living entites might not have anmimations.
No support for armor right now.
Individual part textures are not supported (you can only specify texture and texture size in the .jem file).
Sprites are not supported.
The attach
option is not supported.
Currently, the animations do behave slightly differently than optifine's, just enough to break some packs.
This project is licensed with LGPL v3.0. Please don't repost this project anywhere without my written permission first.
attach
supportIf your fabric mod creates new entities, you can add support for CEM without too much work! Look at net.dorianpb.external for an example implementation. Make sure to use the " cem" entrypoint.