Tags
Creators
Details
2.2.0
Compatibility
Changes
denizen-utilities 2.2.0
——————————————————
🏗️ Restructuring of the model system
Model handling is divided into two types of objects: Static and Active.
<model[(model_name)]>(BMModelTag): A new object representing a model blueprint. Allows you to retrieve data directly from a model blueprint without creating an object in the world.<EntityTag.model[(<model_name>)]>(BMActiveModelTag): A renamed legacy tag representing an active model.
New general tags (available for BOTH object types):
.animations: Returns aListTagcontaining all animation names available in the model..animation_duration[<name>]: Returns aDurationTagwith the duration of the specified animation.
New tags for active models only (BMActiveModelTag):
.viewers: Returns all players viewing the model..running_animation: Returns the name of the animation currently playing..running_animation.type: Returns the loop mode (loop,play_once,hold_on_last).
Other new tags:
- EntityTag:
.models: A list of the names of all active BetterModel models on an entity.
- PlayerTag:
.limb: Direct access to the player’s limb tracker.
- BMBoneTag:
.item: Returns theItemTagof the item currently displayed on this bone.
——————————————————
⚡ Animation signals
Support for Blockbench scripts (Instructions/Effects track) has been implemented.
🚩 Global signals (denizen: prefix)
Trigger exactly once at a specified time for the entire server.
denizen:name{metadata}— Triggers theon bm animation signalevent.- Contexts:
<context.model>and any data from{}via<context.key>. - Example:
denizen:shoot.
👥 Personal signals (signal: prefix)
Uses the official built-in BetterModel prefix signal:, which triggers the on bm player animation signal event. This is a per-player signal—it fires individually for each player currently viewing the model (for example, if 5 players are viewing the model, the event will execute 5 times—once for each player).
- Contexts:
<context.name>.
——————————————————
⚠️ Known limitation and workaround:
Currently, a peculiarity (likely a bug) has been observed in BetterModel 3.0: if there are multiple keys with the same prefix on the Instructions track (for example, two denizen: keys), only the last one will trigger.
- Solution: If you need multiple triggers in a row, use the Particle track in Blockbench. Write your scripts in the “Script” field of the particle settings—there, all keys will trigger correctly and in sequence.

Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:oDHfZwCX:ey1IHyrp"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:oDHfZwCX:ey1IHyrp"
}

