2.10.0latestdenizen-utilities 2.10.0Aug 25, 2026 ## Client Version
>###
<PlayerTag.version>and<ConnectionTag.version>tagsTags have been added to retrieve the exact version of the player’s client:
- Returns a human-readable version name (e.g.,
"1.21.1","26.2"):> - narrate "Your client version: <player.version>" >- Add
.protocolto retrieve the exact integer protocol version identifier (e.g.,767):
>> - if <context.connection.version.protocol> >= 767: > - narrate "A modern client has been detected!" >### The
<util.client_version_by_address[<address>]>tagA tag has been added specifically for the
on server list pingevent to work around Paper’s limit on the number of versions:
>> on server list ping: > - narrate <context.client_protocol_version> > - narrate <util.client_version_by_address[<context.address>].protocol> >Note: In the standard version of Paper,
><context.client_protocol_version>works correctly for versions that do not exceed the server kernel version. However, if a client connects using a version newer than the kernel (for example, when pinging from version 26.2 to server 1.21.11 via ViaVersion), Paper will cap the value and report 1.21.11 due to ViaVersion. This tag directly reads the raw network handshake data, returning the client’s true version in all cases without restrictions.## Removals and Changes That Break Compatibility
>###
ViaVersionbridge<ConnectionTag.viaversion_version>and<ConnectionTag.viaversion_protocol>have been removed.Please switch to using the new universal tags
<ConnectionTag.version>and<ConnectionTag.version.protocol>.2.9.0denizen-utilities 2.9.0Aug 24, 2026 - `ConnectionTag` and `PlayerTag`:
### - `transfer` Mechanism (`ConnectionTag`):
Added the `- adjust <connection> transfer:host:port` mechanism (or simply
transfer:host) for direct, vanilla client redirection to any other server without BungeeCord/Velocity.> *Note: The destination server must have
accepts-transfers=trueenabled in itsserver.propertiesfile, otherwise the client will be disconnected.*### - `<PlayerTag.connection>` Tag:
Added the `<player.connection>` tag, which returns the online player’s
ConnectionTag:> - adjust <player.connection> transfer:modrinth.cherry.pizza >### - `<ConnectionTag.is_connected>` Tag:
Returns whether the connection is currently open and active (
true/false).- Dialogs:
### - `DialogScriptContainer` (`procedural:` Generation):
Added the ability to dynamically generate inputs, dialog bodies, and buttons via procedural scripts:
> procedural: > - repeat 15 as:num: > - definemap button: > label: <[num]> > script: > - adjust <context.connection> connect > - define buttons.<[num]>:<[button]> > - determine buttons:<[buttons]> >### - `player custom click` Event:
Added full cross-plugin support, allowing safe interception and reading of dialogs created by other plugins on the server.
- Switches:
button_id:,namespace:.- Contexts:
<context.connection>,<context.button_id>,<context.namespace>,<context.inputs>, and lazy-evaluated direct input retrieval via<context.[input_id]>.- `BiomeTag`:
### - Dynamic `attribute` Mechanism & Tag:
Replaced hardcoded properties with a dynamic `<BiomeTag.attribute[<name>]>` tag and `attribute:` mechanism ([Minecraft Environment Attributes](https://minecraft.wiki/w/Environment_attribute)):
> - adjust <biome> attribute:[sky_color=red;fog_color=<color[green]>]- `BetterModel` Bridge:
### -
bmmodelCommand (Spawn Preconfigurations):The `- bmmodel` command now supports sub-blocks for conveniently preconfiguring model mechanisms right at the moment of its creation:
> - bmmodel entity:<entity> model:dragon: > glow: true > glow_color: red > model_scale: 1.5 >Some mechanisms are applied only after the animation plays, so we strongly recommend using this preset feature.
### - `model_rotation` Mechanism (`BMActiveModelTag`):
Added the `- adjust <model> model_rotation:<QuaternionTag>` mechanism to rotate the entire model as a single unit (preserving shape and bone connections).
### - Geometry Preservation When Changing Skins:
Fixed a bug where scale, positions, and bone offsets were reset when changing a model’s skin. Custom bone dimensions no longer break when using the
skinmechanism.- New `ViaVersion` Bridge:
### - `<ConnectionTag.viaversion_protocol>` Tag:
Returns the raw protocol number of the player’s client (e.g.,
765).### - `<ConnectionTag.viaversion_version>` Tag:
Returns a human-readable name for the player’s client version (e.g.,
"1.20.4","1.16.5").- Events:
### - `player connection configure` Event:
- The
WAITdetermination now accepts aDurationTag(e.g.,WAIT:5sorWAIT:1m).- Fixed an issue that prevented players from joining the server when using this event.
- Compatibility:
### - Minecraft 26.2 Support:
Added full support and fixed internal NMS version handlers for server version 26.2.
2.9.0-beta.2denizen-utilities 2.9.0-beta.2Jul 10, 2026 - ``player connection configure``:The
WAITdetermination now requires aDurationTag(e.g.,WAIT:5sorWAIT:1m) instead of a fixed 1-minute timeout. (default 1m)2.9.0-beta.1denizen-utilities 2.9.0-beta.1Jul 9, 2026 Support 26.2.DialogScriptContainer
Add: *procedural: Added the ability to dynamically generateinputs,bodies, andbuttons.procedural: - repeat 15 as:x: - definemap button: label: <[x]> script: - adjust <context.connection> connect - define buttons.<[x]>:<[button]> - determine buttons:<[buttons]>PlayerCustomClickScriptEvent
*player custom clickEvent: Full cross-plugin support, allowing safe interception and reading of dialogs created by other plugins on the server. Switches*:button_id:, `namespace`. Contexts*:<context.connection>,<context.button_id>,<context.namespace>,<context.inputs>, and lazy-evaluated direct input retrieval via<context.[input_id]>.ConnectionTag
Add: *<ConnectionTag.is_connected>: Returns whether the connection is currently open and active.BiomeTag
Add: *attributeMechanism & Tag: Replaced hardcoded properties with a dynamic<BiomeTag.attribute[<name>]>tag andattribute:mechanism.- adjust <biome> attribute:[sky_color=red;fog_color=<color[green]>]2.8.2denizen-utilities 2.8.2Jun 25, 2026 PlayerConnectionConfigureEvent
Fixed:
- `Determinations`:Fixed an issue where event determinations (such as `determine WAIT`) were evaluated incorrectly or failed to register.
Added:
- `reflect_event Context`:Added the `<context.reflect_event>` context to allow reflective access to the underlying `AsyncPlayerConnectionConfigureEvent` via `JavaReflectedObjectTag`.
2.8.1denizen-utilities 2.8.1Jun 20, 2026 chore(config): change default fakeinternaldata to false2.8.0denizen-utilities 2.8.0Jun 20, 2026 DialogScriptContainer
Add:
- `Condition`:Added ability to hide/show specific input fields, body elements, and buttons based on condition checks.
> bodies: > 1: > type: message > condition: <player.inventory.contains_item[diamond]> > message: <gray>You have a diamond in your inventory, so cool! >2.7.1denizen-utilities 2.7.1Jun 14, 2026 Fixed view range mechanism in tracker.2.7.0denizen-utilities 2.7.0Jun 13, 2026 BetterModel
Add:
- `BMActiveModelTag/BMBoneTag.brightness`:Adds support for a brightness override, containing "block" and "sky" keys (0-15).
- `BMActiveModelTag.model_scale`:Adds unified model scaling while preserving the relative positions of bones, geometry, and pivot points.
2.6.3denizen-utilities 2.6.3Jun 13, 2026 BetterModel
Fix:
- `SkinsRestorer`:Fixed crash on startup if SkinsRestorer is not installed.
2.6.2denizen-utilities 2.6.2Jun 12, 2026 BetterModel
Fix:
- `Animation signals`:Fixed dropped/missing BetterModel animation signals.
2.6.1denizen-utilities 2.6.1Jun 10, 2026 BetterModel
Fix:
- `SkinsRestorer`:Fixed a bug that prevented BetterModel from loading a new skin into the cache immediately after the player changed it.
2.6.0denizen-utilities 2.6.0Jun 10, 2026 Core
Fixed compatibility issues with the [DenizenM](https://github.com/Energobro/DenizenM-Tjtoxshpilivili1) fork.
BetterModel
Add:
- `BMModelCommand`:Added support for limb models.
- `BMBoneTag/BMActiveModelTag.skin`:Changes the skin of the active model/bone to the player skin associated with the specified UUID or PlayerTag.
This is especially useful when working with limb models.
2.5.2denizen-utilities 2.5.2Jun 7, 2026 Fixed target player context in show_dialog mechanism2.5.1denizen-utilities 2.5.1Jun 7, 2026 Fix queue variables not processing in ConnectionTag show_dialog2.5.0denizen-utilities 2.5.0May 30, 2026 Core
DialogScriptContainer: * Added a newshowdialog [<dialog>] (def:<ListTag>)command separately from the standardPlayerTag.show_dialogmechanism, allowing developers to pass parameter definitions (def:) directly into the dialog container.BetterModel
Event: * Added thebm player model interactevent, which triggers when a player interacts with any hitbox of an active model.2.4.0denizen-utilities 2.4.0May 28, 2026 DialogScriptContainer
- Added `base.after action` key with the following options: - CLOSE — Closes the dialog and returns to the previous non-dialog screen (if any). - NONE — Does nothing (keeps the current screen open). - WAIT_FOR_RESPONSE — Replaces dialog with a "waiting for response" screen.2.3.1denizen-utilities 2.3.1May 26, 2026 DialogScriptContainer:
* Fixed an issue where theinitial:option in Text and Boolean inputs did not parse tags.2.3.0denizen-utilities 2.3.0May 26, 2026 denizen-utilities 2.3.0
Core
DialogScriptContainer: *on_true/on_false: Boolean Input options now parse tags. Added compatibility support for the [DenizenM](https://github.com/Energobro/DenizenM-Tjtoxshpilivili1) fork (DialogScriptContainer)*.BetterModel
Fix * Fixed an issue where bones would become desynchronized when animating specific bones using thebones:argument. Add *BMModelTag/BMActiveModelTag.type: available for both static and active models. Returns the model type (PLAYER, GENERAL). *BMActiveModelTag.entity: available for active models. Returns the underlying Bukkit entity that this active model is attached to. *override: a new argument added to thebmstateandbmlimbcommands to control animation overrides.denizen-utilities 2.3.0
Core
DialogScriptContainer: *on_true/on_false: Boolean Input options now parse tags. * Added compatibility support for the [DenizenM](https://github.com/Energobro/DenizenM-Tjtoxshpilivili1) fork.BetterModel
Fix * Fixed an issue where bones would become desynchronized when animating specific bones using thebones:argument. Add *BMModelTag/BMActiveModelTag.type: available for both static and active models. Returns the model type (PLAYER, GENERAL). *BMActiveModelTag.entity: available for active models. Returns the underlying Bukkit entity that this active model is attached to. *override: a new argument added to thebmstateandbmlimbcommands to control animation overrides. Change * Changed the defaultstart:(lerp) argument value from0to1in animation commands to match BetterModel's native behavior.2.2.0denizen-utilities 2.2.0May 24, 2026 denizen-utilities 2.2.0
**——————————————————**
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 aRestructuring of the model system
ListTagcontaining 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.**——————————————————**
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. *Animation signals
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 prefixsignal:, 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. ![BetterModel](https://cdn.modrinth.com/data/cached_images/3d0e3c6c49e4f…2.1.0denizen-utilities 2.1.0May 18, 2026 Future versions will remain compatible, but thefakeinternaldatacommand will require an update to work.2.0Apr 28, 2026 Important Requirement: This version now requires Java 25 or higher to run. This change is necessary to support the latest BetterModel 3.0+ API.Plugin Bridges:
- Added integrations for BetterModel, DiscordSRV, and SkinsRestorer. This includes new tags, commands, and events that allow you to interact with these plugins directly from your scripts.FakeInternalData Patch:
- Implemented a fix for the fakeinternaldata command. Since this command has remained broken in official Denizen releases for a long time without updates, I've added a custom patch to restore its functionality.1.0Mar 5, 2026
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta