Skip to content

Profile Reference

Markus Bordihn edited this page Jun 18, 2026 · 3 revisions

Profile Reference

This page summarizes the current profile fields, IDs, presets, animation modes, and pack paths.

πŸ“ Server Profiles

Server profiles live in the data pack:

data/<namespace>/easy_model_entities/profiles/entity/<id>.json
data/<namespace>/easy_model_entities/profiles/block_entity/<id>.json

Important fields:

  • schema_version: optional; current value is 0.1.0.
  • model_type: entity or block_entity.
  • preset_type: server preset for behavior and host type.
  • version: optional version string for cache and debug output.
  • client.render_profile: render profile in the resource pack.
  • dimensions: optional size settings; contains width, height, and eye_height.
  • movement: optional entity movement settings; contains speed, step_height, and gravity.
  • behavior: optional entity behavior settings; contains mode, look_at_players, and random_stroll.
  • attributes: optional entity attributes; contains max_health, movement_speed, and follow_range.

Block entity profiles ignore entity movement, behavior, and attributes.

πŸͺ„ Generated Defaults

For pack authors, most fields are optional because EME derives them from the profile ID and preset.

Server profile defaults:

  • schema_version: defaults to the current schema.
  • version: defaults to an empty string.
  • client.render_profile: defaults to the server profile ID.
  • entity.type, entity.movement_type, and entity.body_type: generated from the entity preset.
  • block_entity.type and block_entity.body_type: generated from the block entity preset.
  • dimensions: generated from the preset; block entities default to width: 1.0, height: 1.0, eye_height: 0.5.
  • movement: generated from the movement type.
  • behavior: generated from the preset and movement type.
  • attributes: defaults to max_health: 10.0, movement speed from movement, and follow_range: 16.0.

Render profile defaults:

  • schema_version: defaults to the current schema.
  • version: defaults to an empty string.
  • body_type: generated from preset_type, except for custom.
  • model: defaults to <namespace>:easy_model_entities/models/<render_profile_path>.
  • texture: defaults to <namespace>:textures/entity/<render_profile_path>.png.
  • rendering: generated from the render preset.
  • animation: generated from the render preset.

The default texture path is entity-oriented. For block entities that use textures/block, set texture explicitly.

🎨 Render Profiles

Render profiles live in the resource pack:

assets/<namespace>/easy_model_entities/render_profiles/<id>.json

Important fields:

  • schema_version: optional; current value is 0.1.0.
  • preset_type: render preset for body type, defaults, and automatic animation.
  • body_type: required only for custom; otherwise inferred from the preset.
  • version: optional version string.
  • model: ResourceLocation to the .bbmodel file without the file extension.
  • texture: ResourceLocation to the texture with the file extension.
  • rendering: optional render bounds and shadow settings.
  • animation: optional animation settings.

rendering supports:

  • scale
  • shadow_radius

animation supports:

  • mode
  • swing_speed
  • walk_speed_multiplier

πŸ—‚οΈ Model And Texture Paths

Blockbench models:

assets/<namespace>/easy_model_entities/models/<model>.bbmodel

Textures:

assets/<namespace>/textures/entity/<texture>.png
assets/<namespace>/textures/block/<texture>.png

Example:

{
  "model": "my_pack:easy_model_entities/models/shrine",
  "texture": "my_pack:textures/block/shrine.png"
}

🧱 Block Entity Presets

More context is available in Block Entities.

  • static: static EME host block entity.
  • ticking: WIP for pack-authored behavior; the host type has client and server tick support, but no built-in visible behavior yet.
  • animated: continuously animated EME host block entity.
  • animated_randomly: client-side random idle animation with pauses.

Registered EME host block IDs:

  • easy_model_entities:static_block
  • easy_model_entities:ticking_block
  • easy_model_entities:animated_block
  • easy_model_entities:animated_randomly_block

Registered EME host block entity type IDs:

  • easy_model_entities:static_block_entity
  • easy_model_entities:ticking_block_entity
  • easy_model_entities:animated_block_entity
  • easy_model_entities:animated_randomly_block_entity

🧍 Entity Presets

More context is available in Entities.

Stable presets for pack authors:

  • static
  • statue
  • humanoid_still
  • humanoid_wandering
  • quadruped_still
  • quadruped_wandering

WIP presets:

  • custom: supported by the parser, mainly useful for mod-owned profiles that provide explicit host settings and dimensions.
  • aquatic_still
  • aquatic_swimming: render/body preset exists, dedicated swimming movement is not implemented yet.
  • arthropod_still
  • arthropod_wandering: render/body preset exists, ground movement uses the generic ground_entity host.
  • cuboid_still
  • cuboid_hopping: render/body preset exists, dedicated hopping movement is not implemented yet.
  • floating_still: render/body preset exists, dedicated floating movement is not implemented yet.
  • winged_still
  • winged_wandering: render/body preset exists, dedicated flying movement is not implemented yet.
  • winged_humanoid_still
  • winged_humanoid_wandering: render/body preset exists, dedicated flying movement is not implemented yet.

