Skip to content

Custom Entity Models

jack edited this page Sep 25, 2026 · 4 revisions

Custom entity models (CEM)

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.

Installing resource packs

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.

Configuration and rendering

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.

Optional server support

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.

Supported targets

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

Compatibility limits

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.

Adding support for other backports

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.