COWMODSКаталог модов

Easy Model Entities

Turn Blockbench models into simple Minecraft entities without writing Java code.

Автор: Kaworru7,7 тыс.28обновлён 16 окт. 2026 г.
ДекорБиблиотекиМобы

Описание

Easy Model Entities

Easy NPC Versions

Download on CurseForge CurseForge Downloads

Download on Modrinth Modrinth Downloads

Report an Issue

Wiki

Easy Model Entities Logo

Note: This is an early release to gather feedback. Some settings, file formats and the export output may still change before the final version. Please report problems and ideas on the issue tracker.

Easy Model Entities turns Blockbench models into Minecraft entities and block-entities without requiring custom Java code for every model.

It exists to make custom models easier to ship, test, and maintain. Instead of writing a renderer, registering one-off entity classes, and hardcoding animation behavior, you describe the model with data and resource pack profiles. EME provides the host entities, host blocks, renderer integration, profile validation, and a small automatic animation layer.

Install it if you want custom Blockbench models that can appear as ambient creatures, static display entities, decorative block-entities, shrines, mimics, or mod-integrated renderable objects with much less boilerplate.

Introduction & Overview Video

✨ Why Use It?

  • No per-model Java required: Define most models with data packs and resource packs.
  • Entity and block-entity support: Use moving entities for mobs or fixed block-entities for decorations and machines.
  • Blockbench-friendly workflow: Load bundled .bbmodel assets directly from resource packs.
  • Profile-driven behavior: Configure host type, body type, dimensions, movement, behavior, rendering, texture, and animation from JSON.
  • Automatic animation: Basic idle, walk, wing, tail, and random-idle behavior is available out of the box.
  • Standard keyframe clips: Blockbench animations named idle, walk, swim, fly, or attack are played automatically. hurt and death are loaded but only play when driven by a command or a mod. Clips with any other name are ignored to keep the runtime simple (no state machines, no Molang).
  • Developer API: Mods can use render delegates, custom part animators, and runtime profile data without depending on internal renderer classes.
  • Diagnostics and demo profiles: Commands help list, validate, debug, spawn, and place test models in a dev world.

🗣 What Can You Build?

  • Ambient critters, NPCs, training dummies, and simple custom entities.
  • Static display models that still use Minecraft entity rendering.
  • Decorative block-entities such as shrines, statues, altars, or mimics.
  • Mod-controlled entities and block-entities that use EME for model loading, rendering, texture handling, and optional part animation.

ℹ️ Quick Start

After installing the mod, try the bundled demo profiles in a dev or test world:

/easy_model_entities summon easy_model_entities_examples:entity/little_explorer
/easy_model_entities summon easy_model_entities_examples:entity/stone_turtle
/easy_model_entities place_block easy_model_entities_examples:block_entity/shrine

Useful diagnostic commands:

/easy_model_entities list_profiles
/easy_model_entities validate_profiles
/easy_model_entities debug_profile easy_model_entities_examples:entity/little_explorer
/easy_model_entities set_animation @e[distance=..8] walk

More demo commands and explanations are available in the Demo Commands wiki page.

🧩 Blockbench Plugin

You can write the profile JSON by hand, but the [Easy Model Entities Exporter][plugin] does it for you: it exports the current Blockbench project as a ready-to-install data pack and resource pack, detects a fitting preset from your bone names, and validates the model before writing anything.

Two ways to get it:

  • Blockbench plugin list (recommended): File > Plugins > Available, search for Easy Model Entities. This is the reviewed release, so new versions can take a while to appear there.

  • Development version: use File > Plugins > Load Plugin from URL with this address:

    https://raw.githubusercontent.com/MarkusBordihn/BOs-Easy-Model-Entities-Blockbench-Plugin/refs/heads/master/plugins/easy_model_entities/easy_model_entities.js
    

    This is the current master state — newer, but it may contain errors and is not reviewed.

📦 Pack Workflow

Easy Model Entities uses two profile layers:

  • Server profiles in a data pack decide what the model is and how it behaves.
  • Render profiles in a resource pack decide which model, texture, scale, bounds, and animation settings are used on the client.

