The Denizen Scripting Language - Paper Impl (Unofficial version!)
An implementation of the Denizen Scripting Language for Paper servers, with strong Citizens interlinks to emphasize the power of using Denizen with NPCs!
Version 1.3.4M: Compatible with Paper 1.21.11, 26.1.2, 26.2 and 26.3!
๐ Extension Highlights
- Next-Gen Support: Fully updated extension for VS Code by
Humususus. - All-in-One: Includes all the latest changes and community-requested tweaks.
- Source & Guide: Check it out on GitHub: refined-denizenScript
โจ New Features
- Events:
- Added support for the Paper-specific event
on player unchecked sign edits. - Migrated
on player equips|unequips ...to a generalizedon <entity> equips|unequips <item> or armor|helmet|chestplate|leggings|boots|bodysyntax, extending support to all entities and adding the new body slot. <context.entity>โ TheEntityTaginvolved.<context.slot>โ The name of the equipment slot.<context.new_item>/<context.old_item>โ The current and previousItemTagin the slot.
- Added support for the Paper-specific event
- Biome (by
isnsest):- Added 'BiomeTag.attribute' mechanism and tag to set specific biome vanilla attributes, accepts a
MapTag. - Note: Specify only the attribute name directly (e.g.,
SKY_COLOR, notvisuals/SKY_COLOR). - Usage example:
adjust <biome> attribute:[SKY_COLOR=<ColorTag or valid HEX>;CLOUD_HEIGHT=600] - More details can be found here.
- Added 'BiomeTag.attribute' mechanism and tag to set specific biome vanilla attributes, accepts a
- Text & Formatting:
- New tags:
<&sprite>,<&shadow_color>,<&shadow_gradient>,<&dual_gradient>and<&head>. - Sprite usage example:
<&sprite[minecraft:items:item/porkchop]> - Shadow Color usage examples:
- Simple variant:
<&shadow_color[#51a2ff]> - With adjustable transparency:
<&shadow_color[<color[#51a2ff].with_alpha[254]>]>
- Simple variant:
- Shadow gradient usage examples:
- Simple variant:
<&shadow_gradient[from=#51a2ff;to=#FFF085]> - With adjustable transparency:
<&shadow_gradient[from=<color[#51a2ff].with_alpha[0]>;to=<color[#FFF085].with_alpha[254]>]>
- Simple variant:
- Dual gradient including Shadow color and Simple color gradients, usage examples:
- Simple variant:
<&dual_gradient[from=#51a2ff;to=#FFF085;s_from=#FFF085;s_to=#51a2ff]> - Tags
fromandtofor simple color gradient adjusting. - Tags
s_fromands_tofor shadow color gradient adjusting.
- Simple variant:
- Head usage examples:
- Full Face Texture:
<&head[Tjtoxshpilivili1]> - Only Face Texture (without surface pixels):
<&head[!Tjtoxshpilivili1]> - Head tag also accepts
<PlayerTag.skin_blob>,UUIDandbase64skin textures.
- Full Face Texture:
- Added
.shadow_color,.shadow_gradientand.dual_gradienttags toElementTag.
- New tags:
- Internal Migration: Fully migrated to Paper Components for improved performance and modern API compatibility.
๐พ Commands
- Teleport:
- An
asyncoption has been added that teleports the player to unloaded chunks without causing server lag; sometimes there is a slight delay in execution. Details: https://docs.papermc.io/paper/dev/entity-teleport/ - Added
~waitabletag support for teleports utilizing the async parameter. This allows scripts to precisely track and wait until the asynchronous teleportation process is fully completed. - Usage examples:
- Async teleport:
teleport <object> <location> async - Waitable async teleport:
~teleport <object> <location> async
- An
- Playeffect:
- Migrated to Paper's modern
ParticleBuilderAPI, fixing a vanilla limitation where particles wouldn't render beyond 32 blocks from the player. - Added automatic handling for the
forcedparameter. Previously, even if you specified a high visibility radius (e.g.,visibility:100) for a particle spawned 50 blocks away, it wouldn't display. Forcing the particle now ensures it correctly renders at extended distances. - Usage example:
playeffect effect:END_ROD quantity:100 <location> visibility:100 forced
- Migrated to Paper's modern
- Resource Pack: Fully overhauled the logic for the
resourcepackcommand to support adding multiple resource packs.- Added a new
addargument to theresourcepackcommand to send additional resource packs to a player. - Added
PlayerTag.remove_resource_packmechanism to remove a specific resource pack by ID from a player. - Added
PlayerTag.remove_resource_packsmechanism to remove all resource packs from a player.
- Added a new
๐งช Items & Mechanics
- Attributes:
- Added new
.rarity_colortag for items, returnsColorTag. - Usage example:
<player.item_in_hand.rarity_color>
- Added new
- Custom Model Data:
- Updated
custom_model_datamechanism and property, returns aMapTagoffloats,strings,flags(booleans), andcolors. - Now accepts a
MapTagcontainingListsoffloats,strings,flags(booleans), andcolors(RGB) for advanced item model selection, while fully retaining backward compatibility for single-number inputs. - Usage examples:
- Backward compatibility:
custom_model_data: 1000 - New format:
custom_model_data: <map[floats=<list[1000]>;flags=<list[...]>;strings=<list[foo:bar]>;colors=<list[<color[127,0,0]>]>]> - Simple usage:
custom_model_data: [floats=1000;flags=...;strings=foo:bar;colors=<color[127,0,0]>]
- Updated
๐งน Optimization & Cleanup
- Core Optimization: Implementation of custom optimizations across several internal classes.
- Tags Modification:
- Added new sub-tag
.unsortedto tag.find_entities[<#.#>].within[<#.#>]to bypass distance-based sorting. Use this for better performance when the order of entities in the list is not required. - Optimized the
.distancetag by replacingMath.powwith direct multiplication. This reduces computational overhead and results in faster distance calculations across the script.
- Added new sub-tag
- Removals:
- The
.scriptnametag has been removed from all objects. Denizen ASAP Strong warninghas been fully removed.- [WIP] Removed NMSVersion checks for versions prior to 26.1.
- The
๐ Bug Fixes
- showfake: Fixed an issue where the command would trigger an error message despite functioning correctly.
- fakeinternaldata: Fixed a critical bug where the command was non-functional and threw an error.

