Repository navigation
Custom Entity Models
Salamander loads OptiFine-format .jem models, .jpm parts, animations, and model-selection .properties from resource packs. CEM is independent of GeckoLib and Citadel: packs replace models of existing entities; they do not create new entities or convert arbitrary GeckoLib assets into resource-pack replacements.
Place the original resource-pack ZIPs in your instance's resourcepacks folder and enable them in Minecraft's resource-pack list.
For Fresh Animations: Spiders 2.2, place it above Fresh Animations 1.10.5. The spider extension imports animation parts from the base pack, so both are needed.
Current vanilla texture names are mapped to their 1.7.10 counterparts for existing targets, respecting resource-pack priority. Legacy villager profession clothes are retained when a modern pack supplies only the base skin.
CEM and associated emissive masks work without Angelica. Angelica and shaders are also supported.
Settings are in the cem category of config/salamander/salamander.cfg. Reload resources after changing model or emissive settings.
| Setting | Purpose |
|---|---|
enabled |
Load custom entity models for supported vanilla and Et Futurum Requiem targets. |
playerModels |
Load player models, capes, and EFR elytra from player packs. |
emissiveTextures |
Render emissive textures associated with custom entity models. |
serverAnimationSignals |
Synchronize aggression and melee-attack signals when both client and server support Salamander's CEM channel. |
Removing the models or disabling CEM restores native rendering. Malformed models fall back to the native renderer and produce a resource-specific log message. Beds use client rendering proxies; they do not add tile entities to saved worlds.
CEM works without Salamander on the server. When both sides support its optional CEM channel, the server supplies aggression and melee-attack signals. Otherwise the pack uses client-observable inputs, and attack-specific animation can be less accurate.
Disable synchronization with cem.serverAnimationSignals. This feature does not alter AI or combat.
The target set covers vanilla 1.7.10 and the corresponding entities in Et Futurum Requiem. Newer Minecraft entities without a 1.7.10 implementation are deliberately left unmapped.
| Targets | Coverage |
|---|---|
| Vanilla living entities | All CEM mob targets, including giant, dragon, horse variants, and native wool, saddle, armor, collar, slime, and charge layers |
| Vanilla vehicles and projectiles | Boat, minecart variants, end crystal, arrow, wither skull, and lead knot |
| Vanilla blocks | Single/double/trapped/ender chests, signs, five skull types, enchanting books, and beds |
| Et Futurum Requiem | Fox, bee, rabbit, endermite, husk, stray and outer layer, zombie villager, shulker, shulker bullet, armor stand, mooshroom, snow golem, dragon, crystal, tipped arrow, boats/chest boats/rafts/chest rafts, wood signs, banners, shulker boxes, and dyed beds |
Player models covers Just Expressions and Fresh Moves, including capes and EFR elytra. Random entity textures covers numbered variants and texture-selection rules. Broader EMF/ETF extensions remain later work.
Animation inputs or rule facts for mechanics absent from 1.7.10, such as glowing entities or villager trade levels, retain their unavailable/default values.
Other backports can opt into an existing mapping with CemTargets.register(entityClassName, targetName) when they use a supported native model. Custom model classes need a CemModelParts binding and a scoped CemRuntime.begin / end render call.
Mapping is by exact class so unrelated mod models are not silently treated as vanilla models. See Development for testing against the original resource packs.