Typical files:

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

assets/<namespace>/easy_model_entities/render_profiles/entity/<id>.json
assets/<namespace>/easy_model_entities/render_profiles/block_entity/<id>.json
assets/<namespace>/easy_model_entities/models/<model>.bbmodel
assets/<namespace>/textures/entity/<texture>.png
assets/<namespace>/textures/block/<texture>.png

See the Pack Usage wiki page for the full structure.

Developer Integration

Mods can integrate EME into their own renderers by implementing EasyModelRenderable and using the client render delegates:

  • EasyModelEntityRenderDelegate
  • EasyModelBlockEntityRenderDelegate
  • EasyModelEntityRenderOptions
  • EasyModelBlockEntityRenderOptions
  • EasyModelPartAnimator

Custom part animation can either add to the automatic EME transform or replace it entirely with EasyModelPartAnimationMode.REPLACE.

See the Developer Integration wiki page for examples.

Installation and Compatibility

Install the matching loader build on both client and server when profiles, entities, or block-entities are used in multiplayer.

ℹ️ Documentation

Please check the wiki for additional information.

🐛 Report Issues, Bugs, Crashes or Feature Requests

Please report issues and feature requests over the issues link. I'm happy to help you.

Галерея

Model to Entity ExampleModel to Entity side-by-side

Последние версии

Все версии →
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.72Minecraft: 1.20.1fabric, quilt
Скачать
Что нового
# Changelog for Easy Model Entities 1.20.1 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. - Removed the unsupported NeoForge loader declaration from the Forge release metadata. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.160Minecraft: 1.20.1forge
Скачать
Что нового
# Changelog for Easy Model Entities 1.20.1 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. - Removed the unsupported NeoForge loader declaration from the Forge release metadata. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.86Minecraft: 1.21.1fabric, quilt
Скачать
Что нового
# Changelog for Easy Model Entities 1.21.1 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 21.1.262, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Changed the minimum Forge version to 52.1.8; older Forge versions are rejected. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.149Minecraft: 1.21.1neoforge
Скачать
Что нового
# Changelog for Easy Model Entities 1.21.1 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 21.1.262, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Changed the minimum Forge version to 52.1.8; older Forge versions are rejected. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.41Minecraft: 1.21.1forge
Скачать
Что нового
# Changelog for Easy Model Entities 1.21.1 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 21.1.262, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Changed the minimum Forge version to 52.1.8; older Forge versions are rejected. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.132Minecraft: 1.21.11fabric, quilt
Скачать
Что нового
# Changelog for Easy Model Entities 1.21.11 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed NeoForge servers crashing when a player without the mod is near a shoulder model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 21.11.48, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.1 - Fixed block entities `animation play`, `stop`, and `restart` never reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers. - Added `extractRenderState` and `submit` to both render delegates, so other mods can show manual animations again. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.27Minecraft: 1.21.11forge
Скачать
Что нового
# Changelog for Easy Model Entities 1.21.11 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed NeoForge servers crashing when a player without the mod is near a shoulder model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 21.11.48, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.1 - Fixed block entities `animation play`, `stop`, and `restart` never reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers. - Added `extractRenderState` and `submit` to both render delegates, so other mods can show manual animations again. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.23Minecraft: 1.21.11neoforge
Скачать
Что нового
# Changelog for Easy Model Entities 1.21.11 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed NeoForge servers crashing when a player without the mod is near a shoulder model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 21.11.48, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.1 - Fixed block entities `animation play`, `stop`, and `restart` never reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers. - Added `extractRenderState` and `submit` to both render delegates, so other mods can show manual animations again. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/1.20.1
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.156Minecraft: 26.3fabric, quilt
Скачать
Что нового
# Changelog for Easy Model Entities 26.3 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed NeoForge servers crashing when a player without the mod is near a shoulder model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 26.3.0.83, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.1 - Fixed block entities `animation play`, `stop`, and `restart` never reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers. - Added `extractRenderState` and `submit` to both render delegates, so other mods can show manual animations again. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/26.3
release

