
Easy Model Entities
Turn Blockbench models into simple Minecraft entities without writing Java code.
- Загрузки
- 2K
- Подписчики
- 23
- Обновлён
- 19 августа 2026 г.
- Лицензия
- MIT
Опубликован 14 июня 2026 г.
Easy Model Entities

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
.bbmodelassets 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, orattackare played automatically.hurtanddeathare 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.jsThis is the current
masterstate — 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:
EasyModelEntityRenderDelegateEasyModelBlockEntityRenderDelegateEasyModelEntityRenderOptionsEasyModelBlockEntityRenderOptionsEasyModelPartAnimator
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.
Ченджлог
2.2.0Релиз26.2 · 19 августа 2026 г.
Changelog for Easy Model Entities 26.2
Note
This change log includes the summarized changes. For the full changelog, please go to the GitHub History instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
2.2.0Релиз26.2 · 19 августа 2026 г.
Changelog for Easy Model Entities 26.2
Note
This change log includes the summarized changes. For the full changelog, please go to the GitHub History instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
2.2.0Релиз26.2 · 19 августа 2026 г.
Changelog for Easy Model Entities 26.2
Note
This change log includes the summarized changes. For the full changelog, please go to the GitHub History instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
2.2.0Релиз26.1.2 · 19 августа 2026 г.
Changelog for Easy Model Entities 26.1.2
Note
This change log includes the summarized changes. For the full changelog, please go to the GitHub History instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
2.2.0Релиз26.1.2 · 19 августа 2026 г.
Changelog for Easy Model Entities 26.1.2
Note
This change log includes the summarized changes. For the full changelog, please go to the GitHub History instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
2.2.0Релиз26.1.2 · 19 августа 2026 г.
Changelog for Easy Model Entities 26.1.2
Note
This change log includes the summarized changes. For the full changelog, please go to the GitHub History instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
2.2.0Релиз1.21.11 · 18 августа 2026 г.
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 instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
2.2.0Релиз1.21.11 · 18 августа 2026 г.
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 instead.
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_2andidle_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: nonekeeps one clip. - Changed a numbered variant such as
walk_2to count as a standard clip, not a custom one. - Added
texture set,clearandqueryto 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 … translucentso 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_3form one group and EME picks a different one each cycle, controlled byanimation.variant_modein 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, andrestartnever reached the screen. - Fixed the render options for scale and part animation being dropped by custom renderers.
- Added
extractRenderStateandsubmitto 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,@rand 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; useanimation set entity <targets> <state>, which does the same and also accepts named clips andlooporonce. - Added
behavior setto freeze the movement of a host entity, so asitordeathanimation no longer plays while the entity walks away. - Added named Blockbench clips and host hooks for custom animations without a fixed state.
- Added
sitas 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 setto give a lasting animation, withclip,loop, oroncedeciding whether it repeats. - Added
animation play,stop, andrestartfor one-off animations on everyone watching. - Improved the migration from schema
0.1.0to0.2.0to 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
texturestaying 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_entitymodels 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-sidedversiondeclaration and cubes that are fully covered by other cubes. - Added detailed log and
validate_profilesoutput 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
attackanimation state with standard Blockbenchattackclip 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
attackclip. - Added a part pose capture API (
EasyModelPartPoseListener/EasyModelPartPoseviaEasyModelEntityRenderOptions.withPartPoseListener) so integrations can anchor held items or attachments to animated model parts. - Added
EasyModelEntitiesClientApi.getItemAnchor(profileId, arm)with cached anchor resolution (dedicatedright_item/left_itemanchor parts take precedence over the*_hand/*_armfallback). - Added
EasyModelEntityRenderOptions.withAnimationState(int)to force an animation state without implementingEasyModelRenderable. - 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>andrender_profiles/block_entity/<id>), so the model type is derived from the profile ID prefix on the client. - Bumped
schema_versionto0.2.0and removed the server profileclient.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_animationcommand to force an animation state on host entities for testing and command block setups. - Added
swimandflyanimation states to the API. - Added standard
idle/walk/swim/flyanimations 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
ModelPartdefinition 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_fingerprintso resource packs can ship alternate model styles. - Added a migration hook to handle profiles from older
schema_versions. - Improved server and client
versionmatching 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, andBODYall resolve tobody. - 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.
Комментарии
Загружаем…