Registered EME host entity type IDs:

  • easy_model_entities:static_entity
  • easy_model_entities:ground_entity

🧬 Body Types

Current body types:

  • static
  • biped
  • quadruped
  • aquatic
  • amphibious
  • winged
  • winged_humanoid
  • arthropod
  • cuboid
  • floating

The preset_type determines the body_type, which in turn decides the required model parts (bones) and the procedural animation. See Bones (Model Parts).

🦴 Bones (Model Parts)

EME matches Blockbench bones (groups) by name. Bone names are case-insensitive and surrounding whitespace is trimmed, so Body, body, and BODY all resolve to body. Use the names below to make a model work with a preset and its automatic animation.

Recognized bone names:

  • root, head, body
  • left_arm, right_arm
  • left_leg, right_leg
  • front_left_leg, front_right_leg, back_left_leg, back_right_leg
  • middle_front_left_leg, middle_front_right_leg, middle_back_left_leg, middle_back_right_leg
  • left_wing, right_wing
  • tail, tail_fin (any bone named tail/tail_fin, or starting with tail_, ending with _tail, or containing _tail_, is animated as a tail)

Required Bones Per Body Type

A model is rejected with CLIENT_BODY_TYPE_MISMATCH if a required bone is missing. A missing root is auto-created for static body types only.

  • static (presets static, statue, custom): none (root auto-created).
  • biped (presets humanoid_still, humanoid_wandering): root, head, body, left_arm, right_arm, left_leg, right_leg.
  • quadruped (presets quadruped_still, quadruped_wandering): root, body, head, front_left_leg, front_right_leg, back_left_leg, back_right_leg.
  • aquatic (presets aquatic_still, aquatic_swimming): root, body.
  • amphibious (presets amphibious_still, amphibious_wandering): root, body.
  • winged (presets winged_still, winged_wandering): root, body, head, left_wing, right_wing.
  • winged_humanoid (presets winged_humanoid_still, winged_humanoid_wandering): root, body, head, left_arm, right_arm, left_wing, right_wing.
  • arthropod (presets arthropod_still, arthropod_wandering): root, body, head, front_left_leg, front_right_leg, middle_front_left_leg, middle_front_right_leg, middle_back_left_leg, middle_back_right_leg, back_left_leg, back_right_leg.
  • cuboid (presets cuboid_still, cuboid_hopping): root, body.
  • floating (preset floating_still): root, body.

Animated Bones Per Body Type

Beyond required bones, the procedural animation drives these parts when present. _still presets only play the idle animation; the matching moving preset (_wandering, _swimming, _hopping) adds the walk/swim animation. tail parts are animated for every non-static body type.

  • biped: walk swings left_arm, right_arm, left_leg, right_leg; idle breathes body and head.
  • quadruped: walk swings all four *_leg bones (and left_leg/right_leg); idle breathes body and head.
  • winged: walk swings left_leg/right_leg and flaps left_wing/right_wing; idle flaps the wings and breathes body and head.
  • winged_humanoid: walk swings left_arm, right_arm, left_leg, right_leg and flaps the wings; idle flaps the wings and breathes body and head.
  • arthropod: walk swings all eight *_leg bones; idle breathes body and head.
  • aquatic and amphibious: sway the tail; idle breathes body and head. Legs are not animated.
  • cuboid: idle only, rocks body and tilts head like a lid.
  • floating: idle only, breathes body and head.
  • static: no animation.

🚢 Movement And Behavior

Movement types:

  • static
  • ground

Behavior modes:

  • static
  • idle_only
  • ambient
  • external_owner: WIP marker for mod-owned behavior; the current EME host entities do not add special logic for it.

For common pack use, presets usually provide good defaults. Override movement, behavior, or attributes only when the default behavior is not enough.

🎞️ Animation

Render profile example:

{
  "animation": {
    "mode": "random_idle",
    "walk_speed_multiplier": 1.0
  }
}

Modes:

  • automatic: default behavior based on preset and entity state.
  • random_idle: short idle bursts with pauses.
  • none: no built-in automatic animation.

Animation is procedural and driven by mode, swing_speed, and walk_speed_multiplier; there are no named animation clips. For complex, custom animations use the render API and drive them from your own mod. random_idle currently uses 53-tick bursts and waits 200 to 400 ticks before starting another burst.

🎁 Bundled Examples

The current examples use the namespace easy_model_entities_examples.

Useful server profile IDs:

  • easy_model_entities_examples:entity/training_dummy
  • easy_model_entities_examples:entity/little_explorer
  • easy_model_entities_examples:entity/stone_turtle
  • easy_model_entities_examples:block_entity/shrine