Easy Model Entities 2.6.0

2.6.0
16 окт. 2026 г.39Minecraft: 26.3forge
Скачать
Что нового
# Changelog for Easy Model Entities 26.3 ## Note This change log includes the summarized changes. For the full changelog, please go to the [GitHub History][history] instead. ### 2.6.0 - Fixed NeoForge servers crashing when a player without the mod is near an animated model. - Fixed NeoForge servers crashing when a player without the mod is near a shoulder model. - Fixed flying aquatic models, like a ray gliding above the water, flopping as if stranded on land. - Fixed NeoForge reporting the version as 0.0NONE, so other mods could not require a minimum. - Added `animation get` to show the animation set on an entity or block entity. - Added `behavior get` to show whether a host entity is frozen. - Added `profile get` to show the profile of an entity or block entity. - Added `profile set block` to switch the profile of a placed block entity. - Added `shoulder offset` to move a single entity on the shoulder, on top of the profile offset. - Updated the tested NeoForge version to 26.3.0.83, which fixes three network vulnerabilities. ### 2.5.0 - Fixed models playing `fly` instead of `swim` while diving or surfacing. - Fixed the game tests getting in the way of game tests from other mods. - Fixed models without a `root` group sinking into the ground; `root` is now optional. - Fixed `inflate`, `export: false`, inverted cubes and texture paths not matching Blockbench. - Changed textures to come from the model; render profile `texture` and `textures` override them. - Changed `swim`, `hurt`, `death` and `sit` clips to play automatically when they apply. - Changed aquatic models without a `walk` clip to flop on land like fish. - Changed `behavior set … auto` to keep static models without AI. - Changed placed block entities to face the player; existing ones keep their direction. - Added shoulder sitting like a parrot, with its own clip, render profile settings and API. - Added server API calls for animations, textures, opacity, light level and freezing. - Added an opt-in interface so commands and the API can control models of other mods. - Added item sockets and client API calls to render items and find model part positions. - Added playback speed, a `hold` play mode and weighted clip variants. - Added double-sided textures, face UV rotation and a scarecrow block entity example. - Improved warnings and errors for textures and duplicate group names. ### 2.4.0 - Fixed `body_type: static` and `animation.mode: none` ignoring an explicitly played or set clip. - Added `animation play <target> sequence "<clips>"` to chain up to 16 clips in one run. - Added `playAnimationSequence` to the client and server API, sending a whole chain as one request. - Added `emissive` as texture blend, so a slot renders fullbright and keeps its transparency. Emissive slots are never backface culled. - Added hand item rendering to the render options, off unless a mod opts in. - Added `left_item`, `right_item`, `left_hand` and `right_hand` as recognized model part names. - Added an automatic item anchor fallback to the arm, head or body when a model has no hand bone. ### 2.3.0 - Changed models rendered by another mod to show the hurt and death overlay, which they never did. - Changed `texture query` to `texture get`, matching vanilla commands; the old name no longer works. - Changed the chat feedback of `behavior set` and `texture get` to match the other commands. - Added a server API call to read the texture override of an entity or block entity. - Added `display opacity set`, `clear` and `get` to fade a model out at runtime. - Added `display light set`, `clear` and `get` to give a model its own minimum block light. - Added opacity and light level as saved, synchronized state, so both survive a reload and relog. - Added `rendering.opacity` to the render profile as the default a model starts with. - Added opacity, light level and overlay to the render options and to the server API. ### 2.2.0 - Fixed Forge entity data serializers using load-order-dependent IDs when other mods register their own serializers. - Fixed hurt, flash, and shader overlays being dropped by entity, block entity, and item renderers. - Fixed offset or rotated models being culled with incorrect visibility bounds. - Fixed touching faces disappearing from models whose textures can contain transparent pixels. - Improved compatibility with EntityCulling for entities and block entities using extended model bounds. ### 2.1.0 - Fixed a model whose only clips are numbered variants, such as `idle_2` and `idle_3`, silently falling back to the procedural animation. - Changed the clip limit of a model from 16 to 64, with a warning above 32. - Changed numbered clips to rotate by default; `animation.variant_mode: none` keeps one clip. - Changed a numbered variant such as `walk_2` to count as a standard clip, not a custom one. - Added `texture set`, `clear` and `query` to swap the texture of a single model slot at runtime. - Added the texture override as saved, synchronized state, so it survives a reload and relog. - Added a texture option to the render options, so a mod can swap a slot without a command. - Added `texture blend … translucent` so a half-transparent texture is no longer drawn opaque. - Added client API calls to list the texture slots of a model and the textures next to a slot. - Added random clip variants: clips named `idle`, `idle_2`, `idle_3` form one group and EME picks a different one each cycle, controlled by `animation.variant_mode` in the render profile. - Added `animation play … random "<clips>"` to pick one clip of a list on the server, so every player sees the same animation. ### 2.0.1 - Fixed block entities `animation play`, `stop`, and `restart` never reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers. - Added `extractRenderState` and `submit` to both render delegates, so other mods can show manual animations again. ### 2.0.0 - Fixed the command auto-completion never offering the UUID of the entity in the crosshair. - Changed the command auto-completion to drop `@a`, `@p`, `@r` and player names, which can never select a model entity. - Changed every public signature to use stable API types and enums instead of internal classes. - Changed the numeric animation states and named clips into the type-safe `EasyModelAnimation`. - Changed the animation of an entity or block entity into saved, synchronized state, so it survives a reload and reaches players who arrive later. - Changed render and model values to reject invalid input before it reaches rendering. - Changed an invalid transform to show a reloadable placeholder instead of dropping the model. - Changed the minimum Forge, Fabric Loader, and Fabric API versions; older loaders are rejected. - Changed animations to keep their own clock, so a finished animation no longer jumps back. - Removed `set_animation`; use `animation set entity <targets> <state>`, which does the same and also accepts named clips and `loop` or `once`. - Added `behavior set` to freeze the movement of a host entity, so a `sit` or `death` animation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state. - Added `sit` as a standard animation state and Blockbench clip for all body types. - Added animation discovery and metadata to list the clips of a model with their length. - Added playback modes, transitions, repeats, and duration limits for controlled animations. - Added `animation set` to give a lasting animation, with `clip`, `loop`, or `once` deciding whether it repeats. - Added `animation play`, `stop`, and `restart` for one-off animations on everyone watching. - Improved the migration from schema `0.1.0` to `0.2.0` to keep the existing render profile. - Improved playback queues, missing-clip warnings, and loops to stay bounded in long sessions. ### 1.7.0 - Fixed the head of an entity never turning towards what it looks at. - Fixed cubes outside of an outliner group being dropped without any message. - Fixed profiles without an explicit `texture` staying inactive because of a wrong texture path. - Fixed a single minor finding, such as an unknown behavior mode, deactivating a whole server profile. - Fixed repaired models being reported only once, because the log suppression survived a resource reload. - Fixed `modded_entity` models never deriving a texture path from the model file itself. - Fixed the profiles of a single player world staying active after leaving it, which could break the models on a server joined afterwards. - Changed a model with a missing texture to render its own shape with a pink placeholder texture instead of a pink box. - Changed the creative tabs to hide render profiles from unexpected folders and models the server does not know. - Removed eight example entities that only mirrored another example with different presets or numbers. - Added a head look render option, so another mod can supply its own look direction. - Added warnings for unknown fields, a missing `schema_version`, a one-sided `version` declaration and cubes that are fully covered by other cubes. - Added detailed log and `validate_profiles` output for every skipped or failed profile, including the reason and the affected field. - Added `scale`, a part pose listener and a forced animation state to the block entity render options, so block entities support the same integration as entities. - Improved error messages to name the underlying parser message and the affected texture file. - Improved render performance by resolving bone names once while baking and by reusing the entity render data per frame. - Improved the render cache to drop only the least recently used entries instead of emptying itself completely. - Improved the profile and render profile parsers to share their field handling, so both report the same problems in the same way. ### 1.6.0 - Added an `attack` animation state with standard Blockbench `attack` clip support for all body types, driven by the entity's attack swing progress. - Added a procedural vanilla-style arm swing for biped and winged humanoid models that lack an `attack` clip. - Added a part pose capture API (`EasyModelPartPoseListener` / `EasyModelPartPose` via `EasyModelEntityRenderOptions.withPartPoseListener`) so integrations can anchor held items or attachments to animated model parts. - Added `EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)` with cached anchor resolution (dedicated `right_item`/`left_item` anchor parts take precedence over the `*_hand`/`*_arm` fallback). - Added `EasyModelEntityRenderOptions.withAnimationState(int)` to force an animation state without implementing `EasyModelRenderable`. - Improved performance by 10%. ### 1.5.0 - Fixed the entity and block-entity creative tabs being empty on dedicated clients by building them from the client render profiles instead of the server-only profile registry. - Fixed the spawn item icons rendering nothing on dedicated clients by falling back to the client render profile when no server profile is available. - Added a stateless render-by-profile-id API with `scale`, displayed bounds, and body type lookups for mod integrations. - Added `EasyModelEntitiesClientApi.listRenderableProfileIds()` so integrations such as Easy NPC can list and preview available models on a dedicated client without server profiles. - Changed the example render profiles to align their IDs with the server profile IDs (`render_profiles/entity/<id>` and `render_profiles/block_entity/<id>`), so the model type is derived from the profile ID prefix on the client. - Bumped `schema_version` to `0.2.0` and removed the server profile `client.render_profile`. - Code refactoring and cleanup to improve maintainability and readability. ### 1.4.0 (beta) - Fixed choppy body rotation of walking host entities by using the interpolated body rotation. - Added playback of standard Blockbench keyframe animations (`idle`, `walk`, `swim`, `fly`) with linear interpolation and automatic clip selection. - Added `set_animation` command to force an animation state on host entities for testing and command block setups. - Added `swim` and `fly` animation states to the API. - Added standard `idle`/`walk`/`swim`/`fly` animations to the little explorer, stone turtle, dawn sparrow, and coral drifter examples. - Added entity and block entity spawn items for all example profiles. - Added offset, rotation, and scale to the `ModelPart` definition to allow complex model definitions. - Improved spawn item tooltips to show the behavior mode and movement type of entities. - Improved render performance by caching resolved render states and fallback models per profile. - Improved api support for mod integrations. - Code refactoring and cleanup to improve maintainability and readability. ### 1.3.0 (beta) - Added a stable API for mod integrations that lists all limits, types, and status codes. - Added a generated JSON file that documents these limits, types, and status codes per version. - Added a test that fails if the documented values and the actual code values no longer match. - Added an optional `asset_fingerprint` so resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older `schema_version`s. - Improved server and client `version` matching to only report a mismatch when both sides are set and differ. ### 1.2.0 (beta) - Added read-only profile catalog API (listProfiles, listProfiles by body type, listProfileIds) for mod integrations. - Added still and custom example presets covering all body types, plus a fast-moving example. - Added case-insensitive bone name matching so `Body`, `body`, and `BODY` all resolve to `body`. - Fixed profile attributes max_health and follow_range not being applied to host entities. - Removed unused mixins. ### 1.1.0 (beta) - Fixed wrong UV mapping for some model parts. - Fixed wrong block placements. - Fixed rendering edge case with multiple texture definitions. - Added UV mapping record to define UV mapping for model parts in a more structured way. - Added ModelPartTypes enum to replace strings for model part names to avoid typos and errors. - Added Vec3f enum to replace unnamed float parameter for Vec3f types to avoid typos and errors. - Added additional model examples for different entity types. - Added automatic face culling and model optimization to improve performance. - Added better aquatic and ambient entity support. - Improved performance by pre-building and adding additional cache. - Improved example models and textures for better demonstration of features and capabilities. ### 1.0.0 (beta) 🚀 - Initial release for Minecraft 1.20.1. [history]: https://github.com/MarkusBordihn/BOs-Easy-Model-Entities/commits/26.3