Denizen Script Meta Documentation Search


Learn about how Denizen works in The Beginner's Guide.
Showing 1001 search results for link out of 3939 meta-documentation entries...

Partial Name Match Results



Event


Nameplayer receives links
Event Lines player receives links
Triggerswhen a player receives a list of server links.
Generated Exampleson player receives links:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Determine"LINKS:<ListTag(MapTag)>" to set the links sent to the player. Each item in the list must be a MapTag in Language:Server Links Format.
"ADD_LINKS:<ListTag(MapTag)>" to send additional links to the player. Each item in the list must be a MapTag in Language:Server Links Format.
GroupPaper
RequiresPaper
Warning(s)this may fire early in the player login process, during which the linked player is essentially an offline player.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerReceivesLinksScriptEvent.java#L17

Language


NameServer Links Format
DescriptionServer links are represented in Denizen as ObjectType:MapTags with the following keys:
- link: The address of the link, required.
And one of:
- type: The type of the link, valid types are listed at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/ServerLinks.Type.html.
- display: The display name of the link.
GroupMinecraft Logic
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/Utilities.java#L653

Mechanism


Nameadd_links
ObjectPlayerTag
InputListTag(MapTag)
DescriptionAdds the specified list of server links to the player. Each item in the list must be a MapTag in Language:Server Links Format.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2698
Namelinks
ObjectPlayerTag
InputListTag(MapTag)
DescriptionSends the specified list of server links to the player. This will override existing links player has.
Each item in the list must be a MapTag in Language:Server Links Format.
Generally prefer Mechanism:PlayerTag.add_links.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2685
Namelinked_npc
ObjectQueueTag
InputNPCTag
Related Tags<QueueTag.npc> Returns the NPCTag linked to a queue.
DescriptionSets the linked NPC for the remainder of the queue.
Generated Example
- adjust <queue> linked_npc:<npc>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitQueueExtensions.java#L71
Namelinked_player
ObjectQueueTag
InputPlayerTag
Related Tags<QueueTag.player> Returns the PlayerTag linked to a queue.
DescriptionSets the linked player for the remainder of the queue.
Generated Example
- adjust <queue> linked_player:<player>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitQueueExtensions.java#L55
Nameadd_links
Objectserver
InputListTag(MapTag)
DescriptionAdds links to the default server links. Each item in the list must be a MapTag in Language:Server Links Format.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2049
Namelinks
Objectserver
InputListTag(MapTag)
DescriptionSets the default server links. Each item in the list must be a MapTag in Language:Server Links Format.
Generally prefer Mechanism:server.add_links.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2037

Semi-Strong Match Results



Action


Action Linescast fishing rod
Triggerswhen the NPC casts a fishing rod. See also Command:fish.
ContextsNone
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java#L172
Action Linescatch fish
Triggerswhen the NPC catches a fish. See also Command:fish.
ContextsNone
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java#L236
Action Linesreel in fishing rod
Triggerswhen the NPC reels in its fishing rod. See also Command:fish.
ContextsNone
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java#L225
Action Linesstart fishing
Triggerswhen the NPC starts fishing. See also Command:fish.
ContextsNone
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java#L86
Action Linesstop fishing
Triggerswhen the NPC stops fishing. See also Command:fish.
ContextsNone
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/npc/traits/FishingTrait.java#L111

Command


NameCooldown
Syntaxcooldown [<duration>] (global) (script:<script>)
Short DescriptionTemporarily disables an interact script for the linked player.
Full DescriptionTemporarily disables an interact script for the linked player.

Cooldown requires a type (player or global), a script, and a duration.
It also requires a valid link to a PlayerTag if using a non-global cooldown.

To cooldown non-interact scripts automatically, consider Command:ratelimit.

Cooldown periods are persistent through a server restart as they are saved in the 'saves.yml'.
Related Tags<ScriptTag.cooled_down[player]> Returns whether the script is currently cooled down for the player. Any global (...)
<ScriptTag.cooldown> Returns the time left for the player to cooldown for the script.
Usage Example
# Use to keep the current interact script from meeting requirements.
- cooldown 20m
Usage Example
# Use to keep a player from activating a script for a specified duration.
- cooldown 11h script:bonus_script
- cooldown 5s script:hit_indicator
Usage Example
# Use the 'global' argument to indicate the script to be on cooldown for all players.
- cooldown global 24h script:daily_treasure_offering
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/core/CooldownCommand.java#L25
NameDespawn
Syntaxdespawn (<npc>|...)
Short DescriptionTemporarily despawns the linked NPC or a list of NPCs.
Full DescriptionThis command will temporarily despawn either the linked NPC or a list of other NPCs.
Despawning means they are no longer visible or interactable, but they still exist and can be respawned.
Related Tags<NPCTag.is_spawned> Returns whether the NPC is spawned.
Usage Example
# Use to despawn the linked NPC.
- despawn
Usage Example
# Use to despawn several NPCs.
- despawn <npc>|<player.selected_npc>|<[some_npc]>
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/DespawnCommand.java#L26
NameGoto
Syntaxgoto [<name>]
Short DescriptionJump forward to a location marked by Command:mark.
Full DescriptionJumps forward to a marked location in the script.
For example:

- goto potato
- narrate "This will never show"
- mark potato


Most scripters should never use this. This is only for certain special cases.
Related TagsNone
Usage Example
# Use to jump forward to a location.
- goto potato
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/GotoCommand.java#L24
NameMark
Syntaxmark [<name>]
Short DescriptionMarks a location for Command:goto.
Full DescriptionMarks a location for the goto command. See Command:goto for details.
Related TagsNone
Usage Example
# Use to mark a location.
- mark potato
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/MarkCommand.java#L18
Namenpcbossbar
Syntaxnpcbossbar (remove) (color:<color>) (options:<option>|...) (range:<#>) (style:<style>) (title:<title>) (progress:<progress>) (view_permission:<permission>) (visible:<true/false>)
Short DescriptionControls or removes the linked NPC's bossbar.
Full DescriptionControls or removes the linked NPC's bossbar.

Progress can be a number between 1 and 100 or 'health' to make it track the NPC's health.
Placeholder API/Citizens placeholders are supported.

Optionally specify a range around the NPC where the bossbar is visible, and/or a permission required to view it.
Input an empty view permission to remove it ('view_permission:').

Valid colors: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarColor.html.
Valid styles: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarStyle.html.
Valid options: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/boss/BarFlag.html.
Usage Example
# Makes the linked NPC's bossbar green, and changes its title.
- npcbossbar color:green "title:This bossbar is green!"
Usage Example
# Makes it so the linked NPC's bossbar can only be visible 5 blocks away from it.
- npcbossbar range:5
Usage Example
# Removes a specific NPC's bossbar.
- npcbossbar remove npc:<[theNPC]>
Groupnpc
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/NPCBossBarCommand.java#L29
NameRename
Syntaxrename [<name>/cancel] (t:<entity>|...) (per_player) (for:<player>|...) (list_name_only)
Short DescriptionRenames the linked NPC or list of entities.
Full DescriptionRenames the linked NPC or list of entities.
Functions like the '/npc rename' command.

Can rename a spawned or unspawned NPC to any name up to 256 characters.

Can rename a vanilla entity to any name up to 256 characters, and will automatically make the nameplate visible.

Can rename a player to any name up to 16 characters. This will affect only the player's nameplate.

Optionally specify 'per_player' to reprocess the input tags for each player when renaming a vanilla entity
(meaning, if you use "- rename <player.name> t:<[someent]> per_player", every player will see their own name on that entity).
A per_player rename will remain active until the entity is renamed again or the server is restarted.
Rename to "cancel" per_player to intentionally end a per_player rename.
Optionally specify "for:" a list of players when using per_player.

Optionally specify 'list_name_only' to only change the tab list name for a player. Works with 'per_player'.
Related Tags<EntityTag.name> Returns the name of the entity. (...)
<NPCTag.nickname> Returns the NPC's display name, as set by the Nickname trait (or the default NPC name).
Usage Example
# Use to rename the linked NPC to 'Bob'.
- rename Bob
Usage Example
# Use to rename a different NPC to 'Bob'.
- rename Bob t:<[some_npc]>
Usage Example
# Use to make an entity show players their own name for 10 seconds.
- rename <green><player.name> t:<[some_entity]> per_player
- wait 10s
- rename cancel t:<[some_entity]> per_player
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/RenameCommand.java#L41
NameSit
Syntaxsit (<location>)
Short DescriptionCauses the NPC to sit. To make them stand, see Command:Stand.
Full DescriptionMakes the linked NPC sit at the specified location.
Use Command:Stand to make the NPC stand up again.
Related Tags<NPCTag.is_sitting> Returns true if the NPC is sitting. Relates to Command:sit.
Usage Example
# Make the linked NPC sit at the player's cursor location.
- sit <player.cursor_on>
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/SitCommand.java#L23
Namesleep
Syntaxsleep (<location>)
Short DescriptionCauses the NPC to sleep. To make them wake up, see Command:Stand.
Full DescriptionMakes the linked NPC sleep at the specified location.
Use Command:Stand to make the NPC wake back up.
Related Tags<NPCTag.is_sleeping> Returns true if the NPC is sleeping. Relates to Command:sleep.
Usage Example
# Make the linked NPC sleep at the player's cursor location.
- sleep <player.cursor_on>
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/SleepCommand.java#L24

Event


Nameblock being built on block
Event Lines <block> being built (on <block>)
Triggerswhen an attempt is made to build a block on another block. Not necessarily caused by players. Does not normally fire when players place blocks. Prefer Event:player places block for that.
Generated Exampleson torch being built on birch_fence_gate:
after block being built on yellow_stained_glass_pane:
Has Playerwhen the event is triggered in relation to a player that is causing the block build. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.location> returns the LocationTag of the block the player is trying to build on.
<context.old_material> returns the MaterialTag of the block the player is trying to build on.
<context.new_material> returns the MaterialTag of the block the player is trying to build.
<context.buildable> returns whether the block can physically be placed where it was when the event was fired.
Determine"BUILDABLE" to allow the building.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupBlock
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/block/BlockBuiltScriptEvent.java#L16
Nameentity creates portal
Event Lines <entity> creates portal
Triggerswhen an entity creates a portal. Generally, prefer Event:portal created instead of this.
Generated Examplesafter entity creates portal:
on projectile creates portal:
Has Playerif the entity that created the portal is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.entity> returns the EntityTag that created the portal.
<context.portal_type> returns the type of portal: CUSTOM, ENDER, or NETHER.
<context.blocks> returns a list of block locations where the portal is being created.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityCreatePortalScriptEvent.java#L17
Nameentity goes into block
Event Lines <entity> goes into <block>
Triggerswhen an entity enters, and is stored in a block (eg a bee enters a bee nest).
Does not fire when a silverfish "enters" a stone block. Prefer Event:entity changes block for that.
Generated Examplesafter iron_golem goes into block:
on entity goes into bubble_coral_fan:
Contexts<context.entity> returns the EntityTag.
<context.location> returns the LocationTag of the block entered by the entity.
<context.material> returns the MaterialTag of the block entered by the entity.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityGoesIntoBlockScriptEvent.java#L16
Nameprojectile collides with entity
Event Lines <projectile> collides with <entity>
TriggersN/A - use Event:projectile hits with the 'entity' switch on versions above 1.19.
Generated Exampleson projectile collides with pillager:
after arrow collides with monster:
Has PlayerWhen the entity collided with is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCWhen the entity collided with is a NPC.
Contexts<context.projectile> returns the projectile that is colliding.
<context.entity> returns the entity that was collided with.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
DeprecatedUse 'projectile hits' with the 'entity' switch on versions above 1.19.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/ProjectileCollideScriptEvent.java#L17
Nameprojectile hits block/entity
Event Lines <projectile> hits <block/entity>
<entity> shoots <material> (with <projectile>)
TriggersN/A - deprecated in favor of Event:projectile hits
Generated Examplesafter arrow hits block/entity:
after skeleton shoots light_blue_stained_glass_pane:
on projectile hits block/entity:
on entity shoots red_mushroom_block:
GroupEntity
Deprecateduse new 'projectile hits' unified event
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/ProjectileHitScriptEvent.java#L48
Nameconsole output
Event Lines console output
Triggerswhen any message is printed to console. (Requires Mechanism:system.redirect_logging be set true.)
Generated Exampleson console output:
Contexts<context.message> returns the message that is being printed to console.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupCore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/core/ConsoleOutputScriptEvent.java#L9
Namecustom event
Event Lines custom event
Triggerswhen called by a script using Command:customevent.
Example
on custom event id:my_custom_event:
- narrate <context.my_custom_info>
Has PlayerWhen the command is used with a player link. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCWhen the command is used with an NPC link.
Switchesid:<id> to only run the event if the given ID is used. This should almost always be specified.
data:<key>:<value> to only run the event if the given data key matches the given value, using advanced matchers for the given object type (note: the 'customevent' command call has to be careful about object type for this).
Contexts<context.id> returns the ID that was used.
<context.data> returns the MapTag of input data (if any! some events don't have context data).
<context.(key)> returns the value of the input data key, if available.
Determine"OUTPUT:<Anything>" to add that value to the output list (note this is an ADD, not a SET).
GroupCore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/core/CustomScriptEvent.java#L16
Namedelta time hourly|minutely|secondly
Event Lines delta time hourly|minutely|secondly
Triggersevery <count> seconds, minutes, or hours of game calculation time. Default repetitions count of 1.
This is specifically based on the rate of time advancement in the game server,
which is not necessarily equivalent to the real passage of time (for example, this event may fire slower if the server is lagging).
For real time, see Event:system time.
Generated Examplesafter delta time hourly:
after delta time minutely:
Switchesevery:<count> to only run the event every *count* times (like "on delta time secondly every:5" for every 5 seconds).
Contexts<context.second> returns the exact delta time since system start.
GroupCore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/core/DeltaTimeScriptEvent.java#L10
Nameentity steps on block
Event Lines entity steps on block
<entity> steps on <material>
Triggerswhen a non-player entity steps onto a specific block material. For players, use Event:player steps on block.
Example
# Announce the name of the entity stepping on the block and the material of block.
on entity steps on block:
- announce "<context.entity.name> stepped on a <context.location.material.name>!"
Example
# Announce the material of the block a sheep has stepped on.
on sheep steps on block:
- announce "A sheep has stepped on a <context.location.material.name>!"
Example
# Announce that a sheep has stepped on a diamond block.
on sheep steps on diamond_block:
- announce "A sheep has stepped on a diamond block! Must be a wealthy sheep!"
Contexts<context.entity> returns an EntityTag of the entity stepping onto the block.
<context.location> returns a LocationTag of the block the entity is stepping on.
<context.previous_location> returns a LocationTag of where the entity was before stepping onto the block.
<context.new_location> returns a LocationTag of where the entity is now.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Warning(s)This event may fire very rapidly.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/EntityStepsOnScriptEvent.java#L15
Nameplayer click_type clicks item in inventory
Event Lines player (<click_type>) clicks (<item>) in <inventory>
Triggerswhen a player clicks in an inventory. Note that you likely will also want to listen to Event:player drags in inventory.
Generated Examplesafter player click_type clicks wooden_axe in inventory:
after player clicks in cartography:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switcheswith:<item> to only process the event if a specified cursor item was used.
in_area:<area> replaces the default 'in:<area>' for this event.
action:<action> to only process the event if a specified action occurred.
slot:<slot> to only process the event if a specified slot or slot_type was clicked. For slot input options, see Language:Slot Inputs.
Contexts<context.item> returns the ItemTag the player has clicked on.
<context.inventory> returns the InventoryTag (the 'top' inventory, regardless of which slot was clicked).
<context.clicked_inventory> returns the InventoryTag that was clicked in.
<context.cursor_item> returns the item the Player is clicking with.
<context.click> returns an ElementTag with the name of the click type. Click type list: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/ClickType.html
<context.slot_type> returns an ElementTag with the name of the slot type that was clicked. Slot type list: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/InventoryType.SlotType.html
<context.slot> returns an ElementTag with the number of the slot that was clicked.
<context.raw_slot> returns an ElementTag with the raw number of the slot that was clicked.
<context.is_shift_click> returns true if 'shift' was used while clicking.
<context.action> returns the inventory_action. See Language:Inventory Actions.
<context.hotbar_button> returns an ElementTag of the button pressed as a number, or 0 if no number button was pressed.
DetermineItemTag to set the current item for the event.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerClicksInInventoryScriptEvent.java#L70
Nameplayer granted advancement criterion
Event Lines player granted advancement criterion
Triggerswhen a player is granted a single criterion for an advancement.
To fire when ALL the criteria for an advancement is met, use Event:player completes advancement
Example
# Prevent a player from being granted an advancement criterion.
on player granted advancement criterion:
- determine cancelled
Example
# This will only narrate when the player is granted the criterion for taming a Calico cat
# for the "A Complete Catalogue" advancement.
on player granted advancement criterion advancement:husbandry/complete_catalogue criterion:calico:
- narrate "That is a pretty cute Calico cat you have there!"
Example
# This will fire for a custom Denizen advancement called "my_advancement".
on player granted advancement criterion advancement:denizen:my_advancement:
- narrate "You got the advancement!"
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesadvancement:<name> to only fire if the advancement for the criterion has the specified name.
criterion:<name> to only fire if the criterion being granted has the specified name.
Contexts<context.advancement> returns the advancement's minecraft ID key.
<context.criterion> returns the criterion minecraft ID key.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerGrantedAdvancementCriterionScriptEvent.java#L15
Nameplayer logs in for the first time
Event Lines player logs in (for the first time)
player (first) login
Triggerswhen a player logs in to the server. This is during the authentication process, and should NOT be confused with Event:player joins.
Generated Exampleson player logs in for the first time:
on player login:
after player logs in:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.hostname> returns an ElementTag of the player's IP address.
<context.server_hostname> returns an ElementTag of the server address that the player used to connect to the server.
Determine"KICKED" to kick the player from the server.
"KICKED:<ElementTag>" to kick the player and specify a message to show.
GroupPlayer
Warning(s)Generally avoid this event. This is not a way to get a 'first join' event. This is an internal technical event, with specific uses (eg custom whitelisting).
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerLoginScriptEvent.java#L17
Nameplayer prelogin
Event Lines player prelogin
Triggerswhen a player starts to log in to the server.
This is during the EARLY authentication process, and should NOT be confused with Event:player joins.
Generated Examplesafter player prelogin:
Has PlayerWhen the player has previously joined (and thus the UUID is valid). - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.hostname> returns an ElementTag of the player's hostname.
<context.name> returns an ElementTag of the player's name.
<context.uuid> returns an ElementTag of the player's UUID.
DetermineQueueTag to cause the event to wait until the queue is complete.
"KICKED" to kick the player from the server.
"KICKED <ElementTag>" to kick the player and specify a message to show.
GroupPlayer
Warning(s)This is a very special-case handler, that delays logins until the events are handled on the main thread.
Generally, prefer Event:on player logs in.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerPreLoginScriptEvent.java#L27
Nameplayer receives chunk unload
Event Lines player receives chunk unload
Triggerswhen a Player receives a chunk unload packet.
Should only be used for packet/clientside related stuff. Not intended for modifying server side.
Generally prefer Event:chunk unloads in most cases.
Generated Exampleson player receives chunk unload:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.chunk> returns a ChunkTag of the chunk being unloaded.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Warning(s)This event will fire *extremely* rapidly and almost guarantees lag. Use with maximum caution.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChunkUnloadScriptEvent.java#L14
Nameplayer receives message
Event Lines player receives message
Triggerswhen a player receives any chat message from the server. This does not normally include *player* chat, instead prefer Event:player chats for that.
Generated Exampleson player receives message:
after player receives message:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.message> returns an ElementTag of the message.
<context.raw_json> returns an ElementTag of the raw JSON used for the message.
<context.system_message> returns true if the message is a system message (not player chat).
Determine"MESSAGE:<ElementTag>" to change the message.
"RAW_JSON:<ElementTag>" to change the JSON used for the message.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupPlayer
Warning(s)Using this will forcibly sync the chat thread.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerReceivesMessageScriptEvent.java#L17
Nameplayer steers entity
Event Lines player steers entity
player steers <entity>
Triggersevery tick that a player is controlling a vehicle. Use Event:player input on MC 1.21+.
Generated Examplesafter player steers entity:
on player steers witch:
on player steers entity:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.entity> returns the EntityTag being steered by the player.
<context.sideways> returns an ElementTag(Decimal) where a positive number signifies leftward movement.
<context.forward> returns an ElementTag(Decimal) where a positive number signifies forward movement.
<context.jump> returns an ElementTag(Boolean) that signifies whether the player is attempting to jump with the entity.
<context.dismount> returns an ElementTag(Boolean) that signifies whether the player is attempting to dismount.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
DeprecatedUse the 'player input' event on MC 1.21+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerSteersEntityScriptEvent.java#L19
Nameplayer throws hatching|non-hatching egg
Event Lines player throws (hatching|non-hatching) egg
Triggerswhen a player throws an egg - this event specifically fires when the egg hits, for the initial throw event use Event:projectile launched.
Generated Examplesafter player throws hatching egg:
after player throws non-hatching egg:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.egg> returns the EntityTag of the egg.
<context.is_hatching> returns an ElementTag with a value of "true" if the egg will hatch and "false" otherwise.
DetermineEntityTag to set the type of the hatching entity.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerThrowsEggScriptEvent.java#L17
Nameplayer tracks|untracks entity
Event Lines player tracks|untracks <entity>
Triggerswhen a player starts or stops tracking an entity. An entity is tracked/untracked by a player's client when the player moves in/out of its Mechanism:EntityTag.tracking_range.
Example
# Narrate when the player tracks any entities except for item frames.
on player tracks !item_frame:
- narrate "You are now tracking <context.entity.name> at <context.entity.location.simple>"
Example
on player untracks chicken:
- narrate "CHICKEN: No! Come back! :("
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.entity> returns an EntityTag of the entity being tracked or untracked.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Warning(s)This event may fire very rapidly.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerTracksEntityScriptEvent.java#L16
Nameplayer walks over notable
Event Lines player walks over notable
player walks over <location>
Triggerswhen a player walks over a noted location. In most cases, it is preferable to use Event:player enters area with a small cuboid.
Generated Examplesafter player walks over notable:
after player walks over location:
on player walks over location:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.notable> returns an ElementTag of the notable location's name.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerWalksOverScriptEvent.java#L18
Nameredis pubsub message
Event Lines redis pubsub message
Triggerswhen a subscribed redis connection receives a published message, see Command:Redis.
Generated Exampleson redis pubsub message:
after redis pubsub message:
Switcheschannel:<channel> to only fire on events advanced-matching the given channel.
Contexts<context.redis_id> returns the connection id that saw this message.
<context.pattern> returns the redis pattern that matched the channel.
<context.channel> returns the actual channel matched.
<context.message> returns the published message.
GroupCore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/core/RedisPubSubMessageScriptEvent.java#L9
Nameserver resources reloaded
Event Lines server resources reloaded
Triggerswhen vanilla resources (such as datapacks) are reloaded (by vanilla commands or by plugins). If you mess with datapacks often, it may be helpful to run Command:reload in this event.
Generated Examplesafter server resources reloaded:
Switchescause:<cause> to only process the event if the cause of the resource reload matches the specified cause.
Contexts<context.cause> Returns the cause of the resource reload. Refer to 🔗https://jd.papermc.io/paper/1.19/io/papermc/paper/event/server/ServerResourcesReloadedEvent.Cause.html
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/ServerResourcesReloadedScriptEvent.java#L12
Nameshopkeeper trade
Event Lines shopkeeper trade
Triggerswhen a trade with a shopkeeper is completed.
If you intend to cancel this event, use Event:ShopKeeperTradeInitiatedScriptEvent instead.
Generated Exampleson shopkeeper trade:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.recipe> Returns a ListTag(ItemTag) of the trade in the form Offered|Offered|Result.
<context.shopkeeper> Returns the ShopKeeperTag of the ShopKeeper that the trade occurred with.
GroupDepenizen
RequiresDepenizen, ShopKeepers
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/events/shopkeepers/ShopKeeperTradeCompletedScriptEvent.java#L15
Namesystem time hh:mm
Event Lines system time <HH:MM>
system time hourly|minutely|secondly
Triggerswhen the system time changes to the specified value.
The system time is the real world time set in the server's operating system.
It is not necessarily in sync with the game server time, which may vary (for example, when the server is lagging).
For events based on in-game time passage, use Event:delta time or Command:wait.
Example
on system time hourly:
- announce "Whoa an hour passed!"
Example
on system time 12:00:
- announce "Whoa it's noon!"
Example
on system time 03:00:
- announce "Daily restart in 5 minutes!"
- wait 5m
- adjust server restart
Switchesevery:<count> to only run the event every *count* times (like "on system time secondly every:5" for every 5 seconds).
Contexts<context.hour> returns the exact hour of the system time.
<context.minute> returns the exact minute of the system time.
Synonyms (Search Aid)cron
GroupCore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/core/SystemTimeScriptEvent.java#L11
Namevault changes state
Event Lines vault changes state
Triggerswhen a vault block's state changes. A list of states can be found at 🔗https://jd.papermc.io/paper/org/bukkit/block/data/type/Vault.State.html.
Generated Exampleson vault changes state:
after vault changes state:
Has Playerwhen the change is triggered by a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.location> returns the LocationTag of the vault block.
<context.old_state> returns the vault state before the change.
<context.new_state> returns the vault state after the change.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupBlock
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/VaultChangesStateScriptEvent.java#L15
Namewebserver web request
Event Lines webserver web request
Triggerswhen a webserver opened by Command:webserver receives a connection request.
Example
# This example supplies a manual response to any of the "/", "/index", or "/index.html" paths.
my_world_script:
    type: world
    data:
        index:
        - <!DOCTYPE html>
        - <html><head><title>Welcome to my site</title></head>
        - <body><h1>Hi!</h1></body></html>
    events:
        on webserver web request port:8080 path:/|/index|/index.html method:get:
        - determine code:200 passively
        - determine headers:[Content-Type=text/html] passively
        - determine raw_text_content:<script.data_key[data.index].separated_by[<n>]>
Example
# This example gives a default response to any pages not handled on port 8080.
on webserver web request port:8080 priority:1000 has_response:false:
- determine code:404 passively
- determine headers:[Content-Type=text/plain] passively
- determine "raw_text_content:Invalid path"
Example
# This example serves a favicon from the local file path "plugins/Denizen/webroot/favicon.ico" with RAM caching to any open web ports.
on webserver web request path:/favicon.ico:
- determine code:200 passively
- determine cached_file:favicon.ico
Switchesport:<#> to only handle requests to a specific port.
path:<path> to only handle requests that match the given advanced-matcher for the path.
method:<method> to only handle requests with the specific method (such as GET or POST).
has_response:<true/false> to only handle requests that do or don't have a response already.
Contexts<context.method> returns the method that was used (such as GET or POST).
<context.path> returns the path requested (such as "/index.html").
<context.port> returns the port connected to.
<context.remote_address> returns the IP address that connected.
<context.query> returns a MapTag of the query data (if no query, returns empty map).
<context.raw_query> returns the raw query input (if no query, returns null).
<context.raw_user_info> returns the raw user info input (if any) (this is a historical HTTP system that allows sending username/password over query).
<context.headers> returns a MapTag of all input headers, where the key is the header name and the value is a ListTag of header values for that name.
<context.body> returns the text content of the body that was sent, if any. Particularly for POST requests.
<context.body_binary> returns the raw binary content body that was sent, if any. Particularly for POST requests.
<context.has_response> returns true if a response body determination (raw_text_content, file, or cached_file) was applied, or false if not.
Determine"CODE:<Element(Number)>" to set a standard web response code, such as 'code:200' for 'OK', or 'code:404' for 'File Not Found'
"HEADERS": + MapTag to set a map of headers, where map keys are the header name and map values are the text of the value, for example headers:[Content-Type=text/html] ... note that header are sometimes case-sensitive.
"RAW_TEXT_CONTENT:<ElementTag>" to set a raw text content body in response. You may determine only one response - raw text, raw binary, a file, or a cached file. You cannot use multiple.
"RAW_BINARY_CONTENT:<BinaryTag>" to set a raw binary content body in response.
"FILE:<ElementTag>" to set a path to a file to send in response. File path must be within the web-root path configured in Denizen/config.yml. Files will be read async.
"CACHED_FILE:<ElementTag>" to set a path to a file to send in response. The content of the file will be cached in RAM until the server restarts. This is useful for files that definitely won't change. First file read will be sync, all others are instant.
"PARSED_FILE:<ElementTag>" - like "FILE:", but this file will be parsed for tags using syntax like "<{util.pi}>" to separate tags from HTML entries.
"CACHED_PARSED_FILE:<ElementTag>" - like "PARSED_FILE" and "CACHED_FILE" combined. Note that the file will be cached, but the results of tags will be handled at runtime still.
GroupCore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/core/WebserverWebRequestScriptEvent.java#L29

Semi-Decent Match Results



Command


NameAction
Syntaxaction [<action name>|...] (<npc>|...) (context:<name>|<object>|...)
Short DescriptionManually fires an NPC action.
Full DescriptionThis command will trigger an NPC action (an action within an 'assignment' type script attached to the NPC) exactly the same
as if an actual serverside event had caused it.
You can specify as many action names as you want in the list, they will all be fired.
You may also specify as many NPCs as you would like to run the action on, in a list.
If no NPCs are specified, the NPC linked to the script will be assumed.
The script's linked player and the specified NPC will automatically be sent through to the action.
To add context information (tags like <context.location>) to the action, simply specify all context values in a list.
Note that there are some inherent limitations... EG, you can't directly add a list to the context currently.
To do this, the best way is to just escape the list value (see Language:Escaping System).
Related TagsNone
Usage Example
# Use to trigger a custom action
- action "custom action"
Usage Example
# Use to trigger multiple custom action with context on a different NPC
- action "player dances|target enemy" <[some_npc]> context:action|custom|target|<player.selected_npc>
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/ActionCommand.java#L23
NameActionBar
Syntaxactionbar [<text>] (targets:<player>|...) (format:<script>) (per_player)
Short DescriptionSends a message to a player's action bar.
Full DescriptionSends a message to the target's action bar area.
If no target is specified it will default to the attached player.
Accepts the 'format:<name>' argument, which will reformat the text according to the specified format script. See Language:Format Script Containers.

Optionally use 'per_player' with a list of player targets, to have the tags in the text input be reparsed for each and every player.
So, for example, "- actionbar 'hello <player.name>' targets:<server.online_players>"
would normally show "hello bob" to every player (every player sees the exact same name in the text, ie bob sees "hello bob", steve also sees "hello bob", etc)
but if you use "per_player", each player online would see their own name (so bob sees "hello bob", steve sees "hello steve", etc).
Related TagsNone
Usage Example
# Use to send a message to the player's action bar.
- actionbar "Hey there <player.name>!"
Usage Example
# Use to send a message to a list of players.
- actionbar "Hey, welcome to the server!" targets:<[thatplayer]>|<[player]>|<[someplayer]>
Usage Example
# Use to send a message to a list of players, with a formatted message.
- actionbar "Hey there!" targets:<[thatplayer]>|<[player]> format:ServerChat
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/ActionBarCommand.java#L35
NameAdjust
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/mechanisms.html
Syntaxadjust [<ObjectTag>/def:<name>|...] [<mechanism>](:<value>)
Short DescriptionAdjusts an object's mechanism.
Full DescriptionMany object tag types contains options and properties that need to be adjusted.
Denizen employs a mechanism interface to deal with those adjustments.
To easily accomplish this, use this command with a valid object mechanism, and sometimes accompanying value.

Specify "def:<name>" as an input to adjust a definition and automatically save the result back to the definition.

You can optionally adjust a MapTag of mechanisms to values.

To adjust an item in an inventory, use Command:inventory, as '- inventory adjust slot:<#> <mechanism>:<value>'.
Note that that is only for items, not actual inventories.
To adjust an actual InventoryTag mechanism, you should still use the normal 'adjust' command, not 'inventory adjust'.
Related Tags<entry[saveName].result> returns the adjusted object.
<entry[saveName].result_list> returns a ListTag of adjusted objects.
Usage Example
# Use to set a custom display name on an entity.
- adjust <[some_entity]> custom_name:ANGRY!
Usage Example
# Use to set the skin of every online player.
- adjust <server.online_players> skin:Notch
Usage Example
# Use to modify an item held in a definition.
- adjust def:stick "display_name:Fancy stick"
Synonyms (Search Aid)mechanism
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/AdjustCommand.java#L31
NameAdjustBlock
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/mechanisms.html
Syntaxadjustblock [<location>|...] [<mechanism>](:<value>) (no_physics)
Short DescriptionAdjusts a mechanism on the material of a block at the location.
Full DescriptionAdjusts a mechanism on the material of a block at the location.
That is, an equivalent to Command:adjust, but that directly applies a "MaterialTag" mechanism onto a block.

Input a location or list of locations, and the mechanism to apply.

Use the "no_physics" argument to indicate that the change should not apply a physics update.
If not specified, physics will apply to the block and nearby blocks.
Related Tags<LocationTag.material> Returns the material of the block at the location.
Usage Example
# Use to put snow on the block at the player's feet.
- adjustblock <player.location.below> snowy:true
Usage Example
# Use to switch on the lever that the player is looking at, without actually providing redstone power.
- adjustblock <player.cursor_on> switched:true no_physics
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/AdjustBlockCommand.java#L30
NameAdvancement
Syntaxadvancement [id:<name>] (delete/grant:<players>/revoke:<players>/{create}) (parent:<name>) (icon:<item>) (title:<text>) (description:<text>) (background:<key>) (frame:<type>) (toast:<boolean>) (announce:<boolean>) (hidden:<boolean>) (x:<offset>) (y:<offset>) (progress_length:<#>)
Short DescriptionControls a custom advancement.
Full DescriptionControls custom Minecraft player advancements. You should generally create advancements manually on server start.
Currently, the ID argument may only refer to advancements added through this command.
The default action is to create and register a new advancement.
You may also delete an existing advancement, in which case do not provide any further arguments.
You may grant or revoke an advancement for a list of players, in which case do not provide any further arguments.
The parent argument sets the root advancement in the advancements menu, in the format "namespace:key".
If no namespace is specified, the parent is assumed to have been created through this command.
The icon argument sets the icon displayed in toasts and the advancements menu.
As of MC 1.20, an icon is required. Dirt will be used if it is missing.
The title argument sets the title that will show on toasts and in the advancements menu.
The description argument sets the information that will show when scrolling over a chat announcement or in the advancements menu.
The background argument sets the image to use if the advancement goes to a new tab.
If the background is unspecified, defaults to "minecraft:gui/advancements/backgrounds/stone".
The frame argument sets the type of advancement - valid arguments are CHALLENGE, GOAL, and TASK.
The toast argument sets whether the advancement should display a toast message when a player completes it. Default is true.
The announce argument sets whether the advancement should display a chat message to the server when a player completes it. Default is true.
The hidden argument sets whether the advancement should be hidden until it is completed.
The x and y arguments are offsets based on the size of an advancement icon in the menu. They are required for custom tabs to look reasonable.

When creating an advancement, optionally specify 'progress_length' to make it require multiple parts.
When granting an advancement, optionally specify 'progress_length' to only grant partial progress.

To award a pre-existing vanilla advancement, instead use Mechanism:PlayerTag.award_advancement

WARNING: Failure to re-create advancements on every server start may result in loss of data - use Event:server prestart.

If you mess with datapacks, you will also need to re-create advancements during Event:server resources reloaded
Related Tags<PlayerTag.has_advancement[<advancement>]> Returns whether the player has completed the specified advancement.
<PlayerTag.advancements> Returns a list of the names of all advancements the player has completed.
<server.advancement_types> Returns a list of all registered advancement names. (...)
Usage Example
# Creates a new advancement that has a potato icon.
- advancement id:hello_world icon:baked_potato "title:Hello World" "description:You said hello to the world."
Usage Example
# Creates a new advancement with the parent "hello_world" and a CHALLENGE frame. Hidden until it is completed.
- advancement id:hello_universe parent:hello_world icon:ender_pearl "title:Hello Universe" "description:You said hello to the UNIVERSE." frame:challenge hidden:true x:1
Usage Example
# Grants the "hello_world" advancement to the current player.
- advancement id:hello_world grant:<player>
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/AdvancementCommand.java#L36
NameAnimate
Syntaxanimate [<entity>|...] [animation:<name>] (for:<player>|...)
Short DescriptionMakes a list of entities perform a certain animation.
Full DescriptionMinecraft implements several player and entity animations which the animate command can use, just
specify an entity and an animation.

Player animations require a Player-type entity or NPC. Available player animations include:
ARM_SWING, HURT, CRIT, MAGIC_CRIT, SIT, SLEEP, SNEAK, STOP_SITTING, STOP_SLEEPING, STOP_SNEAKING,
START_USE_MAINHAND_ITEM, START_USE_OFFHAND_ITEM, STOP_USE_ITEM, EAT_FOOD, ARM_SWING_OFFHAND

All entities also have available Bukkit's entity effect list:
🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/EntityEffect.html
These EntityEffect options can optionally be played only for specific players with the "for:" argument input.

In addition, Denizen adds a few new entity animations:
SKELETON_START_SWING_ARM, SKELETON_STOP_SWING_ARM,
POLAR_BEAR_START_STANDING, POLAR_BEAR_STOP_STANDING,
HORSE_BUCK, HORSE_START_STANDING, HORSE_STOP_STANDING,
IRON_GOLEM_ATTACK,
VILLAGER_SHAKE_HEAD,
SWING_MAIN_HAND, SWING_OFF_HAND

Note that the above list only applies where logical, EG 'WOLF_' animations only apply to wolves.

In versions 1.20+, to specify the direction of damage for the HURT animation, use Mechanism:EntityTag.play_hurt_animation
Related TagsNone
Usage Example
# Use to make a player appear to get hurt.
- animate <player> animation:hurt
Usage Example
# Use to make a wolf NPC shake.
- animate <npc> animation:wolf_shake
Groupentity
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/AnimateCommand.java#L29
NameAnimateChest
Syntaxanimatechest [<location>] ({open}/close) (sound:{true}/false) (<player>|...)
Short DescriptionMakes a chest appear to open or close.
Full DescriptionThis command animates a chest at a specified location in the world opening or closing.
By default, the chest will animate opening.
Optionally, specify whether to play a sound with the animation. By default this will play.
Optionally, specify a player or list of players that the animation should be visible to.
By default, only the linked player can see the animation.

Note that this uses a generic 'block action' packet internally,
which means other block types may also react to this command.
Related TagsNone
Usage Example
# Use to animate a chest opening, which only the linked player will see.
- animatechest <context.location>
Usage Example
# Use to then animate a chest closing, which only the linked player will see.
- animatechest <context.location> close
Usage Example
# Use to animate a chest opening with no sound, which only the linked player will see.
- animatechest <context.location> sound:false
Usage Example
# Use to animate a chest opening that only a single specific player will see.
- animatechest <context.location> sound:false <[someplayer]>
Usage Example
# Use to animate a chest opening that only a list of specific players will see.
- animatechest <context.location> sound:false <[someplayer]>|<[player]>|<[thatplayer]>
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/AnimateChestCommand.java#L30
NameAnnounce
Syntaxannounce [<text>] (to_ops/to_console/to_flagged:<flag_name>/to_permission:<node>) (format:<script>)
Short DescriptionAnnounces a message for everyone online to read.
Full DescriptionAnnounce sends a raw message to players.
Simply using announce with text will send the message to all online players using the Spigot broadcast system.
Specifying the 'to_ops' argument will narrow down the players in which the message is sent to ops only.
Alternatively, using the 'to_permission' argument will send the message to only players that have the specified permission node.
Or, using the 'to_flagged' argument will send the message to only players that have the specified flag.
You can also use the 'to_console' argument to make it so it only shows in the server console.

You can format the announcement with Language:Format Script Containers using the 'format' argument, or with the "announce" format type (see Language:Script Formats).

Note that the default announce mode (that shows for all players) relies on the Spigot broadcast system, which requires the permission "bukkit.broadcast.user" to see broadcasts.
Related TagsNone
Usage Example
# Use to send an important message to your players.
- announce 'Warning! This server will restart in 5 minutes!'
Usage Example
# Use to send a message to a specific 'group' of players.
- announce to_flagged:clan_subang '[<player.name>] Best clan ever!'
Usage Example
# Use to easily send a message to all online ops.
- announce to_ops '<player.name> requires help!'
Usage Example
# Use to send a message to just the console (Primarily for debugging / logging).
- announce to_console 'Warning- <player.name> broke a mob spawner at location <player.location>'
Groupserver
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/server/AnnounceCommand.java#L31
NameAssignment
Related Guide Pagehttps://guide.denizenscript.com/guides/npcs/assignment-scripts.html
Syntaxassignment [set/add/remove/clear] (script:<name>) (to:<npc>|...)
Short DescriptionChanges an NPC's assignment.
Full DescriptionChanges an NPC's assignment as though you used the '/npc assignment' command.

Uses the script: argument, which accepts an assignment-type script.

Optionally, specify a list of NPCs to apply the trait to. If unspecified, the linked NPC will be used.

'Set' is equivalent to 'clear' + 'add'.
Related Tags<NPCTag.script> Deprecated variant of Tag:NPCTag.scripts.
<server.npcs_assigned[<assignment_script>]> Returns a list of all NPCs assigned to a specified script.
Usage Example
# Use to assign an npc with exactly one assignment script named 'Bob_the_Builder'.
- assignment set script:Bob_the_Builder
Usage Example
# Use to give a different NPC an assignment.
- assignment set script:Bob_the_Builder npc:<[some_npc]>
Usage Example
# Use to clear an npc's assignments.
- assignment clear
Usage Example
# Use to add an extra assignment to the NPC.
- assignment add script:name_fix_assign
Usage Example
# Use to remove an extra assignment from the NPC.
- assignment remove script:name_fix_assign
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/AssignmentCommand.java#L27
NameAttack
Syntaxattack [<entity>|...] (target:<entity>/cancel)
Short DescriptionMakes an entity, or list of entities, attack a target.
Full DescriptionThe attack command causes a mob entity to attack a target mob entity or player.

This technically can be used on an NPC, but it will trigger the Citizens internal punching-pathfinder.
This attack mode doesn't work well. If you want NPC combat, consider using Sentinel instead: 🔗https://github.com/mcmonkeyprojects/Sentinel/blob/master/README.md.

To cancel an attack, use the 'cancel' argument instead of specifying a target.
Related Tags<NPCTag.is_fighting> Returns whether the NPC is currently targeting an entity for the Citizens internal punching pathfinder. (...)
<NPCTag.attack_strategy> Returns the NPC's current navigator attack strategy. (...)
<NPCTag.target_entity> Returns the entity being targeted by the NPC's current navigation (if any).
Usage Example
# Use to make the player's target entity attack a nearby entity.
- attack <player.target> target:<npc.location.find.living_entities.within[10].random>
Usage Example
# Use to make a random nearby entity attack a player.
- attack <player.location.find.living_entities.within[10].random> target:<player>
Usage Example
# Use to stop an entity from attacking.
- attack <[entity]> cancel
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/AttackCommand.java#L26
NameBan
Syntaxban ({add}/remove) [<player>|.../addresses:<address>|.../names:<name>|...] (reason:<text>) (expire:<time>) (source:<text>)
Short DescriptionBan or un-ban players or ip addresses.
Full DescriptionAdd or remove player or ip address bans from the server. Banning a player will also kick them from the server.
You may specify a list of player names instead of ObjectType:PlayerTags, which should only ever be used for special cases (such as banning players that haven't joined the server yet).

You may optionally specify both a list of players and list of addresses.

Additional options are:
reason: Sets the ban reason.
expire: Sets the expire time of the temporary ban, as a TimeTag or a DurationTag. This will be a permanent ban if not specified.
source: Sets the source of the ban.
Related Tags<PlayerTag.is_banned> Returns whether the player is banned.
<PlayerTag.ban_reason> Returns the reason for the player's ban, if they are banned.
<PlayerTag.ban_expiration_time> Returns the expiration of the player's ban, if they are banned. (...)
<PlayerTag.ban_created_time> Returns when the player's ban was created, if they are banned.
<PlayerTag.ban_source> Returns the source of the player's ban, if they are banned.
<server.is_banned[<address>]> Returns whether the given ip address is banned.
<server.ban_info[<address>].expiration_time> Returns the expiration of the ip address's ban, if it is banned. (...)
<server.ban_info[<address>].reason> Returns the reason for the ip address's ban, if it is banned.
<server.ban_info[<address>].created_time> Returns when the ip address's ban was created, if it is banned.
<server.ban_info[<address>].source> Returns the source of the ip address's ban, if it is banned.
<server.banned_addresses> Returns a list of all banned ip addresses.
<server.banned_players> Returns a list of all banned players.
Usage Example
# Use to ban a player.
- ban <[player]>
Usage Example
# Use to ban a list of players with a reason.
- ban <[player]>|<[someplayer]> "reason:Didn't grow enough potatoes."
Usage Example
# Use to ban a list of players for 10 minutes with a reason.
- ban <[player]>|<[someplayer]> "reason:Didn't grow enough potatoes." expire:10m
Usage Example
# Use to ban a player with a source.
- ban <[aplayer]> "reason:Grew too many potatoes." source:<player.name>
Usage Example
# Use to ban an ip address.
- ban addresses:127.0.0.1
Usage Example
# Use to temporarily ip ban all online players.
- ban addresses:<server.online_players.parse[ip]> expire:5m
Usage Example
# Use to unban a list of players.
- ban remove <[player]>|<[someplayer]>
Usage Example
# Use to unban an ip address.
- ban remove addresses:127.0.0.1
Groupserver
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/server/BanCommand.java#L31
Namebossshop
Syntaxbossshop [<shop name>]
Short DescriptionOpens a BossShop inventory for a player.
Full DescriptionUse to open up a BossShop inventory for the linked player.
Useful for rewarding players using the BossShop plugin.
Shops are made with the BossShop system.
Related Tags<InventoryTag.is_bossshop> Returns whether the inventory is a BossShop.
Usage Example
# Use to open a bossshop inventory for the linked player.
- bossshop MyShop
GroupDepenizen
RequiresDepenizen, BossShopPro
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/commands/bossshop/BossShopCommand.java#L23
NameBreak
Syntaxbreak [<location>] (<npc>) (radius:<#.#>)
Short DescriptionMakes an NPC walk over and break a block.
Full DescriptionBy itself, the 'break' command will act as an NPC command in the sense that an attached
NPC will navigate to and break the block at the attached location. It can also accept a specified npc,
to fulfill the command, just specify a 'fetchable' npc object. It can also accept a radius to start
breaking the block from within. To specify the radius, prefix the radius with 'radius:'.

The break command is ~waitable. Refer to Language:~waitable.
Related Tags<NPCTag.is_navigating> Returns whether the NPC is currently navigating.
<NPCTag.target_location> Returns the location the NPC is currently navigating towards (if any).
Usage Example
# Use to make the npc break a related block.
- ~break <context.location>
Usage Example
# Use to make a different NPC break a related block.
- ~break <context.location> <[some_npc]>
Usage Example
# Use to make a different NPC break a related block and start digging from 5 blocks away.
- ~break <context.location> <[some_npc]> radius:5
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/BreakCommand.java#L31
NameBungee
Syntaxbungee [<server>|...] [<commands>]
Short DescriptionRuns a set of commands on another server.
Full DescriptionThis command runs a set of commands on another server on the Bungee network.
Tags will be parsed on the remote server, but definitions from the originating queue will be used.
The linked player will be available on the remote server if that server has ever seen the player.
Generally, prefer Command:BungeeRun.
Related Tags<bungee.list_servers> Returns a list of known bungee server names.
Usage Example
# Use to run a simple announce command on another server;
- bungee lobby:
  - announce "Wow! Stuff is happening!"
GroupDepenizen
RequiresDepenizen, DepenizenBungee, BungeeCord
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/commands/bungee/BungeeCommand.java#L29
NameBungeeTag
Syntaxbungeetag [server:<server>] [<tags>]
Short DescriptionParses tags on another server on a Bungee network and returns the results for this server to process.
Full DescriptionThis command parses tags on another server on a Bungee network and returns the results for this server to process.

As a more technical explanation: All commands in Denizen parse tags in any input arguments prior to processing them further.
This command skips that step, and sends the raw tags out to the specified server to then have that server perform the actual tag processing,
when then gets sent back and allows the command to complete.

Tags will be parsed on the remote server, but definitions from the originating queue will be used.
The linked player will be available on the remote server if that server has ever seen the player.

This command must be held with the '~' prefix. The queue will then wait for the result.
Related Tags<entry[saveName].result> returns the result of the parsed tag.
<bungee.list_servers> Returns a list of known bungee server names.
Usage Example
# Use to read a simple tag from another server.
- ~bungeetag server:lobby <server.motd> save:motd
- narrate "The lobby's MOTD is <entry[motd].result>"
GroupDepenizen
RequiresDepenizen, DepenizenBungee, BungeeCord
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/commands/bungee/BungeeTagCommand.java#L31
NameCast
Syntaxcast [<effect>] (remove) (duration:<value>) (amplifier:<#>) (<entity>|...) (no_ambient) (hide_particles) (no_icon) (no_clear)
Short DescriptionCasts a potion effect to a list of entities.
Full DescriptionCasts or removes a potion effect to or from a list of entities.

The effect type must be from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html.

If you don't specify a duration, it defaults to 60 seconds.
An infinite duration will apply an infinite duration potion effect, refer to ObjectType:DurationTag for more details.

The amplifier is how many levels to *add* over the normal level 1.
If you don't specify an amplifier level, it defaults to 1, meaning an effect of level 2 (this is for historical compatibility reasons).
Specify "amplifier:0" to have no amplifier applied (ie effect level 1).

If no entity is specified, the command will target the linked player.
If there isn't one, the command will target the linked NPC. If there isn't one either, the command will error.

Optionally, specify "no_ambient" to hide some translucent additional particles, while still rendering the main particles.
"Ambient" effects in vanilla come from a beacon, while non-ambient come from a potion.

Optionally, specify "hide_particles" to remove the particle effects entirely.

Optionally, specify "no_icon" to hide the effect icon in the corner of your screen.

Optionally use "no_clear" to prevent clearing any previous effect instance before adding the new one.
Related Tags<EntityTag.has_effect[<effect>]> Returns whether the entity has a specified effect, or whether an arrow/area effect cloud will apply a certain effect. (...)
<server.potion_effect_types> Returns a list of all potion effects known to the server. (...)
<EntityTag.effects_data> Returns the active potion effects on the entity, or the potion effects an arrow/area effect cloud will apply. (...)
Usage Example
# Use to cast a level 1 effect onto the linked player or NPC for 50 seconds.
- cast speed duration:50s amplifier:0
Usage Example
# Use to cast an effect onto the linked player or NPC for an infinite duration with an amplifier of 3 (effect level 4).
- cast jump duration:infinite amplifier:3
Usage Example
# Use to remove an effect from a specific entity.
- cast jump remove <[entity]>
Synonyms (Search Aid)potion, magic
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/CastCommand.java#L34
NameClientRun
Syntaxclientrun [<script>] (path:<name>) (def.<name>:<value>) (defmap:<map>)
Short DescriptionRuns a client script on a Clientizen client.
Full DescriptionRuns a client script on the linked player's client, if they are using Clientizen.

You must specify a client script name to run.

Optionally, use the "path:" argument to choose a specific sub-path within a script.

Optionally, use "def.<name>:<value>" to pass one or more definitions to the client.
Alternately, use "defmap:<map>" to specify definitions to pass as a MapTag, where the keys will be definition names and the values will of course be definition values.
Related TagsNone
Usage Example
# Use to run a task script named 'MyTask' on the linked player's client.
- clientrun MyTask
Usage Example
# Use to run the sub-script under 'sub_path' in a task script named 'MyTask' on the linked player's client.
- clientrun MyTask path:sub_path
Usage Example
# Use to run 'MyTask' on the linked player's client and pass 2 definitions to it.
- clientrun MyTask def.amount:42 def.location:<server.flag[spawn_location]>
Usage Example
# Use to run 'MyTask' on a specific Clientizen player's client.
- clientrun MyTask player:<[clientizenPlayer]>
GroupDepenizen
RequiresDepenizen, Clientizen
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/clientizen/commands/ClientRunCommand.java#L24
NameCompass
Syntaxcompass [<location>/reset]
Short DescriptionRedirects the player's compass to target the given location.
Full DescriptionRedirects the compass of the player, who is attached to the script queue.

This is not the compass item, but the command is controlling the pointer the item should direct at.
This means that all item compasses will point the same direction but differently for each player.

To affect an individual compass item, use Mechanism:ItemTag.lodestone_location

The y-axis is not used but its fine to be included in the location argument.

Reset argument will turn the direction to default (spawn or bed)
Related Tags<PlayerTag.compass_target> Returns the location of the player's compass target.
Usage Example
# Use to reset the compass direction to its default.
- compass reset
Usage Example
# Use to point with a compass to the player's current location.
- compass <player.location>
Usage Example
# Use to point with a compass to the world's spawn location.
- compass <player.world.spawn_location>
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/CompassCommand.java#L23
NameCreateWorld
Syntaxcreateworld [<name>] (generator:<id>) (worldtype:<type>) (environment:<environment>) (copy_from:<world>) (seed:<seed>) (settings:<json>) (generate_structures:true/false)
Short DescriptionCreates a new world, or loads an existing world.
Full DescriptionThis command creates a new minecraft world with the specified name, or loads an existing world by that name.

Optionally specify a plugin-based world generator by its generator ID.
If you want an empty void world with a void biome, you can use "denizen:void".
If you want an empty void world with vanilla biomes, you can use "denizen:void_biomes".

Optionally specify additional generator settings as JSON input.

Optionally specify a world type which can be specified with 'worldtype:' (defaults to NORMAL).
For all world types, see: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/WorldType.html

Optionally specify an environment (defaults to NORMAL, can also be NETHER, THE_END).

Optionally choose whether to generate structures in this world.

Optionally specify an existing world to copy files from.
The 'copy_from' argument is ~waitable. Refer to Language:~waitable.

It's often ideal to put this command inside Event:server prestart.
Related Tags<server.world_types> Returns a list of all world types known to the server. (...)
<server.worlds> Returns a list of all worlds.
Usage Example
# Use to create a normal world with name 'survival'
- createworld survival
Usage Example
# Use to create a flat world with the name 'superflat'
- createworld superflat worldtype:FLAT
Usage Example
# Use to create an end world with the name 'space'
- createworld space environment:THE_END
Usage Example
# Use to create a new world named 'dungeon3' as a copy of an existing world named 'dungeon_template'.
- ~createworld dungeon3 copy_from:dungeon_template
Synonyms (Search Aid)loadworld
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/CreateWorldCommand.java#L35
NameCustomEvent
Syntaxcustomevent [id:<id>] (context:<map>)
Short DescriptionFires a custom world script event.
Full DescriptionFires a custom world script event.

Input is an ID (the name of your custom event, choose a constant name to use), and an optional MapTag of context data.

Linked data (player, npc, ...) is automatically sent across to the event.

Use with Event:custom event
Related Tags<entry[saveName].any_ran> returns a boolean indicating whether any events ran as a result of this command.
<entry[saveName].was_cancelled> returns a boolean indicating whether the event was cancelled.
<entry[saveName].determination_list> returns a ListTag of determinations to this event. Will be an empty list if 'determine output:' is never used.
Usage Example
# Use to call a custom event with path "on custom event id:things_happened:"
- customevent id:things_happened
Usage Example
# Use to call a custom event with path "on custom event id:things_happened:" and supply a context map of basic data.
- customevent id:things_happened context:[a=1;b=2;c=3]
Usage Example
# Use to call a custom event with a path such as "on custom event id:things_happened data:item:stone:" and supply a context map of more interesting data.
- definemap context:
    waffle: hello world
    item: <player.item_in_hand>
- customevent id:things_happened context:<[context]>
Usage Example
# Use to call a custom event and allow cancelling or replacing a value.
- definemap context:
    message: hello world
- customevent id:custom_message context:<[context]> save:event
- if <entry[event].was_cancelled>:
    - stop
- define message <entry[event].determination_list.first.if_null[<[context.message]>]>
- narrate "Final message is: <[message]>"
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/CustomEventCommand.java#L23
NameDebug
Related Guide Pagehttps://guide.denizenscript.com/guides/first-steps/problem-solving.html
Syntaxdebug (<type>) [<message>] (name:<name>) (format:<format>)
Short DescriptionShows a debug message.
Full DescriptionUse to quickly output debug information to console.

Outputs plain text debug to the console by default, supporting the 'debug' format type (see Language:Script Formats).

Alternatively, specify one of the following debug types:
DEBUG: standard hideable debug.
HEADER: standard hideable debug inside a header line.
FOOTER: a footer line.
SPACER: a spacer line.
LOG: global output, non-hideable.
APPROVAL: "Okay!" output, non-hideable.
ERROR: "Error!" output, non-hideable. Supports the 'error' format type, see Language:Script Formats.
REPORT: normally used to describe the arguments of a command, requires a name, hideable.
EXCEPTION: outputs a full java stacktrace.
RECORD: Use message 'start' to start recording, 'submit' to submit a recording, or 'cancel' to cancel a recording.
Related Tags<entry[saveName].submitted> returns the submit link (if any).
Usage Example
# Use to show an error.
- debug error "Something went wrong!"
Usage Example
# Use to add some information to help your own ability to read debug output from you script.
- debug "Time is currently <[milliseconds].div[1000].round> seconds!"
Usage Example
# Use to record a debug log of a certain script.
# NOTICE: Spamming debug recordings to the official Denizen Paste instance will result in you being blocked from the paste service.
- debug record start
- run myscript
- ~debug record submit save:mylog
- narrate "Recorded log as <entry[mylog].submitted||<red>FAILED>"
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/DebugCommand.java#L30
NameDebugBlock
Syntaxdebugblock [<location>|.../clear] (color:<color>) (name:<name>) (players:<player>|...) (d:<duration>{10s})
Short DescriptionShows or clears minecraft debug blocks.
Full DescriptionShows or clears minecraft debug blocks, AKA "Game Test Markers".
These are block-grid-aligned markers that are a perfect cube of a single (specifiable) transparent color, and stay for a specified duration of time or until cleared.
Markers can optionally also have simple text names.

If arguments are unspecified, the default color is white, the default player is the linked player, the default name is none, and the default duration is 10 seconds.

Note that on MC 1.21+ this has limitations (within Minecraft itself), namely:
- the color is always green.
- the duration is always 10 seconds.
- the name can only be a LocationTag and defaults to the debug block's location if unspecified.
- debug blocks can't be cleared.
Related TagsNone
Usage Example
# Use to show a debug block where the player is looking.
- debugblock <player.cursor_on>
Usage Example
# Use to show a transparent green debug block in front of the player for five seconds.
- debugblock <player.eye_location.forward[2]> color:0,255,0,128 d:5s
Usage Example
# Use to remove all debug blocks,
- debugblock clear
Synonyms (Search Aid)gametestmarker
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/DebugBlockCommand.java#L30
NameDefine
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/definitions.html
Syntaxdefine [<id>](:<action>)[:<value>]
Short DescriptionCreates a temporary variable inside a script queue.
Full DescriptionDefinitions are queue-level 'variables' that can be used throughout a script, once defined, by using the <[<id>]> tag.
Definitions are only valid on the current queue and are not transferred to any new queues constructed within the script,
such as by a 'run' command, without explicitly specifying to do so.

Definitions are lighter and faster than creating a temporary flag.
Definitions are also automatically removed when the queue is completed, so there is no worry for leaving unused data hanging around.

This command supports data actions, see Language:data actions.

Definitions can be sub-mapped with the '.' character, meaning a def named 'x.y.z' is actually a def 'x' as a MapTag with key 'y' as a MapTag with key 'z' as the final defined value.
In other words, "<[a.b.c]>" is equivalent to "<[a].get[b].get[c]>"
Related Tags<[<id>]> to get the value assigned to an ID
<QueueTag.definition[<definition>]> Returns the value of the specified definition. (...)
<QueueTag.definitions> Returns the names of all definitions that were added to the current queue.
Usage Example
# Use to make complex tags look less complex, and scripts more readable.
- narrate "You invoke your power of notice..."
- define range <player.flag[range_level].mul[3]>
- define blocks <player.flag[noticeable_blocks]>
- define count <player.location.find_blocks[<[blocks]>].within[<[range]>].size>
- narrate "<&[base]>[NOTICE] You have noticed <[count].custom_color[emphasis]> blocks in the area that may be of interest."
Usage Example
# Use to validate a player input to a command script, and then output the found player's name.
- define target <server.match_player[<context.args.get[1]>]||null>
- if <[target]> == null:
  - narrate "<red>Unknown player target."
  - stop
- narrate "You targeted <[target].name>!"
Usage Example
# Use to keep the value of a tag that you might use many times within a single script.
- define arg1 <context.args.get[1]>
- if <[arg1]> == hello:
    - narrate Hello!
- else if <[arg1]> == goodbye:
    - narrate Goodbye!
Usage Example
# Use to remove a definition.
- define myDef:!
Usage Example
# Use to make a MapTag definition and set the value of a key inside.
- define myroot.mykey MyValue
- define myroot.myotherkey MyOtherValue
- narrate "The main value is <[myroot.mykey]>, and the map's available key set is <[myroot].keys>"
Synonyms (Search Aid)definition
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/DefineCommand.java#L27
NameDetermine
Related Guide Pagehttps://guide.denizenscript.com/guides/first-steps/world-script.html
Syntaxdetermine (passively) [<value>]
Short DescriptionSets the outcome of a script.
Full DescriptionSets the outcome of a script.
The most common use case is within script events (for example, to cancel the event).
This is also required for all procedure scripts.
It may be useful in other cases (such as a task script that returns a result, via the save argument).

By default, the determine command will end the queue (similar to Command:stop).
If you wish to prevent this, specify the "passively" argument.

To make multiple determines, simply use the determine command multiple times in a row, with the "passively" argument on each.
Related Tags<QueueTag.determination> Returns the values that have been determined via Command:Determine (...)
Usage Example
# Use to modify the result of an event.
- determine message:<context.message.to_lowercase>
Usage Example
# Use to cancel an event, but continue running script commands.
- determine passively cancelled
Synonyms (Search Aid)return
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/DetermineCommand.java#L23
Namediscord
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscord [id:<id>] [disconnect/add_role/start_typing/remove_role/status (status:<status>) (activity:<activity>)/rename] (<value>) (message_id:<id>) (channel:<channel>) (user:<user>) (group:<group>) (role:<role>) (url:<url>)
Short DescriptionInteracts with Discord.
Full DescriptionInteracts with Discord.

Commands may fail if the bot does not have permission within the Discord group to perform them.

When setting the status of the Discord bot, the status argument can be: ONLINE, DND, IDLE, or INVISIBLE,
and the activity argument can be: PLAYING, STREAMING, LISTENING, or WATCHING.
Streaming activity requires a 'url:' input.

The command should always be ~waited for. See Language:~waitable.
Related Tags<discord[<bot_id>]> Returns the Discord bot for the given bot ID.
Usage Example
# Use to disconnect from Discord.
- ~discord id:mybot disconnect
Usage Example
# Use to add a role on a user in a Discord guild.
- ~discord id:mybot add_role user:<[user]> role:<[role]> group:<[group]>
Usage Example
# Use to remove a role on a user in a Discord guild.
- ~discord id:mybot remove_role user:<[user]> role:<[role]> group:<[group]>
Usage Example
# Use to set the online status of the bot, and clear the game status.
- ~discord id:mybot status "Minecraft" "status:ONLINE"
Usage Example
# Use to set the game status of the bot.
- ~discord id:mybot status "Minecraft" "status:ONLINE" "activity:PLAYING"
Usage Example
# Use to change the bot's nickname.
- ~discord id:mybot rename "<[nickname]>" group:<[group]>
Usage Example
# Use to give a user a new nickname.
- ~discord id:mybot rename "<[nickname]>" user:<[user]> group:<[group]>
Usage Example
# Use to start typing in a specific channel.
- ~discord id:mybot start_typing channel:<[channel]>
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordCommand.java#L38
Namediscordban
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordban (id:<bot>) ({add}/remove) [user:<user>] [group:<group>] (reason:<reason>) (deletion_timeframe:<time>/{0s})
Short DescriptionBans or unbans a member from a group.
Full DescriptionBans or unbans a member from a group.

To ban a user, use the "add" argument. To unban a user, use the "remove" argument.
The group is required for both "add" and "remove" arguments, but "reason" can only be used with "add".
Reasons show up in the group's Audit Logs.

The "deletion_timeframe" argument will, if set, delete all messages sent by the user being banned within the timeframe given.
The timeframe defaults to 0 seconds, which will not delete any messages. The timeframe cannot be greater than 7 days.
This argument can only be used when adding a ban using the "add" argument, although it is not required.

The command should usually be ~waited for. See Language:~waitable.
Related Tags<DiscordUserTag.is_banned[<group>]> returns if the user is banned from a certain group.
<DiscordGroupTag.banned_members> returns a list of all banned members in a group.
Usage Example
# Bans a user with a reason and deletes all messages sent by the user in the past 2 hours.
- ~discordban id:mybot add user:<[user]> group:<[group]> "reason:Was being mean!" deletion_timeframe:2h
Usage Example
# Bans a user with but does not delete any messages sent and does not have a reason.
- ~discordban id:mybot add user:<[user]> group:<[group]>
Usage Example
# Unbans a user.
- ~discordban id:mybot remove user:<[user]> group:<[group]>
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordBanCommand.java#L27
Namediscordcommand
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordcommand (id:<bot>) [create/delete] (group:<group>) (name:<name>) (type:{slash}/user/message) (description:<description>) (options:<options>)
Short DescriptionManages Discord application commands.
Full DescriptionManages Discord application commands.

You can create a new command, edit the permissions of an existing command, or delete an existing command.

To create (or delete) a command in a specific Discord guild, use the "group" argument. If not present, a global command will be created. NOTE: Global commands take up to an hour to register.
When creating, both a name and description are required.

Commands can be slash commands - activated via typing "/", message commands - activated by right-clicking a message, or user commands - activated by right-clicking a user.
"Description" and "options" are only valid for slash commands.

The "options" argument controls the command parameters. It is a MapTag of ordered MapTags that can sometimes hold ordered MapTags. It is recommended to use Command:definemap or a data script key when creating commands.
All option MapTags must have "type", "name", and "description" keys, with an optional "required" key (defaulting to true). The "type" key can be one of: STRING, INTEGER, BOOLEAN, USER, CHANNEL, ROLE, MENTIONABLE, NUMBER, ATTACHMENT.
Additionally, the option map can include a "choices" key, which is a MapTag of ordered MapTags that have a "name" (what displays to the user) and a "value" (what gets passed to the client).
Instead of choices, the option map can also include an "autocomplete" key controlling whether dynamic suggestions can be provided to the client (defaulting to false). See Event:on discord command autocomplete.

Editing application command permissions has been moved to the "Integrations" section in the server settings.
Read more about it here: 🔗https://discord.com/blog/slash-commands-permissions-discord-apps-bots

You DO NOT need to create a command on startup every time! Once a command is created, it will persist until you delete it.
Using the "create" instruction on an existing command will update it.

Commands and replies to interactions have limitations. See 🔗https://gist.github.com/MinnDevelopment/b883b078fdb69d0e568249cc8bf37fe9.

See also Discord's internal API documentation for commands: 🔗https://discord.com/developers/docs/interactions/application-commands

Generally used alongside Command:discordinteraction

The command should usually be ~waited for. See Language:~waitable.
Related Tags<entry[saveName].command> returns the DiscordCommandTag of a command upon creation, when the command is ~waited for.
Usage Example
# Use to create a simple slash command without options and save it.
- ~discordcommand create group:<discord[mybot].group[Denizen]> name:hello "description:Hello world!" save:mycmd
- debug log <entry[mycmd].command.name>
Usage Example
# Use to create a global slash command with one option, using definemap.
- definemap options:
    1:
      type: string
      name: animal
      description: Your favorite animal
      required: true
- ~discordcommand id:mybot create name:animal "description:Pick your favorite!" options:<[options]>
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordCommandCommand.java#L40
Namediscordconnect
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordconnect [id:<id>] [token:<secret>] (intents:<intent>|...)
Short DescriptionConnects to Discord.
Full DescriptionConnects to Discord.

The connection will automatically specify the following gateway intents:
GUILD_MEMBERS, GUILD_EMOJIS_AND_STICKERS, GUILD_MESSAGES, GUILD_MESSAGE_REACTIONS, DIRECT_MESSAGES, DIRECT_MESSAGE_REACTIONS, MESSAGE_CONTENT
Optionally specify additional Gateway Intents to use as a list of any of:
GUILD_BANS, GUILD_WEBHOOKS, GUILD_INVITES, GUILD_VOICE_STATES, GUILD_PRESENCES, GUILD_MESSAGE_TYPING, DIRECT_MESSAGE_TYPING

use "intents:clear|SOME_INTENT|etc" (ie the first entry as "clear") to clear out default intents and use only your manually specified choices.

Note that you need to enable the 'members' and 'message content' intent on your bot in Discord bot settings https://discord.com/developers/applications
And also may need to manually enable other intents if you specify any.
If the members intent is not enabled, a significant amount of dDiscordBot's functionality will not work.

Store your Discord bot token in the Denizen secrets file at 'plugins/Denizen/secrets.secret'. Refer to ObjectType:SecretTag for usage info.

The command should usually be ~waited for. See Language:~waitable.
Related Tags<discord[<bot_id>]> Returns the Discord bot for the given bot ID.
Usage Example
# Use to connect to Discord with a token stored in secret file 'plugins/Denizen/secrets.secret' and send a message once connected.
- ~discordconnect id:mybot token:<secret[discord_bot_token]>
- discordmessage id:mybot channel:<[my_log_channel]> "Connected!"
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordConnectCommand.java#L49
Namediscordcreatechannel
Syntaxdiscordcreatechannel (id:<bot>) [group:<group>] [name:<name>] (description:<description>) (type:<type>) (category:<category_id>) (position:<#>) (roles:<list>) (users:<list>)
Short DescriptionCreates text channels on Discord.
Full DescriptionCreates text channels on Discord.

This functionality requires the Manage Channels permission.

You can optionally specify the channel description (aka "topic") with the "description" argument.

You can optionally specify the channel type. Valid types are TEXT, NEWS, CATEGORY, and VOICE.
Only text and news channels can have a description.
Categories cannot have a parent category.

You can optionally specify the channel's parent category with the "category" argument.
By default, the channel will not be attached to any category.

You can optionally specify the channel's position in the list as an integer with the "position" argument.

You can optionally specify the roles or users that are able to view the channel.
The "roles" argument takes a list of DiscordRoleTags, and the "users" argument takes a list of DiscordUserTags.
Specifying either of these arguments will create a private channel (hidden for anyone not in the lists).

The command can be ~waited for. See Language:~waitable.
Related Tags<entry[saveName].channel> returns the DiscordChannelTag of a channel upon creation when the command is ~waited for.
Usage Example
# Use to create a channel in a category.
- discordcreatechannel id:mybot group:1234 name:my-channel category:5678
Usage Example
# Use to create a voice channel and log its name upon creation.
- ~discordcreatechannel id:mybot group:1234 name:very-important-channel type:voice save:stuff
- debug log "Created channel '<entry[stuff].channel.name>'"
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordCreateChannelCommand.java#L30
Namediscordcreatethread
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordcreatethread (id:<bot>) [name:<name>] [message:<message>/parent:<channel> (private)]
Short DescriptionCreates a new Discord thread.
Full DescriptionCreates a new Discord thread.

You must specify the bot object ID, and the thread name.

You can either specify a full DiscordMessageTag instance to create a thread based on that message,
OR specify a DiscordChannelTag parent and optionally mark it private (otherwise it's public).

The command can be ~waited for. See Language:~waitable.
Related Tags<entry[saveName].created_thread> returns the newly created thread.
Usage Example
# Use to create a new thread for a specific message and send a bot message to it.
- ~discordcreatethread id:mybot "name:The bot's awesome thread" message:<context.message> save:thread
- discordmessage id:mybot channel:<entry[thread].created_thread> "Here I made this thread just for you"
Usage Example
# Use to create a new thread in a channel and link to it in some channel.
- ~discordcreatethread id:mybot "name:The bot's awesome thread" parent:<[some_channel]> save:thread
- discordmessage id:mybot channel:<[some_channel]> "I created thread <&lt>#<entry[thread].created_thread.id><&gt>!"
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordCreateThreadCommand.java#L30
Namediscordinteraction
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordinteraction [defer/reply/delete] [interaction:<interaction>] (ephemeral) (rows:<rows>) (<message>) (embed:<embed>|...) (attach_files:<map>)
Short DescriptionManages Discord interactions.
Full DescriptionManages Discord interactions.

You can defer, reply to, edit, or delete an interaction. These instructions all require the "interaction" argument.

The "ephemeral" argument can be used to have the reply message be visible to that one user.

You can defer an interaction before replying, which is useful if your reply may take more than a few seconds to be selected.
If you defer, the 'ephemeral' option can only be set by the defer - you cannot change it with the later reply.
Replying to an interaction uses similar logic to normal messaging. See Command:discordmessage.
If you deferred without using 'ephemeral', the 'delete' option will delete the "Thinking..." message.
Ephemeral replies cannot have files.

Slash commands, and replies to interactions, have limitations. See 🔗https://gist.github.com/MinnDevelopment/b883b078fdb69d0e568249cc8bf37fe9.

Generally used alongside Command:discordcommand

The command can be ~waited for. See Language:~waitable.
Related Tags<entry[saveName].command> returns the DiscordCommandTag of a slash command upon creation, when the command is ~waited for.
Usage Example
# Use to quickly reply to a slash command interaction.
- discordinteraction reply interaction:<context.interaction> "hello!"
Usage Example
# Use to defer and reply to a slash command interaction.
- ~discordinteraction defer interaction:<context.interaction>
- discordinteraction reply interaction:<context.interaction> <context.options.get[hello].if_null[world]>
Usage Example
# Use to defer and reply to an interaction ephemerally.
- ~discordinteraction defer interaction:<context.interaction> ephemeral:true
- discordinteraction reply interaction:<context.interaction> "Shh, don't tell anyone!"
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordInteractionCommand.java#L31
Namediscordmessage
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordmessage (id:<id>) [reply:<message>/edit:<message>/channel:<channel>/user:<user>] (<message>) (no_mention) (rows:<rows>) (embed:<embed>|...) (attach_files:<map>) (post_title:<name>)
Short DescriptionSends a message to a Discord channel.
Full DescriptionSends a message to a Discord channel.

Command may fail if the bot does not have permission within the Discord group to send a message in that channel.

You can send the message to: a channel, user, or in reply to a previous message.
If sending as a reply, optionally use "no_mention" to disable the default reply pinging the original user.

Channels can be specified as either a copied ID, or using any tag that returns a valid DiscordChannelTag.
To get IDs, enable "Developer Mode" in your Discord settings, then right click on the channel and press "Copy ID".

You can edit an existing message by using "edit:<message>".

You can use "attach_file_name:<name>" and "attach_file_text:<text>" to attach a text file with longer content than a normal message allows.
Alternatively, you can use "attach_files:<map>" to attach files as a MapTag of the name of the file to the text or a BinaryTag.

To send embeds, use "embed:<embed>|...".

You can use "rows" to attach action rows of components, such as buttons to the message, using ObjectType:DiscordButtonTag, and ObjectType:DiscordSelectionTag.

You can send a message into a Forum Channel with "post_title" specified to create a post in that forum.

The command can be ~waited for. See Language:~waitable.
Related Tags<entry[saveName].message> returns the DiscordMessageTag of the sent message, when the command is ~waited for.
<discord[mybot].group[Denizen].channel[bot-spam]> is an example of a tag that will return an appropriate channel object for a named channel in a named group.
Usage Example
# Use to message a Discord channel with a copied channel ID.
- discordmessage id:mybot channel:1234 "Hello world!"
Usage Example
# Use to reply to a message from a message received event.
- discordmessage id:mybot reply:<context.message> "Hello world!"
Usage Example
# Use to message an embed to a Discord channel.
- discordmessage id:mybot channel:1234 embed:<discord_embed[title=hi;description=this is an embed!]>
Usage Example
# Use to message a Discord channel and record the new message ID.
- ~discordmessage id:mybot channel:1234 "Hello world!" save:sent
- announce "Sent as <entry[sent].message.id>"
Usage Example
# Use to send a message to a user through a private channel.
- discordmessage id:mybot user:<[user]> "Hello world!"
Usage Example
# Use to send a short and simple text-file message to a channel.
- discordmessage id:mybot channel:<[channel]> attach_files:<map[quote.xml=<&lt>mcmonkey<&gt> haha text files amirite<n>gotta abuse em]>
Usage Example
# Use to send a message and attach a button to it.
- define my_button <discord_button.with_map[style=primary;id=my_button;label=Hello]>
- discordmessage id:mybot channel:<[channel]> rows:<[my_button]> "Hello world!"
Usage Example
# Use to send a message to a Discord channel, then edit it after 5 seconds.
- ~discordmessage id:mybot channel:<[channel]> "Hello world!" save:msg
- wait 5s
- discordmessage id:mybot edit:<entry[msg].message> "Goodbye!"
Usage Example
# Use to send multiple embeds in a single message
- ~discordmessage id:mybot channel:<[channel]> embed:<discord_embed[title=embed 1]>|<discord_embed[title=embed 2]>
Usage Example
# Use to send files in a single message, including an image file, using a MapTag.
- ~fileread path:my_information.yml save:info
- ~fileread path:my_image.png save:image
- definemap files:
    text.txt: Wow! Denizen is so cool!
    info.yml: <entry[info].data>
    my_image.png: <entry[image].data>
- ~discordmessage id:mybot channel:<[channel]> attach_files:<[files]>
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordMessageCommand.java#L43
Namediscordmodal
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordmodal [interaction:<interaction>] [name:<name>] [rows:<rows>] (title:<title>)
Short DescriptionManages Discord modals.
Full DescriptionWith this command you can respond to an interaction using a modal.
A "modal" is a popup window that presents the user with a form to fill out.

You can specify the modal's internal name for matching with in events.
You can specify the title as text to display to the user.
You can specify rows of user-inputs using ObjectType:DiscordTextInputTag. At time of writing, Selection input is not supported.

You can listen to the responses to forms using Event:discord modal submitted.

You cannot defer an interaction before using a modal. It must be sent immediately.

Note that the interaction can be any button or application command, but cannot be a modal submission - you cannot reply to a modal submit with a second modal.

The command can be ~waited for. See Language:~waitable.
Related TagsNone
Usage Example
# Use to create a modal that only requests one single direct text input.
- definemap rows:
     1:
         1: <discord_text_input.with[id].as[textinput].with[label].as[Type here!].with[style].as[short]>
- discordmodal interaction:<context.interaction> name:example_modal title:Modal! rows:<[rows]>
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordModalCommand.java#L32
Namediscordreact
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordreact (id:<bot>) (channel:<channel>) [message:<message>] [add/remove/clear] [reaction:<reaction>/all] (user:<user>)
Short DescriptionManages message reactions on Discord.
Full DescriptionManages message reactions on Discord.

The message can be a ObjectType:DiscordMessageTag, or just the message ID, with a channel ID also given.

You can add or remove reactions from the bot, or clear all reactions of a specific ID, or clear all reactions from a message entirely.

Reactions can be unicode symbols, or custom emoji IDs.

Optionally specify a user for 'remove' to remove only a specific user's reaction.

'Add' requires basic add-reaction permissions.
'Clear' requires 'manage messages' permission.

For custom emoji, the ID is the numeric ID. For default emoji, the ID is the unicode symbol of the emoji.
In both cases, you can copy the correct value by typing the emoji into Discord and prefixing it with a "\" symbol, like "\:myemoji:" and sending it - the sent message will show the internal form of the emoji.

The command can be ~waited for. See Language:~waitable.
Related Tags<DiscordMessageTag.reactions> Returns a list of reaction on this message.
Usage Example
# Use to react to a previously sent message.
- discordreact id:mybot message:<[some_message]> add reaction:<[my_emoji_id]>
Usage Example
# Use to remove a reaction from a previously sent message.
- discordreact id:mybot message:<[some_message]> remove reaction:<[some_reaction_emoji]>
Usage Example
# Use to clear all reactions from a message.
- discordreact id:mybot message:<[some_message]> clear reaction:all
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordReactCommand.java#L33
Namediscordtimeout
Related Guide Pagehttps://guide.denizenscript.com/guides/expanding/ddiscordbot.html
Syntaxdiscordtimeout (id:<bot>) ({add}/remove) [user:<user>] [group:<group>] (reason:<reason>) (duration:<duration>/{60s})
Short DescriptionPuts a user in timeout.
Full DescriptionPuts a user in timeout.

To put a user in timeout, use the "add" argument. To remove the timeout, use the "remove" argument.
The group is required for both "add" and "remove" arguments, but "reason" can only be used with "add".
Reasons show up in the group's Audit Logs.

The timeout duration defaults to 60 seconds. The duration cannot be greater than 28 days.
This argument can only be used when putting a user in timeout using the "add" argument, although it is not required.

The command can be ~waited for. See Language:~waitable.
Related Tags<DiscordUserTag.is_timed_out[<group>]> returns if the user is timed out in a certain group.
Usage Example
# Put a user in timeout.
- discordtimeout id:my_bot add user:<[user]> group:<[group]>
Usage Example
# Put a user in timeout for a duration of 3 hours with a reason.
- discordtimeout id:my_bot add user:<[user]> group:<[group]> "reason:Was being troublesome!" duration:3h
Usage Example
# Remove a user from timeout.
- discordtimeout id:my_bot remove user:<[user]> group:<[group]>
Groupexternal
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/commands/DiscordTimeoutCommand.java#L31
NameDisengage
Syntaxdisengage (player)
Short DescriptionEnables an NPCs triggers that have been temporarily disabled by the engage command.
Full DescriptionRe-enables any toggled triggers that have been disabled by disengage.
Using disengage inside scripts must have an NPC to reference, or one may be specified by supplying a valid NPCTag object with the npc argument.

Engaging an NPC by default affects all players attempting to interact with the NPC.
You can optionally specify 'player' to only affect the linked player.

This is mostly regarded as an 'interact script command', though it may be used inside other script types.
This is because disengage works with the trigger system, which is an interact script-container feature.

NPCs that are interacted with while engaged will fire an 'on unavailable' assignment script-container action.

See Command:Engage
Related Tags<NPCTag.engaged> Returns whether the NPC is currently engaged. (...)
Usage Example
# Use to reenable an NPC's triggers, disabled via 'engage'.
- engage
- chat 'Be right there!'
- walk <player.location>
- wait 5s
- disengage
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/DisengageCommand.java#L19
Namedisguise
Syntaxdisguise [<entity>] [cancel/as:<type>] (global/players:<player>|...) (self)
Short DescriptionMakes the player see an entity as though it were a different type of entity.
Full DescriptionMakes the player see an entity as though it were a different type of entity.

The entity won't actually change on the server.
The entity will still visibly behave the same as the real entity type does.

Be warned that the replacement is imperfect, and visual or internal-client errors may arise from using this command.

If you disguise a player to themself, they will see a slightly-lagging-behind copy of the disguise entity.

The disguise will last until a server restart, or the cancel option is used.

Optionally, specify a list of players to show or cancel the entity to.
If unspecified, will default to the linked player.
Or, specify 'global' to make the disguise or cancel apply for all players. If using global, use "self" to show to the self-player.

To remove a disguise, use the 'cancel' argument.
Related Tags<PlayerTag.disguise_to_self[(<player>)]> Returns the fake entity used to disguise the entity in the player's self-view (only relevant to players), either globally (if no context input given), or to the specified player. (...)
<EntityTag.is_disguised[(<player>)]> Returns whether the entity is currently disguised, either globally (if no context input given), or to the specified player. (...)
<EntityTag.disguised_type[(<player>)]> Returns the entity type the entity is disguised as, either globally (if no context input given), or to the specified player. (...)
<EntityTag.disguise_to_others[(<player>)]> Returns the fake entity used to disguise the entity in other's views, either globally (if no context input given), or to the specified player. (...)
Usage Example
# Use to show a turn the NPC into a creeper for the linked player.
- disguise <npc> as:creeper
Usage Example
# Use to show a turn the NPC into a red sheep for the linked player.
- disguise <npc> as:sheep[color=red]
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/DisguiseCommand.java#L42
NameDraw
Syntaxdraw [id:<id>] [pixel/rectangle/oval/image:<image>] (width:<width>) (height:<height>) (filled) [x:<x>] [y:<y>] (color:<color>)
Short DescriptionDraws on an image.
Full DescriptionDraws a pixel, shape, or image onto an image.

"id:" - the id of the image to draw on, see Command:Image.
"x:" and "y:" - the position that should be drawn on, see Language:Image positions.

For pixels or shapes:
"color:" - a ObjectType:ColorTag of the color to draw in.

For non-pixel shapes:
"width:" and "height:" - the size of the shape being drawn, required.
"filled" - whether the shape should be filled or just a border. optional, defaults to false.

And for images:
"image:" - the image to draw, required.
"width:" and "height:" - the size to rescale the image being drawn to, optional.
Related TagsNone
Usage Example
# Use to draw a single red pixel in the top left corner of an image.
- draw id:image pixel x:0 y:0 color:red
Usage Example
# Use to draw a purple 100x100 filled circle in the top left of an image.
- draw id:image oval x:0 y:0 width:100 height:100 color:purple filled
Usage Example
# Use to draw the image with the id 'star' into the image with id 'sky'.
- draw id:sky image:star x:50 y:50
Groupimage
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/DrawCommand.java#L16
Nameeffectlib
Syntaxeffectlib [type:<effect>] (origin:<entity>/<location>) (target:<entity>/<location>) (for:<player>) (effect_data:<map>)
Short DescriptionShow custom effects using EffectLib
Full DescriptionDisplays EffectLib effects.

Specify which effect to display using the 'type:' argument, note that effect names are CASE-SENSITIVE.

The origin is the entity/location to play the effect at. If an entity is specified, the effect will follow it.
Defaults to the linked player if unspecified.

Some effects (such as the 'Line' effect) require an origin and a target, an effect's target can be a location or an entity.
If an entity is specified, the effect will follow it.

You can optionally use the 'for:' argument to show the effect to one player only.

EffectLib effects can take additional data to change how the effect looks/works, you can specify that data in the form of a MapTag using the 'effect_data:' argument.
See EffectLib's docs for further information on the available options for each effect: 🔗https://reference.elmakers.com/#effectlib

Note that this should only be used for displaying EffectLib's advanced effect shapes. For more general particle usage, use Command:playeffect.

The effectlib command is ~waitable. Refer to Language:~waitable.
When ~waited for, the command will wait until the effect is done playing.
Related TagsNone
Usage Example
# Use to show a helix of end rod sparks below the linked player for 5 seconds.
- effectlib type:Helix effect_data:[duration=<duration[5s].in_milliseconds>;particle=end_rod;offset=0,-1.5,0]
Usage Example
# Use to show a line of electric sparks between 2 entities for 1 minute.
- effectlib type:Line origin:<[originEntity]> target:<[targetEntity]> effect_data:[duration=<duration[1m].in_milliseconds>;particle=electric_spark]
Usage Example
# Use to show an atom effect at a location, and narrate a message after it's done playing.
- ~effectlib type:Atom origin:<[location]>
- narrate "It's done!"
GroupDepenizen
RequiresDepenizen, EffectLib
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/commands/effectlib/EffectLibCommand.java#L40
NameElse
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/if-command.html
Syntaxelse (if <comparison logic>)
Short DescriptionHelper command for usage with the if command.
Full DescriptionA helper command to use with if commands.
See Command:if command documentation.
Related TagsSee IF command documentation.
Usage Example
# See IF command documentation.
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/ElseCommand.java#L17
NameEngage
Syntaxengage (<duration>) (player)
Short DescriptionTemporarily disables an NPCs toggled interact script-container triggers.
Full DescriptionEngaging an NPC will temporarily disable any interact script-container triggers.
To reverse this behavior, use either the disengage command, or specify a duration in which the engage should timeout.
Specifying an engage without a duration will render the NPC engaged until a disengage is used on the NPC.

Engaging an NPC by default affects all players attempting to interact with the NPC.
You can optionally specify 'player' to only affect the linked player.

While engaged, all triggers and actions associated with triggers will not 'fire',
except the 'on unavailable' assignment script-container action, which will fire for triggers that were enabled previous to the engage command.

Engage can be useful when NPCs are carrying out a task that shouldn't be interrupted, or to provide a good way to avoid accidental 'retrigger'.

See Command:Disengage
Related Tags<NPCTag.engaged> Returns whether the NPC is currently engaged. (...)
Usage Example
# Use to make an NPC appear 'busy'.
- engage
- chat 'Give me a few minutes while I mix you a potion!'
- walk <npc.anchor[mixing_station]>
- wait 10s
- walk <npc.anchor[service_station]>
- chat 'Here you go!'
- give potion <player>
- disengage
Usage Example
# Use to avoid 'retrigger'.
- engage 5s
- take quest_item
- flag player finished_quests:->:super_quest
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/EngageCommand.java#L30
NameExplode
Syntaxexplode (power:<#.#>) (<location>) (fire) (breakblocks) (source:<entity>)
Short DescriptionCauses an explosion at the location.
Full DescriptionThis command causes an explosion at the location specified (or the npc / player location).
By default, this will not destroy blocks or set fire to blocks within the explosion.

Specify the 'fire' argument to set blocks on fire within the explosion radius.

Specify the 'breakblocks' argument to cause the explosion to break blocks within the power radius.

If no power is specified, the default power will be 1.

If no location is given, the default will be the linked NPC or player's location.
It is highly recommended you specify a location to be safe.

Optionally specify a source entity that will be tracked as the damage cause.
Related TagsNone
Usage Example
# Use to create an explosion at a player's location.
- explode <player.location>
Usage Example
# Use to create an explosion at a player, which breaks blocks and causes fire with a power of 5.
- explode power:5 <player.location> fire breakblocks
Usage Example
# Use to create an explosion with a power radius of 3 at an NPC's location.
- explode power:3 <npc.location>
Usage Example
# Use to create an explosion with a power radius of 3 at a related location which breaks blocks.
- explode power:3 <context.location> breakblocks
Synonyms (Search Aid)detonate, bomb, tnt
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/ExplodeCommand.java#L22
NameFakeEquip
Syntaxfakeequip [<entity>|...] (for:<player>|...) (duration:<duration>/reset) (hand:<item>) (offhand:<item>) (head:<item>) (chest:<item>) (legs:<item>) (boots:<item>)
Short DescriptionFake-equips items and armor on a list of entities for players to see without real change.
Full DescriptionThis command fake-equips items and armor on a list of entities.

The change doesn't happen on-server, and no armor effects will happen from it.

The equipment can only be seen by certain players. By default, the linked player is used.

The changes will remain in place for as long as the duration is specified (even if the real equipment is changed).
The changes can be manually reset early by using the 'reset' argument.
If you do not provide a duration, the fake equipment will last until manually reset.
This does not persist across server restarts.

Set the item to 'air' to unequip any slot.
Related Tags<EntityTag.equipment> Deprecated in favor of Tag:EntityTag.equipment_map.
<InventoryTag.equipment> Returns the equipment of an inventory as a list of items. (...)
Usage Example
# Use to fake-equip a stone block on the player's head.
- fakeequip <player> head:stone duration:10s
Usage Example
# Use to fake-equip an iron helmet on two defined players.
- fakeequip <[player]>|<[someplayer]> head:iron_helmet duration:1m
Usage Example
# Use to fake-unequip all armor off the player.
- fakeequip <player> head:air chest:air legs:air boots:air duration:5s
Usage Example
# Use to make all players within 30 blocks of an entity see it permanently equip a shield.
- fakeequip <[entity]> offhand:shield for:<[entity].find_players_within[30]> duration:0
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/FakeEquipCommand.java#L34
NameFakeInternalData
Syntaxfakeinternaldata [entity:<entity>] [data:<map>|...] (for:<player>|...) (speed:<duration>)
Short DescriptionSends fake entity data updates, optionally animating them with sub-tick precision.
Full DescriptionSends fake internal entity data updates, optionally sending multiple over time.
This supports sub-tick precision, allowing smooth/high FPS animations.

The input to 'data:' is a list of ObjectType:MapTags, with each map being a frame to send; see Language:Internal Entity Data for more information.

Optionally specify a list of players to fake the data for, defaults to the linked player.

'speed:' is the amount of time between each frame getting sent, supporting sub-tick delays.
Note that this is the delay between each frame, regardless of their content (see examples).
Related TagsNone
Usage Example
# Animates an item display entity's item for the linked player, and slowly scales it up.
- fakeinternaldata entity:<[item_display]> data:[item=iron_ingot;scale=0.6,0.6,0.6]|[item=gold_ingot;scale=0.8,0.8,0.8]|[item=netherite_ingot;scale=1,1,1] speed:0.5s
Usage Example
# Changes an item display's item, then its scale a second later, then its item again another second later.
- fakeinternaldata entity:<[item_display]> data:[item=stone]|[scale=2,2,2]|[item=waxed_weathered_cut_copper_slab] speed:1s
Usage Example
# Animates a rainbow glow on a display entity for all online players.
- define color <color[red]>
- repeat 256 from:0 as:hue:
  - define frames:->:[glow_color=<[color].with_hue[<[hue]>].argb_integer>]
- fakeinternaldata entity:<[display]> data:<[frames]> for:<server.online_players> speed:0.01s
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/FakeInternalDataCommand.java#L46
NameFakeItem
Syntaxfakeitem [<item>|...] [slot:<slot>] (duration:<duration>) (players:<player>|...) (raw)
Short DescriptionShow a fake item in a player's inventory.
Full DescriptionThis command allows you to display an item in an inventory that is not really there.

To make it automatically disappear at a specific time, use the 'duration:' argument.
Note that the reset can be unreliable, especially if the player changes their open inventory view. Consider using "- inventory update" after a delay instead.

By default, it will use any inventory the player currently has open.

Slots function as follows:
Player inventory is slots 1-36, same as normal inventory slot indices.
If the player has an open inventory, to apply the item to a slot in that inventory, add 36 to the slot index.
If the player does not have an open inventory, slots 36-40 are equipment, 41 is offhand, 42 is recipe result, 43-46 are recipe.

For modifying equipment, consider Mechanism:PlayerTag.fake_equipment instead.

The slot argument can be any valid slot, see Language:Slot Inputs.

Optionally specify 'raw' to indicate that the slow is a raw network slot ID.
Related TagsNone
Usage Example
# Use to show a clientside-only pumpkin on the player's head.
- fakeitem pumpkin slot:head
Groupitem
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/FakeItemCommand.java#L39
NameFakeSpawn
Syntaxfakespawn [<entity>] [<location>/cancel] (players:<player>|...) (duration:<duration>{10s}) (mount_to:<entity>)
Short DescriptionMakes the player see a fake entity spawn that didn't actually happen.
Full DescriptionMakes the player see a fake entity spawn that didn't actually happen.
This means that the server will not track the entity, and players not included in the command will not see the entity.

You must specify an entity to spawn and a location to spawn it at, or to remove a fake entity, specify the fake entity object and 'cancel' instead of a location.

Optionally, specify a list of players to show the entity to. If unspecified, will default to the linked player.

Optionally, specify how long the fake entity should remain for. If unspecified, will default to 10 seconds.
After the duration is up, the entity will be removed from the player(s).

Optionally, specify an entity to mount the fake entity to via mount_to:<entity>.
Related Tags<PlayerTag.fake_entities> Returns a list of fake entities the player can see, as set by Command:fakespawn. (...)
<entry[saveName].faked_entity> returns the spawned faked entity.
Usage Example
# Use to show a fake creeper in front of the attached player.
- fakespawn creeper <player.location.forward[5]>
Usage Example
# Use to spawn and mount a fake armor stand to the player.
- fakespawn armor_stand <player.location> mount_to:<player>
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/FakeSpawnCommand.java#L32
NameFileCopy
Syntaxfilecopy [origin:<origin>] [destination:<destination>] (overwrite)
Short DescriptionCopies a file from one location to another.
Full DescriptionCopies a file from one location to another.

The starting directory is server/plugins/Denizen.

May overwrite existing copies of files.

Note that in most cases this command should be ~waited for (like "- ~filecopy ..."). Refer to Language:~waitable.

This command can be disabled by setting Denizen config option "Commands.Filecopy.Allow copying files" to false.
Related Tags<entry[saveName].success> returns whether the copy succeeded (if not, either an error or occurred, or there is an existing file in the destination.)
Usage Example
# Use to copy a custom YAML data file to a backup folder, overwriting any old backup of it that exists.
- ~filecopy o:data/custom.yml d:data/backup.yml overwrite save:copy
- narrate "Copy success<&co> <entry[copy].success>"
Groupfile
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/file/FileCopyCommand.java#L29
NameFileRead
Syntaxfileread [path:<path>]
Short DescriptionReads the file at the given path.
Full DescriptionReads the file at the given path.

The starting directory is server/plugins/Denizen.

Note that in most cases this command should be ~waited for (like "- ~fileread ..."). Refer to Language:~waitable.

This command must be enabled by setting Denizen config option "Commands.File.Allow read" to true.
Related Tags<entry[saveName].data> returns a BinaryTag of the raw file content.
Usage Example
# Use to read 'myfile' and narrate the text content.
- ~fileread path:data/myfile.dat save:read
- narrate "Read data: <entry[read].data.utf8_decode>"
Groupfile
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/file/FileReadCommand.java#L26
NameFileWrite
Syntaxfilewrite [path:<path>] [data:<binary>]
Short DescriptionWrites the given raw data to the file at the given path.
Full DescriptionWrites the given raw data to the file at the given path.

Will overwrite any existing file at the path.

The starting directory is server/plugins/Denizen.

Directories will automatically be generated as-needed.

Note that in most cases this command should be ~waited for (like "- ~filewrite ..."). Refer to Language:~waitable.

This command must be enabled by setting Denizen config option "Commands.File.Allow write" to true.
Related TagsNone
Usage Example
# Use to write some simple text to 'myfile'
- ~filewrite path:data/myfile.dat data:<element[Hello].utf8_encode>
Groupfile
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/file/FileWriteCommand.java#L26
NameFirework
Syntaxfirework (<location>) (power:<#>) (<type>/random) (primary:<color>|...) (fade:<color>|...) (flicker) (trail) (life:<duration>)
Short DescriptionLaunches a firework with customizable style.
Full DescriptionThis command launches a firework from the specified location.

If no location is given, the linked NPC or player's location will be used by default.

The power option, which defaults to 1 if left empty, specifies the 'power' integer of the firework, which mainly controls how high the firework will go before exploding.
Alternately, the "life" option allows you to manually specify a specific duration.

The type option which specifies the shape the firework will explode with. If unspecified, 'ball' will be used.
Can be any of: ball, ball_large, star, burst, or creeper

The primary option specifies what color the firework explosion will start with, as a ColorTag. If unspecified, 'yellow' will be used.

The fade option specifies what color the firework explosion will fade into, as a ColorTag.

The trail option means the firework will leave a trail behind it.

The flicker option means the firework will explode with a flicker effect.
Related Tags<EntityTag.firework_item> If the entity is a firework, returns the firework item used to launch it.
<ItemTag.is_firework> Returns whether the item is a firework. (...)
<ItemTag.firework> Returns the firework's property value as a list, matching the non-MapTag format of the mechanism. (...)
<entry[saveName].launched_firework> returns a EntityTag of the firework that was launched.
Usage Example
# Use to launch a star firework which explodes yellow and fades to white afterwards at the player's location.
- firework <player.location> star primary:yellow fade:white
Usage Example
# Use to make the firework launch double the height before exploding.
- firework <player.location> power:2 star primary:yellow fade:white
Usage Example
# Use to launch a firework which leaves a trail.
- firework <player.location> random trail
Usage Example
# Use to launch a firework which leaves a trail and explodes with a flicker effect at related location.
- firework <context.location> random trail flicker
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/FireworkCommand.java#L38
NameFlag
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/flags.html
Syntaxflag [<object>|...] [<name>([<#>])](:<action>)[:<value>] (expire:<time>)
Short DescriptionSets or modifies a flag on any flaggable object.
Full DescriptionThe flag command sets or modifies custom data values stored on any flaggable object (the server, a player/NPC/entity, a block location, ...).
See also Language:flag system.

This command supports data actions, see Language:data actions.

Flags by default are added permanently (or for the lifetime of the object they're attached to).
You can optionally specify a system time the flag will expire at, using either a DurationTag or a TimeTag.
If a DurationTag is used, it will be equivalent to: <util.time_now.add[<your_duration_here>]>
Related Tags<FlaggableObject.flag[<flag_name>]> Returns the specified flag from the flaggable object. (...)
<FlaggableObject.has_flag[<flag_name>]> Returns true if the flaggable object has the specified flag, otherwise returns false. (...)
<FlaggableObject.flag_expiration[<flag_name>]> Returns a TimeTag indicating when the specified flag will expire. (...)
<FlaggableObject.list_flags> Returns a list of the flaggable object's flags. (...)
<server.online_players_flagged[<flag_name>]> Returns a list of all online players with a specified flag set. (...)
<server.players_flagged[<flag_name>]> Returns a list of all players (online or offline) with a specified flag set. (...)
<server.spawned_npcs_flagged[<flag_name>]> Returns a list of all spawned NPCs with a specified flag set. (...)
<server.npcs_flagged[<flag_name>]> Returns a list of all NPCs with a specified flag set. (...)
Usage Example
# Use to create or set a flag on a player.
- flag <player> playstyle:aggressive
Usage Example
# Use to set a temporary flag for five minutes on a player.
- flag <player> just_did_something expire:5m
Usage Example
# Use to flag an npc with a given tag value.
- flag <npc> location:<npc.location>
Usage Example
# Use to apply mathematical changes to a flag's value on a unique object.
- flag <context.damager> damage_dealt:+:<context.damage>
Usage Example
# Use to add an item to a server flag as a new value without removing existing values.
- flag server cool_people:->:<[player]>
Usage Example
# Use to add multiple items as individual new values to a server flag that is already a list.
- flag server cool_people:|:<[player]>|<[someplayer]>
Usage Example
# Use to remove an entry from a server flag.
- flag server cool_people:<-:<[someplayer]>
Usage Example
# Use to completely remove a flag.
- flag server cool_people:!
Usage Example
# Use to modify a specific index in a list flag.
- flag server myflag[3]:HelloWorld
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/FlagCommand.java#L77
NameFollow
Syntaxfollow (followers:<entity>|...) (stop/target:<entity>) (lead:<#.#>) (max:<#.#>) (speed:<#.#>) (allow_wander) (no_teleport)
Short DescriptionCauses a list of entities to follow a target.
Full DescriptionCauses a list of entities to follow a target.

Specify the list of followers or just one. If no follower is specified, will use the linked NPC.

Specify either the target to follow, or 'stop'. If no target is specified, will use the linked player.

Use 'speed' to set the movement speed multiplier.
Use 'lead' to set how far away the follower will remain from the target (ie, it won't try to get closer than the 'lead' distance).
Use 'max' to set the maximum distance between the follower and the target before the follower will automatically start teleporting to keep up.
Use 'no_teleport' to disable teleporting when the entity is out of range (instead, the entity will simply give up).
Use 'allow_wander' to allow the entity to wander randomly.

The 'max' and 'allow_wander' arguments can only be used on non-NPC entities.
Related Tags<NPCTag.navigator.target_entity> returns the entity the npc is following.
Usage Example
# To make an NPC follow the player in an interact script.
- follow
Usage Example
# To make an NPC stop following.
- follow stop
Usage Example
# To explicitly make an NPC follow the player.
- follow followers:<npc> target:<player>
Usage Example
# To make an NPC follow the player, slowly and at distance.
- follow speed:0.7 lead:10
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/FollowCommand.java#L24
NameForeach
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/loops.html
Syntaxforeach [stop/next/<object>|...] (as:<name>) (key:<name>) [<commands>]
Short DescriptionLoops through a ListTag, running a set of commands for each item.
Full DescriptionLoops through a ListTag of any type. For each item in the ListTag, the specified commands will be ran for that list entry.

Alternately, specify a map tag to loop over the set of key/value pairs in the map, where the key will be <[key]> and the value will be <[value]>.
Specify "key:<name>" to set the key definition name (if unset, will be "key").

Specify "as:<name>" to set the value definition name (if unset, will be "value").
Use "as:__player" to change the queue's player link, or "as:__npc" to change the queue's NPC link.
Note that a changed player/NPC link persists after the end of the loop.

To end a foreach loop, do - foreach stop

To jump immediately to the next entry in the loop, do - foreach next

Note that many commands and tags in Denizen support inputting a list directly, making foreach redundant for many simpler cases.

Note that if you delay the queue (such as with Command:wait or Language:~waitable) inside a foreach loop,
the loop can't process the next entry until the delay is over.
This can lead to very long waits if you have a long list and a wait directly in the loop, as the total delay is effectively multiplied by the number of iterations.
Use Command:run if you want to run logic simultaneously for many entries in a list in a way that allows them to separately wait without delaying each other.
Related Tags<[value]> to get the current item in the loop
<[loop_index]> to get the current loop iteration number
Usage Example
# Use to run commands 'for each entry' in a manually created list of objects/elements.
- foreach <[some_entity]>|<[some_npc]>|<[player]> as:entity:
    - announce "There's something at <[entity].location>!"
Usage Example
# Use to iterate through entries in any tag that returns a list.
- foreach <player.location.find_entities[zombie].within[50]> as:zombie:
    - narrate "There's a zombie <[zombie].location.distance[<player.location>].round> blocks away"
Usage Example
# Use to iterate through a list of players and run commands automatically linked to each player in that list.
- foreach <server.online_players> as:__player:
    - narrate "Thanks for coming to our server, <player.name>! Here's a bonus $50.00!"
    - money give quantity:50
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/ForeachCommand.java#L31
NameGamerule
Syntaxgamerule [<world>] [<rule>] [<value>]
Short DescriptionSets a gamerule on the world.
Full DescriptionSets a gamerule on the world. A list of valid gamerules can be found here: 🔗https://minecraft.wiki/w/Game_rule
Related Tags<WorldTag.gamerule[<gamerule>]> Returns the current value of the specified gamerule in the world.
Usage Example
# Use to disable fire spreading in world "Adventure".
- gamerule Adventure fire_spread_radius_around_player 0
Usage Example
# Use to avoid mobs from destroying blocks (creepers, endermen...) and picking items up (zombies, skeletons...) in world "Adventure".
- gamerule Adventure mob_griefing false
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/GameRuleCommand.java#L25
NameGive
Syntaxgive [<item>|...] (quantity:<#>) (unlimit_stack_size) (to:<inventory>) (slot:<slot>) (allowed_slots:<slot-matcher>) (ignore_leftovers)
Short DescriptionGives the player an item or xp.
Full DescriptionGives the linked player items.

Optionally specify a slot to put the items into. If the slot is already filled, the next available slot will be used.
If the inventory is full, the items will be dropped on the ground at the inventory's location.
For player inventories, only the storage contents are valid - to equip armor or an offhand item, use Command:equip.

Specifying "unlimit_stack_size" will allow an item to stack up to 64. This is useful for stacking items
with a max stack size that is less than 64 (for example, most weapon and armor items have a stack size of 1).

When giving an item, you can specify any valid inventory as a target. If unspecified, the linked player's inventory will be used.
You may optionally specify a "slot" as any valid slot input per Language:Slot Inputs to be the starting slot index.
You may optionally specify "allowed_slots" to forcibly restrict the item to only be given to certain specific slots that match a slot-matcher.
You may optionally specify "ignore_leftovers" to cause leftover items to be ignored. If not specified, leftover items will be dropped.

To give xp to a player, use Command:experience.
To give money to a player, use Command:money.
Related Tags<PlayerTag.inventory> Returns a InventoryTag of the player's current inventory. (...)
<entry[saveName].leftover_items> returns a ListTag of any item(s) that didn't fit into the inventory.
Usage Example
# Use to give an item to the player.
- give iron_sword
Usage Example
# Use to give an item and place it in a specific slot if possible.
- give WATCH slot:5
Usage Example
# Use to give an item to some other defined player.
- give diamond player:<[target]>
Groupitem
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/GiveCommand.java#L31
NameGlow
Syntaxglow (<entity>|...) ({true}/false/toggle/reset) (for:<player>|...)
Short DescriptionSets whether an NPC or entity is glowing.
Full DescriptionSets whether the specified entities glow, defaults to the linked player/NPC if none were specified.

Optionally specify 'for:' with a list of players to fake the entities' glow state for these players.
When using 'toggle' with the 'for:' argument, the glow state will be toggled for each player separately.
If unspecified, will be set globally.
'for:' players remain tracked even when offline/reconnecting, but are forgotten after server restart.

When not using 'for:', the glow is global / on the real entity, which will persist in that entity's data until changed.

To reset an entity's fake glow use the 'reset' state.
A reset is global by default, use the 'for:' argument to reset specific players.
Related Tags<EntityTag.glowing> Returns whether this entity is glowing.
Usage Example
# Use to make the linked player (or NPC, if there isn't one) glow.
- glow
Usage Example
# Use to toggle whether the linked NPC is glowing.
- glow <npc> toggle
Usage Example
# Use to make an entity glow for specific players, without changing the way other players see it.
- glow <[entity]> for:<[player1]>|<[player2]>
Usage Example
# Use to reset an entity's fake glow state for the linked player.
- glow <[entity]> reset for:<player>
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/GlowCommand.java#L26
NameHealth
Syntaxhealth ({npc}/<entity>|...) [<#>] (state:{true}/false/toggle) (heal)
Short DescriptionChanges the target's maximum health.
Full DescriptionUse this command to modify an entity's maximum health.

If the target is an NPC, you can use the 'state' argument to enable, disable, or toggle the Health trait
(which is used to track the NPC's health, and handle actions such as 'on death').
The Health trait will be enabled by default.

By default, this command will target the linked NPC but can be set to target any other living entity, such as a player or mob.

Optionally specify the 'heal' argument to automatically heal the entity to the new health value.
If not specified, the entity's health will remain wherever it was
(so for example a change from 20 max to 50 max will leave an entity with 20 health out of 50 max).

Additionally, you may input a list of entities, each one will calculate the effects explained above.
Related Tags<EntityTag.health> Returns the current health of the entity.
<EntityTag.health_max> Returns the maximum health of the entity.
<NPCTag.has_trait[health]> Returns whether the NPC has a specified trait.
Usage Example
# Use to set the NPC's maximum health to 50.
- health 50
Usage Example
# Use to disable tracking of health value on the NPC.
- health state:false
Usage Example
# Use to change a player's health limit and current health both to 50.
- health <player> 50 heal
Usage Example
# Use to change a list of entities' health limits all to 50.
- health <player.location.find.living_entities.within[10]> 50
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/HealthCommand.java#L26
NameHurt
Syntaxhurt (<#.#>) ({player}/<entity>|...) (cause:<cause>) (source:<entity>/<location>)
Short DescriptionHurts the player or a list of entities.
Full DescriptionDoes damage to a list of entities, or to any single entity.

If no entities are specified: if there is a linked player, the command targets that. If there is no linked
player but there is a linked NPC, the command targets the NPC. If neither is available, the command will error.

Does a specified amount of damage usually, but, if no damage is specified, does precisely 1HP worth of damage (half a heart).

Optionally, specify (source:<entity>) to make the system treat that entity as the attacker.
If using a block-type cause such as "contact", you *must* specify (source:<location>) to set that block location as the attacker. The block can be any block, even just "<player.location>" (as long as the player in inside a world).

You may also specify a damage cause to fire a proper damage event with the given cause, only doing the damage if the event wasn't cancelled.
Calculates the 'final damage' rather than using the raw damage input number. See Language:damage cause for damage causes.

Using a valid 'cause' value is best when trying to replicate natural damage, excluding it is best when trying to force the raw damage through.
Note that using invalid or impossible causes may lead to bugs
Related Tags<EntityTag.health> Returns the current health of the entity.
<EntityTag.last_damage.amount> Returns the amount of the last damage taken by the entity.
<EntityTag.last_damage.cause> Returns the cause of the last damage taken by the entity.
<EntityTag.last_damage.duration> Returns the duration of the last damage taken by the entity.
<EntityTag.last_damage.max_duration> Returns the maximum duration of the last damage taken by the entity.
Usage Example
# Use to hurt the player for 1 HP.
- hurt
Usage Example
# Use to hurt the NPC for 5 HP.
- hurt 5 <npc>
Usage Example
# Use to cause the player to hurt the NPC for all its health (if unarmored).
- hurt <npc.health> <npc> cause:CUSTOM source:<player>
Synonyms (Search Aid)damage, injure
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/HurtCommand.java#L31
NameIf
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/if-command.html
Syntaxif [<value>] (!)(<operator> <value>) (&&/|| ...) [<commands>]
Short DescriptionCompares values, and runs a subset of commands if they match.
Full DescriptionCompares values, and runs a subset of commands if they match.
Works with the else command, which handles alternatives for when the comparison fails.
The if command is equivalent to the English phrasing "if something is true, then do the following".

Values are compared using the comparable system. See Language:operator for information.

Comparisons may be chained together using the symbols '&&' and '||' or their text equivalents 'and' and 'or'.
'&&' means "and", '||' means "or".
So, for example "if <[a]> && <[b]>:" requires both a AND b to be true.
"if <[a]> and <[b]>:" also requires both a AND b to be true.

The "or" is inclusive, meaning "if <[a]> || <[b]>:" will pass for any of the following:
a = true, b = true
a = true, b = false
a = false, b = true
but will fail when a = false and b = false.

Sets of comparisons may be grouped using ( parens ) as separate arguments.
So, for example "if ( <[a]> && <[b]> ) || <[c]>", or "if ( <[x]> or <[y]> or <[z]> ) and ( <[a]> or <[b]> or <[c]> )"
Grouping is REQUIRED when using both '&&' and '||' in one line. Otherwise, groupings should not be used at all.

Boolean inputs and groups both support negating with the '!' symbol as a prefix.
This means you can do "if !<[a]>" to say "if a is NOT true".
Similarly, you can do "if !( <[a]> || <[b]> )", though be aware that per rules of boolean logic,
that example is the exactly same as "if !<[a]> && !<[b]>".

You can also use keyword "not" as its own argument to negate a boolean or an operator.
For example, "if not <[a]>:" will require a to be false, and "if <[a]> not equals <[b]>:" will require that 'a' does not equal 'b'.

When not using a specific comparison operator, true vs false will be determined by Truthiness, see Tag:ObjectTag.is_truthy for details.
For example, "- if <player||null>:" will pass if a player is linked, valid, and online.
Related Tags<ObjectTag.is[<operator>].to[<element>]> Takes an operator, and compares the first object to the given second object. (...)
<ObjectTag.is[<operator>].than[<element>]> Takes an operator, and compares the first object to the given second object. (...)
Usage Example
# Use to narrate a message only if a player has a flag.
- if <player.has_flag[secrets]>:
    - narrate "The secret number is 3!"
Usage Example
# Use to narrate a different message depending on a player's money level.
- if <player.money> > 1000:
    - narrate "You're rich!"
- else:
    - narrate "You're poor!"
Usage Example
# Use to stop a script if a player doesn't have all the prerequisites.
- if !<player.has_flag[quest_complete]> || !<player.has_permission[new_quests]> || <player.money> < 50:
    - narrate "You're not ready!"
    - stop
- narrate "Okay so your quest is to find the needle item in the haystack build next to town."
Usage Example
# Use to perform a complicated requirements test before before changing some event.
- if ( poison|magic|melting contains <context.cause> and <context.damage> > 5 ) or <player.has_flag[weak]>:
    - determine <context.damage.mul[2]>
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/IfCommand.java#L28
NameImage
Syntaximage [id:<id>] [load [image:<image>/path:<path>]]/[save [path:<path>] [format:<format>]]/[unload]
Short DescriptionLoads, saves, and unloads images.
Full DescriptionLoads, saves, and unloads images.

With "load", specify either a file path to read from or an image object to load.
With "save", specify a file path to save the image to and a format to save the image in (e.g. "png", "jpg", "bmp"...), defaults to "png".
For both of these the starting path is "plugins/Denizen".
Use waitable syntax ("- ~image") when loading or saving from a file to avoid locking up the server during file IO, refer to Language:~waitable.

All uses of the image command must include the "id:" argument. This is any arbitrary name, as plaintext or from a tag,
to uniquely and globally identify the image object in memory. This ID can only be used by one image object at a time.
IDs are stored when "load" is used, and only removed when "unload" is used.
Related TagsNone
Usage Example
# Use to load an image from a file into memory under the id "image".
- ~image id:image load path:data/image.png
Usage Example
# Use to load an image object from a definition, draw on it, then store it back into the definition.
- define image <image[width=50;height=50;background=blue]>
- image id:to_edit load image:<[image]>
- draw id:to_edit oval x:0 y:0 width:50 height:50 color:green
# Copy the image to avoid it auto-updating with the image loaded in under that id, can skip '.copy' if this doesn't matter for your use case.
- define image <image[to_edit].copy>
Usage Example
# Use to save an image into file and unload it.
- ~image id:image save path:data/image.png
- image id:image unload
Groupimage
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/ImageCommand.java#L27
NameInventory
Syntaxinventory [open/close/copy/move/swap/set/keep/exclude/fill/clear/update/adjust <mechanism>:<value>/flag <name>(:<action>)[:<value>] (expire:<time>)] (destination:<inventory>) (origin:<inventory>/<item>|...) (slot:<slot>)
Short DescriptionEdits the inventory of a player, NPC, or chest.
Full DescriptionUse this command to edit the state of inventories.
By default, the destination inventory is the current attached player's inventory.

If you are copying, swapping, removing from (including via "keep" and "exclude"), adding to, moving, or filling inventories,
you'll need both destination and origin inventories.

Origin inventories may be specified as a list of ItemTags, but destinations must be actual InventoryTags.

Using "open", "clear", or "update" only require a destination.
"Update" also requires the destination to be a valid player inventory.

Using "close" closes any inventory that the currently attached player has opened.

The "adjust" option adjusts mechanisms on an item within a specific slot of an inventory (the "slot" parameter is required).
Note that this is only for items, it does NOT adjust the inventory itself. Use Command:adjust to adjust an inventory mechanism.

The "flag" option sets a flag on items, similar to Command:flag.
See also Language:flag system.

The "update" option will refresh the client's view of an inventory to match the server's view, which is useful to workaround some sync bugs.

Note that to add items to an inventory, you should usually use Command:give,
and to remove items from an inventory, you should usually use Command:take.

The slot argument can be any valid slot, see Language:Slot Inputs.
Related Tags<PlayerTag.inventory> Returns a InventoryTag of the player's current inventory. (...)
<PlayerTag.enderchest> Gets the player's enderchest inventory. (...)
<PlayerTag.open_inventory> Gets the inventory the player currently has open. If the player has no open (...)
<NPCTag.inventory> Returns the InventoryTag of the NPC.
<LocationTag.inventory> Returns the InventoryTag of the block at the location. If the (...)
Usage Example
# Use to open a chest inventory, at a location.
- inventory open d:<context.location>
Usage Example
# Use to open a virtual inventory with a title and some items.
- inventory open d:generic[size=27;title=BestInventory;contents=snowball|stick]
Usage Example
# Use to open another player's inventory.
- inventory open d:<[player].inventory>
Usage Example
# Use to remove all items from a chest, except any items in the specified list.
- inventory keep d:<context.location.inventory> o:snowball|ItemScript
Usage Example
# Use to remove all sticks and stones from the player's inventory.
- inventory exclude origin:stick|stone
Usage Example
# Use to clear the player's inventory entirely.
- inventory clear
Usage Example
# Use to swap two players' inventories.
- inventory swap d:<[playerOne].inventory> o:<[playerTwo].inventory>
Usage Example
# Use to adjust a specific item in the player's inventory.
- inventory adjust slot:5 "lore:Item modified!"
Usage Example
# Use to set a single stick into slot 10 of the player's inventory.
- inventory set o:stick slot:10
Usage Example
# Use to set a temporary flag on the player's held item.
- inventory flag slot:hand my_target:<player.cursor_on> expire:1d
Groupitem
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/InventoryCommand.java#L105
NameInvisible
Syntaxinvisible (<entity>|...) ({true}/false/toggle/reset) (for:<player>|...)
Short DescriptionSets whether an NPC or entity are invisible.
Full DescriptionSets whether the specified entities are invisible (equivalent to an invisibility potion), defaults to the linked player/NPC if none were specified.
If an NPC was specified, the 'invisible' trait is applied.

Optionally specify 'for:' with a list of players to fake the entities' visibility state for these players.
When using 'toggle' with the 'for:' argument, the visibility state will be toggled for each player separately.
If unspecified, will be set globally.
'for:' players remain tracked even when offline/reconnecting, but are forgotten after server restart.
Note that using the 'for:' argument won't apply the 'invisible' trait to NPCs.

When not using 'for:', the effect is global / on the real entity, which will persist in that entity's data until changed.

To reset an entity's fake visibility use the 'reset' state.
A reset is global by default, use the 'for:' argument to reset specific players.

NPCs can't be made invisible if not added to the playerlist (the invisible trait adds the NPC to the playerlist when set).
See Language:invisible trait
Related TagsNone
Usage Example
# Use to make the linked player (or NPC, if there isn't one) invisible.
- invisible
Usage Example
# Use to make the linked NPC visible if previously invisible, and invisible if not.
- invisible <npc> toggle
Usage Example
# Use to make an entity visible for specific players, without changing the way other players see it.
- invisible <[entity]> false for:<[player1]>|<[player2]>
Usage Example
# Use to reset an entity's fake visibility state for the linked player.
- invisible <[entity]> reset for:<player>
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/InvisibleCommand.java#L32
NameKill
Syntaxkill ({player}/<entity>|...)
Short DescriptionKills the player or a list of entities.
Full DescriptionKills a list of entities, or a single entity.

If no entities are specified, the command targets the linked player.
If there is no linked player, the command targets the linked NPC.
If neither is available, the command errors.
Related Tags<EntityTag.is_spawned> Returns whether the entity is spawned.
Usage Example
# Use to kill the linked player.
- kill
Usage Example
# Use to kill the linked NPC.
- kill <npc>
Usage Example
# Use to kill all monsters within 10 blocks of the linked player.
- kill <player.location.find_entities[monster].within[10]>
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/KillCommand.java#L25
NameLog
Syntaxlog [<text>] (type:{info}/severe/warning/fine/finer/finest/none/clear) [file:<name>]
Short DescriptionLogs some debugging info to a file.
Full DescriptionThis is a quick and simple way to store debugging information for admins to read.

You just input a file name and some text, and it will store that information in the file with a date/time stamp and the chosen type ('INFO' by default).
If you don't want the date/time stamp and type, you can set the type to 'none' and it will only add the message text.

Regardless of type, each usage of the log command will add a new line to the file, you can't just keep adding to one line.

You might choose to use this to record some important things,
for example, every time a player uses a dangerous command you might log the player's name and their location, so you'll know who to blame if you find something damaged.

Remember that the file location is inside the server's primary folder. You most likely want to prefix file names with a folder name, For example: 'file:logs/security.log'

If the file or folder path you input do not already exist, they will be automatically created.

Warning: Remember that file operations are dangerous! A typo in the filename could ruin your server.
It's recommended you use this command minimally.

This command can be disabled by setting Denizen config option "Commands.Log.Allow logging" to false.

This should almost always be ~waited for. Refer to Language:~waitable.
Related TagsNone
Usage Example
# Use to log some information to a file.
- ~log "Security breach on level 3!" type:severe file:securitylog.txt
Usage Example
# Use to log a player's name and location when they did something dangerous.
- ~log "<player.name> used the '/EXPLODE' command at <player.location.simple>!" type:warning file:security.log
Usage Example
# Use to write information directly to a file.
- ~log "This won't have a date or type" type:none file:example.log
Usage Example
# Use to clear a log file and write some text at the start.
- ~log "// Log File Generated by my Denizen script, do not edit!" type:clear file:myfile.log
Usage Example
# Use to clear a log file entirely.
- ~log "" type:clear file:myfile.log
Synonyms (Search Aid)textfile
Groupfile
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/file/LogCommand.java#L26
NameMap
Syntaxmap [<#>/new:<world>] (reset:<location>/reset_to_blank) (scale:<value>) (tracking) (image:<file>) (resize) (script:<script>) (dot:<color>) (radius:<#>) (x:<#>) (y:<#>) (text:<text>) (width:<#>) (height:<#>)
Short DescriptionModifies a new or existing map by adding images or text.
Full DescriptionThis command modifies an existing map, or creates a new one. Using this will override existing non-Denizen map renderers with Denizen's custom map renderer.

You must specify at least one of 'reset', 'reset_to_blank', 'script', 'image', 'dot', 'text'. You can specify multiple at once if you prefer.

When using 'reset' or 'reset_to_blank', you can specify optionally 'scale' and/or 'tracking'.
When using 'image' you can optionally specify 'resize' or 'width:<#>' and 'height:<#>'.
When using 'dot', you can specify any valid ColorTag (it will be compressed to map's color space), and you can optionally also specify 'radius' as a number.
Use "radius:0" with dot to set on a single pixel. 1 or higher will make a circle centered on the x/y given.

You can reset this at any time by using the 'reset:<location>' argument, which will remove all
images and texts on the map and show the default world map at the specified location.
You can also specify 'reset_to_blank' to reset without specified location.

The 'scale' argument takes input of one of the values listed here:
🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/map/MapView.Scale.html

The 'tracking' argument determines if the map will track its location on the map it displays.
This is often the player holding the map's location.

Note that all maps have a size of 128x128.

The file path is relative to the 'plugins/Denizen/images/' folder.
Instead of a local file path, an http(s) URL can be used, which will automatically download the image from the URL given.
If the file path points to a .gif, the map will automatically be animated.

Use escaping to let the image and text arguments have tags based on the player viewing the map.

Custom maps will persist over restarts using the 'maps.yml' save file in the Denizen plugins folder.
Related Tags<entry[saveName].created_map> returns the map created by the 'new:' argument if used.
Usage Example
# Use to add an auto-resized background image to map 3.
- map 3 image:my_map_images/my_background.png resize
Usage Example
# Use to add an image with the top-left corner at the center of a new map.
- map new:WorldTag image:my_map_images/my_center_image.png x:64 y:64 save:map
- give filled_map[map=<entry[map].created_map>]
Usage Example
# Use to reset map 3 to be centered at the player's location.
- map 3 reset:<player.location>
Usage Example
# Use to remove any custom renderers on map 3 and then apply the contents of the named <@link language Map Script Containers> to map 3.
- map 3 script:Map_Script_Name
Groupitem
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/MapCommand.java#L30
NameMidi
Syntaxmidi [cancel/<file> (tempo:<#.#>) (volume:<#.#>)] (<location>/<entity>|...)
Short DescriptionPlays a midi file at a given location or to a list of players using note block sounds.
Full DescriptionThis will fully load a midi song file stored in the '../plugins/Denizen/midi/' folder.
The file must be a valid midi file with the extension '.mid'.
It will continuously play the song as noteblock songs at the given location or group of players until the song ends.
If no location or entity is specified, by default this will play for the attached player.

Also, an example Midi song file has been included: "Denizen" by Black Coyote. He made it just for us!
Check out more of his amazing work at: http://www.youtube.com/user/BlaCoyProductions

The midi command is ~waitable. Refer to Language:~waitable.
Related TagsNone
Usage Example
# Use to play a midi song file on the current player.
- midi file:Denizen
Usage Example
# Use to play a midi song file at a given location.
- midi file:Denizen <player.location>
Usage Example
# Use to play a midi song file at a given location to the specified player(s), and wait for it to finish.
- ~midi file:Denizen <server.online_players>
Synonyms (Search Aid)music
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/MidiCommand.java#L30
NameModifyBlock
Syntaxmodifyblock [<location>|.../<ellipsoid>/<cuboid>] [<material>|...] (no_physics/naturally:<tool>) (delayed) (<script>) (<percent chance>|...) (source:<player>) (max_delay_ms:<#>)
Short DescriptionModifies blocks.
Full DescriptionChanges blocks in the world based on the criteria given.

Use 'no_physics' to place the blocks without physics taking over the modified blocks.
This is useful for block types such as portals or water. This does NOT control physics for an extended period of time.

Specify (<percent chance>|...) to give a chance of each material being placed (in any material at all).

Use 'naturally:' when setting a block to air to break it naturally, meaning that it will drop items. Specify the tool item that should be used for calculating drops.

Use 'delayed' to make the modifyblock slowly edit blocks at a time pace roughly equivalent to the server's limits.
Optionally, specify 'max_delay_ms' to control how many milliseconds the 'delayed' set can run for in any given tick (defaults to 50).

Note that specifying a list of locations will take more time in parsing than in the actual block modification.

Optionally, specify a script to be ran after the delayed edits finish. (Doesn't fire if delayed is not set.)

Optionally, specify a source player. When set, Bukkit events will fire that identify that player as the source of a change, and potentially cancel the change.
The source argument might cause weird interoperation with other plugins, use with caution.

The modifyblock command is ~waitable. Refer to Language:~waitable.
Related Tags<LocationTag.material> Returns the material of the block at the location.
Usage Example
# Use to change the block a player is looking at to stone.
- modifyblock <player.cursor_on> stone
Usage Example
# Use to modify an entire cuboid to half stone, half dirt.
- modifyblock <player.location.to_cuboid[<player.cursor_on>]> stone|dirt
Usage Example
# Use to modify an entire cuboid to some stone, some dirt, and some left as it is.
- modifyblock <player.location.to_cuboid[<player.cursor_on>]> stone|dirt 25|25
Usage Example
# Use to modify the ground beneath the player's feet.
- modifyblock <player.location.add[2,-1,2].to_cuboid[<player.location.add[-2,-1,-2]>]> RED_WOOL
Synonyms (Search Aid)setblock, changeblock, placeblock, breakblock
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/ModifyBlockCommand.java#L62
NameMongo
Syntaxmongo [id:<ID>] [connect:<uri> database:<database> collection:<collection>/disconnect/command:<map>/find:<map> (by_id:<id>)/insert:<map>/update:<update> new:<new> (upsert:true/{false})/use_database:<database>/use_collection:<collection>]
Short DescriptionInteracts with a MongoDB server.
Full DescriptionThis command is used to interact with a MongoDB server.

MongoDB is a NoSQL database which uses concepts such as Documents and Collections to store data. MongoDB uses a form of JSON to represent its data.
It can interact with localhost connections as well as hosted connections (such as MongoDB's Atlas) via a connection URI.
Store your connection URI in the Denizen secrets file at 'plugins/Denizen/secrets.secret'. Refer to ObjectType:SecretTag for usage info.

Mongo works as a document-oriented database, where data is stored in Documents. Documents are stored inside Collections. Collections can contain many Documents. Collections are then stored inside Databases.

Usage of the mongo command should almost always be used as ~waitable (see Language:~waitable), as large queries and insertions can take a while to retrieve or send.

You can open a mongo connection with connect:<uri>. You must specify a database and collection to connect to with the database:<database> and collection:<collection> options.
You can change the database or collection you are connected to with use_database:<database> and use_collection:<collection>
If a Database or Collection you connect to does not exist, once you insert some data then the Database or Collection will be created automatically.

To insert Documents, use insert:<map>.
To find a specific document from fragments of data, use find:<map>. You can include MongoDB's special query filters to further refine your query. If you want to search by a Document's ID, use by_id:id.

To update a Document's data, use update:<update> with the old data, and new:<new> for the new data being updated. This will update every Document matched with the provided data.
You can also include the upsert flag, to create a new Document if the Document you are trying to update does not already exist.

As MongoDB offers a variety of commands, to run a command not wrapped here you can use command:<map>.

TODO: When opening a connection, Mongo will output a lot of data to the console. There currently is not a way to turn this off.

The mongo command is merely a wrapper, and further usage details should be gathered from an official MongoDB command reference rather than from Denizen command help.
You can view the official mongo documentation here: 🔗https://www.mongodb.com/docs/manual/introduction/.
You can view a list of commands that MongoDB supports here: 🔗https://www.mongodb.com/docs/manual/reference/command/.
Related Tags<util.mongo_connections> returns a ListTag of all the current Mongo connections.
<entry[saveName].result> returns the text result sent back from Mongo in a JSON format. JSON can be in an ElementTag or a ListTag depending on the action run.
<entry[saveName].inserted_id> returns the ID of the item that has been inserted via the `insert` action.
<entry[saveName].ok> returns the 'ok' value from the result. Used with the `command` action.
<entry[saveName].upserted_id> returns the ID the upserted item. Returned if the `upsert` bool is true when updating.
<entry[saveName].updated_count> returns the amount of Documents updated via the `update` action.
Usage Example
# Use to connect to a Mongo instance.
- ~mongo id:name connect:<secret[uri]>
Usage Example
# Use to disconnect from a Mongo instance.
- mongo id:name disconnect
Usage Example
# Run a simple command.
- ~mongo id:name command:[dbStats=1]
Usage Example
# Run more complex commands.
- definemap commands:
     count: my_collection
     skip: 4
 - ~mongo id:name command:<[commands]>
Usage Example
# Simple find query.
- ~mongo id:name find:[name=Bob]
Usage Example
# Complex find query with query filters.
- definemap filters:
     $and:
         - number_greater_than:
             $gt: 2
         - number_less_than:
             $lt: 5
- ~mongo id:name find:<[filters]>
Usage Example
# Insert data into a Collection.
- definemap data:
     name: Pluto
     order_from_sun: 9
     has_rings: false
     main_atmosphere:
         - N2
         - CH4
         - CO
- ~mongo id:name insert:<[data]> save:mg
Usage Example
# Update data.
- definemap old_data:
     name: Pluto
- definemap new_data:
     $set:
         name: Pluto (A Dwarf Planet)
- ~mongo id:name update:<[old_data]> new:<[new_data]>
Usage Example
# Change Databases.
- ~mongo id:name use_database:my_new_database
Usage Example
# Change Collections.
- ~mongo id:name use_collection:my_new_collection
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/MongoCommand.java#L36
NameNarrate
Syntaxnarrate [<text>] (targets:<player>|...) (format:<script>) (per_player) (from:<uuid>)
Short DescriptionShows some text to the player.
Full DescriptionPrints some text into the target's chat area. If no target is specified it will default to the attached player or the console.

You can format the text with Language:Format Script Containers using the 'format' argument, or with the "narrate" format type (see Language:Script Formats).

Optionally use 'per_player' with a list of player targets, to have the tags in the text input be reparsed for each and every player.
So, for example, "- narrate 'hello <player.name>' targets:<server.online_players>"
would normally say "hello bob" to every player (every player sees the exact same name in the text, ie bob sees "hello bob", steve also sees "hello bob", etc)
but if you use "per_player", each player online would see their own name (so bob sees "hello bob", steve sees "hello steve", etc).

Optionally, specify 'from:<uuid>' to indicate that message came from a specific UUID (used for things like the vanilla client social interaction block option).
Related TagsNone
Usage Example
# Use to narrate text to the player.
- narrate "Hello World!"
Usage Example
# Use to narrate text to a list of players.
- narrate "Hello there." targets:<[player]>|<[someplayer]>|<[thatplayer]>
Usage Example
# Use to narrate text to a unique message to every player on the server.
- narrate "Hello <player.name>, your secret code is <util.random.duuid>." targets:<server.online_players> per_player
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/NarrateCommand.java#L42
Namenbs
Syntaxnbs [play/stop] (file:<file_path>) (targets:<entity>|...) (at:<location>) (distance:<#>/{16})
Short DescriptionPlays or stops a noteblock song.
Full DescriptionPlays a .nbs file for the targets, being players specified.
If no targets are specified, the target will be the player in the queue.
Optionally specify the location to play the song from using the 'at' argument. Players must still be added using 'targets' in order to hear the song when they are within range.
Setting 'distance' will change the range in blocks that a player must be in to hear the song. Numbers below 16 will decrease volume, not decrease range. Numbers greater than 16 will increase range.
Note block song files are created using NoteBlockStudio or other programs.
The file path starts in the denizen folder: /plugins/Denizen/

The nbs command is ~waitable. Refer to Language:~waitable.
Related Tags<PlayerTag.nbs_is_playing> Returns true if the player is currently listening to a note block song.
Usage Example
# Use to play a song to the linked player in a queue.
- nbs play file:MySong
Usage Example
# Use to play a song to everyone online.
- nbs play file:MySong targets:<server.online_players>
Usage Example
# Use to stop the current song playing for the linked player in a queue.
- nbs stop
Usage Example
# Use to stop the current song playing for all online players.
- nbs stop targets:<server.online_players>
Usage Example
# Use to play a song only for the linked player in a queue at a specified location.
- nbs play file:MySong at:<[my_location]>
Usage Example
# Use to play a song to everyone online if they are 30 blocks away from a specified location.
- nbs play file:MySong targets:<server.online_players> at:<[my_location]> distance:30
Usage Example
# Use to wait until the song finishes.
- ~nbs play file:MySong
GroupDepenizen
RequiresDepenizen, NoteBlockAPI
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/commands/noteblockapi/NBSCommand.java#L40
NamePause
Syntaxpause [waypoints/activity] (<duration>)
Short DescriptionPauses an NPC's waypoint navigation or goal activity temporarily or indefinitely.
Full DescriptionThe pause command pauses an NPC's waypoint navigation or goal activity temporarily or indefinitely.
This works along side Command:resume.

"Waypoints" refers to the NPC's path navigation, usually set via "/npc path".

"Activity" refers to the Citizens AI Goal system, which may be used by some plugins but usually is not.

If no duration is specified, the resume command must be used to unpause it.
Related Tags<NPCTag.is_navigating> Returns whether the NPC is currently navigating.
Usage Example
# Use to pause an NPC's waypoint navigation indefinitely.
- pause waypoints
Usage Example
# Use to pause an NPC's goal activity temporarily.
- pause activity 1m
Usage Example
# Use to pause an NPC's waypoint navigation and then resume it.
- pause waypoints
- resume waypoints
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/PauseCommand.java#L35
NamePlayEffect
Syntaxplayeffect [effect:<name>] [at:<location>|...] (data:<#.#>) (special_data:<map>) (visibility:<#.#>) (quantity:<#>) (offset:<#.#>,<#.#>,<#.#>) (targets:<player>|...) (velocity:<vector>)
Short DescriptionPlays a visible or audible effect at the location.
Full DescriptionAllows the playing of particle effects anywhere without the need of the source it comes from originally.
The particles you may use, can come from sources such as a potion effect or a portal/Enderman with their particles respectively.
Some particles have different data which may include different behavior depending on the data. Default data is 0
Specifying a visibility value changes the sight radius of the effect. For example if visibility is 15; Targeted players won't see it unless they are 15 blocks or closer.
You can add a quantity value that allow multiple of the same effect played at the same time. If an offset is set, each particle will be played at a different location in the offset area.
Everyone will see the particle effects unless a target has been specified.
See Language:Particle Effects for a list of valid effect names.

Version change note: The original PlayEffect command raised all location inputs 1 block-height upward to avoid effects playing underground when played at eg a player's location.
This was found to cause too much confusion, so it is no longer on by default. However, it will still happen for older commands.
The distinction is in whether you include the (now expected to use) "at:" prefix on your location argument.
If you do not have this prefix, the system will assume your command is older, and will apply the 1-block height offset.

Some particles will require input to the "special_data" argument. The data input is a MapTag with different keys per particle.
- For DUST particles, the input is of format [size=<size>;color=<color>], e.g. "[size=1.2;color=red]".
- For DUST_COLOR_TRANSITION particles, the input is of format [size=<size>;from=<color>;to=<color>], e.g "[size=1.2;from=red;to=blue]".
- For BLOCK, BLOCK_CRUMBLE, BLOCK_MARKER, DUST_PILLAR, or FALLING_DUST particles, the input is of format [material=<material>], e.g. [material=stone]
- For VIBRATION particles, the input is of format [origin=<location>;destination=<location/entity>;duration=<duration>], for example: [origin=<player.location>;destination=<player.cursor_on>;duration=5s]
- For ITEM particles, the input is of format [item=<item>], e.g. "[item=stick]".
- For TRAIL particles, the input is of format [color=<color>;target=<location>;duration=<duration>], e.g. "[color=red;target=<player.cursor_on>;duration=20s]".
- For ENTITY_EFFECT particles, the input is of format [color=<color>], e.g. "[color=green]".
- For SHRIEK particles, the input is of format [duration=<duration>], e.g. "[duration=1m]".
- For SCULK_CHARGE particles, the input is of format [radians=<element>], e.g. "[radians=<element[90].to_radians>]".

Optionally specify a velocity vector for standard particles to move. Note that this ignores the 'data' input if used.
Related Tags<server.effect_types> Returns a list of all 'effect' types known to the server. (...)
<server.particle_types> Returns a list of all particle effect types known to the server. (...)
Usage Example
# Use to create a fake explosion.
- playeffect effect:EXPLOSION_HUGE at:<player.location> visibility:500 quantity:10 offset:2.0
Usage Example
# Use to play a cloud effect.
- playeffect effect:CLOUD at:<player.location.add[0,5,0]> quantity:20 data:1 offset:0.0
Usage Example
# Use to play some effects at spawn.
- playeffect effect:FIREWORKS_SPARK at:<world[world].spawn_location> visibility:100 quantity:375 data:0 offset:50.0
Usage Example
# Use to spawn a cloud of rainbow-colored ENTITY_EFFECT particles around yourself.
- foreach <util.color_names> as:color:
    - playeffect effect:ENTITY_EFFECT at:<player.eye_location> quantity:25 special_data:[color=<[color]>]
Usage Example
# Use to shoot particles in to the direction you're looking at.
- repeat 10:
    - playeffect effect:TRAIL at:<player.eye_location> quantity:1 offset:0 special_data:[color=red;target=<player.eye_location.ray_trace[default=air]>;duration=5s]
    - wait 1t
Usage Example
# Use to spawn a SCULK_CHARGE effect upside down.
- playeffect effect:SCULK_CHARGE at:<player.eye_location.add[0,1,0]> quantity:1 offset:0 special_data:[radians=<element[180].to_radians>]
Usage Example
# Use to play a SHRIEK effect with a 5-second delay.
- playeffect effect:SHRIEK at:<player.eye_location.add[0,1,0]> quantity:1 special_data:[duration=5s]
Synonyms (Search Aid)particle
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/PlayEffectCommand.java#L55
NamePlaySound
Syntaxplaysound (<location>|...) (<player>|...) [sound:<name>] (volume:<#.#>) (pitch:<#.#>) (custom) (sound_category:<category_name>)
Short DescriptionPlays a sound at the location or to a list of players.
Full DescriptionPlays a sound to a player or nearby players at a location.
The sound is played through the player's client just like any other sounds in Minecraft.

For a list of all sounds, check 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Sound.html

Sounds are by default played under their normal sound type (eg zombie sounds are under the type Mobs/Animals).
You can optionally instead specify an alternate sound category to use.
For a list of all valid sound categories, check 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/SoundCategory.html

Specifying a player or list of players will only play the sound for each player, from their own location (but will not follow them if they move).
If a location is specified, it will play the sound for any players that are near the location specified.
If both players and locations are specified, will play the sound for only those players at those locations.

Optionally, specify 'custom' to play a custom sound added by a resource pack, changing the sound name to something like 'random.click'

Optionally specify a pitch value (defaults to 1.0). A pitch from 0.0 to 1.0 will be deeper (sounds like a demon), and above 1.0 will be higher pitched (sounds like a fairy).

Optionally specify a volume value (defaults to 1.0). A volume from 0.0 to 1.0 will be quieter than normal.
A volume above 1.0 however will not be louder - instead it will be audible from farther (approximately 1 extra chunk of distance per value, eg 2.0 is 2 more chunks, 5.0 is 5 more chunks, etc.).
Related Tags<server.sound_types> Deprecated in favor of Tag:server.sound_keys on MC 1.21+.
Usage Example
# Use to play a sound for a player
- playsound <player> sound:ENTITY_EXPERIENCE_ORB_PICKUP pitch:1
Usage Example
# Use to play a sound at a location for all nearby
- playsound <player.location> sound:ENTITY_PLAYER_LEVELUP
Usage Example
# Use to notify all players with a sound
- playsound <server.online_players> sound:ENTITY_PLAYER_LEVELUP volume:0.5 pitch:0.8
Synonyms (Search Aid)noise
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/PlaySoundCommand.java#L32
NamePose
Syntaxpose (add/remove/{assume}) [id:<name>] (player/{npc}) (<location>)
Short DescriptionRotates the player or NPC to match a pose, or adds/removes an NPC's poses.
Full DescriptionMakes a player or NPC assume the position of a pose saved on an NPC, removes a
pose with a specified ID from the current linked NPC, or adds a pose to the NPC
with an ID and a location, although the only thing that matters in the location
is the pitch and yaw.
Related Tags<NPCTag.has_pose[<name>]> Returns true if the NPC has the specified pose, otherwise returns false.
<NPCTag.pose[<name>]> Returns the pose as a LocationTag with x, y, and z set to 0, and the world set to the first (...)
Usage Example
# Make an NPC assume a pose.
- pose id:MyPose1
Usage Example
# Add a pose to an NPC. (Note that only the last 2 numbers matter)
- pose add id:MyPose2 0,0,0,-2.3,5.4
Usage Example
# Remove a pose from an NPC.
- pose remove id:MyPose1
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/PoseCommand.java#L25
NamePush
Syntaxpush [<entity>|...] (origin:<entity>/<location>) (destination:<location>) (speed:<#.#>) (duration:<duration>) (script:<name>) (def:<element>|...) (force_along) (precision:<#>) (no_rotate) (no_damage) (ignore_collision)
Short DescriptionPushes entities through the air in a straight line.
Full DescriptionPushes entities through the air in a straight line at a certain speed and for a certain duration,
triggering a script when they hit an obstacle or stop flying.

You must specify an entity to be pushed.

Usually, you should specify the origin and the destination. If unspecified, they will be assumed from contextual data.

You can specify the script to be run with the (script:<name>) argument,
and optionally specify definitions to be available in this script with the (def:<element>|...) argument.

Using the 'no_damage' argument causes the entity to receive no damage when they stop moving.

Optionally use the "ignore_collision" argument to ignore block collisions.

Optionally use "speed:#" to set how fast it should be pushed.

Optionally use "force_along" to cause the entity to teleport through any blockage.

Optionally use "no_rotate" to prevent entities being rotated at the start of the push.

Optionally use "duration:#" to set the max length of time to continue pushing.

The push command is ~waitable. Refer to Language:~waitable.
Related Tags<EntityTag.velocity> Returns the movement velocity of the entity. (...)
<entry[saveName].pushed_entities> returns the list of pushed entities.
Usage Example
# Use to launch an arrow straight towards a target.
- push arrow destination:<player.location>
Usage Example
# Use to launch an entity into the air.
- push cow
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/PushCommand.java#L40
NameQueue
Syntaxqueue (<queue>) [clear/stop/pause/resume/delay:<duration>]
Short DescriptionModifies the current state of a script queue.
Full DescriptionAllows queues to be modified during their run. This can also be used to modify other queues currently running.

Clearing a queue will remove any commands still queued within it, and thus end the queue.
When trying to clear the current queue, use Command:stop instead.

Using the "stop" argument will force the queue to immediately stop running.
When trying to stop the current queue, use Command:stop instead.

Using the "delay:<duration>" argument will cause the queue to wait for a specified duration.
When trying to delay the current queue, use Command:wait instead.

Using the "pause" argument will freeze the queue but keep it listed, waiting for a "resume" instruction.
It is of course not possible to resume the current queue (as if you're running a 'queue' command, the queue can't be paused).

Generally, the queue is considered a non-ideal way of doing things - that is, there's usually a better/cleaner way to achieve similar results.
It's most useful within the "/ex" command for quick problem solving
(eg if a script in testing gets caught in an infinite loop, you can do "/ex queue ID_HERE stop" to fix that).
Related Tags<queue> Returns a queue object constructed from the input value. (...)
<QueueTag.id> Returns the full textual id of the queue.
<QueueTag.size> Returns the number of script entries in the queue.
<util.queues> Returns a list of all currently running queues on the server.
<ScriptTag.queues> Returns all queues which are running for this script.
Usage Example
# Use to force-stop a given queue.
- queue <server.flag[OtherQueue]> clear
Usage Example
# Use to delay the current queue (use <@link command wait> instead!)
- queue delay:5t
Usage Example
# Use to pause the given queue.
- queue <server.flag[OtherQueue]> pause
Usage Example
# Use to resume the given queue.
- queue <server.flag[OtherQueue]> resume
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/QueueCommand.java#L22
NameRandom
Syntaxrandom [<commands>]
Short DescriptionSelects a random choice from the following script commands.
Full DescriptionThe random command picks one of the following script command and skips all the other script commands that are in its section.
Commands like "repeat 1" or "if true" can be used to group together a sublisting of commands to execute together
(as a way to get around the 1-command limit).

If wanting to choose a random long set of commands,
consider instead using Command:choose with Tag:util.random.int.to
Related Tags<entry[saveName].possibilities> returns an ElementTag of the possibility count.
<entry[saveName].selected> returns an ElementTag of the selected number.
Usage Example
# Use to choose randomly from a braced set of commands
- random:
  - narrate "hi"
  - narrate "hello"
  - narrate "hey"
Usage Example
# Use to perform multiple commands randomly
- random:
  - repeat 1:
    - narrate "Hello"
    - narrate "How are you?"
  - repeat 1:
    - narrate "Hey"
    - narrate "It is a nice day."
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/RandomCommand.java#L24
NameRedis
Syntaxredis [id:<ID>] [connect:<host> (auth:<secret>) (port:<port>/{6379}) (ssl:true/{false})/disconnect/subscribe:<channel>|.../unsubscribe/publish:<channel> message:<message>/command:<command> (args:<arg>|...)]
Short DescriptionInteracts with a Redis server.
Full DescriptionThis command is used to interact with a redis server. It can run any standard redis commands as well as subscribe for pub/sub redis channel notifications.

Redis is a simple key/value data store that is typically used for caching and sending data between servers.
The redis server runs in memory, meaning requests are insanely fast. If you run redis locally, you can expect responses to take under a millisecond.
It is normally advised to run commands as ~waitable (see Language:~waitable), but because of the usual fast responses when the server is on localhost, you can also run commands without ~waiting.

When running commands, make sure to escape unpredictable values such as player input.
Alternatively, include the main redis command as the 'command' input and further arguments as a ListTag input for 'args'.

This command supports subscribing to pub/sub redis channels. This allows you to listen to published messages to redis from any source, including other servers.
When you subscribe to a channel, matching messages sent to the channel will trigger the Event:redis pubsub message event.
Connections that are subscribed to channels get tied up listening for messages and are unavailable to run redis commands.
The channels you subscribe to support wildcard (*) matchers and other patterns, defined by the redis docs: 🔗https://redis.io/commands/psubscribe

Note: Make sure there are at least a few ticks between opening a subscription and closing it, otherwise strange behavior will occur.

You can publish messages to listening subscribers via publish:<channel> message:<message>.
Note that this has to be done on a separate redis connection if it is already subscribed.
Saving the result of this call returns the number of connected subscribers the message was sent to.

The redis command is merely a wrapper, and further usage details should be gathered from an official redis command reference rather than from Denizen command help.
You can view the official redis documentation and the supported commands here: 🔗https://redis.io/
Related Tags<entry[saveName].result> returns an ElementTag or ListTag of the results of your command, depending on the redis command you ran.
<util.redis_connections> Returns a list of all Redis connections opened by Command:redis.
Usage Example
# Use to connect to a Redis server.
- ~redis id:name connect:localhost
Usage Example
# Use to connect to a Redis server with a secret auth key.
- ~redis id:name connect:localhost auth:<secret[my_redis_secret]>
Usage Example
# Use to connect to a Redis server over ssl.
- ~redis id:name connect:localhost port:6380 ssl:true
Usage Example
# Set a key/value pair in the Redis server.
- ~redis id:name "command:set my_key my_value"
Usage Example
# Delete the "foo" key.
- ~redis id:name "command:del my_key"
Usage Example
# Set a key that auto-expires in 60 seconds.
- ~redis id:name "command:setex my_key 60 'value with spaces'"
Usage Example
# Run a command with unpredictable input.
- ~redis id:name command:set args:<list[my_key].include_single[<context.message>]>
Usage Example
# Get a key's value.
- ~redis id:name "command:get my_key" save:result
Usage Example
# Get a key's value in the background via a waitable.
- ~redis id:name "command:get my_key" save:result
Usage Example
# Append values to the front or back of a redis list.
- ~redis id:name "command:rpush my_list a"
- ~redis id:name "command:rpush my_list b"
- ~redis id:name "command:lpush my_list c"
Usage Example
# Retrieve a ListTag of the members stored in a redis list (0 is the start of the list, -1 is the end).
- ~redis id:name "command:lrange my_list 0 -1"
Usage Example
# Subscribe to a redis channel. This will match published messages to channel_1, channel_foo, etc.
- ~redis id:name subscribe:channel_*
Usage Example
# Subscribe to multiple redis channels. Supports wildcards for any list entry.
- ~redis id:name subscribe:a|b*|c|d
Usage Example
# Publish a message to a redis channel. This will trigger the <@link event redis pubsub message> event for any subscribed connections for any server.
- ~redis id:name publish:channel_1 "message:hey look something happened"
Usage Example
# Unsubscribe from a redis channel. Leaves the connection intact.
- redis id:name unsubscribe
Usage Example
# Disconnect from redis.
- redis id:name disconnect
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/RedisCommand.java#L25
NameReflectionSet
Syntaxreflectionset [object:<object>] [field:<name>] (value:<value>)
Short DescriptionSets a field on an object to a given value, or null.
Full DescriptionGive a ObjectType:JavaReflectedObjectTag as the object, a field name, and a value (or leave off for null) to set the value of a field on that object.

Uses reflection to set, and so can bypass 'private' or 'final' field limits if permitted by config.

If the value is fed as a general ObjectTag, automatic conversion will be attempted.
If automatic conversion is not possible, you must pass a ObjectType:JavaReflectedObjectTag with the appropriate type as the value.

Requires config setting "Reflection.Allow set command".
Related Tags<ObjectTag.reflected_internal_object> Returns the reflected internal Java object for a given ObjectTag.
Usage Example
# Use to change Bukkit's reference to a world's environment to the_end.
- narrate <world[world].environment>
- define obj <world[world].reflected_internal_object>
- narrate <[obj].reflect_field[environment].interpret>
- reflectionset object:<[obj]> field:environment value:the_end
- narrate <world[world].environment>
- narrate <[obj].reflect_field[environment].interpret>
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/ReflectionSetCommand.java#L30
NameReload
Syntaxreload ({scripts}/scripts_now/config/saves/notes)
Short DescriptionReloads all Denizen scripts. Primarily for use as an in-game command.
Full DescriptionReloads all Denizen scripts.
Primarily for use as an in-game command, like "/ex reload".

By default, reloads scripts in a way that may delay a few ticks to avoid interrupting the server on large reloads.

Optionally, specify "scripts_now" to force a locked reload (server freezes until reloaded).

You can specify "config", "saves", or "notes" to reload that data instead of scripts.

When using 'scripts' (default), the reload command is ~waitable. Refer to Language:~waitable.
Related TagsNone
Usage Example
# Use to reload scripts automatically
- reload
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/ReloadCommand.java#L25
NameRemove
Syntaxremove [<entity>|...] (world:<world>)
Short DescriptionDespawns an entity or list of entities, permanently removing any NPCs.
Full DescriptionRemoves the selected entity. May also take a list of entities to remove.

Any NPC removed this way is completely removed, as if by '/npc remove'.
For temporary NPC removal, see Command:despawn.

If a generic entity name is given (like 'zombie'), this will remove all entities of that type from the given world.
Optionally, you may specify a world to target.
(Defaults to the world of the player running the command)
Related Tags<EntityTag.is_spawned> Returns whether the entity is spawned.
Usage Example
# Use to remove the entity the player is looking at.
- remove <player.target>
Usage Example
# Use to remove all nearby entities around the player, excluding the player itself.
- remove <player.location.find_entities.within[10].exclude[<player>]>
Usage Example
# Use to remove all dropped items in the world called cookies.
- remove dropped_item world:cookies
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/RemoveCommand.java#L28
NameReset
Syntaxreset (<player>|...) [cooldown/global_cooldown] (<script>)
Short DescriptionResets various parts of Denizen's interact save data, including a script's cooldowns.
Full DescriptionThis command can reset save data for a player, or globally.

The "cooldown" argument removes the player's cooldown for a specific script,
as set by Command:cooldown.

The "global_cooldown" argument removes all cooldowns for the specified script (not player-specific).
Related TagsNone
Usage Example
# Use to reset all cooldowns for a script when an event that limits usage completes.
- reset global_cooldown MyScriptName
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/core/ResetCommand.java#L23
NameResourcePack
Syntaxresourcepack [url:<url>] [hash:<hash>] (forced) (prompt:<text>) (targets:<player>|...)
Short DescriptionPrompts a player to download a server resource pack.
Full DescriptionSets the current resource pack by specifying a valid URL to a resource pack.

The player will be prompted to download the pack, with the optional prompt text or a default vanilla message.
Once a player says "yes" once, all future packs will be automatically downloaded. If the player selects "no" once, all future packs will automatically be rejected.
Players can change the automatic setting from their server list in the main menu.

Use "hash:" to specify a 40-character (20 byte) hexadecimal SHA-1 hash value (without '0x') for the resource pack to prevent redownloading cached data.
Specifying a hash is required, though you can get away with copy/pasting a fake value if you don't care for the consequences.
There are a variety of tools to generate the real hash, such as the `sha1sum` command on Linux, or using the 7-Zip GUI's Checksum option on Windows.

Specify "forced" to tell the vanilla client they must accept the pack or quit the server. Hacked clients may still bypass this requirement.

"Forced" and "prompt" inputs only work on Paper servers.

Optionally specify players to send the pack to. If unspecified, will use the linked player.

See also Event:resource pack status.
Related TagsNone
Usage Example
# Use to send a resource pack with a pre-known hash.
- resourcepack url:https://example.com/pack.zip hash:0102030405060708090a0b0c0d0e0f1112131415
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/ResourcePackCommand.java#L28
NameResume
Syntaxresume [waypoints/activity] (<duration>)
Short DescriptionResumes an NPC's waypoint navigation or goal activity temporarily or indefinitely.
Full DescriptionThe resume command resumes an NPC's waypoint navigation or goal activity temporarily or indefinitely.
This works along side Command:pause.
See the documentation of the pause command for more details.
Related Tags<NPCTag.is_navigating> Returns whether the NPC is currently navigating.
Usage Example
# Use to pause an NPC's waypoint navigation and then resume it.
- pause waypoints
- resume waypoints
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/PauseCommand.java#L71
NameRotate
Syntaxrotate (cancel) (<entity>|...) (yaw:<#.#>) (pitch:<#.#>) (infinite/duration:<duration>) (frequency:<duration>)
Short DescriptionRotates a list of entities.
Full DescriptionInduces incremental rotation on a list of entities over a period of time.

The yaw and pitch arguments specify how much the entity will rotate each step. Default to 10 and 0 respectively.

The frequency argument specifies how long it takes between each rotation step. Defaults to 1t.

The duration argument specifies how long the whole rotation process will last. Defaults to 1s.
Alternatively, use "infinite" if you want the entity to spin forever.

You can use "cancel" to prematurely stop the ongoing rotation (useful when set to infinite)

The rotate command is ~waitable. Refer to Language:~waitable.
Related Tags<EntityTag.location> Returns the location of the entity. (...)
Usage Example
# Use to rotate the player's yaw by 10 every tick for 3 seconds total
- rotate <player> duration:3s
Usage Example
# Use to rotate the player's pitch by 20 every 5 ticks for a second total
- rotate <player> yaw:0.0 pitch:20.0 frequency:5t
Usage Example
# Use to prematurely stop the player's rotation
- rotate cancel <player>
Synonyms (Search Aid)spin
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/RotateCommand.java#L30
NameRun
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/run-options.html
Syntaxrun [<script>] (path:<name>) (def:<element>|.../defmap:<map>/def.<name>:<value>) (id:<name>) (speed:<value>/instantly) (delay:<value>)
Short DescriptionRuns a script in a new queue.
Full DescriptionRuns a script in a new queue.

You must specify a script object to run.

Optionally, use the "path:" argument to choose a specific sub-path within a script.

Optionally, use the "def:" argument to specify definition values to pass to the script,
the definitions will be named via the "definitions:" script key on the script being ran,
or numerically in order if that isn't specified (starting with <[1]>).

Alternately, use "defmap:<map>" to specify definitions to pass as a MapTag, where the keys will be definition names and the values will of course be definition values.

Alternately, use "def.<name>:<value>" to define one or more named definitions individually.

Optionally, use the "speed:" argument to specify the queue command-speed to run the target script at,
or use the "instantly" argument to use an instant speed (no command delay applied).
If neither argument is specified, the default queue speed applies (normally instant, refer to the config file).
Generally, prefer to set the "speed:" script key on the script to be ran, rather than using this argument.

Optionally, use the "delay:" argument to specify a delay time before the script starts running.

Optionally, specify the "id:" argument to choose a custom queue ID to be used.
If none is specified, a randomly generated one will be used. Generally, don't use this argument.

The run command is ~waitable. Refer to Language:~waitable.
Related Tags<entry[saveName].created_queue> returns the queue that was started by the run command.
Usage Example
# Use to run a task script named 'MyTask'.
- run MyTask
Usage Example
# Use to run a task script named 'MyTask' that isn't normally instant, instantly.
- run MyTask instantly
Usage Example
# Use to run a local subscript named 'alt_path'.
- run <script> path:alt_path
Usage Example
# Use to run 'MyTask' and pass 3 definitions to it.
- run MyTask def:A|Second_Def|Taco
Usage Example
# Use to run 'MyTask' and pass 3 named definitions to it.
- run MyTask def.count:5 def.type:Taco def.smell:Tasty
Usage Example
# Use to run 'MyTask' and pass a list as a single definition.
- run MyTask def:<list_single[<list[a|big|list|here]>]>
# MyTask can then get the list back by doing:
- define mylist <[1]>
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/RunCommand.java#L31
NameRunLater
Syntaxrunlater [<script>] (path:<name>) [delay:<duration>] (id:<id>) (def:<element>|.../defmap:<map>/def.<name>:<value>)
Short DescriptionCauses a task to run sometime in the future, even if the server restarts.
Full DescriptionCauses a task to run sometime in the future, even if the server restarts.

Script, path, and definition inputs work the exact same as with Command:run.

This command will store intended script runs to a file, so that even if the server restarts, they will still run.
Script runs are guaranteed to happen after the time is up - if the server is turned off at the scheduled time, they will run at next startup.
The guarantee can be broken if the server crashes or other errors occur.

The delay input is a DurationTag instance, that is relative to system time (not server delta time).

Definitions and queue object links will be preserved, so long as they remain valid at time of execution.
Objects that are lost before the delay is up (such as a linked NPC that is removed) may cause errors.

You can optionally specify the "id" argument to provide a unique tracking ID for the intended future run, which can then also be used to cancel it via Mechanism:system.cancel_runlater.
If you use IDs, they must be unique - you cannot have the same ID scheduled twice. Use Tag:util.runlater_ids if you need to dynamically check if an ID is in use.

Implementation note: the system that tracks when scripts should be ran is a fair bit more optimized than 'wait' commands or the 'run' command with a delay,
specifically for the case of very large delays (hours or more) - in the short term, 'wait' or 'run' with a delay will be better.
Related Tags<util.runlater_ids> Returns a list of all scheduled task IDs for Command:runlater. (...)
Usage Example
# Use to run a task script named 'example' 3 days later.
- runlater example delay:3d
Usage Example
# Use to run a task script named 'my_task' 5 hours later with definition 'targets' set to a list of all the players that were near the player before the delay.
- runlater my_task delay:5h def.targets:<player.location.find_players_within[50]>
Usage Example
# Use to plan to go for a jog tomorrow then change your mind after 5 seconds.
- runlater go_for_jog id:healthy_plan delay:1d
- wait 5s
- adjust system cancel_runlater:healthy_plan
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/RunLaterCommand.java#L36
NameSchematic
Syntaxschematic [create/load/unload/rotate/save/flip_x/flip_y/flip_z/paste (fake_to:<player>|... fake_duration:<duration>) (noair) (mask:<material_matcher>)] [name:<name>] (filename:<name>) (angle:<#>) (<location>) (area:<area>) (delayed) (max_delay_ms:<#>) (entities) (flags)
Short DescriptionCreates, loads, pastes, and saves schematics (Sets of blocks).
Full DescriptionCreates, loads, pastes, and saves schematics. Schematics are files containing info about blocks and the order of those blocks.

Denizen offers a number of tools to manipulate and work with schematics.
Schematics can be rotated, flipped, pasted with no air, or pasted with a delay.

All schematic command usages must specify the "name" argument, which is a unique global identifier of the schematic in memory.
This will be created by "create" or "load" options, and persist in memory until "unload" is used (or the server is restarted).

The 'create' option requires an area and a center location as input.
The area can be defined as any valid ObjectType:AreaObject, such as a CuboidTag.
Note that all schematics are internally tracked as cuboids, and other area shapes will only constrain the copy region.
Note that the block boundaries of non-cuboid regions are defined by whether the region definition contains the center of a block.
This will create a new schematic in memory based on world data.

The "rotate angle:#" and "flip_x/y/z" options will apply the change to the copy of the schematic in memory, to later be pasted or saved.
This will rotate the set of blocks itself, the relative origin, and any directional blocks inside the schematic.
Rotation angles must be a multiple of 90 degrees.

When using 'paste', you can specify 'angle:#' to have that paste rotated, without rotating the original schematic.

The "delayed" option makes the command non-instant. This is recommended for large schematics.
For 'save', 'load', and 'rotate', this processes async to prevent server lockup.
For 'paste' and 'create', this delays how many blocks can be processed at once, spread over many ticks.
Optionally, specify 'max_delay_ms' to control how many milliseconds the 'delayed' set can run for in any given tick (defaults to 50) (for create/paste only).

The "load" option by default will load '.schem' files. If no '.schem' file is available, will attempt to load a legacy '.schematic' file instead.

For load and save, the "filename" option is available to specify the name of the file to look for.
If unspecified, the filename will default to the same as the "name" input.

The "noair" option skips air blocks in the pasted schematics- this means those air blocks will not replace any blocks in the target location.

The "mask" option can be specified to limit what block types the schematic will be pasted over.
When using "create" and "mask", any block that doesn't match the mask will become a structure void.

The "fake_to" option can be specified to cause the schematic paste to be a fake (packet-based, see Command:showfake)
block set, instead of actually modifying the blocks in the world.
This takes an optional duration as "fake_duration" for how long the fake blocks should remain.

The "create" and "paste" options allow the "entities" argument to be specified - when used, entities will be copied or pasted.
At current time, entity types included will be: Paintings, ItemFrames, ArmorStands.

The "create" option allows the "flags" argument to be specified - when used, block location flags will be copied.

The schematic command is ~waitable as an alternative to 'delayed' argument. Refer to Language:~waitable.

To delete a schematic file, use Mechanism:server.delete_file.
Related Tags<schematic[<name>].height> Returns the height (Y) of the schematic.
<schematic[<name>].length> Returns the length (Z) of the schematic.
<schematic[<name>].width> Returns the width (X) of the schematic.
<schematic[<name>].block[<location>]> Returns the material for the block at the location in the schematic. (...)
<schematic[<name>].origin> Returns the origin location of the schematic.
<schematic[<name>].blocks> Returns the number of blocks in the schematic.
<schematic[<name>].exists> Returns whether the schematic exists.
<schematic[<name>].cuboid[<origin_location>]> Returns a cuboid of where the schematic would be if it was pasted at an origin.
<schematic.list> Returns a list of all loaded schematics.
Usage Example
# Use to create a new schematic from a cuboid and an origin location.
- schematic create name:MySchematic area:<[my_cuboid]> <player.location>
Usage Example
# Use to load a schematic.
- ~schematic load name:MySchematic
Usage Example
# Use to unload a schematic.
- schematic unload name:MySchematic
Usage Example
# Use to paste a loaded schematic with no air blocks.
- schematic paste name:MySchematic <player.location> noair
Usage Example
# Use to save a created schematic.
- ~schematic save name:MySchematic
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/SchematicCommand.java#L58
NameScoreboard
Syntaxscoreboard ({add}/remove) (viewers:<player>|...) (lines:<player>/<text>|...) (id:<value>/player/{main}) (objective:<value>) (criteria:<criteria>/{dummy}) (score:<#>) (displayslot:<value>/{sidebar}/none) (displayname:<name>) (rendertype:<type>)
Short DescriptionAdd or removes viewers, objectives and scores from scoreboards.
Full DescriptionLets you make players see a certain scoreboard and then a certain objective in that scoreboard.
Please note that a 'scoreboard' is NOT a 'sidebar' - if you want that thing where text is on the right side of the screen, use Command:sidebar.
'Scoreboard' is the underlying internal system that powers sidebars, below_name plates, team prefixing, and a lot of other systems. Generally, you should avoid using this command directly.

The ID can be 'main' for the global default scoreboard, 'player' for the attached player's current scoreboard, or any other value for a custom named scoreboard.

There are currently three slots where objectives can be displayed:
in the sidebar on the right of the screen, below player names and in the player list that shows up when you press Tab.
The names of these slots can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/scoreboard/DisplaySlot.html

Every objective has several lines of scores.
Technically, the lines track players, but fake player names can be used by Denizen to let you call the lines anything you want.

When using the sidebar as the display slot, all the scores set for an objective will be displayed there,
but you will need to put actual player names in the lines to be able to use
the below_name display slot (which displays each player's score underneath his/her name) and
the player_list display slot (which displays each player's score to the right of his/her name in the player list).

If you do not specify a display slot, the sidebar will be used. You can also use "none" as the
display slot if you want to add a hidden objective without automatically making it get displayed.
If the object already exists, and you don't specify the display slot, it will use the existing setting.

When setting an objective, you can also optionally set the display name by using the "displayname:" argument.

"Rendertype" can be "INTEGER" or "HEARTS". Defaults to integer.

You can set scores manually, or you can use different Minecraft criteria that set and update the scores automatically.
A list of these criteria can be found here: 🔗https://minecraft.wiki/w/Scoreboard#Objectives
If the object already exists, and you don't specify the criteria, it will use the existing setting.

You can use the "remove" argument to remove different parts of scoreboards.
The more arguments you use with it, the more specific your removal will be.
For example, if you only use the "remove" argument and the "id" argument, you will completely remove all the objectives in a scoreboard,
but if you specify an objective as well, you will only delete that one objective from that scoreboard,
and if you also specify certain lines, you will only delete those specific lines from that objective.
Similarly, if you use the "remove" argument along with the "id" and "viewers" arguments, you will only remove those viewers from the scoreboard, not the entire scoreboard.
Related Tags<server.scoreboard[(<board>)].exists> Returns whether a given scoreboard exists on the server.
<server.scoreboard[(<board>)].team[<team>].members> Returns a list of all members of a scoreboard team. Generally returns as a list of names or text entries. (...)
<PlayerTag.scoreboard_id> Returns the ID of the scoreboard from Command:scoreboard that a player is currently viewing, if any.
Usage Example
# Add a score for the defined player to the default scoreboard under the objective "cookies" and let him see it
- scoreboard add obj:cookies lines:joe score:1000 viewers:<[aplayer]>
Usage Example
# Add a new current objective called "food" to the "test" scoreboard with 3 lines that each have a score of 50:
- scoreboard add id:test obj:food lines:Cookies|Donuts|Cake score:50
Usage Example
# Make a list of players see the scoreboard that has the id "test":
- scoreboard add viewers:<[player]>|<[aplayer]>|<[thatplayer]> id:test
Usage Example
# Change the value of one of the scores in the "food" objective:
- scoreboard add id:test obj:food lines:Cake score:9000
Usage Example
# Remove one of the lines from the "food" objective in the "test" scoreboard
- scoreboard remove obj:food lines:Donuts
Usage Example
# Remove one of the viewers of the "test" scoreboard:
- scoreboard remove viewers:<[aplayer]>
Usage Example
# Make the defined player see the health of other players below their names
- scoreboard add viewers:<[player]> id:test obj:anything criteria:health displayslot:below_name
Usage Example
# Make all the players on the world "survival" see each other's number of entity kills in the player list when pressing Tab
- scoreboard add viewers:<world[survival].players> id:test obj:anything criteria:totalKillCount displayslot:player_list
Groupserver
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/server/ScoreboardCommand.java#L34
NameShoot
Syntaxshoot [<entity>|...] (origin:<entity>/<location>) (destination:<location>) (height:<#.#>) (speed:<#.#>) (script:<name>) (def:<element>|...) (shooter:<entity>) (spread:<#.#>) (lead:<location>) (no_rotate)
Short DescriptionShoots an entity through the air, useful for things like firing arrows.
Full DescriptionShoots an entity through the air up to a certain height, optionally triggering a script on impact with a target.

The launch has three modes: arc, lead, and direct.

The "arc" mode calculates a launch arc to exactly hit the target location.
If you want to use this, specify the "height" argument as how high the arc should go, in blocks.
Do not specify "speed" or "lead".
You can optionally specify a custom "gravity" (hidden from syntax line intentionally) if you know what you're doing and really need to.

The "lead" mode calculates a modified arc intended to hit a target based on a lead factor (usually the entity's velocity).
To use, specify the "lead" argument as a vector and "speed" as a launch speed.
Do not specify "height".

Generally, most users should prefer direct mode: it just launches straight in the direction of the destination, at the speed you specify.
To use this, just input the "speed" argument, and don't specify "height" or "lead".

If the origin is not an entity, you can specify a "shooter" so the damage handling code knows who to assume shot the projectile.

Normally, a list of entities will spawn mounted on top of each other. To have them instead fire separately and spread out,
specify the "spread" argument with a decimal number indicating how wide to spread the entities.

Optionally, add "no_rotate" to prevent the shoot command from rotating launched entities.

Use the "script:<name>" argument to run a task script when the projectiles land.
When that script runs, the following definitions will be available:
<[shot_entities]> for all shot entities (as in, the projectiles),
<[last_entity]> for the last one (The controlling entity),
<[location]> for the last known location of the last shot entity, and
<[hit_entities]> for a list of any entities that were hit by fired projectiles.

The shoot command is ~waitable. Refer to Language:~waitable.

Note that for ~waiting or the "script" arg, tracking is only accurate for projectile entities (such as arrows). This will be inaccurately estimated for other entity types.
Related Tags<entry[saveName].shot_entity> returns the single entity that was shot (as in, the projectile) (if you only shot one).
<entry[saveName].shot_entities> returns a ListTag of entities that were shot (as in, the projectiles).
<entry[saveName].hit_entities> returns a ListTag of entities that were hit (if any). (Only works when you ~wait for the command).
<entry[saveName].location> returns the last known location of the last shot entity. (Only works when you ~wait for the command).
Usage Example
# Use to shoot an arrow from the NPC to perfectly hit the player.
- shoot arrow origin:<npc> destination:<player.location>
Usage Example
# Use to shoot an arrow out of the player with a given speed.
- shoot arrow origin:<player> speed:2
Synonyms (Search Aid)launch
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/ShootCommand.java#L52
NameShowFake
Syntaxshowfake [<material>|.../cancel] [<location>|...] (players:<player>|...) (d:<duration>{10s})
Short DescriptionMakes the player see a block change that didn't actually happen.
Full DescriptionMakes the player see a block change that didn't actually happen.
This means that the server will still register the block being what it was before the command,
and players not included in the command will still see the original block.

You must specify a location (or list of locations), and a material (or list of materials).
The material list does not have to be of the same size as the location list (materials will be repeated automatically).

Optionally, specify a list of players to show the change to.
If unspecified, will default to the linked player.

Optionally, specify how long the fake block should remain for.
If unspecified, will default to 10 seconds.
After the duration is up, the block will revert back to whatever it really is (on the server-side).

Note that while the player will see the block as though it were real, the server will have no knowledge of this.
This means that if the player, for example, stands atop a fake block that the server sees as air, that player will be seen as flying.
The reverse applies as well: if a player walks through fake air (that is actually solid), the server will see a player walking through walls.
This can easily lead to players getting kicked by anti-cheat systems or similar results.
You can enable the player to walk through fake air via Mechanism:PlayerTag.noclip.
Note as well that some clientside block effects may occur (eg fake fire may appear momentarily to actually ignite things, but won't actually damage them).

Warning: extremely complex chunks (those with a significant variety of block types in a small area) might not be able to retain fake blocks over time properly.
Related Tags<PlayerTag.fake_block_locations> Returns a list of locations that the player will see a fake block at, as set by Command:showfake or connected commands.
<PlayerTag.fake_block[<location>]> Returns the fake material that the player will see at the input location, as set by Command:showfake or connected commands. (...)
Usage Example
# Use to place a fake gold block at where the player is looking
- showfake gold_block <player.cursor_on>
Usage Example
# Use to place a stone block right on player's head, that only stays for a second.
- showfake stone <player.location.add[0,1,0]> duration:1s
Usage Example
# Use to place fake lava that the player is standing in, for all the server to see
- showfake lava <player.location> players:<server.online_players>
Synonyms (Search Aid)fakeblock
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/ShowFakeCommand.java#L31
NameSign
Syntaxsign (type:{automatic}/sign_post/wall_sign) (material:<material>) [<line>|...] [<location>] (direction:north/east/south/west)
Short DescriptionModifies a sign.
Full DescriptionModifies a sign that replaces the text shown on it. If no sign is at the location, it replaces the location with the modified sign.

Specify 'automatic' as a type to use whatever sign type and direction is already placed there.
If there is not already a sign there, defaults to a sign_post.

Optionally specify a material to use. If not specified, will use an oak sign (unless the block is already a sign, and 'type' is 'automatic').

The direction argument specifies which direction the sign should face.
If a direction is not specified, and there is not already a sign there for 'automatic', the direction defaults to south.
If a sign_post is placed, you can specify any specific blockface value as the direction, eg "SOUTH_WEST".
See also Tag:MaterialTag.valid_directions (test in-game for example via "/ex narrate <material[oak_sign].valid_directions>").
Related Tags<LocationTag.sign_contents> Returns a list of lines on a sign.
Usage Example
# Use to edit some text on an existing sign.
- sign "Hello|this is|some|text" <context.location>
Usage Example
# Use to show the time on a sign and ensure that it points north.
- sign "I point|North.|System Time<&co>|<util.time_now.formatted>" <[location]> direction:north
Usage Example
# Use to place a new wall_sign regardless of whether there is already a sign there.
- sign type:wall_sign "Player<&co>|<player.name>|Online Players<&co>|<server.online_players.size>" <player.location>
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/SignCommand.java#L29
NameSneak
Syntaxsneak [<entity>|...] ({start}/stop) (fake/stopfake) (for:<player>|...)
Short DescriptionCauses the entity to start or stop sneaking.
Full DescriptionCauses an entity to start or stop sneaking.
If the entity is NPC, adds the SneakingTrait to apply the sneak setting persistent.

Can optionally use the 'fake' argument to apply a fake sneak using packets, either globally or for specific players.
Use 'stopfake' to disable faking of sneak.
A fake sneak only affects the name plate, not the entity's pose.

Note: using this command on a player will only show to other players. You cannot alter a player in their own view.
Note that Property:EntityTag.is_sneaking is also available.
Related Tags<EntityTag.is_sneaking> (Property) Whether an entity is sneaking. (...)
Usage Example
# Make the linked NPC start sneaking.
- sneak <npc>
Usage Example
# Make the linked NPC stop sneaking.
- sneak <npc> stop
Synonyms (Search Aid)crouch, shift
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/SneakCommand.java#L30
NameSpawn
Syntaxspawn [<entity>|...] (<location>) (target:<entity>) (persistent) (reason:<reason>)
Short DescriptionSpawns a list of entities at a certain location.
Full DescriptionSpawn an entity or list of entities at the specified location.

Accepts the 'target:<entity>' argument which will cause all spawned entities to follow and attack the targeted entity.

If the persistent argument is present, the entity will not despawn when no players are within range, causing the entity to remain until killed.

Optionally specify 'reason:<reason>' (Paper only) to specify the reason an entity is spawning for the 'entity spawns' event,
using any reason from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/CreatureSpawnEvent.SpawnReason.html

If the location isn't specified, will use either the linked NPC's location, or the linked player's location.
Related Tags<EntityTag.is_spawned> Returns whether the entity is spawned.
<server.entity_types> Returns a list of all entity types known to the server. (...)
<entry[saveName].spawned_entities> returns a list of entities that were spawned.
<entry[saveName].spawned_entity> returns the entity that was spawned (if you only spawned one).
Usage Example
# Use to spawn a spider at the player's location.
- spawn spider <player.location>
Usage Example
# Use to spawn a spider at the player's location which will automatically target the player.
- spawn spider <player.location> target:<player>
Usage Example
# Use to spawn a swarm of creepers around the npc, which will not despawn until killed.
- spawn creeper|creeper|creeper|creeper|creeper <npc.location> persistent
Synonyms (Search Aid)summon
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/SpawnCommand.java#L32
NameSQL
Syntaxsql [id:<ID>] [disconnect/connect:<server> (username:<username>) (password:<secret>) (ssl:true/{false})/query:<query>/update:<update>]
Short DescriptionInteracts with a MySQL server.
Full DescriptionThis command is used to interact with a MySQL server. It can update the database or query it for information.

This commands exists primarily for interoperability with pre-existing databases and external services.
It should never be used for storing data that only Denizen needs to use. Consider instead using Command:flag.

The general usage order is connect -> update/query -> disconnect.
It is not required that you disconnect right after using, and in fact encouraged that you keep a connection open where possible.

When connecting, the server format is IP:Port/Database, EG 'localhost:3306/test'.
You can also append options to the end, like 'localhost:3306/test?autoReconnect=true'
Store your password in the Denizen secrets file at 'plugins/Denizen/secrets.secret'. Refer to ObjectType:SecretTag for usage info.

You can switch whether SSL is used for the connection (defaults to false).

Note that when using tag, it is recommended you escape unusual inputs to avoid SQL injection.

The SQL command is merely a wrapper for SQL queries, and further usage details should be gathered from an official MySQL query reference rather than from Denizen command help.

SQL connections are not instant - they can take several seconds, or just never connect at all.
It is recommended you hold the command by doing "- ~sql ..." rather than just "- sql ..."
as this will delay the commands following the SQL command until after the SQL operation is complete.

If you have an SQL database server other than MySQL, be sure to include the driver prefix (defaults to "mysql://" when unspecified).
Related Tags<entry[saveName].result_list> returns a ListTag with (for each row retrieved) another ListTag. So if you would want to get the second column of the first row, you'd use <entry[saveName].result_list.get[1].get[2]>.
<entry[saveName].result_map> returns a ListTag with (for each row retrieved) a MapTag. So for example <entry[saveName].result_map.get[1].get[UUID]> for the UUID column of the first row.
<entry[saveName].affected_rows> returns how many rows were affected by an update command.
<util.sql_connections> Returns a list of all SQL connections opened by Command:sql.
Usage Example
# Use to connect to an SQL server.
- ~sql id:name connect:localhost:3306/test username:space password:<secret[sql_pw]>
Usage Example
# Use to connect to an SQL server over an SSL connection.
- ~sql id:name connect:localhost:3306/test username:space password:<secret[sql_pw]> ssl:true
Usage Example
# Use to connect to an SQL server with a UTF8 text encoding.
- ~sql id:name connect:localhost:3306/test?characterEncoding=utf8 username:space password:<secret[sql_pw]>
Usage Example
# Use to update an SQL server.
- ~sql id:name "update:CREATE table things(id int,column_name1 varchar(255),column_name2 varchar(255));"
Usage Example
# Use to update an SQL server.
- ~sql id:name "update:INSERT INTO things VALUES (3, 'hello', 'space');"
Usage Example
# Use to query an SQL server.
- ~sql id:name "query:SELECT id,column_name1,column_name2 FROM things;" save:saveName
- narrate <entry[saveName].result_list>
Usage Example
# Use to query an SQL server.
- ~sql id:name "query:SELECT id,column_name1,column_name2 FROM things WHERE id=3;" save:saveName2
- narrate <entry[saveName2].result_list>
Usage Example
# Use to disconnect from an SQL server.
- sql disconnect id:name
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/SQLCommand.java#L35
NameStand
Syntaxstand
Short DescriptionCauses the NPC to stand up from sitting or sleeping.
Full DescriptionMakes the linked NPC stop sitting or sleeping.
To make them sit, see Command:Sit.
To make them sleep, see Command:Sleep.
Related TagsNone
Usage Example
# Make the linked NPC stand up.
- stand
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/StandCommand.java#L23
NameStatistic
Syntaxstatistic [<statistic>] [add/take/set] (<#>) (qualifier:<material>/<entity>)
Short DescriptionChanges the specified statistic value for a player.
Full DescriptionChanges the specified statistic for the player.
For more info on statistics, see 🔗https://minecraft.wiki/w/Statistics
For statistic names, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Statistic.html

You can add, take, or set a numeric value to the statistic for the linked player.
Works with offline players.

Some statistics are unique per a material or entity - for those, use the "qualifier" argument.
Related Tags<PlayerTag.statistic[<statistic>]> Returns the player's current value for the specified statistic. (...)
<PlayerTag.statistic[<statistic>].qualifier[<material>/<entity>]> Returns the player's current value for the specified statistic, with the (...)
Usage Example
# Use to hide the evidence of all the animal breeding you've done.
- statistic animals_bred set 0
Usage Example
# Use to pretend you just ran a 5k.
- statistic walk_one_cm add 500000
Usage Example
# Use to make it look like that challenge course wasn't even hard for you at all.
- statistic deaths take 200
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/StatisticCommand.java#L27
NameTake
Syntaxtake [iteminhand/cursoritem/bydisplay:<name>/bycover:<title>|<author>/slot:<slot>/flagged:<flag>/item:<matcher>] (quantity:<#>) (from:<inventory>)
Short DescriptionTakes an item from the player.
Full DescriptionTakes items from a player or inventory.

If the player or inventory does not have the item being taken, nothing happens.

Using 'slot:' will take the items from that specific slot.

Using 'flagged:' with a flag name will take items with the specified flag name, see Language:flag system.

Using 'iteminhand' will take from the player's held item slot.

Using 'cursoritem' will take from the player's held cursor item (as in, one that's actively being picked up and moved in an inventory screen).

Using 'bydisplay:' will take items with the specified display name.

Using 'bycover:' will take a written book by the specified book title + author pair.

Using 'raw_exact:' (Intentionally undocumented) will compare all raw details of an item exactly. This is almost always a bad idea to use. DO NOT USE.

Using 'item:' will take items that match an advanced item matcher, using the system behind Language:Advanced Object Matching.

Flagged, Slot, ByDisplay, and Raw_Exact, all take a list as input to take multiple different item types at once.

If no quantity is specified, exactly 1 item will be taken.

Specifying a raw item without any matching method is considered unreliable and should be avoided.

Optionally using 'from:' to specify a specific inventory to take from. If not specified, the linked player's inventory will be used.

The options 'iteminhand' and 'cursoritem' require a linked player and will ignore the 'from:' inventory.

To take xp from a player, use Command:experience.
To take money from a player, use Command:money.
Related Tags<PlayerTag.item_in_hand> Returns the item the entity is holding, or air if none.
Usage Example
# Use to take an arrow from the player's enderchest
- take item:arrow from:<player.enderchest>
Usage Example
# Use to take the current holding item from the player's hand
- take iteminhand
Usage Example
# Use to take 5 emeralds from the player's inventory
- take item:emerald quantity:5
Groupitem
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/item/TakeCommand.java#L41
NameTeam
Syntaxteam (id:<scoreboard>/{main}) [name:<team>] (add:<entry>|...) (remove:<entry>|...) (prefix:<prefix>) (suffix:<suffix>) (option:<type> status:<status>) (color:<color>)
Short DescriptionControls scoreboard teams.
Full DescriptionThe Team command allows you to control a scoreboard team.

Use the "prefix" or "suffix" arguments to modify a team's playername prefix and suffix.

The "entry" value can be a player's name to affect that player, or an entity's UUID to affect that entity.
You can alternately input a raw PlayerTag or EntityTag, and they will be automatically translated to the name/UUID internally.

Use the "color" argument to set the team color (for glowing, names, etc). Must be from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/ChatColor.html.

Use the "add" and "remove" arguments to add or remove players by name to/from the team.

Use the "option" and "status" arguments together to set a team option's status.
Option can be "COLLISION_RULE", "DEATH_MESSAGE_VISIBILITY", or "NAME_TAG_VISIBILITY", with status "ALWAYS", "FOR_OTHER_TEAMS", "FOR_OWN_TEAM", or "NEVER".
Option can instead be "FRIENDLY_FIRE" or "SEE_INVISIBLE", only allowing status "ALWAYS" or "NEVER".
Related Tags<server.scoreboard[(<board>)].team[<team>].members> Returns a list of all members of a scoreboard team. Generally returns as a list of names or text entries. (...)
Usage Example
# Use to add a player to a team.
- team name:red add:<player>
Usage Example
# Use to add some mob to a team.
- team name:blue add:<player.location.find_entities[monster].within[10]>
Usage Example
# Use to change the prefix for a team.
- team name:red "prefix:[<red>Red Team<reset>]"
Usage Example
# Use to hide nameplates for members of a team.
- team name:red option:name_tag_visibility status:never
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/TeamCommand.java#L32
NameTeleport
Syntaxteleport (<entity>|...) [<location>] (cause:<cause>) (entity_options:<option>|...) (relative) (relative_axes:<axis>|...) (offthread_repeat:<#>) (offthread_yaw) (offthread_pitch)
Short DescriptionTeleports the entity(s) to a new location.
Full DescriptionTeleports the entity or entities to the new location.
Entities can be teleported between worlds using this command.
You may optionally specify a teleport cause for player entities, allowing proper teleport event handling. When not specified, this is "PLUGIN". See Language:teleport cause for causes.

Instead of a valid entity, an unspawned NPC or an offline player may also be used.

Optionally specify "relative" to use relative teleportation (Paper only). This is primarily useful only for players, but available for all entities.
Relative teleports are smoother for the client when teleporting over short distances.
Optionally, you may use "relative_axes:" to specify a set of axes to move relative on (and other axes will be treated as absolute), as any of "X", "Y", "Z", "YAW", "PITCH".
Optionally, you may use "offthread_repeat:" with the relative arg when teleporting a player to smooth out the teleport with a specified number of extra async packets sent within a single tick.
Optionally, specify "offthread_yaw" or "offthread_pitch" while using offthread_repeat to smooth the player's yaw/pitch to the new location's yaw/pitch.

Optionally, specify additional teleport options using the 'entity_options:' arguments (Paper only).
This allows things like retaining an open inventory when teleporting - see the links below for more information.
See 🔗https://jd.papermc.io/paper/1.19/io/papermc/paper/entity/TeleportFlag.EntityState.html for all possible options.
Note that the API this is based on is marked as experimental in Paper, and so may change in the future.
Related Tags<EntityTag.location> Returns the location of the entity. (...)
Usage Example
# Use to teleport a player to the location their cursor is pointing at.
- teleport <player> <player.cursor_on>
Usage Example
# Use to teleport a player high above.
- teleport <player> <player.location.above[200]>
Usage Example
# Use to teleport to a random online player.
- teleport <player> <server.online_players.random.location>
Usage Example
# Use to teleport all players to your location.
- teleport <server.online_players> <player.location>
Usage Example
# Use to teleport the NPC to a location that was noted with the <@link command note> command.
- teleport <npc> my_prenoted_location
Usage Example
# Use to teleport a player to some location, and inform events that it was caused by a nether portal.
- teleport <player> <server.flag[nether_hub_location]> cause:nether_portal
Usage Example
# Use to teleport the player without closing their currently open inventory.
- teleport <player> <player.location.below[5]> entity_options:retain_open_inventory
Synonyms (Search Aid)tp
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/TeleportCommand.java#L39
Nametick
Syntaxtick [rate/step/sprint/freeze/reset] (amount:<#.#>/cancel)
Short DescriptionControls the server's tick rate.
Full DescriptionControls the server's tick rate. MC versions 1.20+ only.

The tick rate affects things such as entity movement (including player movement), entity animations, plant growth, etc.
Be careful when setting the tick rate, as a high tick rate can overload the server.
If tick rate is high, crops will grow faster, animations will speed up, and so forth.
Conversely, if the tick rate is low, crops will grow slower, animations will slow down, and entity movement (including player movement) will slow down and appear to be in slow motion.
For a list of all the things that the tick rate affects, see 🔗https://minecraft.wiki/w/Tick

To change the tick rate, use the 'rate' argument and input the amount using 'amount'. The tick rate must be a number between 1.0 and 10000.0 (inclusive).
To reset the tick rate to the normal value (20.0), use the 'reset' argument.

To freeze the tick rate, use the 'freeze' argument. To unfreeze, add the 'cancel' argument.
Freezing the tick rate will cause all entities (except for players and entities that a player is riding) to stop ticking.
This means that entity movement and animations will stop, as well as stop things like crop growth, daylight cycle, etc.

To step the tick rate while the server is frozen for a specific amount of time, use the 'step' argument and input the amount of ticks using 'amount'.
Tick rate stepping is allowing the tick rate to resume for a specific amount of ticks while the server is frozen.
After the amount of specified ticks have passed, the tick rate will refreeze.
Step input should not be a number less than one.
If the server is not frozen when trying to use the 'step' argument, nothing will happen.

To make the tick rate as fast as possible for a specific amount of time, use the 'sprint' argument and input the amount of ticks using 'amount'.
The tick rate will increase as much as possible without overloading the server for the amount of specified ticks.
Sprint input should be not be a number less than one.
For example, if you want to sprint 200 ticks, the tick rate will run 200 ticks as fast as possible and then return to the previous tick rate.
To stop stepping or sprinting early, use the 'cancel' argument.

The tick rate resets to 20.0 on server restart.
For information about tick rate arguments, see 🔗https://minecraft.wiki/w/Commands/tick
Usage Example
# Use to set the tick rate to 30 ticks per second.
- tick rate amount:30
Usage Example
# Use to stop stepping early if the server is currently stepping.
- tick step cancel
Usage Example
# Use to reset tick rate.
- tick reset
Usage Example
# Use to freeze the server.
- tick freeze
Usage Example
# Use to unfreeze the server.
- tick freeze cancel
Groupworld
Warning(s)Be careful, this command will affect plugins that depend on tick rate and may cause them to break. For example, setting the tick rate to 1 will cause the Event:tick event to fire once per second.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/TickCommand.java#L11
NameTrait
Syntaxtrait (state:true/false/{toggle}) [<trait>] (to:<npc>|...)
Short DescriptionAdds or removes a trait from an NPC.
Full DescriptionThis command adds or removes a trait from an NPC.

Use "state:true" to add or "state:false" to remove.
If neither is specified, the default is "toggle", which means remove if already present or add if not.

Note that a redundant instruction, like adding a trait that the NPC already has, will give an error message.

The trait input is simply the name of the trait, like "sentinel".

Optionally, specify a list of NPCs to apply the trait to. If unspecified, the linked NPC will be used.
Related Tags<NPCTag.has_trait[<trait>]> Returns whether the NPC has a specified trait.
<NPCTag.traits> Returns a list of all of the NPC's traits.
<server.traits> Returns a list of all available NPC traits on the server.
Usage Example
# Use to add the Sentinel trait to the linked NPC.
- trait state:true sentinel
Usage Example
# Use to toggle the MobProx trait on the linked NPC.
- trait mobprox
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/TraitCommand.java#L29
NameTrigger
Related Guide Pagehttps://guide.denizenscript.com/guides/npcs/interact-scripts.html
Syntaxtrigger [name:<trigger>] (state:{toggle}/true/false) (cooldown:<duration>) (radius:<#>)
Short DescriptionEnables or disables a trigger.
Full DescriptionThis command enables or disables an interact script trigger for the linked NPC.
This is generally meant to be used within the 'on assignment' action in an assignment script.
This might also be useful on timed activations or other special events (such as an NPC that "goes to bed" at the end of the day,
you might disable the proximity trigger that would otherwise normally show a greeting message).

The "name" argument is required, and can have any supported trigger name.
The 4 triggers available by default are chat, click, damage, and proximity.
For more details of the available trigger types, refer to Language:Interact Script Triggers.

The "state" argument can be 'true' (to enable it), 'false' (to disable it),
or unspecified to toggle it (that is, enable if it's currently off, or disable if it's currently on).

You can specify the "cooldown" argument to set how long the trigger must wait
after any firing before it can be fired again.

You can specify the "radius" argument to set how far away a player can be when activating it.
Note that the way this applies varies from trigger to trigger.
For the "chat" trigger, a large radius can be easily accidentally triggered by unrelated chatter.
For the "proximity" trigger, the radius argument should almost always be specified, as you generally want to control this with care.
For the "click" and "damage" trigger, the radius argument will be ignored.
Related Tags<NPCTag.has_trigger[<trigger>]> Returns whether the NPC has a specified trigger.
Usage Example
# Use to enable the click trigger.
- trigger name:click state:true
Usage Example
# Use to enable the chat trigger with a 10-second cooldown and a radius of 5 blocks.
- trigger name:chat state:true cooldown:10s radius:5
Usage Example
# Use to disable the proximity trigger.
- trigger name:proximity state:false
Groupnpc
RequiresCitizens
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/npc/TriggerCommand.java#L24
NameWaitUntil
Syntaxwaituntil (rate:<duration>) (max:<duration>) [<comparisons>]
Short DescriptionDelays a script until the If comparisons return true.
Full DescriptionDelays a script until the If comparisons return true. Refer to Command:if for if command syntax information.

Optionally, specify an update rate (if unset, will update at queue speed).
The update rate controls how often the tag will be checked. This generally doesn't need to be set, unless you're concerned about script efficiency.
Never set this to faster than queue update rate.

Optionally specify a maximum duration to wait for (delta time).
Related Tags<QueueTag.speed> Returns the speed of the queue as a Duration. A return of '0' implies it is 'instant'. (...)
Usage Example
# Use to delay the current queue until the player respawns (useful in a death event, for example).
- waituntil <player.is_spawned>
Usage Example
# Use to delay the current queue until the player is healed, only checking once per second.
- waituntil rate:1s <player.health> > 15
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/WaitUntilCommand.java#L29
NameWalk
Syntaxwalk (<entity>|...) [<location>/stop] (speed:<#.#>) (auto_range) (radius:<#.#>) (lookat:<location>)
Short DescriptionCauses an entity or list of entities to walk to another location.
Full DescriptionCauses an entity or list of entities to walk to another location.

Specify a destination location to walk to, or 'stop' to stop all walking.

Optionally, specify a "speed:<#.#>" argument to control the speed of the NPCs.

Optionally, specify "auto_range" to automatically set the path range for the walk instruction
(if not specified, an NPC will not be able to walk to a location outside of its existing path range, by default 25 blocks).
(Does not apply to non-NPC entities).

Note that in most cases, the walk command should not be used for paths longer than 100 blocks.
For ideal performance, keep it below 25.

Optionally, specify a list of entities to give them all the same walk instruction at the same time.
If the list is of NPCs, optionally specify a "radius:<#.#>" argument to change the flocking radius.
('Radius' does not apply to non-NPC entities).

Optionally, specify "lookat:<location>" to cause the NPCs to stare at a specific location while walking (as opposed to straight ahead).
('Radius' does not apply to non-NPC entities).

The walk command is ~waitable. Refer to Language:~waitable.
Related Tags<NPCTag.is_navigating> Returns whether the NPC is currently navigating.
<NPCTag.speed> Returns the current speed of the NPC.
<NPCTag.range> Returns the NPC's current maximum pathfinding range.
<NPCTag.target_location> Returns the location the NPC is currently navigating towards (if any).
Usage Example
# Use to make the NPC walk to an anchored position.
- walk <npc> <npc.anchor[spot1]>
Usage Example
# Use to make the NPC walk to an anchored position that may be far away.
- walk <npc> <npc.anchor[spot2]> auto_range
Usage Example
# Use to make the NPC walk to an anchored position while looking backwards.
- walk <npc> <npc.anchor[spot3]> lookat:<npc.anchor[spot2]>
Usage Example
# Use to make the NPC walk to an anchored position, and then say something after arrival, using ~waitable syntax.
- ~walk <npc> <npc.anchor[spot4]>
- chat "I'm here!"
Usage Example
# Use to make a list of NPCs stored in a flag all move together, with a flocking radius based on the number of NPCs included.
- walk <player.flag[squad]> radius:<player.flag[squad].size> <player.location>
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/WalkCommand.java#L35
NameWebget
Syntaxwebget [<url>] (data:<data>) (method:<method>) (headers:<map>) (timeout:<duration>/{10s}) (savefile:<path>) (hide_failure)
Short DescriptionGets the contents of a web page or API response.
Full DescriptionConnects to a webpage or API and downloads its contents, to be used via the save argument and corresponding entry tags.

This should almost always be ~waited for. Refer to Language:~waitable.

Note that while this will replace URL spaces to %20, you are responsible for any other necessary URL encoding.
You may want to use the Tag:ElementTag.url_encode tag for this.

Optionally, use "data:<data>" to specify a set of data to send to the server (changes the default method from GET to POST).
A BinaryTag input will be used directly - any other input will be treated as a String and encoded as UTF-8.

Optionally, use "method:<method>" to specify the HTTP method to use in your request.
Can be: GET, POST, HEAD, OPTIONS, PUT, DELETE, TRACE, PATCH.

Optionally, use "headers:" to specify a MapTag of headers.

Optionally, use "savefile:" to specify a path to save the retrieved file to.
This will remove the 'result' entry savedata.
Path is relative to server base directory.

Optionally, specify the "timeout:" to set how long the command should wait for a webpage to load before giving up. Defaults to 10 seconds.

Optionally, specify 'hide_failure' to indicate that connection errors are acceptable and shouldn't display in logs.

This command accepts secret inputs via ObjectType:SecretTag as the URL or as the value of any header.
Note that you cannot mix secret with non-secret - meaning, "webget <secret[my_secret]>" and "webget https://example.com" are both valid, but "webget https://example.com/<secret[my_secret]>" is not.
Similarly, for headers, each individual header value can either be a secret or not a secret.
Related Tags<entry[saveName].failed> returns whether the webget failed. A failure occurs when the status is not 2XX/3XX or webget failed to connect.
<entry[saveName].result> returns the text of the result of the webget. This is null only if webget failed to connect to the url.
<entry[saveName].result_binary> returns the raw binary data of the result of the webget. This is null only if webget failed to connect to the url.
<entry[saveName].result_headers> returns a MapTag of the headers returned from the webserver. Every value in the result is a list.
<entry[saveName].status> returns the HTTP status code of the webget. This is null only if webget failed to connect to the url.
<entry[saveName].time_ran> returns a DurationTag indicating how long the web connection processing took.
<ElementTag.url_encode> Encodes the element using URL encoding.
Usage Example
# Use to download the google home page.
- ~webget https://google.com save:google
- narrate <entry[google].result>
Usage Example
# Use to save a webpage to your server's base directory
- ~webget https://google.com savefile:google.html
Usage Example
# Use to post data to a server.
- ~webget https://api.mojang.com/orders/statistics 'data:{"metricKeys":["item_sold_minecraft"]}' headers:<map.with[Content-Type].as[application/json]> save:request
- narrate <entry[request].result>
Usage Example
# Use to retrieve and load an API response into yaml.
- ~webget https://api.mojang.com/users/profiles/minecraft/<player.name> save:request
- yaml loadtext:<entry[request].result> id:player_data
Synonyms (Search Aid)wget
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/WebGetCommand.java#L39
NameWebServer
Syntaxwebserver [start/stop] (port:<#>) (ignore_errors)
Short DescriptionCreates a local HTTP web-server within your minecraft server.
Full DescriptionCreates a local HTTP web-server within your minecraft server.

The server does not provide SSL (HTTPS) security or functionality.
The server does not provide active abuse-prevention or routing control or etc.

If your webserver is meant for public connection, it is very strongly recommended you put the webserver behind a reverse-proxy server, such as Nginx or Apache2.

The port, if unspecified, defaults to 8080. You should usually manually specify a port.

The "ignore_errors" option can be enabled to silence basic connection errors that might otherwise spam your console logs.

You can only exactly one webserver per port.
If you use multiple ports, you can thus have multiple webservers.

When using the stop instruction, you must specify the same port you used when starting.

The webserver only does anything if you properly handle Event:webserver web request

Most webserver processing is done in the event, and thus is synchronous with the minecraft thread, and thus may induce lag if not done with care.
Note per the event's meta, "file:" is handled async, and "cached_file:" only runs sync once per file.

This command must be enabled in the Denizen/config.yml before it can be used.
Related TagsNone
Usage Example
# Use to start a webserver on port 8081.
- webserver start port:8081
Usage Example
# Use to stop the webserver on port 8081.
- webserver stop port:8081
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/WebServerCommand.java#L29
NameWhile
Related Guide Pagehttps://guide.denizenscript.com/guides/basics/loops.html
Syntaxwhile [stop/next/[<value>] (!)(<operator> <value>) (&&/|| ...)] [<commands>]
Short DescriptionRuns a series of braced commands until the tag returns false.
Full DescriptionRuns a series of braced commands until the if comparisons returns false. Refer to Command:if for if command syntax information.
To end a while loop, use the 'stop' argument.
To jump to the next entry in the loop, use the 'next' argument.
Related Tags<[loop_index]> to get the number of loops so far.
Usage Example
# Use to loop until a player sneaks, or the player goes offline. (Note: generally use 'waituntil' for this instead)
- while !<player.is_sneaking> && <player.is_online>:
    - narrate "Waiting for you to sneak..."
    - wait 1s
Groupqueue
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/queue/WhileCommand.java#L26
Nameworldedit
Syntaxworldedit [create_schematic/copy_to_clipboard/paste] (file:<file path>) (cuboid:<cuboid>) (position:<location>) (rotate:<#>) (undoable) (noair)
Short DescriptionControls schematics and clipboards in WorldEdit.
Full DescriptionControls schematics and clipboards in WorldEdit. You should almost always use Command:schematic instead of this.

The action can be create_schematic, copy_to_clipboard, or paste.

For 'paste':
Specify 'noair' to exclude air blocks.
Specify 'rotate' to rotate the schematic when pasting it.
Specify 'undoable' to attach the paste to the player's WorldEdit history which allows them to undo/redo.

For 'copy_to_clipboard':
Specify either a cuboid or a file.
The file path starts in the folder: /plugins/Denizen/schematics/

For 'create_schematic':
Either specify a cuboid, or the player's clipboard will be used.
Specify a file to save to.
Related Tags<PlayerTag.we_selection> Returns the player's current block area selection, as a CuboidTag, EllipsoidTag, or PolygonTag.
Usage Example
# Use to save a cuboid to a schematic.
- worldedit create_schematic file:<[filepath]> cuboid:<player.we_selection> position:<player.location>
Usage Example
# Use to copy a cuboid to a player's clipboard.
- worldedit copy_to_clipboard cuboid:<player.we_selection> position:<player.location>
Usage Example
# Use to load a schematic into a player's clipboard.
- worldedit copy_to_clipboard file:<[filepath]>
Usage Example
# Use to paste a schematic at a location
- worldedit paste file:<[filepath]> position:<player.location>
Usage Example
# Use to paste a schematic at a location with a player attached to the edit history.
- worldedit paste file:<[filepath]> position:<player.location> undoable noair rotate:90
GroupDepenizen
RequiresDepenizen, WorldEdit
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/commands/worldedit/WorldEditCommand.java#L44
NameYaml
Syntaxyaml [create]/[load:<file>]/[loadtext:<text> raw_format]/[unload]/[savefile:<file>]/[copykey:<source_key> <target_key> (to_id:<name>)]/[set <key>([<#>])(:<action>):<value> (data_type:{string}/integer/double/boolean/auto)] [id:<name>]
Short DescriptionEdits YAML data, especially for YAML files.
Full DescriptionEdits YAML configuration data.

This commands exists primarily for interoperability with pre-existing data files and other plugins.
It should never be used for storing data that only Denizen needs to use. Consider instead using Command:flag.

Use waitable syntax ("- ~yaml load:...") with load or savefile actions to avoid locking up the server during file IO.
Refer to Language:~waitable.

For loading and saving, the starting path is within 'plugins/Denizen'.
The file path follows standard system file path rules. That means '/' separators folders,
and '..' as a folder name means go-up-one folder, for example '../WorldGuard/config.yml' would load the WorldGuard plugin config.
Also be aware that some servers (Linux/Mac based) have case sensitive file systems while others (Windows based) don't.
Generally, when using existing paths, make sure your casing is correct. When creating new paths, prefer all-lowercase to reduce risk of issues.

Please note that all usages of the YAML command except for "load" and "savefile" arguments are purely in memory.
That means, if you use "set" to make changes, those changes will not be saved to any file, until you use "savefile".
Similarly, "create" does not create any file, instead it only creates a YAML object in RAM.

When loading, optionally specify 'raw_format' to indicate that this YAML file needs to maintain compatibility with some external system using raw YAML data
(for example, when altering YAML data files used by external plugins).
Note that this can have side effects of custom data disappearing (for example, the value "yes" gets magically converted to "true") or strange data parsing in.

In-memory changes to a loaded YAML object will mark that object as having changes. Before saving,
you can check whether the YAML object needs to be written to disk with the has_changes tag.

Note that the '.yml' extension is not automatically appended, and you will have to include that in filenames.

All usages of the YAML command must include the "id:" argument. This is any arbitrary name, as plaintext or from a tag,
to uniquely and globally identify the YAML object in memory. This ID can only be used by one YAML object at a time.
IDs are stored when "create" or "load" arguments are used, and only removed when "unload" is used.
If, for example, you have a unique YAML data container per-player, you might use something like "id:myscript_<player>".

For ways to use the "set" argument, refer to Language:data actions.

When setting a value directly, you can optionally specify "data_type" as "string", "integer", "double", "boolean", or "auto",
to force the input to a specific data type, which may be needed for compatibility with some external YAML files.
Only applicable when setting a single value, not lists/maps/etc.
'Auto' will attempt to choose the best type for the value.
Related Tags<yaml[<idname>].contains[<path>]> Returns true if the file has the specified path. (...)
<yaml[<idname>].read[<path>]> Returns the value from a data key on the YAML document as an ElementTag, ListTag, or MapTag.
<yaml[<idname>].list_keys[<path>]> Returns a ListTag of all the keys at the path (and not sub-keys). (...)
<yaml[<idname>].has_changes> Returns whether this YAML object has had changes since the last save or load.
Usage Example
# Use to create a new YAML file.
- yaml create id:myfile
Usage Example
# Use to load a YAML file from disk.
- ~yaml load:myfile.yml id:myfile
Usage Example
# Use to modify a YAML file similarly to a flag.
- yaml id:myfile set my.key:HelloWorld
Usage Example
# Use to save a YAML file to disk.
- ~yaml savefile:myfile.yml id:myfile
Usage Example
# Use to unload a YAML file from memory.
- yaml unload id:myfile
Usage Example
# Use to modify a YAML file similarly to a flag.
- yaml id:myfile set my.key:+:2
Usage Example
# Use to modify a YAML file similarly to a flag.
- yaml id:myfile set my.key[2]:hello
Usage Example
# Use to modify a copy the contents of one YAML key to a new owning key.
- yaml id:myfile copykey:my.first.key my.new.key
Usage Example
# Use to modify a copy the contents of one YAML key to a new owning key on a different YAML file.
- yaml id:myfile copykey:my.first.key my.new.key to_id:myotherfile
Groupfile
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/file/YamlCommand.java#L44
NameZap
Related Guide Pagehttps://guide.denizenscript.com/guides/npcs/interact-scripts.html
Syntaxzap (<script>) [<step>] (<duration>)
Short DescriptionChanges the current interact script step.
Full DescriptionChanges the current interact script step for the linked player.

The step name input should match the name of a step in the interact script.
The step name can be '*' to automatically zap to the default step.

If used inside an interact script, will default to the current interact script.
If used elsewhere, but there is a linked NPC with an assignment and interact, that NPC's interact script will be used.
For anywhere else, you must specify the script by name.

Optionally specify a duration. When the duration is up, the script will zap back to the step it was previously on.
If any zap commands are used during the duration, that duration will be discarded.

The command's name was inspired by a command in the language "ZZT-OOP", from a 1991 DOS game enjoyed by the original developer of Denizen.
Related Tags<ScriptTag.step[<player>]> Returns the name of a script step that the player is currently on. (...)
Usage Example
# Use to change the step to 2.
- zap 2
Usage Example
# Use to return to the default step.
- zap *
Usage Example
# Use to change the step to 3 in a script called Interact_Example.
- zap 3 Interact_Example
Usage Example
# Use to change the step to 1 for the defined player in a script called InteractScript.
- zap 1 InteractScript player:<[player]>
Synonyms (Search Aid)step
Groupcore
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/core/ZapCommand.java#L31

Event


Namestructure/plant grows naturally
Event Lines <structure/plant> grows (naturally)
<structure/plant> grows from bonemeal
Triggerswhen a structure (a tree or a mushroom) grows in a world.
Generated Exampleson structure/plant grows:
on structure/plant grows from bonemeal:
after structure/plant grows naturally:
after structure/plant grows from bonemeal:
Has Playerwhen a player caused the structure growth to occur (eg with bonemeal). - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.world> returns the WorldTag the structure grew in.
<context.location> returns the LocationTag the structure grew at.
<context.structure> returns an ElementTag of the structure's type. Refer to 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/TreeType.html.
<context.blocks> returns a ListTag of all block locations to be modified.
<context.new_materials> returns a ListTag of the new block materials, to go with <context.blocks>.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupWorld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/world/StructureGrowsScriptEvent.java#L20
Nameentity breaks hanging because cause
Event Lines <entity> breaks <hanging> (because <cause>)
Triggerswhen a hanging entity (painting, item_frame, or leash_hitch) is broken.
Generated Exampleson animal breaks hanging because cause:
on illusioner breaks hanging because cause:
Has Playerwhen the breaker is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the breaker is an npc.
Contexts<context.cause> returns the cause of the entity breaking. Causes list: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/hanging/HangingBreakEvent.RemoveCause.html
<context.breaker> returns the EntityTag that broke the hanging entity, if any.
<context.hanging> returns the EntityTag of the hanging.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityBreaksHangingScriptEvent.java#L19
Nameentity casts spell
Event Lines <entity> casts <spell>
Triggerswhen an entity, usually an Evoker or Illusioner, casts a spell.
Generated Exampleson panda casts spell:
after arrow casts spell:
Contexts<context.entity> returns the EntityTag of the Spellcaster entity.
<context.spell> returns an ElementTag of the spell used. Valid spells can be found at 🔗https://jd.papermc.io/paper/1.20/org/bukkit/entity/Spellcaster.Spell.html
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpellCastScriptEvent.java#L13
Nameentity changes pose
Event Lines <entity> changes pose
Triggerswhen an entity changes its visual pose.
Generated Exampleson living changes pose:
after entity changes pose:
Has Playerwhen the entity that changed its pose is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesold:<pose> to only process the event if the old pose matches the input.
new:<pose> to only process the event if the new pose matches the input.
Contexts<context.entity> returns the EntityTag that changed its pose.
<context.old_pose> returns the name of the old pose. See 🔗https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Pose.html
<context.new_pose> returns the name of the new pose.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityChangesPoseScriptEvent.java#L16
Nameentity damaged by entity
Event Lines <entity> damaged by <entity>
<entity> damaged (by <cause>)
<entity> damages <entity>
Triggerswhen an entity is damaged.
Example
on entity damaged:
- announce "A <context.entity.entity_type> took damage!"
Example
on player damages cow:
- announce "<player.name> damaged a cow at <context.entity.location.simple>"
Example
on player damages cow|sheep|chicken with:*_hoe:
- narrate "Whoa there farmer, you almost hurt your farm animals with that farmin' tool!"
- determine cancelled
Example
# This example disambiguates this event from the "vehicle damaged" event for specific vehicle entity types.
on entity damaged type:minecart:
- announce "A minecart took non-vehicular damage!"
Has Playerwhen the damager or damaged entity is a player. Cannot be both. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the damager or damaged entity is an NPC. Cannot be both.
Switcheswith:<item> to only process the event when the item used to cause damage (in the damager's hand) is a specified item.
type:<entity> to only run if the entity damaged matches the entity input.
block:<block-matcher> to only run if the damage came from a block that matches the given material or location matcher.
Contexts<context.entity> returns the EntityTag that was damaged.
<context.damager> returns the EntityTag damaging the other entity, if any.
<context.damager_block> returns the LocationTag of a block that damaged the entity, if any.
<context.cause> returns an ElementTag of reason the entity was damaged - see Language:damage cause for causes.
<context.damage> returns an ElementTag(Decimal) of the amount of damage dealt.
<context.final_damage> returns an ElementTag(Decimal) of the amount of damage dealt, after armor is calculated.
<context.projectile> returns a EntityTag of the projectile, if one caused the event.
<context.damage_type_map> returns a MapTag the damage dealt by a specific damage type with keys: BASE, HARD_HAT, BLOCKING, ARMOR, RESISTANCE, MAGIC, ABSORPTION.
<context.was_critical> returns 'true' if the damage was a critical hit. (Warning: this value is calculated and not guaranteed to be correct if the event is altered).
DetermineElementTag(Decimal) to set the amount of damage the entity receives.
"CLEAR_MODIFIERS" to zero out all damage modifiers other than "BASE", effectively making damage == final_damage.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDamagedScriptEvent.java#L35
Nameentity dies|death
Event Lines <entity> dies|death
Triggerswhen an entity dies. Note that this fires *after* the entity dies, and thus some data may be lost from the entity.
The death can only be cancelled on Paper.
Generated Examplesafter entity death:
after command_block_minecart death:
Has Playerwhen the entity that died is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the entity that died is an NPC.
Switchesby:<entity> to only process the event if the killer is known and matches the specified entity matcher.
cause:<cause> to only process the event if it was caused by a specific damage cause.
Contexts<context.entity> returns the EntityTag that died.
<context.damager> returns the EntityTag damaging the other entity, if any.
<context.projectile> returns the EntityTag of a projectile used to kill the entity, if one was used.
<context.message> returns an ElementTag of a player's death message.
<context.cause> returns an ElementTag of the cause of the death. See Language:damage cause for a list of possible damage causes.
<context.drops> returns a ListTag of all pending item drops.
<context.xp> returns an ElementTag of the amount of experience to be dropped.
<context.keep_inventory> returns true if the player dying is set to keep their inventory, false if not, or null if the dying entity is not a player.
DetermineElementTag to change the death message.
"NO_DROPS" to specify that any drops should be removed.
"NO_XP" to specify that any XP orbs should be removed.
ListTag(ItemTag) to specify new items to be dropped.
ElementTag(Number) to specify the new amount of XP to be dropped.
"KEEP_INV" to specify (if a player death) that the inventory should be kept.
"KEEP_LEVEL" to specify (if a player death) that the XP level should be kept.
"NO_MESSAGE" to hide a player death message.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDeathScriptEvent.java#L27
Nameentity heals because cause
Event Lines <entity> heals (because <cause>)
Triggerswhen an entity heals.
Generated Examplesafter vehicle heals because cause:
after animal heals because cause:
Has Playerwhen the entity that was healed is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the entity that was healed was an NPC.
Contexts<context.amount> returns the amount the entity healed.
<context.entity> returns the EntityTag that healed.
<context.reason> returns the cause of the entity healing. Can be: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityRegainHealthEvent.RegainReason.html
DetermineElementTag(Decimal) to set the amount of health the entity receives.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityHealsScriptEvent.java#L15
Nameentity killed by cause
Event Lines <entity> killed (by <cause>)
<entity> killed (by <entity>)
<entity> kills <entity>
Triggerswhen an entity is killed.
Generated Examplesafter bamboo_raft killed:
after enderman killed by entity:
on llama_spit kills entity:
after projectile killed:
after guardian killed by pillager:
after zombified_piglin kills mooshroom:
Has Playerwhen the killer or entity that was killed is a player. Cannot be both. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the killer or entity that was killed is an NPC. Cannot be both.
Contexts<context.entity> returns the EntityTag that was killed.
<context.cause> returns an ElementTag of reason the entity was damaged - see Language:damage cause for causes.
<context.damage> returns an ElementTag(Decimal) of the amount of damage dealt.
<context.final_damage> returns an ElementTag(Decimal) of the amount of damage dealt, after armor is calculated.
<context.damager> returns the EntityTag damaging the other entity.
<context.projectile> returns a EntityTag of the projectile shot by the damager, if any.
<context.damage_type_map> returns a MapTag the damage dealt by a specific damage type with keys: BASE, HARD_HAT, BLOCKING, ARMOR, RESISTANCE, MAGIC, ABSORPTION.
DetermineElementTag(Decimal) to set the amount of damage the entity receives, instead of dying.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Warning(s)This event may mis-fire in some cases, particularly with plugins or scripts modify the damage from scripts. If you need reliable death tracking, the entity death event may be better.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityKilledScriptEvent.java#L22
Nameentity knocks back entity
Event Lines <entity> knocks back <entity>
Triggerswhen an entity is knocked back from the hit of another entity.
Generated Examplesafter fish knocks back entity:
after animal knocks back vehicle:
Has Playerwhen the damager or damaged entity is a player. Cannot be both. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the damager or damaged entity is an NPC. Cannot be both.
Switcheswith:<item> to only process the event when the item used to cause damage (in the damager's hand) is a specified item.
Contexts<context.entity> returns the EntityTag that was knocked back.
<context.damager> returns the EntityTag of the one who knocked.
<context.acceleration> returns the knockback applied as a vector.
<context.cause> returns the cause of the knockback (only on MC 1.20+). Causes list: 🔗https://jd.papermc.io/paper/1.21.1/io/papermc/paper/event/entity/EntityKnockbackEvent.Cause.html
DetermineLocationTag as a vector to change the acceleration applied.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Warning(s)this event may in some cases double-fire, requiring usage of the 'ratelimit' command (like 'ratelimit <player> 1t') to prevent doubling actions.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/EntityKnocksbackEntityScriptEvent.java#L17
Nameentity potion effects modified
Event Lines <entity> potion effects modified
<entity> potion effects <change_action>
Triggerswhen an entity's potion effects change.
Generated Exampleson entity potion effects modified:
after entity potion effects change_action:
after living potion effects modified:
after egg potion effects change_action:
Has Playerwhen the entity that has changed is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the entity that has changed is an NPC.
Switchescause:<cause> to only process the event when it came from a specified cause.
effect:<effect type> to only process the event when a specified potion effect is applied.
Contexts<context.entity> returns the EntityTag.
<context.cause> returns the cause of the effect change, based on 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityPotionEffectEvent.Cause.html
<context.action> returns the action of the effect changed, which can be 'added', 'changed', 'cleared', or 'removed'
<context.override> returns whether the new potion effect will override the old.
<context.new_effect_data> returns the new potion effect in Language:Potion Effect Format.
<context.old_effect_data> returns the old potion effect in Language:Potion Effect Format.
<context.effect_type> returns the name of the modified potion effect type.
Determine"OVERRIDE:<ElementTag(Boolean)>" to set whether the new potion effect should override.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityPotionEffectScriptEvent.java#L17
Nameentity spawns because cause
Event Lines <entity> spawns (because <cause>)
Triggerswhen an entity spawns.
Generated Exampleson mob spawns:
after living spawns because cause:
Contexts<context.entity> returns the EntityTag that spawned.
<context.location> returns the location the entity will spawn at.
<context.reason> returns the reason the entity spawned, can be ENTITY_SPAWN or any of: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/CreatureSpawnEvent.SpawnReason.html
<context.spawner_location> returns the location of the mob spawner, when reason is SPAWNER.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Warning(s)This event may fire very rapidly.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntitySpawnScriptEvent.java#L19
Nameentity targets entity because cause
Event Lines <entity> targets (<entity>) (because <cause>)
Triggerswhen an entity targets a new entity (usually a hostile mob preparing to attack something), or un-targets one.
Generated Examplesafter skeleton_horse targets:
after shulker_bullet targets:
Has Playerwhen the entity being targetted is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.entity> returns the targeting entity.
<context.reason> returns the reason the entity changed targets. Refer to 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityTargetEvent.TargetReason.html.
<context.target> returns the targeted entity, if any.
DetermineEntityTag to make the entity target a different entity instead.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTargetsScriptEvent.java#L16
Nameentity teleported by portal
Event Lines <entity> teleported by portal
TriggersWhen an entity is about to be teleported by a portal (currently only fires for nether portals).
Generated Examplesafter fish teleported by portal:
after animal teleported by portal:
Switchesto:<world> to only process the event if the world the entity is being teleported to matches the specified WorldTag matcher.
portal_type:<type> to only process the event if the portal's type matches the specified portal type.
Contexts<context.entity> returns an EntityTag of the entity being teleported.
<context.target_world> returns a WorldTag of the world the entity is being teleported to.
<context.portal_type> returns an ElementTag of the portal's type. Will be one of 🔗https://jd.papermc.io/paper/1.19/org/bukkit/PortalType.html.
Determine"TARGET_WORLD:<WorldTag>" to set the world the entity will be teleported to.
"REMOVE_TARGET_WORLD" to remove the target world. Should usually cancel the event instead of using this.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/EntityTeleportedByPortalScriptEvent.java#L14
Namehanging breaks because cause
Event Lines <hanging> breaks (because <cause>)
Triggerswhen a hanging entity (painting, item_frame, or leash_hitch) is broken.
Generated Examplesafter hanging breaks because cause:
on hanging breaks because cause:
Contexts<context.cause> returns the cause of the entity breaking. Causes: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/hanging/HangingBreakEvent.RemoveCause.html.
<context.entity> returns the EntityTag that broke the hanging entity, if any.
<context.hanging> returns the EntityTag of the hanging.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/HangingBreaksScriptEvent.java#L16
Nameanvil block damaged|breaks
Event Lines anvil block damaged|breaks
Triggerswhen an anvil is damaged from being used.
Generated Examplesafter anvil block breaks:
after anvil block damaged:
Switchesstate:<state> to only process the event if the anvil's new damage state matches the specified state.
Contexts<context.state> returns an ElementTag of the anvil's new damage state. Refer to 🔗https://jd.papermc.io/paper/1.19/com/destroystokyo/paper/event/block/AnvilDamagedEvent.DamageState.html.
<context.break> returns an ElementTag(Boolean) that signifies whether the anvil will break.
<context.inventory> returns the InventoryTag of the anvil's inventory.
Determine"STATE:<ElementTag>" to set the anvil's new damage state.
"BREAK:<ElementTag(Boolean)>" to set weather the anvil will break.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/AnvilBlockDamagedScriptEvent.java#L16
Namearea effect cloud applies
Event Lines area effect cloud applies
Triggerswhen an area_effect_cloud tries to apply its effect(s) to entities within range.
Generated Examplesafter area effect cloud applies:
Contexts<context.entity> returns the EntityTag of the area effect cloud.
<context.affected_entities> returns a ListTag of EntityTags affected by the area effect cloud. Note that this can be empty, and only lists which entities are currently being refreshed.
Determine"AFFECTED_ENTITIES:<ListTag(EntityTag)>" to determine the entities that will be affected by the area effect cloud. The list should not contain non-living entities.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupEntity
Warning(s)This runs every 5 ticks if there are any entities in the area effect cloud's bounding box. Prefer Event:entity potion effects modified for listening to normal potion effect changes.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/AreaEffectCloudApplyScriptEvent.java#L14
Nameblock ignites
Event Lines block ignites
Triggerswhen a block is set on fire.
Generated Examplesafter block ignites:
Switchescause:<cause> to only process the event when it came from a specified cause.
Contexts<context.location> returns the LocationTag of the block that was set on fire.
<context.entity> returns the EntityTag of the entity that ignited the block (if any).
<context.origin_location> returns the LocationTag of the fire block that ignited this block (if any).
<context.cause> returns an ElementTag of the cause of the event: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/BlockIgniteEvent.IgniteCause.html.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupBlock
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/block/BlockIgnitesScriptEvent.java#L15
Namecauldron level changes|raises|lowers
Event Lines cauldron level changes|raises|lowers
Triggerswhen a cauldron's level changes.
Generated Exampleson cauldron level lowers:
on cauldron level raises:
Switchescause:<cause> to only process the event when it came from a specified cause.
Contexts<context.location> returns the LocationTag of the cauldron that changed.
<context.entity> returns the LocationTag of the entity that caused the cauldron level to change (if any).
<context.cause> returns the reason that the cauldron level changed, from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/CauldronLevelChangeEvent.ChangeReason.html
<context.old_level> returns the previous cauldron level.
<context.new_level> returns the new cauldron level.
DetermineElementTag(Number) to set the new level.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupBlock
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/block/CauldronLevelChangeScriptEvent.java#L17
Namecrackshot player fires projectile
Event Lines crackshot player fires projectile
Triggersjust before a projectile is launched from a CrackShot weapon.
Generated Exampleson crackshot player fires projectile:
Has PlayerAlways - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.weapon> returns the name of the weapon about to fire.
<context.bullet_spread> returns the spread of the projectiles being fired.
<context.left_click> returns whether the fire was a left click.
<context.shot_sounds> returns a list of the shot sounds.
Determine"BULLET_SPREAD:<ElementTag(Number)>" to set the bullet spread.
"SHOT_SOUNDS:<ElementTag>" to set the shot sounds. Use "NONE" to have no sound. 🔗https://github.com/Shampaggon/CrackShot/wiki/The-Complete-Guide-to-CrackShot#sounds
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupDepenizen
RequiresDepenizen, CrackShot
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/events/crackshot/CrackShotPlayerFiresProjectileEvent.java#L19
Namecrackshot player starts reloading weapon
Event Lines crackshot player starts reloading weapon
Triggerswhen a player starts reloading their CrackShot weapon.
Generated Examplesafter crackshot player starts reloading weapon:
Has PlayerAlways - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.weapon> returns the name of the weapon.
<context.reload_speed> returns the rate at which the weapon is reloaded.
<context.reload_time> returns the time taken to reload in ticks.
<context.reload_sounds> returns a ListTag of the reload sounds.
Determine"RELOAD_SPEED: <ElementTag(Number)>" to set the reload speed.
The reload speed can be scaled with a decimal ranging from zero to infinity.
For example, 0 is instantaneous, 1 is normal and 2 will double the reload time.
"RELOAD_TIME:<DurationTag>" to set the time taken to reload in ticks.
"RELOAD_SOUNDS:<ElementTag>" to set the reload sounds. Use "NONE" to have no sound. 🔗https://github.com/Shampaggon/CrackShot/wiki/The-Complete-Guide-to-CrackShot#sounds
GroupDepenizen
RequiresDepenizen, CrackShot
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/events/crackshot/CrackShotPlayerStartsReloadingWeaponEvent.java#L20
Namecreeper powered because cause
Event Lines creeper powered (because <cause>)
Triggerswhen a creeper is struck by lightning and turned into a powered creeper.
Generated Examplesafter creeper powered because cause:
on creeper powered because cause:
Contexts<context.entity> returns the EntityTag of the creeper.
<context.lightning> returns the EntityTag of the lightning.
<context.cause> returns an ElementTag of the cause for the creeper being powered. Refer to 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/CreeperPowerEvent.PowerCause.html.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/CreeperPoweredScriptEvent.java#L14
Namedragon egg forms
Event Lines dragon egg forms
Triggerswhen the ender dragon is defeated and the dragon egg forms.
Generated Exampleson dragon egg forms:
after dragon egg forms:
Contexts<context.entity> returns the EntityTag of the ender dragon right before it's removed.
<context.location> returns the LocationTag of the dragon egg.
<context.end_portal_location> returns the LocationTag of the end portal.
<context.previously_killed> returns an ElementTag(Boolean) of whether the dragon has been previously killed.
<context.respawn_phase> returns an ElementTag of the respawn phase. Valid values can be found at 🔗https://jd.papermc.io/paper/1.21.3/org/bukkit/boss/DragonBattle.RespawnPhase.html.
<context.healing_crystals> returns a ListTag(EntityTag) of the healing end crystals.
<context.respawn_crystals> returns a ListTag(EntityTag) of the respawn end crystals.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/DragonEggFormScriptEvent.java#L15
Nameender_dragon changes phase
Event Lines ender_dragon changes phase
<entity> changes phase
Triggerswhen a dragon's combat phase changes.
Generated Examplesafter ender_dragon changes phase:
on player changes phase:
on living changes phase:
Switchesfrom:<phase> to only process the event if the dragon was previously in the specified phase.
to:<phase> to only process the event if the dragon is changing to the specified phase.
Contexts<context.entity> returns the EntityTag of the dragon.
<context.new_phase> returns an ElementTag of the dragon's new phase. Phases: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EnderDragon.Phase.html
<context.old_phase> returns an ElementTag of the dragon's old phase. Can be any phase or 'null' in some cases.
DetermineElementTag to change the dragon's new phase.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/DragonPhaseChangeScriptEvent.java#L14
Nameentity teleports
Event Lines entity teleports
<entity> teleports
Triggerswhen an entity teleports.
Generated Examplesafter entity teleports:
after monster teleports:
after turtle teleports:
Has Playerwhen the entity being teleported is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCwhen the entity being teleported is an NPC.
Switchescause:<cause> to only process the event when it came from a specified cause.
Contexts<context.entity> returns the EntityTag.
<context.origin> returns the LocationTag the entity teleported from.
<context.destination> returns the LocationTag the entity teleported to.
<context.cause> returns an ElementTag of the teleport cause - see Language:teleport cause for causes.
Determine"ORIGIN:<LocationTag>" to change the location the entity teleported from.
"DESTINATION:<LocationTag>" to change the location the entity teleports to.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTeleportScriptEvent.java#L32
Nameentity transforms
Event Lines entity transforms
<entity> transforms (into <entity>)
Triggerswhen an entity transforms into different entities (including villager infections, slime splitting, etc).
Generated Examplesafter entity transforms:
on rabbit transforms:
on entity transforms:
on zoglin transforms into donkey:
Switchesbecause:<reason> to only process the event if a specific reason caused the transformation.
Contexts<context.entity> returns the old entity that was transformed from.
<context.new_entities> returns a list of new entities that were transformed into.
<context.cause> returns the reason for transformation, from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityTransformEvent.TransformReason.html.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTransformScriptEvent.java#L15
Nameessentials player balance changes
Event Lines essentials player balance changes
Triggerswhen a player's balance changes, when using Essentials economy.
Generated Examplesafter essentials player balance changes:
on essentials player balance changes:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.old_balance> Returns the balance before changes are made.
<context.new_balance> Returns the balance after changes are made.
<context.cause> returns the reason for the balance change, refer to 🔗https://github.com/EssentialsX/Essentials/blob/2.x/Essentials/src/main/java/net/ess3/api/events/UserBalanceUpdateEvent.java#L73-L78.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupDepenizen
RequiresDepenizen, Essentials
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/events/essentials/PlayerBalanceChangeScriptEvent.java#L14
Namegamerule changes in world
Event Lines gamerule changes (in <world>)
Triggerswhen a gamerule changes.
Generated Examplesafter gamerule changes:
after gamerule changes in world_nether:
Has Playerwhen the sender of the command is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesgamerule:<gamerule> to only process the event if the gamerule matches a specific gamerule.
Contexts<context.gamerule> returns the name of the GameRule which was changed. Refer to 🔗https://jd.papermc.io/paper/1.19/org/bukkit/GameRule.html.
<context.value> returns the new value of the GameRule.
<context.world> returns the world where the GameRule is applied.
<context.source_type> returns type of source. Can be: PLAYER, COMMAND_BLOCK, COMMAND_MINECART, SERVER.
<context.command_block_location> returns the command block's location (if the command was run from one).
<context.command_minecart> returns the EntityTag of the command minecart (if the command was run from one).
Determine"VALUE:<ElementTag(Number)>" or ElementTag(Boolean) to set the value of the GameRule.
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/WorldGameRuleChangeScriptEvent.java#L24
Namegeneric game event
Event Lines generic game event
Triggerswhen the minecraft world experiences a generic minecraft game event. This is normally used for sculk sensors.
Generated Exampleson generic game event:
after generic game event:
Switchestype:<game_event_name> to only process the event when a specific game event is fired.
Contexts<context.location> returns the location of the event.
<context.entity> returns the entity that triggered the event, if any.
<context.game_event> returns the name of the Minecraft game event, for example "minecraft:block_change". See 🔗https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/GameEvent.html.
<context.radius> returns the radius, in blocks, that the event is broadcast to.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupWorld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/world/GenericGameEventScriptEvent.java#L16
Namejobs player earns exp for job
Event Lines jobs player earns exp for <job>
Triggerswhen a player performs an action that would cause them to earn Jobs exp for a certain job.
Example
on jobs player earns exp for job:
# Returns true if the target of the action was an entity. Valid actions include but are not limited to: Kill, Shear, Milk.
- narrate <context.entity.exists>
# Returns true if the target of the action was a block. Valid actions include but are not limited to: Place, Break, Strip.
- narrate <context.block.exists>
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesaction:<action> to only process the event if it came from a specified action.
Contexts<context.job> Returns a JobsJobTag of the job that the player is gaining exp for.
<context.experience> Returns an ElementTag(Decimal) of the amount of exp the player will earn.
<context.action> Returns an ElementTag of the name of the action being paid for, which can be any of the strings from: 🔗https://github.com/Zrips/Jobs/blob/master/src/main/java/com/gamingmesh/jobs/container/ActionType.java.
<context.entity> Returns an EntityTag of the entity involved with this event, if any.
<context.block> Returns a LocationTag of the block involved with this event, if any.
Determine"EXP:<ElementTag(Decimal)>" to change the amount of Jobs exp this action should provide.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupDepenizen
RequiresDepenizen, Jobs
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/events/jobs/JobsJobsExpGainScriptEvent.java#L19
Namejobs player earns money for job
Event Lines jobs player earns money for <job>
Triggerswhen a player performs an action that would cause them to be paid for a certain job.
Example
on jobs player earns money for job:
# Returns true if the target of the action was an entity. Valid actions include but are not limited to: Kill, Shear, Milk.
- narrate <context.entity.exists>
# Returns true if the target of the action was a block. Valid actions include but are not limited to: Place, Break, Strip.
- narrate <context.block.exists>
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesaction:<action> to only process the event if it came from a specified action.
Contexts<context.job> Returns an JobsJobTag of the job that the player is being paid for.
<context.money> Returns an ElementTag(Decimal) of the amount of money the player will be paid.
<context.points> Returns an ElementTag(Decimal) of the amount of points the player will be paid.
<context.action> Returns an ElementTag the name of the action being paid for, which can be any of the strings from: 🔗https://github.com/Zrips/Jobs/blob/master/src/main/java/com/gamingmesh/jobs/container/ActionType.java.
<context.entity> Returns an EntityTag of the entity involved with this event, if any.
<context.block> Returns a LocationTag of the block involved with this event, if any.
Determine"MONEY:<ElementTag(Decimal)>" to change the amount of money this action should provide.
"POINTS:<ElementTag(Decimal)>" to change the amount of Jobs points this action should provide.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupDepenizen
RequiresDepenizen, Jobs
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/events/jobs/JobsJobsPaymentScriptEvent.java#L19
Namenoteblock plays note
Event Lines noteblock plays note
Triggerswhen a NoteBlock plays a note.
Generated Exampleson noteblock plays note:
after noteblock plays note:
Switchesinstrument:<instrument> to only process the event if a specific instrument was played.
Contexts<context.location> returns the LocationTag of the note block.
<context.instrument> returns the name of the instrument played, see list at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Instrument.html.
<context.sound> returns the name of the sound (that fits into Command:playsound) represented by the instrument.
<context.tone> returns the note tone played (A to G).
<context.octave> returns the octave the note is played at (as a number).
<context.sharp> returns a boolean indicating whether the note is sharp.
<context.pitch> returns the computed pitch value (that fits into Command:playsound). Note that volume is always 3.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupBlock
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/block/NoteBlockPlaysNoteScriptEvent.java#L17
Nameplayer right|left clicks block
Event Lines player (right|left) clicks <block>
Triggerswhen a player clicks on a block or in the air.
Generated Examplesafter player left clicks waxed_oxidized_copper_grate:
on player clicks mossy_cobblestone_stairs:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switcheswith:<item> to only process the event if a specified item was held.
using:hand/off_hand/either_hand to only process the event if the specified hand was used to click.
type:<material> to only run if the block clicked matches the material input.
Contexts<context.item> returns the ItemTag the player is clicking with.
<context.location> returns the LocationTag the player is clicking on.
<context.relative> returns a LocationTag of the air block in front of the clicked block.
<context.click_type> returns an ElementTag of the Spigot API click type 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/Action.html.
<context.hand> returns an ElementTag of the used hand.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Warning(s)this event may in some cases double-fire, requiring usage of the 'ratelimit' command (like 'ratelimit <player> 1t') to prevent doubling actions.
this sometimes fires at unexpected times, eg when dropping an item.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerClicksBlockScriptEvent.java#L22
Nameplayer right|left clicks fake entity
Event Lines player (right|left) clicks fake entity
Triggerswhen a player clicks a fake entity, one that is only shown to the player and not tracked by the server.
Generated Examplesafter player clicks fake entity:
on player clicks fake entity:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.entity> returns the EntityTag of the entity that was clicked. Note that this entity is not being tracked by the server, so many operations may not be possible on it.
This will return null if the player clicks a fake entity that was not spawned via Command:fakespawn.
<context.hand> returns an ElementTag of the hand used to click.
<context.click_type> returns an ElementTag of the click type (left/right).
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClicksFakeEntityScriptEvent.java#L16
Nameplayer animates animation
Event Lines player animates (<animation>)
Triggerswhen a player performs an animation.
Generated Examplesafter player animates:
on player animates animation:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switcheswith:<item> to only run if an item being swung by a swing animation matches the item-matcher.
Contexts<context.animation> returns the name of the animation, from 🔗https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/player/PlayerAnimationType.html.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerAnimatesScriptEvent.java#L17
Nameplayer beacon effect applied
Event Lines player beacon effect applied
Triggerswhen a beacon applies an effect to a player.
Generated Examplesafter player beacon effect applied:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.location> returns the LocationTag of the beacon applying an effect.
<context.effect_data> returns a MapTag of the potion effect in Language:Potion Effect Format.
<context.effect_type> returns an ElementTag of the effect type.
<context.is_primary> returns an ElementTag(Boolean) of whether the beacon effect is the primary effect.
DetermineElementTag to change the applied potion effect (in the same format as Tag:EntityTag.list_effects).
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerBeaconEffectScriptEvent.java#L18
Nameplayer changes armor stand item
Event Lines player changes armor stand item
Triggerswhen a player modifies an armor stand entity.
Generated Examplesafter player changes armor stand item:
on player changes armor stand item:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesfrom:<item> to only process the event if the item on the armor stand being interacted with matches the specified item matcher.
hand:<hand> to only process the event if the player is using a specific hand to interact with the armor stand. Available only on MC versions 1.19+.
to:<item> to only process the event if the item held by the player matches the specified item matcher.
slot:<slot> to only process the event if the armor stand's item slot that was interacted with is the specified slot.
armor_stand:<entity> to only process the event if the armor stand being interacted with matches the specified entity matcher.
Contexts<context.armor_stand_item> returns the ItemTag being interacted with on the armor stand.
<context.entity> returns an EntityTag of the armor stand.
<context.hand> returns an ElementTag of the hand used by the player to interact with the armor stand, can be either HAND or OFF_HAND. Available only on MC versions 1.19+.
<context.player_item> returns the ItemTag held by the player.
<context.slot> returns an ElementTag of the armor stand's item slot that was interacted with. Valid equipment slot values can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/EquipmentSlot.html.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerArmorStandManipulateScriptEvent.java#L18
Nameplayer changes framed item
Event Lines player changes framed <item>
Triggerswhen a player interacts with an item frame by adding, removing, or rotating the item held in it.
Generated Examplesafter player changes framed rooted_dirt:
after player changes framed light_blue_banner:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesframe:<entity> to only process the event if the item frame entity being matches the input.
action:<action> to only process the event if the change matches the input.
Contexts<context.frame> returns the EntityTag of the item frame.
<context.item> returns the ItemTag of the item held in the item frame.
<context.action> returns the ElementTag of the action being performed, based on 🔗https://jd.papermc.io/paper/1.20/io/papermc/paper/event/player/PlayerItemFrameChangeEvent.ItemFrameChangeAction.html
Determine"ITEM:<ItemTag>" to change the item held by the item frame. If there is an item already in the frame, it will be replaced. To remove the item, set it to air.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerChangesFramedItemScriptEvent.java#L16
Nameplayer changes gamemode to gamemode
Event Lines player changes gamemode (to <gamemode>)
Triggerswhen a player's gamemode is changed.
Generated Examplesafter player changes gamemode to gamemode:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.gamemode> returns an ElementTag of the gamemode. Game Modes: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/GameMode.html
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerChangesGamemodeScriptEvent.java#L15
Nameplayer client options change
Event Lines player client options change
Triggerswhen a player changes their client options.
Generated Examplesafter player client options change:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.server_listings_enabled> returns a ElementTag(Boolean) of whether the player has server listings enabled. Available only on MC 1.19+.
<context.chat_visibility> returns an ElementTag of the player's chat visibility. Valid chat visibility options can be found at 🔗https://jd.papermc.io/paper/1.20/com/destroystokyo/paper/ClientOption.ChatVisibility.html
<context.locale> returns an ElementTag of the player's current locale.
<context.main_hand> returns a ElementTag of the player's main hand. Can either be LEFT or RIGHT.
<context.skin_parts> returns a MapTag of whether the player's skin parts are enabled or not. For example: [cape=true;jacket=false;left_sleeve=true;right_sleeve=false;left_pants=true;right_pants=false;hat=true]
<context.view_distance> returns a ElementTag(Number) of the player's view distance.
<context.server_listings_changed> returns a ElementTag(Boolean) of whether the player's server listings have changed. Available only on MC 1.19+.
<context.chat_colors> returns a ElementTag(Boolean) of whether the player has chat colors enabled.
<context.chat_colors_changed> returns a ElementTag(Boolean) of whether the player has toggled their chat colors.
<context.chat_visibility_changed> returns a ElementTag(Boolean) of whether the player's chat visibility has changed. Available only on MC 1.19+.
<context.locale_changed> returns a ElementTag(Boolean) of whether the player's locale has changed.
<context.main_hand_changed> returns a ElementTag(Boolean) of whether the player's main hand has changed.
<context.skin_parts_changed> returns a ElementTag(Boolean) of whether the player's skin parts have changed.
<context.text_filtering_changed> returns a ElementTag(Boolean) of whether the player's text filtering has changed. Available only on MC 1.19+.
<context.text_filtering_enabled> returns a ElementTag(Boolean) of whether the player has text filtering enabled. Available only on MC 1.19+.
<context.view_distance_changed> returns a ElementTag(Boolean) of whether the player's view distance has changed.
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerClientOptionsChangeScriptEvent.java#L18
Nameplayer crafts item
Event Lines player crafts item
player crafts <item>
Triggerswhen a player fully crafts an item.
Generated Examplesafter player crafts item:
on player crafts item:
on player crafts dead_horn_coral_block:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.inventory> returns the InventoryTag of the crafting inventory.
<context.item> returns the ItemTag to be crafted.
<context.amount> returns the amount of the item that will be crafted (usually 1, except when shift clicked. Can be above 64).
<context.recipe> returns a ListTag of ItemTags in the recipe.
<context.recipe_id> returns the ID of the recipe that is being crafted.
<context.click_type> returns an ElementTag with the name of the click type. Click type list: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/inventory/ClickType.html
DetermineItemTag to change the item that is crafted.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerCraftsItemScriptEvent.java#L25
Nameplayer exhaustion level increases
Event Lines player exhaustion level increases
Triggerswhen a player does an activity that increases their exhaustion level, which increases the rate of hunger.
Generated Exampleson player exhaustion level increases:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesreason:<reason> to only process the event if the reason matches a specific reason.
Contexts<context.exhaustion> returns the amount of exhaustion added to the player.
<context.reason> returns the reason of exhaustion. See 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityExhaustionEvent.ExhaustionReason.html for a list of valid reasons.
DetermineElementTag(Decimal) to change the amount of exhaustion that will be added to the player.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Warning(s)This event may fire very rapidly.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerIncreasesExhaustionLevelScriptEvent.java#L15
Nameplayer fishes entity while state
Event Lines player fishes (<entity>) (while <state>)
player fishes (<item>) (while <state>)
Triggerswhen a player uses a fishing rod.
Generated Examplesafter player fishes:
after player fishes oak_pressure_plate while state:
on player fishes while state:
Has PlayerIf the fisher or the caught entity is a player (in most cases, the fisher can be assumed to be a real player). - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Has NPCIf the fisher or the caught entity is an NPC.
Switcheswith:<item> to only process the event if the fishing rod is a specified item.
Contexts<context.hook> returns an EntityTag of the hook.
<context.state> returns an ElementTag of the fishing state. Valid states: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerFishEvent.State.html
<context.entity> returns an EntityTag of the entity that got caught.
<context.item> returns an ItemTag of the item gotten, if any.
<context.xp> returns the amount of experience that will drop.
Determine"CAUGHT:<ItemTag>" to change the item that was caught (only if an item was already being caught).
"XP:<ElementTag(Number)>" to change how much experience will drop.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerFishesScriptEvent.java#L21
Nameplayer names entity
Event Lines player names <entity>
Triggerswhen a player attempts to rename an entity with a name tag.
Generated Examplesafter player names entity:
after player names text_display:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.entity> returns an EntityTag of the renamed entity.
<context.old_name> returns the old name of the entity, if any.
<context.name> returns the new name of the entity.
<context.persistent> returns whether this will cause the entity to persist through server restarts.
Determine"NAME:<ElementTag>" to set a different name for the entity.
"PERSISTENT:<ElementTag(Boolean)>" to set whether the event will cause the entity to persist through restarts. NOTE: Entities may still persist for other reasons. To ensure they do not, use Mechanism:EntityTag.force_no_persist.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerNamesEntityScriptEvent.java#L18
Nameplayer opens sign
Event Lines player opens sign
TriggersWhen a player opens a sign (eg after placing a sign, or by clicking on it to edit it).
Generated Examplesafter player opens sign:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.side> returns an ElementTag of the side of the sign that was clicked (FRONT or BACK).
<context.cause> returns an ElementTag of reason the sign was opened - see 🔗https://jd.papermc.io/paper/1.20/io/papermc/paper/event/player/PlayerOpenSignEvent.Cause.html.
<context.location> returns a LocationTag of the sign's location.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerOpenSignScriptEvent.java#L15
Nameplayer quits
Event Lines player quits
player quit
Triggerswhen a player quit the server.
Generated Examplesafter player quits:
after player quit:
on player quits:
on player quit:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchescause:<cause> to only process the event when it matches the specific cause (only on Paper).
Contexts<context.message> returns an ElementTag of the quit message.
<context.cause> returns an ElementTag of the cause of the quit (only on Paper): 🔗https://jd.papermc.io/paper/1.21.1/org/bukkit/event/player/PlayerQuitEvent.QuitReason.html.
DetermineElementTag to change the quit message.
"NONE" to cancel the quit message.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
Synonyms (Search Aid)player disconnects, player logs off, player leaves
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerQuitsScriptEvent.java#L16
Nameplayer selects loom pattern
Event Lines player selects loom pattern
Triggerswhen a player selects a loom pattern.
Example
# Announce the player's selected loom pattern.
on player selects loom pattern:
- announce "<player.name> selected the <context.pattern> pattern!"
Example
# If the player selects the "CREEPER" pattern type, publicly shames them before setting the pattern to "SKULL".
on player selects loom pattern type:CREEPER:
- announce "Shame on <player.name> for selecting the creeper pattern!"
- determine pattern:SKULL
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchestype:<pattern> to only process the event if the specified pattern is selected.
Contexts<context.loom> returns an InventoryTag of the loom.
<context.pattern> returns an ElementTag of the selected pattern. Valid pattern types can be found at: 🔗https://jd.papermc.io/paper/1.19/org/bukkit/block/banner/PatternType.html
Determine"PATTERN:<ElementTag>" to set the pattern type of the loom.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerLoomPatternSelectScriptEvent.java#L17
Nameplayer sets spawn
Event Lines player sets spawn
Triggerswhen a player's spawn point changes.
Generated Examplesafter player sets spawn:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchescause:<cause> to only process when the cause for the event matches the input.
Contexts<context.cause> returns the reason the player's spawn point changed. A list of causes can be found at 🔗https://jd.papermc.io/paper/1.21.5/com/destroystokyo/paper/event/player/PlayerSetSpawnEvent.Cause.html.
<context.forced> returns whether this event will persist through source block (bed or respawn anchor) removal.
<context.location> returns a LocationTag of the new respawn location, if any.
<context.message> returns the notification message that is sent to the player.
<context.notify> returns whether the player will be notified their spawn point changed.
Determine"FORCED:<ElementTag(Boolean)>" to set whether the player's new spawnpoint will persist even if the bed or respawn anchor that triggered the event is removed.
"MESSAGE:<ElementTag>" to set the notification message that is sent to the player.
"NOTIFY:<ElementTag(Boolean)>" to set whether the player will be notified their spawnpoint changed.
LocationTag to change the respawn location.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/events/PlayerSetSpawnScriptEvent.java#L17
Nameplayer statistic increments
Event Lines player statistic increments
player statistic <statistic> increments
Triggerswhen a player's statistics increment.
Generated Exampleson player statistic increments:
after player statistic statistic increments:
after player statistic increments:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.statistic> returns the statistic that incremented. Statistic names: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Statistic.html
<context.previous_value> returns the old value of the statistic.
<context.new_value> returns the new value of the statistic.
<context.qualifier> returns the qualifier (EntityTag/MaterialTag) if any.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerStatisticIncrementsScriptEvent.java#L18
Nameplayer triggers raid
Event Lines player triggers raid
Triggerswhen a player triggers a village raid.
Generated Exampleson player triggers raid:
Has PlayerAlways. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.raid> returns the raid data. See Language:Raid Event Data.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupPlayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/player/PlayerTriggersRaidScriptEvent.java#L12
Nameraid finishes
Event Lines raid finishes
Triggerswhen a village raid finishes normally.
Generated Exampleson raid finishes:
Contexts<context.raid> returns the raid data. See Language:Raid Event Data.
<context.winners> returns the ListTag of players who completed the raid. This is separate from the raid's heroes in that the winners are guaranteed to be online.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupWorld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/world/RaidFinishesScriptEvent.java#L13
Nameraid spawns wave
Event Lines raid spawns wave
Triggerswhen a village raid spawns a new wave of raiders.
Generated Exampleson raid spawns wave:
Contexts<context.raid> returns the raid data. See Language:Raid Event Data.
<context.leader> returns the EntityTag of the patrol leader of the wave.
<context.new_raiders> returns the ListTag of all new raiders.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupWorld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/world/RaidSpawnsWaveScriptEvent.java#L13
Nameraid stops
Event Lines raid stops
Triggerswhen a village raid stops for any reason.
Generated Examplesafter raid stops:
Switchesreason:<reason> to only process the event if the raid stopped for a certain reason.
Contexts<context.raid> returns the raid data. See Language:Raid Event Data.
<context.reason> returns the reason for stopping. See 🔗https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/event/raid/RaidStopEvent.Reason.html.
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupWorld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/world/RaidStopsScriptEvent.java#L11
Nametick
Event Lines tick
Triggersevery single tick.
Generated Examplesafter tick:
Switchesevery:<count> to only run the event every *count* times (like "every:5" for every 5 ticks).
Contexts<context.tick> how many ticks have passed since the server started.
GroupCore
Warning(s)This event fires very rapidly and is usually not the most ideal way to handle things. Generally, prefer Event:delta time.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/core/TickScriptEvent.java#L9
Nametnt primes
Event Lines tnt primes
Triggerswhen TNT is activated and will soon explode.
Generated Examplesafter tnt primes:
Has Playerwhen the priming entity is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Contexts<context.entity> returns the entity that primed the TNT, if any.
<context.block> returns the location of the block that primed the TNT, if any.
<context.location> returns the location of the TNT block being primed.
<context.cause> returns the cause of the TNT being primed. Refer to 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/block/TNTPrimeEvent.PrimeCause.html
<context.reason> deprecated in favor of <context.cause> for 1.19+.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupBlock
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/block/TNTPrimesScriptEvent.java#L16
Namevillager changes profession
Event Lines villager changes profession
Triggerswhen a villager changes profession.
Generated Exampleson villager changes profession:
after villager changes profession:
Contexts<context.entity> returns the EntityTag of the villager.
<context.profession> returns the name of the new profession. 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Villager.Profession.html
<context.reason> returns the reason for the change. 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/VillagerCareerChangeEvent.ChangeReason.html
DetermineElementTag to change the profession.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupEntity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/VillagerChangesProfessionScriptEvent.java#L15

Language


Name/denizen submit command
DescriptionUse the '/denizen submit' command with '/denizen debug -r' to record debug output and post it online for assisting developers to see.

To begin recording, simply use '/denizen debug -r'.
After that, any debug output sent to the console and any player chat will be added to an internal record.
Once enabled, you should then fire off scripts and events that aren't working fully.
Finally, you use the '/denizen submit' command to take all the recording information and paste it to an online pastebin hosted by the Denizen team.
It will give you back a direct link to the full debug output, which you can view yourself and send to other helpers without trouble.

There is no limit to the recording size, to prevent any important information from being trimmed away.
Be careful not to leave debug recording enabled by accident, as it may eventually begin using up large amounts of memory.
(The submit command will automatically disable recording, or you can instead just use '/denizen debug -r' again.)
GroupConsole Commands
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/command/DenizenCommandHandler.java#L53
Name/ex command
DescriptionThe '/ex' command is an easy way to run a single denizen script command in-game.
'Ex' is short for 'Execute'.
Its syntax, aside from '/ex' is exactly the same as any other Denizen script command.
When running a command, some context is also supplied, such as '<player>' if being run by a player (versus the console),
as well as '<npc>' if a NPC is selected by using the '/npc sel' command.

By default, ex command debug output is sent to the player that ran the ex command (if the command was ran by a player).
To avoid this, use '-q' at the start of the ex command.
Like: /ex -q narrate "wow no output"

The '/ex' command creates a new queue each time it's run,
meaning for example '/ex define' would do nothing, as the definition will be lost immediately.

If you need to sustain a queue between multiple executions, use '/exs' ("Execute Sustained").
A sustained queue will use the same queue on every execution until the queue stops (normally due to '/exs stop').
Be warned that waits will block the sustained queue - eg '/exs wait 10m' will make '/exs' effectively unusable for 10 minutes.

Examples:
/ex flag <player> test_flag:!
/ex run npc_walk_script

Need to '/ex' a command as a different player or NPC? Use Language:The Player and NPC Arguments.

Examples:
/ex narrate player:<[aplayer]> 'Your health is <player.health.formatted>.'
/ex walk npc:<[some_npc]> <player.cursor_on>
GroupConsole Commands
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/command/ExCommandHandler.java#L34
NameAdvanced Object Matchables
DescriptionScript events have a variety of matchable object inputs, and the range of inputs they accept may not always be obvious.
For example, an event might be "player clicks <block>"... what can "<block>" be filled with?

"<block>" usually indicates that a LocationTag and/or MaterialTag will be matched against.
This means you can specify any valid block material name, like "stone" or "air", like "on player clicks stone:" (will only run the event if the player is clicking stone)
You can also use a catch-all such as "block", like "on player clicks block:" (will always run the event when the player clicks anything/anywhere)
You can also use some more complicated matchables such as "vanilla_tagged:", like "on player clicks vanilla_tagged:mineable/axe:" (will run if the block is mineable with axes)
(For more block-related options, refer to the ObjectType:LocationTag and ObjectType:MaterialTag matchers lists.)

Many object types can be used for matchables, the valid inputs are unique depending on the object type involved.

Some inputs don't refer to any object at all - they're just advanced matchers for some generic plaintext,
for example "<cause>" implies an enumeration of causes will be matched against.

Many inputs support advanced matchers. For details on that, see Language:Advanced Object Matching.

A common matchable type found among different objects is a Flag Matchable. This usually looks like "item_flagged:<flag>"
This matches if the object has the specified flag, and fails to match if the object doesn't have that flag.
You can specify multiple required flags with '|', like "item_flagged:a|b|c", which will match if-and-only-if the item has ALL the flags named.
They can also be used to require the object does NOT have the flag with a "!" like "item_flagged:!<flag>".
When using multiple flags with "|", the "!" is per-entry, so "item_flagged:!a|b" requires the item DOES have 'b' but does NOT have 'a'.

Note also that in addition to events, tags often also have matchables as input params,
usually documented like ".types[<matcher>]", with tag documentation specifying what matcher is used,
or like "<material_matcher>" to indicate in this example specifically MaterialTag matchables are allowed.

Not all object types have defined matchable options, and those that do list them in their ObjectType meta. For an example of this, check ObjectType:ItemTag.

As a special case, "in:<area>" style matchable listings in event conform to the following option set:
"biome:<name>": matches if the location is in a given biome, using advanced matchers.
"cuboid" plaintext: matches if the location is in any noted cuboid.
"ellipsoid" plaintext: matches if the location is in any noted ellipsoid.
"polygon" plaintext: matches if the location is in any noted polygon.
"chunk_flagged:<flag>": a Flag Matchable for ChunkTag flags.
"area_flagged:<flag>": a Flag Matchable for AreaObject flags.
Area note name: matches if an AreaObject note that matches the given advanced matcher contains the location.
If none of the above are used, uses WorldTag matchers.
GroupObject System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java#L45
NameAdvanced Object Matching
DescriptionScript event lines often include specific 'matchable' keywords.
For example, while you can write "on player breaks block:" as a script event line,
you can also instead write "on player breaks stone:" to listen to a much more specific event.
This is general in-line matching.
This is made available to avoid needing to do things like "- if <context.material.name> == stone"
just to validate whether an event is even relevant to you.

Of course, there are times when you want to more than one specific thing to be handled by the event, so what do you do?
The Denizen script event system provides a few 'advanced' options to get more detailed matching.

One option is to use wildcards.
For example, there are several 'log' materials, such as 'oak_log', 'birch_log', and more for the rest of the tree types.
So how can you match a player breaking any of these? Use "on player breaks *_log:"
The asterisk is a generic wildcard, it means any text at all will match. So an asterisk followed by '_log' means
any material at all that has a name ending with '_log', including 'birch_log' and the rest.

Note that you can also use multiple wildcards at once, like "on player breaks block with:my_*_script_*:"
That example will work for item scripts named "my_item_script_1" and "my_first_script_of_items" or any similar name.
Note also that wildcards still match for blanks, so "my_item_script_" would still work for that example.

You can also specify lists. For example, if you want an event to work with certain tool types,
the 'on player breaks block:' event supports a switch named 'with', like 'on player breaks block with:iron_pickaxe:'
So lets match multiple tools for our event...
'on player breaks block with:iron_pickaxe|gold_pickaxe|diamond_axe|wooden_shovel:'

You can also combine wildcards and lists... note that lists are the 'wider' option.
That is, if you have wildcards and lists together, you will have a list of possible matches, where each entry may contain wildcards, you will not have a wildcard match with a list.
As a specific example,
'*_pickaxe|*_axe' will match any pickaxe or any axe.
'*_pickaxe|stone' will match any pickaxe or specifically stone. It will NOT match other types of stone, as it interprets
the match to be a list of "*_pickaxe" and "stone", NOT "*" followed by a list of "pickaxe" or "stone".

Additionally, when you're really desperate for a good matcher, you may use 'regex:'
For example, "on player breaks regex:(?i)\d+_customitem:"
Note that generally regex should be avoided whenever you can, as it's inherently hard to track exactly what it's doing at-a-glance, and may have unexpected edge case errors.

If you want to match anything *except* a specific value, just prefix the matcher with '!'
For example, on player breaks !stone:" will fire for a player breaking any block type OTHER THAN stone.
This can be combined with other match modes, like "on player breaks !*wood|*planks|*log:" will fire for any block break other than any wood variant.

These advanced matchers are also used in some commands and tags, such as Tag:ObjectTag.advanced_matches, or in Command:if with the 'matches' operator.

Object types have their own special supported matchable inputs, refer to Language:Advanced Object Matchables.
GroupObject System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/events/ScriptEvent.java#L828
NameAssignment Script Containers
DescriptionAssignment script-containers provide functionality to NPCs by 'assignment' of the container. Assignment
scripts are meant to be used when customizing the normal behavior of NPCs. This can be used on a 'per-NPC' basis,
but the encouraged approach is to design assignment scripts in a way that they can be used for multiple NPCs,
perhaps with the use of constants or flags to determine specific information required by the scripts.

Features unique to assignment script-containers include 'actions' and 'interact script' assignment.
Like any script, the ability to run local utility scripts can be accomplished as well. This allows fully
interactive NPCs to be built purely with Assignment Scripts, and for advanced situations, world scripts and
interact scripts can provide more functionality.
See also Language:interact script containers

Assignments scripts can be automatically disabled by adding "enabled: false" as a root key (supports any load-time-parseable tags).
This will disable any "actions" on the script (but not interact scripts steps - disable the interact for that).

Basic structure of an assignment script:

Assignment_Script_Name:

    type: assignment

    # | All assignment scripts MUST have this key!
    actions:
        on <action>:
        - ...

    # | Most assignment scripts should exclude this key, but it's available.
    default constants:
        <constant_name>: <value>
        <constant_list>:
        - ...

    # | MOST assignment scripts should have this key!
    interact scripts:
    - <interact_script_name>


Though note that almost always you should include the 'actions:' key, usually with the 'on assignment:' action (if using triggers).
Refer to Action:assignment.
GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/AssignmentScriptContainer.java#L13
NameAttribute Modifiers
DescriptionIn minecraft, the "attributes" system defined certain core numerical values on entities, such as max health or attack damage.
The value of an "attribute" is determined by its "base value" modified mathematically by each of its "attribute modififers".
"Attribute modifiers" can be added either directly to the entity, or onto items - when on an item, an entity can equip it into the correct slot to automatically apply the modifier.

These can be read via such tags as Tag:EntityTag.attribute_modifiers, Tag:ItemTag.attribute_modifiers,
Tag:EntityTag.has_attribute, Tag:EntityTag.attribute_value, Tag:EntityTag.attribute_base_value, Tag:EntityTag.attribute_default_value, ...

These can be modified by such mechanisms as Mechanism:EntityTag.attribute_base_values, Mechanism:EntityTag.attribute_modifiers, Mechanism:EntityTag.add_attribute_modifiers,
Mechanism:EntityTag.remove_attribute_modifiers, Mechanism:ItemTag.attribute_modifiers, Mechanism:ItemTag.add_attribute_modifiers, Mechanism:ItemTag.remove_attribute_modifiers, ...

The input format of each of the 'add' and set mechanisms is slightly complicated: a MapTag where the keys are attribute names, and values are a ListTag of modifiers,
where each modifier is itself a MapTag with required keys 'operation' and 'amount', and additionally:
Before MC 1.21: optional 'name', 'slot', and 'id' keys.
The default ID will be randomly generated, the default name will be the attribute name.
After MC 1.21: required 'key' key, and optional 'slot'.
The 'key' is the attribute's name/identifier in a "namespace:key" format (defaulting to the "minecraft" namespace), which has to be distinct to other modifiers of the same type on the object.

Valid operations: ADD_NUMBER, ADD_SCALAR, and MULTIPLY_SCALAR_1
Valid slots (used up to MC 1.20.6): HAND, OFF_HAND, FEET, LEGS, CHEST, HEAD, ANY
Valid slot groups (used on MC 1.20.6+): 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/EquipmentSlotGroup.html
Valid attribute names are listed at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/attribute/Attribute.html
The default slot/slot group is "any".

Operation names are based on the Bukkit enum.
ADD_NUMBER corresponds to Mojang "ADDITION" - adds on top of the base value.
ADD_SCALAR corresponds to Mojang "MULTIPLY_BASE" - adds to the total, multiplied by the base value.
MULTIPLY_SCALAR_1 corresponds to Mojang "MULTIPLY_TOTAL", multiplies the final value (after both "add_number" and "add_scaler") by the amount given plus one.

They are combined like (pseudo-code):

- define x <[base_value]>
- foreach <all_modifiers[ADD_NUMBER]>:
    - define x:+:<[value]>
- define y <[x]>
- foreach <all_modifiers[ADD_SCALAR]>:
    - define y:+:<[x].mul[<[value]>]>
- foreach <all_modifiers[MULTIPLY_SCALAR_1]>:
    - define y:*:<[value].add[1]>
- determine <[y]>


See also 🔗https://minecraft.wiki/w/Attribute#Modifiers

For a quick and dirty in-line input, you can do for example: [generic_max_health=<list[<map[key=my_project:add_health;operation=ADD_NUMBER;amount=20;slot=HEAD]>]>]

For more clean/proper input, instead do something like:

- definemap attributes:
    generic_max_health:
        1:
            key: my_project:add_health
            operation: ADD_NUMBER
            amount: 20
            slot: head
- inventory adjust slot:head add_attribute_modifiers:<[attributes]>


When pre-defining a custom item, instead of this, simply use an item script: Language:item script containers. That page shows an example of valid attribute modifiers on an item script.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeModifiers.java#L208
NameCommand Script Containers
DescriptionCommand script containers allow you to register your own custom commands to the server.
This also allows the command to show up in the '/help' command, with some info on the command.

Note that existing names or aliases from other plugins will be overridden.
If you want to run a script at the same time as an existing command, see Event:on command.

The following is the format for the container.

The required keys are 'name:', 'description:', 'usage:', and 'script:'
All other keys can be excluded if unneeded.
If you are not intentionally setting a specific value for the other keys, it is
strongly recommended that you simply not include them at all.

Please note that 'name:' is the true name of the command (written by users),
and 'usage:' is for documentation in the '/help' command.
These two options should almost always show the same name.


Command scripts can be automatically disabled by adding "enabled: false" as a root key (supports any load-time-parseable tags).


# The name of the script doesn't matter, and will not affect the command in any way.
Command_Script_Name:

    type: command

    # The name of the command. This will be the default method for running the command, and will show in '/help'.
    # | All command scripts MUST have this key!
    name: mycmd

    # The description of the command. This will be shown in the '/help' command.
    # Multiple lines are acceptable, via <&nl> (the tag for a new line), but you should
    # make the first line a brief summary of what your command does.
    # | All command scripts MUST have this key!
    description: My command.

    # Correct usage for the command. This will show in the '/help' command.
    # This is NOT the name of the command, and it is NOT used to control input parsing. It is EXCLUSIVELY for '/help'.
    # | All command scripts MUST have this key!
    usage: /mycmd <&lt>myArg1<&gt>

    # A list of aliases for the command. These will be used as alternative ways to trigger the command, and will show in the '/help' command.
    # | Some command scripts might have this key, but it's optional.
    aliases:
    - myalias
    - mycommand

    # The permission node to check for permissions plugins. This will automatically
    # block players without the permission from accessing the command and help for
    # the command.
    # Note that you can include multiple permission nodes (a player only needs to have any one permission from the list)
    # by separating them with a semicolon, like: perm.one;perm.two;third.perm
    # | Most command scripts should have this key!
    permission: my.permission.node

    # The message to send to the player when they try to use the command without
    # permission. If this is not specified, the default Bukkit message will be sent.
    # Has "permission" def available.
    # | Most command scripts should NOT have this key, but it's available.
    permission message: Sorry, <player.name>, you can't use my command because you don't have the permission '<[permission]>'!

    # The procedure-based script that will be checked when a player or the console
    # is trying to view help for this command. This must always be determined true
    # or false. If there is no script, it's assumed that all players and the console
    # should be allowed to view the help for this command.
    # Available context: <context.server> returns whether the server is viewing the help (a player if false).
    # | Most command scripts should NOT have this key, but it's available.
    allowed help:
    - determine <player.has_flag[special_allowed_help_flag]||<context.server>>

    # You can optionally specify tab completions on a per-argument basis.
    # Available context:
    # <context.args> returns a list of input arguments.
    # <context.raw_args> returns all the arguments as raw text.
    # <context.server> returns whether the server is using tab completion (a player if false).
    # <context.alias> returns the command alias being used.
    # | This key is great to have when used well, but is not required.
    tab completions:
        # This will complete "alpha" and "beta" for the first argument
        1: alpha|beta
        # This will complete any online player name for the second argument
        2: <server.online_players.parse[name]>
        # This will allow flags "-a", "-b", or "-c" to be entered in the third, fourth, or fifth argument.
        3 4 5: -a|-b|-c
        # Any argument other than the ones explicitly listed will be handled here with a tab complete that just says 'StopTyping'.
        default: StopTyping

    # You can also optionally use the 'tab complete' key to build custom procedure-style tab complete logic
    # if the simply numeric argument basis isn't sufficient.
    # Has the same context available as 'tab completions'.
    # | Most scripts should leave this key off, though it can be useful to some.
    tab complete:
    - determine some|dynamic|logic|here

    # The script that will run when the command is executed.
    # No, you do not need '- determine fulfilled' or anything of the sort, since the command is fully registered.
    # Available context:
    # <context.args> returns a list of input arguments.
    # <context.raw_args> returns all the arguments as raw text.
    # <context.source_type> returns the source of the command. Can be: PLAYER, SERVER, COMMAND_BLOCK, or COMMAND_MINECART.
    # <context.alias> returns the command alias being used.
    # <context.command_block_location> returns the command block's location (if the command was run from one).
    # <context.command_minecart> returns the EntityTag of the command minecart (if the command was run from one).
    # | All command scripts MUST have this key!
    script:
    - narrate Yay!
    - narrate "My command worked!"
    - narrate "And I typed '/<context.alias> <context.raw_args>'!"
GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/CommandScriptContainer.java#L28
NameDamage Cause
DescriptionPossible damage causes: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html
These are used in Event:entity damage, Tag:server.damage_causes, Tag:EntityTag.last_damage.cause, ...
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityDamagedScriptEvent.java#L27
NameData Actions
DescriptionSeveral commands function as a way to modify data values,
including Command:flag, Command:yaml, and Command:define.
These commands each allow for a set of generic data change operations.

These operations can be used with a syntax like "<key>:<action>:<value>"
For example "mykey:+:5" will add 5 to the value at 'mykey'.

The following actions are available:

Actions that take no input value:
Increment: '++': raises the value numerically up by 1. Example: - define x:++
Decrement: '--': lowers the value numerically down by 1. Example: - define x:--
Remove: '!': removes the value entirely. Example: - define x:!

Actions that take an input value:
Add: '+': adds the input value to the value at the key. Example: - define x:+:5
Subtract: '-': subtracts the input value from the value at the key. Example: - define x:-:5
Multiply: '*': multiplies the value at the key by the input value. Example: - define x:*:5
Divide: '/': divides the value at the key by the input value. Example: - define x:/:5
List insert: '->': adds the input value as a single new entry in the list (see also 'List split'). Example: - define x:->:new_value
List remove: '<-': removes the input value from the list. Example: - define x:<-:old_value
List split: '|': splits the input list and adds each value into an existing list at the key. Example: - define x:|:a|b|c

Special cases:
In some commands, specifying no action or input value will automatically set the key's value to 'true'.
Setting a '<key>:<value>' without an action will set the key to the exact value. Be careful to not input a list like this, use 'split to new' instead.

Note that the <key> input may take an index input as well, for example "mykey[3]:value".
This also works with most actions.
That is, for example: "mykey[3]:--" will decrement the third item in the list at 'mykey'.
This syntax may also be used to remove the entry at a specified index, for example "mykey[3]:<-"
The index can also be "last" to automatically use the last entry in the list as the target.
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/utilities/data/DataActionType.java#L5
NameData Script Containers
DescriptionData script containers are generic script containers for information that will be referenced by other scripts.

No part of a 'data' script container is ever run as commands.

There are no required keys.

Generally, data is read using the Tag:ScriptTag.data_key tag.


data_script_name:

    type: data

    # Your data here
    some_key: some value
    some_list_key:
    - some list value
    some_map_key:
        some_subkey: some value

GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/containers/core/DataScriptContainer.java#L9
NameDenizen Entity Types
DescriptionAlong with the default EntityTypes 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityType.html,
Denizen also adds in a few altered entities:
- FAKE_ARROW: For use when you want an arrow to stay spawned at a location for any reason.
- FAKE_PLAYER: Spawns a fake player (non-Citizens NPC).
Use with the mechanisms "name" and "skin" to alter the respective properties.
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/entity/DenizenEntityType.java#L39
NameDenizen Permissions
DescriptionThe following is a list of all permission nodes Denizen uses within Bukkit.

denizen.clickable # use the 'denizenclickable' command, which is automatically executed when using Command:clickable and for clickable chat triggers
denizen.basic # use the basics of the /denizen command
denizen.ex # use the /ex command
denizen.debug # use the /denizen debug command
denizen.submit # use the /denizen submit command

Additionally:
denizen.npc.health, denizen.npc.sneak,
denizen.npc.effect, denizen.npc.fish, denizen.npc.sleep, denizen.npc.stand,
denizen.npc.sit, denizen.npc.nameplate, denizen.npc.nickname, denizen.npc.trigger,
denizen.npc.assign, denizen.npc.constants, denizen.npc.pushable

However, we recommend just giving op to whoever needs to access Denizen - they can op themselves through Denizen anyway, why not save the trouble?
( EG, /ex execute as_server "op <player.name>" )
GroupConsole Commands
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/command/DenizenCommandHandler.java#L30
NameDisplay Entity Interpolation
DescriptionDisplay entities can interpolate between different properties, providing a smooth transition.
Interpolation can be started (immediately or with a delay) using Property:EntityTag.interpolation_start, and it's duration can be set using Property:EntityTag.interpolation_duration.
The following properties can be interpolated: Property:EntityTag.scale, Property:EntityTag.translation, Property:EntityTag.shadow_radius, Property:EntityTag.shadow_strength, Mechanism:EntityTag.opacity, Property:EntityTag.left_rotation, Property:EntityTag.right_rotation.
GroupMinecraft Logic
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityInterpolationStart.java#L10
NameEconomy Script Containers
DescriptionEconomy script containers

Economy script containers provide a Vault economy, which can be used in scripts by
Tag:PlayerTag.money and Command:money
and as well by any other plugin that relies on economy functionality (such as shop plugins).

Note that vault economy bank systems are not currently supported.
Per-world economies are also not currently supported.

Note that in most cases, you do not want to have multiple economy providers, as only one will actually be in use.

ALL SCRIPT KEYS ARE REQUIRED.

Economy scripts can be automatically disabled by adding "enabled: false" as a root key (supports any load-time-parseable tags).


# The script name will be shown to the economy provider as the name of the economy system.
Economy_Script_Name:

    type: economy

    # The Bukkit service priority. Priorities are Lowest, Low, Normal, High, Highest.
    priority: normal
    # The name of the currency in the singular (such as "dollar" or "euro").
    name single: scripto
    # The name of the currency in the plural (such as "dollars" or "euros").
    name plural: scriptos
    # How many digits after the decimal to include. For example, '2' means '1.05' is a valid amount, but '1.005' will be rounded.
    digits: 2
    # Format the standard output for the money in human-readable format. Use "<[amount]>" for the actual amount to display.
    # Fully supports tags.
    format: $<[amount]>
    # A tag that returns the balance of a linked player. Use a 'proc[]' tag if you need more complex logic.
    # Must return a decimal number.
    balance: <player.flag[money]>
    # A tag that returns a boolean indicating whether the linked player has the amount specified by def "<[amount]>".
    # Use a 'proc[]' tag if you need more complex logic.
    # Must return 'true' or 'false'.
    has: <player.flag[money].is[or_more].than[<[amount]>]>
    # A script that removes the amount of money needed from a player.
    # Note that it's generally up to the systems calling this script to verify that the amount can be safely withdrawn, not this script itself.
    # However you may wish to verify that the player has the amount required within this script.
    # The script may determine a failure message if the withdraw was refused. Determine nothing for no error.
    # Use def 'amount' for the amount to withdraw.
    withdraw:
    - flag <player> money:-:<[amount]>
    # A script that adds the amount of money needed to a player.
    # The script may determine a failure message if the deposit was refused. Determine nothing for no error.
    # Use def 'amount' for the amount to deposit.
    deposit:
    - flag <player> money:+:<[amount]>

GroupScript Container System
RequiresVault
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/EconomyScriptContainer.java#L34
NameElementTag(Boolean)
DescriptionWhen "ElementTag(Boolean)" appears in meta documentation, this means the input/output is an ElementTag
(refer to ObjectType:ElementTag) that is a boolean.
Boolean means either a "true" or a "false".
GroupObject System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L68
NameElementTag(Decimal)
DescriptionWhen "ElementTag(Decimal)" appears in meta documentation, this means the input/output is an ElementTag
(refer to ObjectType:ElementTag) that is a decimal number.
That is, for example: 0, 1, 5, -4, 10002325, 4.2, -18.281241 or any other number.
While this is specifically for decimal numbers, the decimal itself is optional (will be assumed as ".0").

In some cases, this will also be documented as "<#.#>".
GroupObject System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L89
NameElementTag(Number)
DescriptionWhen "ElementTag(Number)" appears in meta documentation, this means the input/output is an ElementTag
(refer to ObjectType:ElementTag) that is an integer number.
That is, for example: 0, 1, 5, -4, 10002325 or any other number.
This does NOT include decimal numbers (like 1.5). Those will be documented as Language:ElementTag(Decimal).

In some cases, this will also be documented as "<#>".
GroupObject System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L77
NameEntity Color Types
DescriptionThis is a quick rundown of the styling information used to handle the coloration of a mob in Property:EntityTag.color.
The list of values can be gotten in-script via Tag:EntityTag.allowed_colors.

For horses, the format is COLOR|STYLE,
where COLOR is BLACK, BROWN, CHESTNUT, CREAMY, DARK_BROWN, GRAY, or WHITE.
and where STYLE is WHITE, WHITE_DOTS, WHITEFIELD, BLACK_DOTS, or NONE.
For rabbits, the types are BROWN, WHITE, BLACK, BLACK_AND_WHITE, GOLD, SALT_AND_PEPPER, or THE_KILLER_BUNNY.
For cats (not ocelots), the format is TYPE|COLOR (see below).
The types are TABBY, BLACK, RED, SIAMESE, BRITISH_SHORTHAIR, CALICO, PERSIAN, RAGDOLL, WHITE, JELLIE, and ALL_BLACK.
For parrots, the types are BLUE, CYAN, GRAY, GREEN, or RED.
For llamas, the types are CREAMY, WHITE, BROWN, and GRAY.
For mushroom_cows, the types are RED and BROWN.
For foxes, the types are RED and SNOW.
For pandas, the format is MAIN_GENE|HIDDEN_GENE.
The gene types are NORMAL, LAZY, WORRIED, PLAYFUL, BROWN, WEAK, and AGGRESSIVE.
For villagers and zombie_villagers, the types are DESERT, JUNGLE, PLAINS, SAVANNA, SNOW, SWAMP, and TAIGA.
For tropical_fish, the input is PATTERN|BODYCOLOR|PATTERNCOLOR, where BodyColor and PatterenColor are both DyeColor (see below),
and PATTERN is KOB, SUNSTREAK, SNOOPER, DASHER, BRINELY, SPOTTY, FLOPPER, STRIPEY, GLITTER, BLOCKFISH, BETTY, is CLAYFISH.
For sheep, wolf, and shulker entities, the input is a Dye Color.
For Tipped Arrow and Area effect cloud entities, the input is a ColorTag.
For goats, the input is SCREAMING or NORMAL.
For axolotl, the types are BLUE, CYAN, GOLD, LUCY, or WILD.
For frogs, the types are TEMPERATE, WARM, or COLD.
For boats, type types are ACACIA, BAMBOO, BIRCH, CHERRY, DARK_OAK, JUNGLE, MANGROVE, OAK, or SPRUCE.

For all places where a DyeColor is needed, the options are:
BLACK, BLUE, BROWN, CYAN, GRAY, GREEN, LIGHT_BLUE, LIGHT_GRAY, LIME, MAGENTA, ORANGE, PINK, PURPLE, RED, WHITE, or YELLOW.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityColor.java#L328
NameEntity Script Containers
DescriptionEntity script containers are an easy way to pre-define custom entities for use within scripts. Entity
scripts work with the EntityTag object, and can be fetched with the Object Fetcher by using the
EntityTag constructor of simply the script name. Example: - spawn <player.location> MyEntity

The following is the format for the container.
Except for the 'entity_type' key (and the required 'type' key), all other keys are optional.

You can also include a 'custom' key to hold any custom data attached to the script.


# The name of the entity script is the same name that you can use to construct a new
# EntityTag based on this entity script. For example, an entity script named 'space_zombie'
# can be referred to as 'space_zombie'.
Entity_Script_Name:

    type: entity

    # Must be a valid EntityTag (EG 'zombie' or 'pig[age=baby]') See 'EntityTag' for more information.
    # | All entity scripts MUST have this key!
    entity_type: BASE_ENTITY_TYPE_HERE

    # If you want custom data that won't be parsed, use the 'data' root key.
    # | Some entity scripts should have this key!
    data:
        example_key: example value

    # You can set flags on the entity when it spawns.
    # | Some entity scripts should have this key!
    flags:
        my_flag: my value

    # Specify any mechanisms to apply the entity when it spawns.
    # | Some entity scripts should have this key!
    mechanisms:

        # Samples of mechanisms to use (any valid EntityTag mechanisms may be listed like this):

        # Whether the entity has the default AI
        # | Do not copy this line, it is only an example.
        has_ai: true/false

        # What age the entity is
        # | Do not copy this line, it is only an example.
        age: baby/adult/<#>


MORE MECHANISM OPTIONS ARE LISTED HERE: 🔗https://meta.denizenscript.com/Docs/Mechanisms/entitytag.
GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/EntityScriptContainer.java#L27
NameEscaping System
DescriptionSometimes, you need to avoid having symbols that might be misinterpreted in your data.
Denizen provides the tags Tag:ElementTag.escaped and Tag:ElementTag.unescaped to help deal with that.
Escaped replaces symbols with the relevant escape-code, and unescaped replaces the escape-codes with the real symbols.

Some older style tags and mechanisms may automatically use this same escaping system.

The mapping of symbols to escape codes is as follows:

(THESE ARE NOT TAG NAMES)

| = &pipe
< = &lt
> = &gt
newline = &nl
& = &amp
; = &sc
[ = &lb
] = &rb
: = &co
at sign @ = &at
. = &dot
\ = &bs
' = &sq
" = &quo
! = &exc
/ = &fs
§ = &ss
# = &ns
= = &eq
{ = &lc
} = &rc

Also, you can input a non-breaking space via &sp

Note that these are NOT tag names. They are exclusively used by the escaping system.
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/EscapeTagUtil.java#L8
NameFlag System
DescriptionThe flag system is a core feature of Denizen, that allows for persistent data storage linked to objects.

"Persistent" means the data is still around even after a server restart or anything else, and is only removed when you choose for it to be removed.
"Linked to objects" means rather than purely global values, flags are associated with a player, or an NPC, or a block, or whatever else.

See also the guide page at 🔗https://guide.denizenscript.com/guides/basics/flags.html.

For non-persistent temporary memory, see instead Command:define.
For more generic memory options, see Command:yaml or Command:sql.

Flags can be sub-mapped with the '.' character, meaning a flag named 'x.y.z' is actually a flag 'x' as a MapTag with key 'y' as a MapTag with key 'z' as the final flag value.
In other words, "<server.flag[a.b.c]>" is equivalent to "<server.flag[a].get[b].get[c]>"

Server flags can be set by specifying 'server' as the object, essentially a global flag target, that will store data in the file "plugins/Denizen/server_flags.dat"

Most unique object types are flaggable - refer to any given object type's language documentation for details.

Most flag sets are handled by Command:flag, however some non-unique objects (such as items) are flagged with specialty commands or tags unique to the type.
Any supported object type, including the 'server' base tag, can use the tags
Tag:FlaggableObject.flag, Tag:FlaggableObject.has_flag, Tag:FlaggableObject.flag_expiration, Tag:FlaggableObject.list_flags.

Flags have an expiration system, which is used by specifying a time at which they should expire (or via a duration which internally calculates the date/time of expiration by adding the duration input to the current date/time).
Expirations are then *checked for* in flag tags - meaning, the flag tags will internally compare a stored date/time against the real current date/time,
and if the flag's expiration time is in the past, the flag tag will return values equivalent to if the flag doesn't exist.
There is no system actively monitoring for flag expirations or applying them. There is no event for expirations occurring, as they don't "occur" per se.
In other words, it is correct to say a flag "is expired" or a flag "is not expired",
but it is incorrect to say a flag "expires", as it is not an active action (though this wording can be convenient when speaking informally).
Expired flags are sometimes 'cleaned up' (meaning, any expired flags get actually removed from internal storage), usually when a flag save file is loaded into the server.

As a bonus feature-combo, it is possible to transmit sets of flags exactly in-place and reapply them, this is particular useful for example to synchronize player data across Bungee servers.
To do this, you can read raw flag data with the tag Tag:FlaggableObject.flag_map and the '__raw' prefix in a flag command. For example:

# Gather the original data
- define playerdata <player.flag_map[flag1|flag2|taco|potato|waffle|etc]>
# Now reapply it elsewhere (eg a different Bungee server)
- flag <player> __raw:<[playerdata]>


ItemTags, rather than using the flag command, are primarily flagged via Command:inventory with the 'flag' argument, or via Tag:ItemTag.with_flag, or via the item script container.

Additionally, flags be searched for with tags like Tag:server.online_players_flagged, Tag:server.players_flagged, Tag:server.spawned_npcs_flagged, Tag:server.npcs_flagged, ...
Flags can also be required by script event lines, as explained at Language:Script Event Switches.
Item flags can also be used as a requirement in Command:take.

Note that some internal flags exist, and are prefixed with '__' to avoid conflict with normal user flags.
This includes:
- '__raw' and '__clear' which are part of a fake-flag system used for forcibly setting raw data to a flaggable object,
- '__scripts', '__time', etc. which is where some object-type flags are stored inside of server flags,
- '__interact_step' which is used for interact script steps, related to Command:zap,
- '__interact_cooldown' which is used for interact script cooldowns, related to Command:cooldown.
GroupDenizen Scripting Language
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/core/FlagCommand.java#L34
NameHealth Trait
DescriptionBy default, NPCs are invulnerable, unable to be damaged. If you want your NPC
to be able to take damage, or use the left click as an interaction, it must
have the health trait. The Health trait is automatically enabled if you set
the damage trigger state to true.

You can use the denizen vulnerable command to make your NPCs react to left
click, but not take damage. - vulnerable state:false

Enable Damage trigger via dScript: - trigger name:damage state:true
Enable Health trait via dScript: - trait state:true health
Enable Health trait via npc command: /npc health --set # (-r)

Enable automatic respawn (default delay 300t): /npc health --respawndelay [delay as a duration]
Set respawn location: - flag <npc> respawn_location:<location>

Related Tags
Tag:EntityTag.health
Tag:EntityTag.formatted_health
Tag:EntityTag.health_max
Tag:EntityTag.health_percentage
Tag:NPCTag.has_trait[health]

Related Mechanisms
Mechanism:EntityTag.health
Mechanism:EntityTag.max_health

Related Commands
Command:heal
Command:health
Command:vulnerable

Related Actions
Action:on damage
Action:on damaged
Action:on no damage trigger
GroupNPC Traits
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/npc/traits/HealthTrait.java#L29
NameInteract Script Containers
DescriptionInteract script containers are used to handle NPC triggers.

Interact scripts must be referenced from an assignment script container to be of any use.
See Language:assignment script containers.

The only required key on an interact script container is the 'steps:' key.

Within the steps key is a list of steps,
where the first step is '1', 'default', or any step that contains a '*' symbol.
After that, any steps must be 'zapped' to via the zap command: Command:zap.

Each step contains a list of trigger types that it handles, and the relevant handling that the given
trigger makes available.

Refer to Language:interact script triggers for documentation about the triggers available.
Any triggers used must be enabled in Action:assignment by Command:trigger.

Note that script commands ran in interact scripts by default have a delay between each command.
To override this delay, set 'speed: 0' on the container or change the relevant config setting.

Interact scripts can be automatically disabled by adding "enabled: false" as a root key (supports any load-time-parseable tags).


Interact_Script_Name:

    type: interact

    # | All interact scripts MUST have this key!
    steps:

        # The first step
        1:
            # Any trigger type here
            click trigger:
                script:
                    # Handle what happens when the NPC is clicked during step 1
                    - some commands
            # Other triggers here
        # other steps here

GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptContainer.java#L19
NameInteract Script Triggers
DescriptionInteract script triggers are the most basic components of standard NPC scripting.
They're very useful for NPCs that give quests or have other very basic interactions with players.
While less powerful that other tools that Denizen provides, they can be very straightforward and clear to use in many simpler cases.

Note that triggers have a default cooldown system built in to prevent users from clicking too rapidly.
However these are very short cooldowns by default - when you need a longer cooldown, use
Command:cooldown or Command:engage.

Triggers go in Language:interact script containers.

The available default trigger types are Language:click triggers,
Language:damage triggers, Language:chat triggers, and Language:proximity triggers.
GroupNPC Interact Scripts
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/InteractScriptContainer.java#L67
NameInternal Entity Data
DescriptionEach entity in Minecraft has a set of data values that get sent to the client, with each data value being a number id -> value pair.
Denizen allows direct control over that data, as it can be useful for things like setting values that would usually be blocked.
Because this is such a direct control that's meant to impose less restriction, there's no limitations/verification on the values being set other than basic type checking.
Note as well that as these are raw internal values, they are liable to change between minecraft version updates, especially the numeric IDs.
For all possible internal entity data values and their respective ids, see 🔗https://github.com/DenizenScript/Denizen/blob/dev/v1_20/src/main/java/com/denizenscript/denizen/nms/v1_20/helpers/EntityDataNameMapper.java#L50.
Alternatively, you can use the number id directly instead of the names listed there.
For a list of all entity data ids and their values, see 🔗https://wiki.vg/Entity_metadata
(note that it documents the values that eventually get sent to the client, so the input this expects might be slightly different in some cases).
You can input the equivalent denizen objects to have them be auto-converted to the internal types.
GroupMinecraft Logic
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/FakeInternalDataCommand.java#L24
NameItem Components
DescriptionMinecraft item components (see 🔗https://minecraft.wiki/w/Data_component_format) are managed as follows:
Each item type has a default set of component values; a food item will have food components by default, a tool item will have tool components by default, etc.
Different items can override their type's default components, either by setting values that weren't there previously (e.g. making an inedible item edible), or by removing values that are there by default (e.g. making a shield item that can't block).
Items' overrides can later be reset, making them use their type's default values again.

In Denizen, different item components are represented by item properties.
These properties allow both setting a component override on an item, and clearing/resetting it by providing no input.
Item properties' name will generally match their respective item component's name, but not always!
Due to this, features that take item component names as input (such as Tag:ItemTag.is_overridden) accept both Minecraft component names and Denizen property names.

Here is an example of applying all of this in a script:

# We define a default apple item
- define apple <item[apple]>
# We remove the apple's "food" component, making eating it restore no food points (it is still consumable due to the "consumable" component).
- adjust def:apple remove_component:food
# This check will pass, as the apple's "food" component is overridden to have no value.
- if <[apple].is_overridden[food]>:
  - narrate "The apple has a modified food component! It will behave differently to a normal apple."
# We reset the apple item's food component by adjusting with no value, making it a normal apple.
- adjust def:apple food:
GroupMinecraft Logic
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/DataComponentAdapter.java#L25
NameMap Script Containers
DescriptionMap scripts allow you define custom in-game map items, for usage with the map command.

The following is the format for the container.


# The name of the map script is used by the map command.
Map_Script_Name:

    type: map

    # Whether to display the original map below the custom values. Defaults to true.
    # | Some map scripts should have this key!
    original: true/false

    # Whether to constantly update things. Defaults to true.
    # | Some map scripts should have this key!
    auto update: true

    # Whether this map script renders uniquely per-player. Defaults to true.
    # | Some map scripts should have this key!
    contextual: true

    # Lists all contained objects.
    # | Most map scripts should have this key!
    objects:

        # The first object...
        1:
            # Specify the object type
            # Type can be IMAGE, TEXT, CURSOR, or DOT.
            type: image
            # Specify an HTTP url or file path within Denizen/images/ for the image. Supports animated .gif!
            image: my_image.png
            # Optionally add width/height numbers.
            width: 128
            height: 128
            # Specify a tag to show or hide custom content! Valid for all objects.
            # Note that all inputs other than 'type' for all objects support tags that will be dynamically reparsed per-player each time the map updates.
            visible: <player.name.contains_text[bob].not>

        2:
            type: text
            # Specify any text to display. Color codes not permitted (unless you know how to format CraftMapCanvas byte-ID color codes).
            text: Hello <player.name>
            # Specify the color of the text as any valid ColorTag.
            color: red
            # | Optionally, specify the following additional options:
            # Specify a font to use, which allows using special characters/other languages the default font may not support.
            font: arial
            # Specify a text size (only available with a custom font).
            size: 18
            # Specify a style, as a list that contains either "bold", "italic", or both (only available with a custom font).
            style: bold|italic
        3:
            type: cursor
            # Specify a cursor type
            cursor: red_marker
            # Optionally, specify a cursor direction. '180' seems to display as up-right usually.
            direction: 180
            # Supported on all objects: x/y positions, and whether to use worldly or map coordinates.
            x: 5
            # If 'world_coordinates' is set to 'true', the 'y' value corresponds to the 'z' value of a location.
            y: 5
            # If true: uses world coordinates. If false: uses map local coordinates. (Defaults to false).
            world_coordinates: false
            # If true: when the object goes past the edge, will stay in view at the corner. If false: disappears past the edge (defaults to false).
            show_past_edge: false

        4:
            type: dot
            # Specify the radius of the dot.
            radius: 1
            # Specify the color of the dot as any valid ColorTag.
            color: red



A list of cursor types is available through Tag:server.map_cursor_types.
GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/containers/core/MapScriptContainer.java#L23
NameMythicMobs Bridge
DescriptionIn addition to the tags, commands, and events found by searching for "mythicmobs" throughout the meta documentation,
Depenizen adds 4 new Denizen matchers, and additional features to Mythic Mobs: 2 Targeters, and a Condition.

Depenizen provides additional ObjectType:EntityTag and ObjectType:ItemTag matchers to match MythicMobs mobs/items:
- "mythic_mob" plaintext EntityTag matcher, matches if the entity is a mythic mob.
- "mythic_mob:<MythicMobID>" EntityTag matcher, matches if the entity is a mythic mob, and its ID matches the advanced matcher specified.
- "mythic_item" plaintext ItemTag matcher, matches if the item is a mythic item.
- "mythic_item:<MythicItemID>" ItemTag matcher, matches if the item is a mythic item, and its ID matches the advanced matcher specified.

Depenizen provides two additional targeters via the MythicMobs API: @DenizenEntity is an entity-based targeter, @DenizenLocation is a location-based targeter.
Both targeters can parse tags; they accept input of either an EntityTag or LocationTag respectively.
Both targeters also support returning ListTags containing their respective tag types.
Both targeters provide <context.entity> as an EntityTag of the caster.

Conditions provide different contexts depending on their usage.
The syntax for calling a Denizen tag as a condition is DenizenCondition.
The tag should return an ElementTag of a boolean value (true or false).
<context.location> is available for location-based checks,
<context.entity> is available for entity-based and caster-based checks,
and <context.target> is available for target-based checks.
NOTE: TriggerConditions are NOT currently supported.

Note as well that many parts of MythicMobs configurations allow usage of PlaceholderAPI, which means you can use the "denizen_" placeholder to read tags in any such parts,
refer to Language:PlaceholderAPI Bridge for more information.

Usage Examples

Example 1: @DenizenEntity{tag=<context.entity.location.find_players_within[30].filter[has_flag[marked]]>}

Example 2: @DenizenLocation{tag=<context.entity.location.find.surface_blocks.within[30].random[5]>}

Example 3: @DenizenEntity{tag=<proc[SomeProcScript]>}

Conditions:
- denizencondition{tag=<context.entity.location.find_players_within[30].is_empty.not>}
GroupDepenizen Bridges
RequiresDepenizen, MythicMobs
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/utilities/mythicmobs/MythicMobsLoaders.java#L20
NameObjectTags
DescriptionObjectTags are a system put into place by Denizen that make working with things, or 'objects',
in Minecraft and Denizen easier. Many parts of scripts will require some kind of object as an
argument, identifier/type, or such as in world events, part of an event name. The ObjectTags notation
system helps both you and Denizen know what type of objects are being referenced and worked with.

So when should you use ObjectTags? In arguments, event names, replaceable tags, configs, flags, and
more! If you're just a beginner, you've probably been using them without even realizing it!

ObjectTag is a broader term for a 'type' of object that more specifically represents something,
such as a LocationTag or ScriptTag, often times just referred to as a 'location' or 'script'. Denizen
employs many object types that you should be familiar with. You'll notice that many times objects
are referenced with their 'ObjectTag notation' which is in the format of 'x@', the x being the specific
notation of an object type. Example: player objects use the p@ notation, and locations use l@.
This notation is automatically generated when directly displaying objects, or saving them into data files.
It should never be manually typed into a script.

Let's take the tag system, for example. It uses the ObjectTags system pretty heavily. For instance,
every time you use <player.name> or <npc.id>, you're using a ObjectTag, which brings us to a simple
clarification: Why <player.name> and not <PlayerTag.name>? That's because Denizen allows Players,
NPCs and other 'in-context objects' to be linked to certain scripts. In short, <player> already
contains a reference to a specific player, such as the player that died in a world event 'on player dies'.
<PlayerTag.name> is instead the format for documentation, with "PlayerTag" simply indicating 'any player object here'.

ObjectTags can be used to CREATE new instances of objects, too! Though not all types allow 'new'
objects to be created, many do, such as ItemTags. With the use of tags, it's easy to reference a specific
item, say -- an item in the Player's hand -- items are also able to use a constructor to make a new item,
and say, drop it in the world. Take the case of the command/usage '- drop diamond_ore'. The item object
used is a brand new diamond_ore, which is then dropped by the command to a location of your choice -- just
specify an additional location argument.

There's a great deal more to learn about ObjectTags, so be sure to check out each object type for more
specific information. While all ObjectTags share some features, many contain goodies on top of that!
GroupObject System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L29
NameOperator
DescriptionAn operator is a tool for comparing values, used by commands like Command:if, Command:while, Command:waituntil, ... and tags like Tag:ObjectTag.is.than

Available Operators include:
"Equals" is written as "==" or "equals".
"Does not equal" is written as "!=".
"Is more than" is written as ">" or "more".
"Is less than" is written as "<" or "less".
"Is more than or equal to" is written as ">=" or "or_more".
"Is less than or equal to" is written as "<=" or "or_less".
"does this list or map contain" is written as "contains". For example, "- if a|b|c contains b:" or "- if [a=1;b=2] contains b:"
"is this in the list or map" is written as "in". For example, "- if b in a|b|c:", or "- if [a=1;b=2] contains b:"
"does this object or text match an advanced matcher" is written as "matches". For example, "- if <player.location.below> matches stone:"

Note: When using an operator in a tag,
keep in mind that < and >, and even >= and <= must be either escaped, or referred to by name.
Example: "<player.health.is[<&lt>].than[10]>" or "<player.health.is[less].than[10]>",
but <player.health.is[<].than[10]> will produce undesired results. <>'s must be escaped or replaced since
they are normally notation for a replaceable tag. Escaping is not necessary when the argument
contains no replaceable tags.

There are also special boolean operators (&&, ||, ...) documented at: Command:if
GroupComparables
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/Comparable.java#L14
NameParticle Effects
DescriptionAll the effects listed here can be used by Command:PlayEffect to display visual effects or play sounds

Effects:
- Everything on 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Particle.html
- Everything on 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Effect.html
- RANDOM (chooses a random visual effect from the Particle list)
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/world/PlayEffectCommand.java#L43
NamePlaceholderAPI Bridge
DescriptionUsing Depenizen with PlaceholderAPI allows you to use Tag:placeholder and Tag:placeholder.player,
and also allows you to read Denizen tags from any PAPI placeholder location, written in the format: %denizen_<tag-here>%
For example: %denizen_<player.flag[MyFlag]>%
GroupDepenizen Bridges
RequiresDepenizen, PlaceholderAPI
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/PlaceholderAPIBridge.java#L25
NamePlayer Entity Skins (Skin Blobs)
DescriptionPlayer entities (that is, both real players and player-type NPCs), in addition to Player_Head items,
use something called a "skin blob" to determine what skin to show.
A skin blob consists of an identifier (usually the player's UUID, sometimes the name), a "texture", and a "signature".

The "texture" portion, despite the name, does not contain actual texture data - it contains a Base64 encoding of a JSON section that contains outlinks to real skin data.
That might be a bit confusing, so here's an example:

The raw "texture" data for "mcmonkey4eva"'s skin is:
eyJ0aW1lc3RhbXAiOjE1NjU1NjUyNDA4NTMsInByb2ZpbGVJZCI6IjQ2MGU5NmI5N2EwZTQxNmRiMmMzNDUwODE2NGI4YjFiIiwicHJvZmlsZU5hbWUiOiJtY21vbmtleTRldmEiLCJzaWduYXR1cmVSZXF1aXJlZCI6dHJ1ZSwidGV4dH
VyZXMiOnsiU0tJTiI6eyJ1cmwiOiJodHRwOi8vdGV4dHVyZXMubWluZWNyYWZ0Lm5ldC90ZXh0dXJlL2ZkMzRiM2UyN2EzZmU1MzgyN2IzN2FkNTk1NmFjY2EwOGYyODYzYzY5MjZjYzk3MTE2ZGRhMzM0ODY5N2E1YTkifX19

This is base64 encoding, which is just a way of controlling the format of binary data. When passed through a Base64 decoder, that says:
{"timestamp":1565565240853,"profileId":"460e96b97a0e416db2c34508164b8b1b","profileName":"mcmonkey4eva","signatureRequired":true,
"textures":{"SKIN":{"url":"http://textures.minecraft.net/texture/fd34b3e27a3fe53827b37ad5956acca08f2863c6926cc97116dda3348697a5a9"}}}

As you can see, it contains: the timestamp of when the skin was added, the UUID and name, and a link to the actual skin file on Mojang's servers.

The "signature" portion is a digitally encrypted signature that is used to verify a skin really was generated by Mojang.
It is also represented as Base64, but cannot be decoded to anything readable.
The "signature" is required for Player entity skins, but can generally be left off from Player_Head items (meaning, you can generate your own Player_Head items by base64 encoding your own JSON).

The website 🔗https://mineskin.org/ can be used to generate full texture+signature data from any skin file
(it does this by automatically uploading the skin image to Mojang's servers for processing and signing, using a donated Minecraft account).

In terms of general actual usage, skin blobs are generally meant to be read from tags and applied with mechanisms, never directly written out or read by a human, due to their complexity.

A skin_blob always represents a single actual skin, as opposed to a player name/uuid, where the account owner might choose to change their skin.

It should be noted that any time a skin is applied to a Player, NPC, Or Player_Head item using just a name or UUID, the server must contact Mojang's servers to requst the skin blob for that given name/uuid.
With a skin blob, however, the server does not need to make any remote calls, and can apply the skin directly (However note that the client will still download the image from Mojang's servers).
GroupMinecraft Logic
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/nms/abstracts/ProfileEditor.java#L54
NamePotion Effect Format
DescriptionPotion effects (be it on an entity, given by a potion, etc.) are represented in Denizen as ObjectType:MapTags with the following keys:
- effect: the effect type given by the effect, see 🔗https://minecraft.wiki/w/Effect#Descriptions.
- amplifier: the number to increase the effect level by, usually controls how powerful its effects are (optional for input, defaults to 0 which is level 1).
- duration (ObjectType:DurationTag): how long the effect should last (optional for input, defaults to 0s).
- ambient: a boolean (true/false) for whether the effect's particles should be more translucent and less intrusive, like effects given by a beacon (optional for input, defaults to true).
- particles: a boolean (true/false) for whether the effect should display particles (optional for input, defaults to true).
- icon: a boolean (true/false) for whether the effect should have an icon on a player's HUD when applied (optional for input, defaults to false).

For example, [effect=speed;amplifier=2;duration=10s;ambient=false;particles=true;icon=true] would be a level 3 speed effect that lasts 10 seconds, with (normal) particles and an icon.
GroupMinecraft Logic
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPotion.java#L32
NameProcedure Script Containers
DescriptionProcedure script containers are used to define a script that can be ran through a tag.

Generally called via Tag:proc or Tag:proc.context.

The only required key is 'script:'.

Note that procedure scripts must NEVER change external state.
That is, a procedure script cannot change anything at all, ONLY determine a value.
Setting a flag, loading a YAML document, placing a block, etc. are all examples of external changes that are NOT allowed.

This restriction comes from two main reasons:
- Tags run in arbitrary conditions. They may be read asynchronously or in other weird circumstances that can result
in applied changes crashing your server or other unexpected side effects.
- Tags can run for a variety of reasons.
If you were to make a proc script 'spawn_entity' that actually spawns an entity into the world,
you would likely end up with a *lot* of unintentional entity spawns.
Some tags will be read multiple times when theoretically ran once,
in some circumstances a tag read might even be based on user input! (Particularly if you ever make use of the '.parsed' tag,
or the list.parse/filter/sort_by_number tags).
Imagine if for example, a tag can be read when users input a specific custom command,
and a clever user finds out they can type "/testcommand 32 <proc[spawn_entity].context[creeper]>"
to spawn a creeper ... that would be a major problem!
In general, maximum caution is the best for situations like this... simply *never* make a procedure
that executes external changes.


Proc_Script_Name:

    type: procedure

    # Optionally specify definition names to use with the 'context' input of the proc tag.
    definitions: def|names|here

    script:

    # Put any logic, then determine the result.
    - determine 5

GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/containers/core/ProcedureScriptContainer.java#L9
NameProximity Triggers
DescriptionProximity Triggers are triggered when when a player moves in the area around the NPC.

Proximity triggers must have a sub-key identifying what type of proximity trigger to use.
The three types are "entry", "exit", and "move".

Entry and exit do exactly as the names imply: Entry fires when the player walks into range of the NPC, and exit fires when the player walks out of range.

Move is a bit more subtle: it fires very rapidly so long as a player remains within range of the NPC.
This is useful for eg script logic that needs to be constantly updating whenever a player is nearby (eg a combat NPC script needs to constantly update its aim).

The radius that the proximity trigger detects at is set by Command:trigger.
GroupNPC Interact Scripts
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/triggers/core/ProximityTrigger.java#L23
NameRaid Event Data
DescriptionEvery event related to village raids has a <context.raid> property, a MapTag wrapper around raid data (see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Raid.html).
These events are Event:player triggers raid, Event:raid finishes, Event:raid spawns wave, and Event:raid stops.

The data format is as follows:
location: a LocationTag of the raid's center
heroes: a list of PlayerTags that have participated in the raid
raiders: a list of raider EntityTags that remain in the current wave
status: the current status of the raid. See 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Raid.RaidStatus.html
age: the raid's age (active time) as a DurationTag
level: the Bad Omen level that the raid was started with
spawned_groups: the number of raider groups spawned
total_groups: the number of groups planned to spawn or already spawned
health: the combined health of all current raiders
waves: the number of waves in the raid
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/world/RaidScriptEvent.java#L20
NameSafety In Events
DescriptionOne of the more common issues in Denizen scripts (particularly ones relating to inventories) is
*event safety*. That is, using commands inside an event that don't get along with the event.

The most common example of this is editing a player's inventory, within an inventory-related event.
Generally speaking, this problem becomes relevant any time an edit is made to something involved with an event,
within the firing of that event.
Take the following examples:

on player clicks in inventory:
- take iteminhand
on entity damaged:
- remove <context.entity>


In both examples above, something related to the event (the player's inventory, and the entity being damaged)
is being modified within the event itself.
These break due a rather important reason: The event is firing before and/or during the change to the object.
Most events operate this way. A series of changes *to the object* are pending, and will run immediately after
your script does... the problems resultant can range from your changes being lost to situational issues
(eg an inventory suddenly being emptied entirely) to even server crashes!
The second example event also is a good example of another way this can go wrong:
Many scripts and plugins will listen to the entity damage event, in ways that are simply unable to handle
the damaged entity just being gone now (when the event fires, it's *guaranteed* the entity is still present
but that remove command breaks the guarantee!).

The solution to this problem is simple: Use "after" instead of "on".

after player clicks in inventory:
- take iteminhand
after entity damaged:
- if <context.entity.is_spawned||false>:
  - remove <context.entity>

This will delay the script until *after* the event is complete, and thus outside of the problem area.
And thus should be fine. One limitation you should note is demonstrated in the second example event:
The normal guarantees of the event are no longer present (eg that the entity is still valid) and as such
you should validate these expectations remain true after the event (as seen with the 'if is_spawned' check).
(See also Language:Script Event After vs On)

If you need determine changes to the event, you can instead use 'on' but add a 'wait 1t' after the determine but before other script logic.
This allows the risky parts to be after the event and outside the problem area, but still determine changes to the event.
Be sure to use 'passively' to allow the script to run in full.

on player clicks in inventory:
- determine passively cancelled
- wait 1t
- take iteminhand
on entity damaged:
- determine passively cancelled
- wait 1t
- if <context.entity.is_spawned||false>:
  - remove <context.entity>
GroupScript Events
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java#L1014
NameScript Event After vs On
DescriptionModern ScriptEvents let you choose between "on" and "after".
An "on" event looks like "on player breaks block:" while an "after" event looks like "after player breaks block:".

An "on" event fires *before* the event actually happens in the world. This means some relevant data won't be updated
(for example, "<context.location.material>" would still show the block type that is going to be broken)
and the result of the event can be changed (eg the event can be cancelled to stop it from actually going through).

An "after" event, as the name implies, fires *after* the event actually happens. This means data will be already updated to the new state
(so "<context.location.material>" would now show air) but could potentially contain an arbitrary new state from unrelated changes
(for example "<context.location.material>" might now show a different block type, or the original one, if the event was changed,
or another thing happened right after the event but before the 'after' event ran).
This also means you cannot affect the outcome of the event at all (you can't cancel it or anything else - the "determine" command does nothing).

See also Language:Safety In Events
GroupScript Events
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java#L994
NameScript Event Switches
DescriptionModern script events support the concept of 'switches'.
A switch is a specification of additional requirements in an event line other than what's in the event label it.

A switch consists of a name and a value input, and are can be added anywhere in an event line as "name:<value>".
For example, "on delta time secondly every:5:" is a valid event, where "delta time secondly" is the event itself, and "every:<#>" is a switch available to the event.

A traditional Denizen event might look like "on <entity> damaged",
where "<entity>" can be filled with "entity" or any entity type (like "player").
A switch-using event would instead take the format "on entity damaged" with switch "type:<entity type>"
meaning you can do "on entity damaged" for any entity, or "on entity damaged type:player:" for players specifically.
This is both more efficient to process and more explicit in what's going on, however it is less clear/readable to the average user, so it is not often used.
Some events may have switches for less-often specified data, and use the event line for other options.

There are also some standard switches available to every script event, and some available to an entire category of script events.

One switch available to every event is "server_flagged:<flag_name>", which requires that there be a server flag under the given name.
For example, "on console output server_flagged:recording:" will only run the handler for console output when the "recording" flag is set on the server.
This can also be used to require the server does NOT have a flag with "server_flagged:!<flag_name>"

"chance:<percent>" is also a globally available switch.
For example, "on player breaks diamond_ore chance:25:" will only fire on average one in every four times that a player breaks a diamond ore block.

Events that have a player linked have the "flagged" and "permission" switches available.

If the switch is specified, and an event doesn't have a linked player, the event will automatically fail to match.
The "flagged:<flag_name>" switch will limit the event to only fire when the player has the flag with the specified name.
It can be used like "on player breaks block flagged:nobreak:" (that would be used alongside "- flag player nobreak").
You can also use "flagged:!<flag_name>" to require the player does NOT have the flag, like "on player breaks block flagged:!griefbypass:"

The "permission:<perm key>" will limit the event to only fire when the player has the specified permission key.
It can be used like "on player breaks block permission:denizen.my.perm:"
For multiple flag or permission requirements, just list them separated by '|' pipes, like "flagged:a|b|c". This will require all named flags/permissions to be present, not just one.

Events that have an NPC linked have the "assigned" switch available.
If the switch is specified, and an event doesn't have a linked NPC, the event will automatically fail to match.
The "assigned:<script name>" switch will limit the event to only fire when the NPC has an assignment script that matches the given advanced matcher.

Events that occur at a specific location have the "in:<area>" and "location_flagged" switches.
This switches will be ignored (not counted one way or the other) for events that don't have a known location.
For "in:<area>" switches, 'area' is any area-defining tag type - refer to Language:Advanced Object Matchables.
"location_flagged:<flag name>" works just like "server_flagged" or the player "flagged" switches, but for locations.

All script events have priority switches (see Language:script event priority),
All Bukkit events have bukkit priority switches (see Language:bukkit event priority),
All cancellable script events have cancellation switches (see Language:script event cancellation).

See also Language:Advanced Object Matching.
GroupScript Events
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/BukkitScriptEvent.java#L97
NameScript Formats
DescriptionScript formats provide the formats certain commands within that script will use for their texts. Most notably, this includes Command:debug.
See specific command's documentation for information on which formats they use (for example, the 'debug' command supports a 'debug' format and an 'error' format).
The formats are specified under a 'formats' key, and can be either Language:Format Script Containers or a direct format with the same syntax as format scripts.
When specifying a direct format, use the format name as the key; When specifying a format script, use '<format>_script' as the key (see example below).

my_project_task:
    type: task
    formats:
        # A direct format
        debug: [MyProject] <[text]>
        # A separate format script
        error_script: my_project_error
    script:
    - if <util.real_time_since_start.in_hours> > 20:
        # Will be formatted by the 'my_project_error' format script.
        - debug error "The system has been running for over 20 hours! Please restart!"
    - else:
        # Will print "[MyProject] The system does not need a restart yet."
        - debug "The system does not need a restart yet."
GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/ScriptFormattingContext.java#L20
NameStructure lookups
DescriptionStructures can be located using Tag:LocationTag.find_structure.
It works similarly to the '/locate' command, and has several side effects/edge cases:
- The radius is in chunks, but isn't always a set square radius around the origin; certain structures may modify the amounts of chunks checked. For example, woodland mansions can potentially check up to 20,000 blocks away (or more) regardless of the radius used.
- Lookups can take a long amount of time (several seconds, over 10 in some cases), especially when looking for unexplored structures, which will cause the server to freeze while searching.
- They will not load/generate chunks (but can search not-yet-generated chunks and return a location in them).
- They can lead to situations where the server hangs and crashes when trying to find unexplored structures (if there aren't any/any nearby), as it keeps looking further and further out.
- The returned location only contains the X and Z values, and will always have a Y value of 0. Tags like Tag:LocationTag.highest are available, but note that they require the chunk to be loaded.
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4298
NameTag Fallbacks
DescriptionTag fallbacks (AKA "tag alternatives") are a system designed to allow scripters to automatically handle tag errors.

Fallbacks are implemented as special "magic tags" that look like any other tag-part, but override the error handler. These are "if_null", "exists", and "is_truthy".

A tag without a fallback might look like "<player.name>".
This tag works fine as long as there's a linked player, but what if a player isn't always available?
Normally, this situation would display an error in the console debug logs, and return plaintext "player.name" in the script.
A fallback can help us handle the problem more gracefully.
That same tag with a fallback would look like "<player.name.if_null[Steve]>".
Now, when there isn't a player available, there will not be an error, and the tag will simply return "Steve".

This format is the same for basically all tags. "<main.tag.here.if_null[Fallback here]>".
For another example, "<player.flag[myflag].if_null[0]>" returns either the value of the flag, or "0" if the flag is not present (or if there's no player).

The "exists" fallback-tag is available for checking whether an object exists and is valid.
What if we want to check if there even is a linked player? We don't have a "<has_player>" tag to do that, so what can we do?

- if <player.exists>:

The above example demonstrates using a fallback to check if a player is valid.
The if block will run only if there is not a player valid (you might, for example, place the "stop" command inside).

"Exists" is useful when you *only* need a check, however you often need to grab a value and verify it after.
Consider the following example, often found in command scripts:

- define target <server.match_player[<context.args.get[1]>].if_null[null]>
- if <[target]> == null:
    - narrate "<&[error]>Invalid player!"
    - stop
- narrate "<&[base]>You chose <&[emphasis]><[target].name><&[base]>!"


We use the word "null" in the above example, as well as in the tag name itself. This is a common programming term that means "no object is present".
"if_null" is the actual tag name, however the input value of "null" isn't actually a functionality of Denizen, it's just a word we choose for clarity.
You could just as easily do "- if <player.if_null[nothing]> == nothing:", or for that matter "- if <player.if_null[cheese]> == cheese:".
A player object takes the form "p@uuid", so it will therefore never exactly match any simple word, so there's no coincidental match edge-case to worry about.
Note that this won't work so perfect for things like a user input or fully dynamic value,
so in those cases you may want to use the "exists" tag explicitly to guarantee no potential conflict.

Fallbacks can be tags themselves. So, for example, if we want either a custom flag-based display name, or if not available, the player's base name,
we can do: "<player.flag[display_name].if_null[<player.name>]>".
You can as well chain these: "<player.flag[good_name].if_null[<player.flag[bad_name].if_null[<player.name>]>]>".

Note that fallbacks will *hide errors*. Generally, the only errors you should ever hide are ones you're expecting that are fine.
Don't use a fallback on a "<player.name>" tag, for example, if there should always be a player present when the script runs.
That tag should only ever have a fallback when the script is meant to still work without a player attached.
If you carelessly apply fallbacks to all tags, you might end up not realizing there's a problem in your script until it's affecting real players.
You want to solve errors in testing, not ten months later when a player mentions to you "that shop NPC let me buy things even when I had $0"!

Prior to Denizen 1.2.0, fallbacks exclusively worked with a special "||" syntax, like "- if <player||null> == null:"
This syntax is still fully supported at time of writing, however the newer tag-based format is considered clearer and easier to learn.
GroupTag System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/Attribute.java#L471
NameTask Script Containers
DescriptionTask script containers are generic script containers for commands that can be run at
any time by command.

Generally tasks will be ran by Command:run or Command:inject.

The only required key on a task script container is the 'script:' key.


Task_Script_Name:

    type: task

    # When intending to run a task script via the run command with the "def:" argument to pass data through,
    # use this "definitions" key to specify the names of the definitions (in the same order as the "def:" argument will use).
    # You can optionally document a definition with [square brackets]
    definitions: name1|name2[description here]|...

    script:

    - your commands here

GroupScript Container System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/containers/core/TaskScriptContainer.java#L15
NameTeleport Cause
DescriptionPossible player teleport causes: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/player/PlayerTeleportEvent.TeleportCause.html
These are used in Event:entity teleports, Tag:server.teleport_causes, Command:teleport, ...
Note that these causes will only work for player entities.

Additionally, Denizen provides two basic teleport causes for non-player entity teleport events: ENTITY_PORTAL and ENTITY_TELEPORT.
These additional causes are only for Event:entity teleports, and thus not usable in Command:teleport, and will not show in Tag:server.teleport_causes.
GroupUseful Lists
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/entity/EntityTeleportScriptEvent.java#L20
NameThe Global If Argument
DescriptionThe "if:<boolean>" argument is a special meta-argument that is available for all commands, but is more useful for some than others.
It is written like:

- stop if:<player.has_flag[forbidden]>
# Equivalent to
- if <player.has_flag[forbidden]>:
  - stop


When the if argument is used, the command will only run if the value of the argument is 'true'.

The most useful place to have this is a 'stop' command, to quickly stop a script if a condition is true (a player has a flag, lacks a permission, is outside a region, or whatever else).

If you need more complex matching, especially using '&&', '||', '==', etc. you should probably just do an 'if' command rather than using the argument.
Though if you really want to, you can use tags here like Tag:objecttag.is.to or Tag:elementtag.and or Tag:elementtag.or.
GroupScript Command System
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/CommandExecutor.java#L50
NameThe Player and NPC Arguments
DescriptionThe "player:<player>" and "npc:<npc>" arguments are special meta-arguments that are available for all commands, but are only useful for some.
They are written like:
- give stick player:<server.flag[some_player]>
or:
- sit npc:<entry[save].created_npc>

Denizen tracks a "linked player" and a "linked NPC" in queues and the commands within.
Many commands automatically operate on the linked player/NPC default or exclusively
(for example, "give" defaults to giving items to the linked player but that can be changed with the "to" argument,
"sit" exclusively makes the linked NPC sit, and that cannot be changed except by the global NPC argument).

When the player argument is used, it sets the linked player for the specific command it's on.
This is only useful for commands that default to operating on the linked player.
This can also be useful with the "run" command to link a specific player to the new queue.

The NPC argument is essentially equivalent to the player argument, but for the linked NPC instead of the linked player.

These arguments will also affect tags (mainly "<player>" and "<npc>") in the same command line (regardless of argument order).
If you need to use the original player/NPC in a tag on the same line, use the define command to track it.

You can also modify the linked player or NPC for an entire queue using the fake-definitions '__player' and '__npc', for example:

- foreach <server.players> as:__player:
    - narrate "Hi <player.name> isn't it nice how the player is linked here"
GroupScript Command System
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/implementation/DenizenCoreImplementation.java#L107

Mechanism


Namebase_temperature
ObjectBiomeTag
InputElementTag(Decimal)
Related Tags<BiomeTag.base_temperature> Returns the base temperature of this biome, which is used for per-location temperature calculations (see Tag:BiomeTag.temperature_at).
DescriptionSets the base temperature for this biome server-wide.
This is used as a base for temperature calculations, but the end temperature is calculated per-location (see Tag:BiomeTag.temperature_at).
Resets on server restart.
Example
# Adjusts the temperature of the plains biome permanently, using a server start event to keep it applied.
on server start:
- adjust <biome[plains]> temperature:0.5
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L461
Namefog_color
ObjectBiomeTag
InputColorTag
Related Tags<BiomeTag.fog_color> Returns the biome's fog color, which is visible when outside water (see also Tag:BiomeTag.water_fog_color).
DescriptionSets the biome's fog color, which is visible when outside water (see also Mechanism:BiomeTag.water_fog_color).
Example
# Makes the plains biome's fog color red permanently, using a server start event to keep it applied.
on server start:
- adjust <biome[plains]> fog_color:red
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L367
Namewater_fog_color
ObjectBiomeTag
InputColorTag
Related Tags<BiomeTag.water_fog_color> Returns the biome's water fog color, which is visible when underwater (see also Tag:BiomeTag.fog_color).
DescriptionSets the biome's water fog color, which is visible when underwater (see also Mechanism:BiomeTag.fog_color).
Example
# Makes the plains biome's water fog color fuchsia permanently, using a server start event to keep it applied.
on server start:
- adjust <biome[plains]> water_fog_color:fuchsia
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L384
Nameforce_loaded
ObjectChunkTag
InputElementTag(Boolean)
Related Tags<ChunkTag.force_loaded> Returns whether the chunk is forced to stay loaded at all times.
DescriptionSets whether this plugin is force-loaded or not.
Unless you have a specific reason to use this, prefer Command:chunkload.
Example
- adjust <player.location.chunk> force_loaded:true
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ChunkTag.java#L839
Namerefresh_chunk_sections
ObjectChunkTag
InputNone
DescriptionRefreshes all 16x16x16 chunk sections within the chunk.
For MC 1.18+, prefer Mechanism:ChunkTag.refresh_chunk
Example
- adjust <player.location.chunk> refresh_chunk_sections
Deprecatedfor MC 1.18+, use 'refresh_chunk'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ChunkTag.java#L918
Namecolor
ObjectDiscordRoleTag
InputColorTag
Related Tags<DiscordRoleTag.color> Returns the display color of the role, if any.
DescriptionAdjusts the specified role's color to the given ObjectType:ColorTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordRoleTag.java#L258
Nameadd_attribute_modifiers
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.has_attribute> Returns whether the entity has the named attribute. (...)
<EntityTag.attribute_modifiers> Returns a map of all attribute modifiers on the entity, with key as the attribute name and value as a list of modifiers, (...)
<EntityTag.attribute_default_value> Returns the default value of the named attribute for the entity. (...)
<EntityTag.attribute_base_value> Returns the base value of the named attribute for the entity. (...)
<EntityTag.attribute_value> Returns the final calculated value of the named attribute for the entity. (...)
DescriptionAdds attribute modifiers to an entity without altering existing modifiers.
For input format details, refer to Language:attribute modifiers.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeModifiers.java#L338
Nameage
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.age> (Property) Returns the entity's age. (...)
Description(Property) Sets the entity's age.
Age moves 1 towards zero each tick.
A newly spawned baby is -24000, a standard adult is 0, an adult that just bred is 6000.
For the mechanism, inputs can be 'baby', 'adult', or a valid age number.
Also available: Mechanism:EntityTag.age_locked and Tag:EntityTag.is_baby
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAge.java#L17
Nameage_lock
ObjectEntityTag
InputElementTag(Boolean)
DescriptionDeprecated in favor of Mechanism:EntityTag.age_locked.
Generated Example
- adjust <player> age_lock:false
Deprecateduse 'age_locked'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAgeLocked.java#L62
Nameanger_at
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.anger_at[<entity>]> Returns a warden's anger level at a specific entity.
DescriptionSets a warden's anger towards a specific entity.
The input map needs to have the following keys:
- "entity", the entity to set anger for.
- "anger", the amount of anger.
See Mechanism:EntityTag.clear_anger for clearing anger.
See Mechanism:EntityTag.increase_anger for increasing it.
Example
# Use to set a warden's anger at a specific entity to 20.
- adjust <[warden]> anger_at:[entity=<[entity]>;anger=20]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3069
Namearmor_pose
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.armor_pose_map> Returns a map of all poses and angles for the armor stand. (...)
DescriptionSets the angle for various parts of the armor stand.
For example, [head=4.5,3,4.5;body=5.4,3.2,1]
Valid parts: HEAD, BODY, LEFT_ARM, RIGHT_ARM, LEFT_LEG, RIGHT_LEG
Angles are in radians!
Here's a website to help you figure out the correct values: 🔗https://b-universe.github.io/Minecraft-ArmorStand/.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityArmorPose.java#L134
Namearms_raised
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.arms_raised> Deprecated in favor of Tag:EntityTag.aggressive.
DescriptionDeprecated in favor of Mechanism:EntityTag.aggressive.
Generated Example
- adjust <player> arms_raised:false
Groupproperties
RequiresPaper
Deprecateduse 'aggressive'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityArmsRaised.java#L61
Nameattribute_base_values
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.has_attribute> Returns whether the entity has the named attribute. (...)
<EntityTag.attribute_default_value> Returns the default value of the named attribute for the entity. (...)
<EntityTag.attribute_base_value> Returns the base value of the named attribute for the entity. (...)
<EntityTag.attribute_value> Returns the final calculated value of the named attribute for the entity. (...)
DescriptionSets the base value of an entity's attributes.
Specify a MapTag where the keys are attribute names, and values are the new base values.
Valid attribute names are listed at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/attribute/Attribute.html
See also Language:attribute modifiers.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeBaseValues.java#L170
Nameattribute_modifiers
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.has_attribute> Returns whether the entity has the named attribute. (...)
<EntityTag.attribute_modifiers> Returns a map of all attribute modifiers on the entity, with key as the attribute name and value as a list of modifiers, (...)
<EntityTag.attribute_default_value> Returns the default value of the named attribute for the entity. (...)
<EntityTag.attribute_base_value> Returns the base value of the named attribute for the entity. (...)
<EntityTag.attribute_value> Returns the final calculated value of the named attribute for the entity. (...)
DescriptionSets the attribute modifiers of an entity.
This is a SET operation, meaning pre-existing modifiers are removed.
For input format details, refer to Language:attribute modifiers.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeModifiers.java#L299
Nameauto_expire
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.auto_expire> Returns whether a falling_block will auto-expire (after 30 seconds, or 5 when outside the world). (...)
DescriptionSets whether a falling_block will auto-expire (after 30 seconds, or 5 when outside the world).
See also Mechanism:EntityTag.time_lived
Generated Example
- adjust <player> auto_expire:false
Groupproperties
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityAutoExpire.java#L76
Namebase_potion
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.base_potion> Deprecated in favor of Property:EntityTag.potion_type on MC 1.20+.
DescriptionDeprecated in favor of Property:EntityTag.potion_type on MC 1.20+.
Deprecateduse 'EntityTag.potion_type' on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L486
Nameboat_type
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.boat_type> (Property) Returns the wood type of the boat. (...)
Description(Property) Sets the wood type of the boat.
Valid wood types can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/TreeSpecies.html
Deprecated in versions 1.19 and above. Use Property:EntityTag.color.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityBoatType.java#L15
Namecharged
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.charged> (Property) If the entity is wither_skull, controls whether the skull is charged. Charged skulls are blue. (...)
Description(Property) If the entity is wither_skull, controls whether the skull is charged. Charged skulls are blue.
If the entity is a vex, controls whether the vex is charging. Charging vexes have red lines.
This is a visual effect, and does not cause the vex to actually charge at anyone.
If the entity is a guardian, controls whether the guardian's laser is active.
Note that guardians also require a target to use their laser, see Command:attack.
Generated Example
- adjust <player> charged:false
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityCharged.java#L10
Nameclear_custom_effects
ObjectEntityTag
InputNone
Related Tags<EntityTag.custom_effects> Deprecated in favor of Tag:EntityTag.effects_data.
DescriptionDeprecated in favor of Mechanism:EntityTag.potion_effects.
Generated Example
- adjust <player> clear_custom_effects
Deprecateduse 'EntityTag.potion_effects'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L399
Namecollidable
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.is_collidable> Returns whether the entity is collidable. (...)
DescriptionSets whether the entity is collidable.
For NPCs, Sets the persistent collidable value.
NOTE: To disable collision between two entities, set this mechanism to false on both entities.
NOTE: For players, to fully remove collision you need to use Command:team and set "option:collision_rule status:never"
Generated Example
- adjust <player> collidable:false
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3838
Namecolor
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.color> (Property) If the entity can have a color, controls the entity's color. (...)
Description(Property) If the entity can have a color, controls the entity's color.
For the available color options, refer to Language:Entity Color Types.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityColor.java#L25
Nameconversion_duration
ObjectEntityTag
InputDurationTag
Related Tags<EntityTag.conversion_duration> Returns the duration of time until an entity completes a conversion. See Tag:EntityTag.is_converting for examples of conversions. (...)
DescriptionSets the duration of time until an entity completes a conversion. See Tag:EntityTag.is_converting for examples of conversions.
When this value hits 0, the conversion completes.
Generated Example
- adjust <player> conversion_duration:1m
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityConversionTime.java#L130
Namecustom_effects
ObjectEntityTag
InputListTag
Related Tags<EntityTag.custom_effects> Deprecated in favor of Tag:EntityTag.effects_data.
DescriptionDeprecated in favor of Mechanism:EntityTag.potion_effects.
Deprecateduse 'EntityTag.potion_effects'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L432
Namedamage_item
ObjectEntityTag
InputMapTag
DescriptionDamages the given equipment slot for the given amount.
This runs all vanilla logic associated with damaging an item like gamemode and enchantment checks, events, stat changes, advancement triggers, and notifying clients to play break animations.
Input is a map with "slot" as a valid equipment slot, and "amount" as the damage amount to be dealt.
Valid equipment slot values can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/EquipmentSlot.html.
Example
# Damages your precious boots! :(
- adjust <player> damage_item:[slot=feet;amount=45]
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java#L160
Namedefault_background
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.default_background> (Property) Whether a text display entity's background is default (same as the chat window), or custom set (see Property:EntityTag.background_color).
Description(Property) Whether a text display entity's background is default (same as the chat window), or custom set (see Property:EntityTag.background_color).
Generated Example
- adjust <player> default_background:false
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDefaultBackground.java#L10
Namedisabled_slots
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.disabled_slots_data> If the entity is an armor stand, returns its disabled slots as a map of slot names to list of actions.
DescriptionSets the disabled slots of an armor stand as a map of slot names to list of actions.
For example: [HEAD=PLACE|REMOVE;CHEST=PLACE;FEET=ALL]
Provide no input to enable all slots.
Slots: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/EquipmentSlot.html
Actions: ALL, REMOVE, PLACE
NOTE: Minecraft contains a bug where disabling ALL for the HAND slot still allows item removal.
To fully disable hand interaction, disable ALL and REMOVE.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDisabledSlots.java#L159
Namedisabled_slots_raw
ObjectEntityTag
InputElementTag(Number)
Related Tags<EntityTag.disabled_slots> Deprecated in favor of Tag:EntityTag.disabled_slots_data.
<EntityTag.disabled_slots.raw> Deprecated in favor of Tag:EntityTag.disabled_slots_data.
DescriptionDeprecated in favor of Mechanism:EntityTag.disabled_slots.
Generated Example
- adjust <player> disabled_slots_raw:1
DeprecatedUse 'disabled_slots'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDisabledSlots.java#L143
Namedisplay
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.display> (Property) For an item display entity this is the model transform it will display, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/ItemDisplay.ItemDisplayTransform.html. (...)
Description(Property) For an item display entity this is the model transform it will display, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/ItemDisplay.ItemDisplayTransform.html.
For a text display entity this is its text alignment, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/TextDisplay.html.
Synonyms (Search Aid)entitytag.display_transform, entitytag.text_alignment
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDisplay.java#L11
Namedrops_item
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.drops_item> (Property) Whether an eye of ender drops an item when breaking or shatters. (...)
Description(Property) Whether an eye of ender drops an item when breaking or shatters.
See Property:EntityTag.item for controlling an eye's item.
Generated Example
- adjust <player> drops_item:false
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDropsItem.java#L10
Nameforce_no_persist
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.force_no_persist> Returns 'true' if the entity is forced to not save to file when chunks unload. (...)
DescriptionSet 'true' to indicate the entity should be forced to not save to file when chunks unload.
Set 'false' to not force to not-save. Entities will then either save or not save depending on separate conditions.
This is a custom value added in Bukkit to block saving, which is not the same as Mojang's similar option under Mechanism:EntityTag.persistent.
Generated Example
- adjust <player> force_no_persist:true
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3818
Nameframed
ObjectEntityTag
InputItemTag(|ElementTag)
Related Tags<EntityTag.has_framed_item> If the entity is an item frame, returns whether the frame has an item in it.
<EntityTag.framed_item> If the entity is an item frame, returns the item currently framed.
<EntityTag.framed_item_rotation> If the entity is an item frame, returns the rotation of the item currently framed.
DescriptionSets the entity's framed item and optionally the rotation as well.
Valid rotations: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Rotation.html
For example: framed:diamond_sword|clockwise
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityFramed.java#L131
Namehas_pumpkin_head
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.has_pumpkin_head> Deprecated in favor of Tag:EntityTag.sheared.
DescriptionDeprecated in favor of Mechanism:EntityTag.sheared.
Generated Example
- adjust <player> has_pumpkin_head:false
Deprecateduse 'EntityTag.sheared'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntitySheared.java#L99
Namehead_angle
ObjectEntityTag
InputElementTag(Decimal)
DescriptionSets the raw head angle of a living entity.
This will not rotate the body at all. Most users should prefer Command:look.
Generated Example
- adjust <player> head_angle:-1
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L4172
Namehide_from_players
ObjectEntityTag
InputNone
DescriptionHides the entity from players by default.
See also Mechanism:EntityTag.show_to_players.
To hide for only one player, see Mechanism:PlayerTag.hide_entity.
Works with offline players.
Generated Example
- adjust <player> hide_from_players
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L4075
Namein_water_duration
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.in_water_duration> If the entity is a zombie mob, returns the duration of time the zombie has been in water for. (...)
DescriptionIf the entity is a zombie mob, sets the duration of time the zombie has been in water for.
If this value exceeds 600 ticks, the zombie will begin converted to a Drowned mob.
See also Mechanism:EntityTag.conversion_duration
Generated Example
- adjust <player> in_water_duration:true
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityInWaterTime.java#L67
Nameincrease_anger
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.anger_at[<entity>]> Returns a warden's anger level at a specific entity.
DescriptionIncreases a warden's anger towards a specific entity.
The input map needs to have the following keys:
- "entity", the entity to increase anger for.
- "anger", the amount of anger to add.
See Mechanism:EntityTag.clear_anger for clearing anger.
See Mechanism:EntityTag.anger_at for setting it.
Example
# Use to increase a warden's anger at a specific entity by 20.
- adjust <[warden]> increase_anger:[entity=<[entity]>;anger=20]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3109
Nameinternal_data
ObjectEntityTag
InputMapTag
DescriptionModifies an entity's internal entity data as a map of data name to value.
You should almost always prefer using the appropriate mechanism/property instead of this, other than very specific special cases.
See Language:Internal Entity Data for more information on the input.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3312
Nameinterpolation_duration
ObjectEntityTag
InputDurationTag
Related Tags<EntityTag.interpolation_duration> (Property) The duration a display entity will spend interpolating between interpolated value(s). (...)
Description(Property) The duration a display entity will spend interpolating between interpolated value(s).
See also Language:Display entity interpolation.
Generated Example
- adjust <player> interpolation_duration:5m
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityInterpolationDuration.java#L10
Nameinterpolation_start
ObjectEntityTag
InputDurationTag
Related Tags<EntityTag.interpolation_start> (Property) The delay between a display entity receiving an update to an interpolated value(s) to it starting its interpolation. (...)
Description(Property) The delay between a display entity receiving an update to an interpolated value(s) to it starting its interpolation.
Interpolation is started whenever this value is set. If no changes were made to the entity in the same tick, it will (visually) redo its last interpolation.
See also Language:Display entity interpolation.
Generated Example
- adjust <player> interpolation_start:12h
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityInterpolationStart.java#L19
Nameis_aware
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.is_aware> (Property) For mobs (Tag:EntityTag.is_mob), this is whether the entity is aware of its surroundings. (...)
Description(Property) For mobs (Tag:EntityTag.is_mob), this is whether the entity is aware of its surroundings.
Unaware entities will not perform any actions on their own, such as pathfinding or attacking.
Similar to Property:EntityTag.has_ai, except allows the entity to be moved by gravity, being pushed or attacked, etc.
For interaction entities, this is whether interacting with them should trigger a response (arm swings, sounds, etc.).
Generated Example
- adjust <player> is_aware:false
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAware.java#L13
Nameis_sleeping
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.is_sleeping> Returns whether a living entity is currently sleeping. (...)
DescriptionSets whether a fox is sleeping.
The entity may wake up immediately after setting this to true. If this is not desired, disable Mechanism:EntityTag.has_ai.
Generated Example
- adjust <player> is_sleeping:false
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3205
Nameis_sneaking
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.is_sneaking> (Property) Whether an entity is sneaking. (...)
Description(Property) Whether an entity is sneaking.
For most entities this just makes the name tag less visible, and doesn't actually update the pose.
Note that Command:sneak is also available.
Generated Example
- adjust <player> is_sneaking:true
GroupProperties
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntitySneaking.java#L12
Nameleft_rotation
ObjectEntityTag
InputQuaternionTag
Related Tags<EntityTag.left_rotation> (Property) A display entity's "left" rotation. (...)
Description(Property) A display entity's "left" rotation.
Note that Mechanism:EntityTag.right_rotation is also available, but should normally use this instead.
Generated Example
- adjust <player> left_rotation:identity
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityLeftRotation.java#L12
Namemax_health
ObjectEntityTag
InputElementTag(Decimal)
Related Tags<EntityTag.health> Returns the current health of the entity.
<EntityTag.health_max> Returns the maximum health of the entity.
DescriptionSets the maximum health the entity may have.
The entity must be living.
Note to change the current health at the same time as max_health (might be needed when setting max health higher rather than lower),
use Mechanism:EntityTag.health_data.
Generated Example
- adjust <player> max_health:0
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityHealth.java#L176
Namemax_temper
ObjectEntityTag
InputElementTag(Number)
Related Tags<EntityTag.max_temper> (Property) Returns the upper-bound for a horse-type entity's chance to be tamed. (...)
Description(Property) Sets the upper-bound for a horse-type entity's chance to be tamed.

When a player mounts an entity, a number between 0 and the entity's max temper is generated.
The entity becomes tamed if this value is less than the entity's temper value.
Otherwise, the player gets bucked and increases the entity's temper by 5.

Because an entity must have a level to reach before it can be tamed, value must be 1 or higher.
Default value for llamas and trader llamas is 30.
Default value for all other entities is 100.

To control the entity's current temper, see Mechanism:EntityTag.temper.
To automatically tame an entity, see Mechanism:EntityTag.tame.
Generated Example
- adjust <player> max_temper:3
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityMaxTemper.java#L10
Nameopacity
ObjectEntityTag
InputElementTag(Number)
Related Tags<EntityTag.opacity> (Property) A text display entity's text opacity, from 0 to 255. (...)
Description(Property) A text display entity's text opacity, from 0 to 255.
Can be interpolated, see Language:Display entity interpolation.
Note that there's currently an edge-case/bug where 0-3 are completely opaque, and it only becomes transparent at 4.
Generated Example
- adjust <player> opacity:2
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityOpacity.java#L10
Nameowner
ObjectEntityTag
InputPlayerTag
Related Tags<EntityTag.is_tamed> Returns whether the entity has been tamed.
<EntityTag.tameable> Returns whether the entity is tameable. (...)
<EntityTag.owner> Returns the owner of a tamed entity.
DescriptionSets the entity's owner. Use with no input to make it not have an owner.
Also available: Mechanism:EntityTag.tame
Generated Example
- adjust <player> owner:<player>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTame.java#L141
Namepainting
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.painting> If the entity is a painting, returns what art it shows. (...)
<server.art_types> Returns a list of all known art types. (...)
DescriptionChanges the art shown by a painting. Valid a types: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Art.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPainting.java#L108
Nameparticle_color
ObjectEntityTag
InputColorTag
Related Tags<EntityTag.particle.color> Deprecated in favor of Property:EntityTag.color.
DescriptionDeprecated in favor of Property:EntityTag.color.
Generated Example
- adjust <player> particle_color:green
Deprecateduse 'EntityTag.color'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L471
Namepersistent
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.is_persistent> Returns whether the mob-entity will not be removed completely when far away from players. (...)
DescriptionSets whether the mob-entity will not be removed completely when far away from players.
This is Bukkit's "setRemoveWhenFarAway" which is Mojang's "isPersistenceRequired".
In many cases, Mechanism:EntityTag.force_no_persist may be preferred.
The entity must be a mob-type entity.
Generated Example
- adjust <player> persistent:true
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3802
Namepickup_status
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.pickup_status> If the entity is an arrow or trident, returns the pickup status of the arrow/trident.
DescriptionChanges the pickup status of an arrow/trident.
Available pickup statuses can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/AbstractArrow.PickupStatus.html
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPickupStatus.java#L74
Namepivot
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.pivot> (Property) A display entity's pivot point/axes, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Display.Billboard.html.
Description(Property) A display entity's pivot point/axes, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Display.Billboard.html.
Synonyms (Search Aid)entitytag.billboard
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPivot.java#L10
Nameplay_hurt_animation
ObjectEntityTag
InputElementTag(Decimal)
DescriptionPlays a hurt animation that makes the living entity flash red. When the entity is a player, you can change the direction the camera rotates.
Damage direction is relative to the player, where 0 is in front, 90 is to the right, 180 is behind, and 270 is to the left.
For versions 1.19 or below, use Command:animate.
Example
# The player's camera will rotate as if the player took damage from the right and the player will flash red.
- adjust <player> play_hurt_animation:90
Example
# This will flash the entity red as if it took damage.
- adjust <[entity]> play_hurt_animation:0
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3287
Nameplaying_dead
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.playing_dead> If the entity is an axolotl, returns whether the entity is playing dead.
DescriptionIf the entity is an axolotl, sets whether the entity is playing dead.
This won't be successful unless the entity is unaware of its surroundings. See Mechanism:EntityTag.is_aware.
Generated Example
- adjust <player> playing_dead:true
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPlayingDead.java#L66
Namepotion
ObjectEntityTag
InputItemTag
Related Tags<EntityTag.potion> (Property) Deprecated in favor of Property:EntityTag.potion_type for arrows, and Property:EntityTag.item for splash potions.
Description(Property) Deprecated in favor of Property:EntityTag.potion_type for arrows, and Property:EntityTag.item for splash potions.
Generated Example
- adjust <player> potion:<player.item_in_hand>
GroupProperties
Deprecateduse 'EntityTag.potion_type' for arrows, and 'EntityTag.item' for splash potions.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotion.java#L19
Namepotion_effects
ObjectEntityTag
InputListTag
Related Tags<EntityTag.effects_data> Returns the active potion effects on the entity, or the potion effects an arrow/area effect cloud will apply. (...)
<EntityTag.has_effect[<effect>]> Returns whether the entity has a specified effect, or whether an arrow/area effect cloud will apply a certain effect. (...)
DescriptionSet the entity's active potion effects, or the potion effects an arrow/area effect cloud will apply.
Each item in the list must be a MapTag in Language:Potion Effect Format.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotionEffects.java#L169
Namepotion_type
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.potion_type> (Property) Returns an Arrow or Area Effect Cloud's base potion type, if any. (...)
Description(Property) Sets an Arrow or Area Effect Cloud's base potion type, if any.
See 🔗https://minecraft.wiki/w/Potion#Item_data for a list of potion types.
See Property:EntityTag.potion_effects to control the potion effects applied.
Specify no input to remove the base potion type.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotionType.java#L13
Nameprofession
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.profession> (Property) Returns the profession of a villager or zombie villager. (...)
Description(Property) Sets the profession of a villager or zombie villager.
For the list of possible professions, refer to 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Villager.Profession.html
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityProfession.java#L12
Nameraw_nbt
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.all_raw_nbt> Returns the entity's entire raw NBT data as a MapTag. (...)
DescriptionModifies an entity's raw NBT data based on the input MapTag.
The input MapTag must be in MapTag NBT format (Language:Raw NBT Encoding), and needs to be strictly perfect.
This doesn't override all the entity's data, only the values specified in the input map are set.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3356
Nameremove_attribute_modifiers
ObjectEntityTag
InputListTag
Related Tags<EntityTag.has_attribute> Returns whether the entity has the named attribute. (...)
<EntityTag.attribute_modifiers> Returns a map of all attribute modifiers on the entity, with key as the attribute name and value as a list of modifiers, (...)
<EntityTag.attribute_default_value> Returns the default value of the named attribute for the entity. (...)
<EntityTag.attribute_base_value> Returns the base value of the named attribute for the entity. (...)
<EntityTag.attribute_value> Returns the final calculated value of the named attribute for the entity. (...)
DescriptionRemoves attribute modifiers from an entity. Specify a list of attribute names or modifier keys (UUIDs on versions below MC 1.21) as input.
See also Language:attribute modifiers.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeModifiers.java#L387
Nameremove_custom_effect
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.custom_effects> Deprecated in favor of Tag:EntityTag.effects_data.
DescriptionDeprecated in favor of Mechanism:EntityTag.potion_effects.
Deprecateduse 'EntityTag.potion_effects'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L414
Namereputation
ObjectEntityTag
InputMapTag
Related Tags<EntityTag.reputation> Returns a villager's reputations as a map of player UUIDs to reputation maps. (...)
DescriptionSets a villager's reputations as a map of player UUIDs to reputation maps.
Reputation maps are maps of reputation types to integer values, a full list of all valid reputation types can be found at 🔗https://jd.papermc.io/paper/1.19/com/destroystokyo/paper/entity/villager/ReputationType.html.
Groupproperties
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityReputation.java#L65
Nameright_rotation
ObjectEntityTag
InputQuaternionTag
Related Tags<EntityTag.right_rotation> (Property) A display entity's "right" rotation. (...)
Description(Property) A display entity's "right" rotation.
Should usually use Mechanism:EntityTag.left_rotation instead.
Generated Example
- adjust <player> right_rotation:identity
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityRightRotation.java#L12
Namerotation
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.rotation> If the entity can have a rotation, returns the entity's rotation. (...)
<EntityTag.rotation_vector> If the entity can have a rotation, returns the entity's rotation as a direction vector. (...)
DescriptionChanges the entity's rotation.
Currently, only Hanging-type entities can have rotations.
Value must be from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/BlockFace.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityRotation.java#L106
Namescale
ObjectEntityTag
InputLocationTag
Related Tags<EntityTag.scale> (Property) A display entity's scale, represented as a ObjectType:LocationTag vector. (...)
Description(Property) A display entity's scale, represented as a ObjectType:LocationTag vector.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- adjust <player> scale:<npc.location>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityScale.java#L12
Namescoreboard_tags
ObjectEntityTag
InputListTag
Related Tags<EntityTag.scoreboard_tags> Returns a list of the scoreboard tags on the entity.
DescriptionAdds the list of the scoreboard tags to the entity.
To clear existing scoreboard tags, use Mechanism:EntityTag.clear_scoreboard_tags.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityScoreboardTags.java#L97
Nameshadow_radius
ObjectEntityTag
InputElementTag(Decimal)
Related Tags<EntityTag.shadow_radius> (Property) The radius of a display entity's shadow. (...)
Description(Property) The radius of a display entity's shadow.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- adjust <player> shadow_radius:1
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityShadowRadius.java#L10
Nameshadow_strength
ObjectEntityTag
InputElementTag(Decimal)
Related Tags<EntityTag.shadow_strength> (Property) The strength of a display entity's shadow. (...)
Description(Property) The strength of a display entity's shadow.
Note that the final opacity will change based on the entity's distance to the block the shadow is on.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- adjust <player> shadow_strength:-1
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityShadowStrength.java#L10
Nameshear
ObjectEntityTag
InputNone
DescriptionShears entities in the same way as a player can do using shears, including drops.
If the entity is not ready to be sheared, there will be no drops but the sound will still play.

This mech will:
- Shear a sheep
- harvest a bogged
- harvest a mushroom cow (note: entity data will be lost as Minecraft will remove the entity and spawn an entirely new cow instead)
- derp a snowman (i.e. remove the pumpkin)

Optionally, specify a sound source to change the source of the sound.
Valid sound sources can be found here: 🔗https://jd.advntr.dev/api/latest/net/kyori/adventure/sound/Sound.Source.html.
Example
# Shears the entity you're looking at.
- adjust <player.target> shear
Grouppaper
Requirespaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java#L190
Namesheared
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.sheared> (Property) Returns whether a sheep is sheared, a bogged is harvested, or a snow golem is derped (ie not wearing a pumpkin). (...)
Description(Property) Sets whether a sheep is sheared, a bogged is harvested, or a snow golem is derped (ie not wearing a pumpkin).
To include drops or for harvesting mushroom cows consider Mechanism:EntityTag.shear.
Generated Example
- adjust <player> sheared:false
Synonyms (Search Aid)has_pumpkin_head
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntitySheared.java#L14
Nameshow_to_players
ObjectEntityTag
InputNone
DescriptionMarks the entity as visible to players by default (if it was hidden).
See also Mechanism:EntityTag.hide_from_players.
To show to only one player, see Mechanism:PlayerTag.show_entity.
Works with offline players.
Generated Example
- adjust <player> show_to_players
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L4061
Nameskeleton_arms_raised
ObjectEntityTag
InputElementTag(Boolean)
DescriptionDeprecated in favor of Mechanism:EntityTag.aggressive.
Generated Example
- adjust <player> skeleton_arms_raised:false
Deprecateduse 'EntityTag.aggressive'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L4184
Namespell
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.spell> (Property) Returns the spell that an Illager entity (such as an Evoker or Illusioner) should cast. (...)
Description(Property) Sets the spell that an Illager entity (such as an Evoker or Illusioner) should cast.
Valid spells are: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Spellcaster.Spell.html
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntitySpell.java#L11
Namestate
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.state> (Property) Returns the current state of an armadillo. (...)
Description(Property) Sets the current state of an armadillo.
Valid states are IDLE, ROLLING, SCARED, and UNROLLING.
The entity may roll or unroll due to normal vanilla conditions. If this is not desired, disable Property:EntityTag.has_ai.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityState.java#L11
Namestep_height
ObjectEntityTag
InputElementTag(Decimal)
Related Tags<EntityTag.step_height> (Property) Deprecated in favor of the step height attribute on MC 1.20+, see Language:Attribute Modifiers.
Description(Property) Deprecated in favor of the step height attribute on MC 1.20+, see Language:Attribute Modifiers.
Generated Example
- adjust <player> step_height:-1
GroupProperties
DeprecatedUse the step height attribute on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityStepHeight.java#L14
Nametame
ObjectEntityTag
InputElementTag(Boolean)(|PlayerTag)
Related Tags<EntityTag.is_tamed> Returns whether the entity has been tamed.
<EntityTag.tameable> Returns whether the entity is tameable. (...)
DescriptionSets whether the entity has been tamed.
Also available: Mechanism:EntityTag.owner
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTame.java#L113
Nameteleport_duration
ObjectEntityTag
InputDurationTag
Related Tags<EntityTag.teleport_duration> (Property) The duration a display entity will spend teleporting between positions. (...)
Description(Property) The duration a display entity will spend teleporting between positions.
See also Language:Display entity interpolation.
Generated Example
- adjust <player> teleport_duration:5m
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTeleportDuration.java#L10
Nametemper
ObjectEntityTag
InputElementTag(Number)
Related Tags<EntityTag.temper> (Property) Returns the temper of a horse-type entity. (...)
Description(Property) Sets the temper of a horse-type entity.
A value of 0 indicates that no action has been done to try to domesticate this entity.

When a player mounts an entity, a number between 0 and the entity's max temper is generated.
The entity becomes tamed if this value is less than the entity's temper value.
Otherwise, the player gets bucked and increases the entity's temper by 5.
Temper can also be increased by feeding the entity.
- Apples, sugar, and wheat increase temper by 3.
- Golden carrots increase temper by 5.
- Golden apples increase temper by 10.

To control the entity's max temper, see Mechanism:EntityTag.max_temper.
To automatically tame an entity, see Mechanism:EntityTag.tame.
Generated Example
- adjust <player> temper:3
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTemper.java#L10
Nametime_lived
ObjectEntityTag
InputDurationTag
Related Tags<EntityTag.time_lived> Returns how long the entity has lived.
DescriptionSets the amount of time this entity has lived for.
For entities that automatically despawn such as dropped_items or falling_blocks, it can be useful to set this value to "-2147483648t" (the minimum valid number of ticks) to cause it to persist indefinitely.
For falling_block usage, see also Mechanism:EntityTag.auto_expire
Generated Example
- adjust <player> time_lived:5m
Synonyms (Search Aid)entitytag.age_nbt, entitytag.time_nbt
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3650
Nametranslation
ObjectEntityTag
InputLocationTag
Related Tags<EntityTag.translation> (Property) A display entity's translation, represented as a ObjectType:LocationTag vector. (...)
Description(Property) A display entity's translation, represented as a ObjectType:LocationTag vector.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- adjust <player> translation:<npc.location>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTranslation.java#L12
Nametrap_time
ObjectEntityTag
InputDurationTag
Related Tags<EntityTag.trapped> Returns whether the skeleton horse is trapped. (...)
DescriptionSets the skeleton horse's trap time.
Trap time will go up every tick for as long as the horse is trapped (see Tag:EntityTag.trapped).
A trap time greater than 18000 ticks (15 minutes) will despawn the horse on the next tick.
Generated Example
- adjust <player> trap_time:1m
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTrapTime.java#L58
Namevariant
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.variant> (Property) Returns which variant a chicken, copper golem, cow, pig, wolf, or zombie nautilus is. (...)
Description(Property) Sets which variant a chicken, copper golem, cow, pig, wolf, or zombie nautilus is.
A list of valid chicken variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Chicken.Variant.html.
A list of valid copper golem variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/CopperGolem.CopperWeatherState.html.
A list of valid cow variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Cow.Variant.html.
A list of valid pig variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Pig.Variant.html.
A list of valid wolf variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Wolf.Variant.html.
A list of valid zombie nautilus variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/ZombieNautilus.Variant.html.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityVariant.java#L33
Namevisual_fire
ObjectEntityTag
InputElementTag(Boolean)
Related Tags<EntityTag.visual_fire> (Property) Whether an entity has a fake fire effect. For actual fire, see Command:burn and Tag:EntityTag.on_fire.
Description(Property) Whether an entity has a fake fire effect. For actual fire, see Command:burn and Tag:EntityTag.on_fire.
Generated Example
- adjust <player> visual_fire:false
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityVisualFire.java#L9
Namevisual_pose
ObjectEntityTag
InputElementTag
Related Tags<EntityTag.visual_pose> Returns the name of the entity's current visual pose. (...)
DescriptionSets the entity's visual pose, must be one of 🔗https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Pose.html.
Note that not all entities support all poses, some are only supported by specific entity types.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3189
Namescale
ObjectImageTag
InputMapTag
Related Tags<ImageTag.width> Returns the image's width (in pixels).
<ImageTag.height> Returns the image's height (in pixels).
DescriptionRescales an image.
The input is a ObjectType:MapTag with "width" and "height" keys.
Both are optional, and default to the image's current respective value.
Example
# Rescales an image to be 50x50
- adjust def:image scale:[width=50;height=50]
Example
# Makes an image taller, keeping its existing width.
- adjust def:short_image scale:[height=100]
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ImageTag.java#L245
Nameadd_attribute_modifiers
ObjectItemTag
InputMapTag
Related Tags<ItemTag.attribute_modifiers> (Property) Returns the attribute modifiers of an item, with key as the attribute name and value as a list of modifiers, (...)
DescriptionAdds attribute modifiers to an item without altering existing modifiers.
For input format details, refer to Language:attribute modifiers.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemAttributeModifiers.java#L122
Nameattribute_modifiers
ObjectItemTag
InputMapTag
Related Tags<ItemTag.attribute_modifiers> (Property) Returns the attribute modifiers of an item, with key as the attribute name and value as a list of modifiers, (...)
Description(Property) Sets the attribute modifiers of an item, with key as the attribute name and value as a list of modifiers,
where each modifier is a MapTag containing keys 'name', 'amount', 'slot', 'operation', and 'id'.
For use as a mechanism, this is a SET operation, meaning pre-existing modifiers are removed.
For format details, refer to Language:attribute modifiers.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemAttributeModifiers.java#L30
Namebase_color
ObjectItemTag
InputElementTag
Related Tags<ItemTag.base_color> (Property) Returns the base color of a shield. (...)
Description(Property) Sets the base color of a shield.
For the list of possible colors, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html.
Give no input with a shield to remove the base color (and any patterns).
Tag returns null if there is no base color or patterns.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemBaseColor.java#L12
Namecomponents_patch
ObjectItemTag
InputMapTag
Related Tags<ItemTag.components_patch> (Property) Returns the item's internal component patch. That is, the changes in components on top of the item type's default components. (...)
Description(Property) Sets the item's internal component patch. That is, the changes in components on top of the item type's default components.
The map is in Language:Raw NBT Encoding format.
This is mainly intended for item data persistence, and scripts should prefer using proper item properties instead of setting raw data directly.
If you're trying to control custom data (such as data set by other plugins), use Property:ItemTag.custom_data.
GroupProperties
Warning(s)Due to this being a direct representation of internal data, compatibility for script usage across versions is not guaranteed.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemComponentsPatch.java#L21
Namecustom_data
ObjectItemTag
InputMapTag
Related Tags<ItemTag.custom_data> (Property) Returns an item's custom NBT data, if any. (...)
Description(Property) Sets an item's custom NBT data, if any.
The map is in NBT format, see Language:Raw NBT Encoding.
This does not include any normal vanilla data (enchantments, lore, etc.), just extra custom data.
This is useful for integrating with items from external systems (such as custom items from plugins), but item flags should be preferred otherwise.
Provide no input to clear custom data.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemCustomData.java#L13
Namecustom_model_data
ObjectItemTag
InputElementTag(Number)
Related Tags<ItemTag.custom_model_data> (Property) Returns the custom model data ID number of the item. (...)
Description(Property) Sets the custom model data ID number of the item.
Use with no input to remove the custom model data.
Prefer Property:ItemTag.item_model on MC 1.21+.
See also Tag:ItemTag.has_custom_model_data
Generated Example
- adjust <player.item_in_hand> custom_model_data:4
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemCustomModel.java#L11
Nameenchantments
ObjectItemTag
InputMapTag
Related Tags<ItemTag.enchantment_map> Returns a map of enchantments on the item. (...)
DescriptionSets the item's enchantments as a map of EnchantmentTags or enchantment names to level.
For example: - inventory adjust slot:hand enchantments:sharpness=1
Does not remove existing enchantments, for that use Mechanism:ItemTag.remove_enchantments
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java#L239
Nameflag
ObjectItemTag
InputObjectTag
Related Tags<FlaggableObject.flag[<flag_name>]> Returns the specified flag from the flaggable object. (...)
<FlaggableObject.has_flag[<flag_name>]> Returns true if the flaggable object has the specified flag, otherwise returns false. (...)
<FlaggableObject.flag_expiration[<flag_name>]> Returns a TimeTag indicating when the specified flag will expire. (...)
<FlaggableObject.list_flags> Returns a list of the flaggable object's flags. (...)
DescriptionModifies a flag on this item, using syntax similar to Command:flag.
For example, 'flag:myflagname:!' will remove flag 'myflagname', or 'flag:myflagname:3' sets flag 'myflagname' to value '3'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemFlags.java#L119
Namefood
ObjectItemTag
InputMapTag
Related Tags<ItemTag.food> (Property) Returns an item's food Language:Item Components. (...)
Description(Property) Sets an item's food Language:Item Components.
The map includes keys:
- "nutrition", ElementTag(Number) representing the amount of food points restored by this item.
- "saturation", ElementTag(Decimal) representing the amount of saturation points restored by this item.
- "can_always_eat", ElementTag(Boolean) controlling whether the item can always be eaten, even if the player isn't hungry.
Provide no input to reset the item to its default value.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/FoodAdapter.java#L11
Nameglider
ObjectItemTag
InputElementTag(Boolean)
Related Tags<ItemTag.glider> (Property) Returns whether an item can be used to glide when equipped (like elytras by default), see Language:Item Components.
Description(Property) Sets whether an item can be used to glide when equipped (like elytras by default), see Language:Item Components.
Provide no input to reset the item to its default value.
Generated Example
- adjust <player.item_in_hand> glider:false
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/GliderAdapter.java#L7
Nameitem_model
ObjectItemTag
InputElementTag
Related Tags<ItemTag.item_model> (Property) Returns an item's model Language:Item Components in namespaced key format. (...)
Description(Property) Sets an item's model Language:Item Components in namespaced key format.
The default namespace is "minecraft", so for example an input of "stone" becomes "minecraft:stone", and will set the item model to a stone block.
This can also be used to display item models from your own custom resource packs.
Provide no input to reset the item to its default value.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ItemModelAdapter.java#L11
Namelodestone_location
ObjectItemTag
InputLocationTag
Related Tags<ItemTag.lodestone_location> Returns the lodestone location this compass is pointing at (if any). (...)
DescriptionChanges the lodestone location this compass is pointing at.
See also Mechanism:ItemTag.lodestone_tracked
Give no input to unset.
Generated Example
- adjust <player.item_in_hand> lodestone_location:<player.location>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemLodestoneLocation.java#L96
Namelodestone_tracked
ObjectItemTag
InputElementTag(Boolean)
Related Tags<ItemTag.lodestone_tracked> Returns whether the compass will track a lodestone. If "true", the compass will only work if there's a lodestone at the target location. (...)
DescriptionChanges whether the compass will track a lodestone. If "true", the compass will only work if there's a lodestone at the target location.
See also Mechanism:ItemTag.lodestone_location
Generated Example
- adjust <player.item_in_hand> lodestone_tracked:true
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemLodestoneTracked.java#L80
Namemax_durability
ObjectItemTag
InputElementTag(Number)
Related Tags<ItemTag.max_durability> (Property) Returns an item's max durability Language:Item Components.
Description(Property) Sets an item's max durability Language:Item Components.
Provide no input to reset the item to its default value.
Generated Example
- adjust <player.item_in_hand> max_durability:2
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxDurabilityAdapter.java#L9
Namemax_stack_size
ObjectItemTag
InputElementTag(Number)
Related Tags<ItemTag.max_stack_size> (Property) Returns an item's max stack size Language:Item Components.
Description(Property) Sets an item's max stack size Language:Item Components.
Provide no input to reset the item to its default value.
Generated Example
- adjust <player.item_in_hand> max_stack_size:2
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxStackSizeAdapter.java#L9
Namepatterns
ObjectItemTag
InputListTag
Related Tags<ItemTag.patterns> Lists a banner's patterns in the form "COLOR/PATTERN|COLOR/PATTERN" etc. (...)
<server.pattern_types> Returns a list of all banner patterns known to the server. (...)
DescriptionChanges the patterns of a banner. Input must be in the form
"COLOR/PATTERN|COLOR/PATTERN" etc.
For the list of possible colors, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html.
For the list of possible patterns, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/banner/PatternType.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPatterns.java#L146
Namepotion_effects
ObjectItemTag
InputListTag
Related Tags<ItemTag.effects_data> Returns a list of all potion effects on this item, in the same format as the MapTag input to the mechanism. (...)
<server.potion_types> Returns a list of all potion types known to the server, including their "strong" and extended variants. (...)
<server.potion_effect_types> Returns a list of all potion effects known to the server. (...)
DescriptionSets the item's potion effect(s).
This applies to Potion items, Tipped Arrow items, and Suspicious Stews.

For potions or tipped arrows (not suspicious stew), the first item in the list must be a MapTag with keys:
"base_type" - from 🔗https://minecraft.wiki/w/Potion#Item_data (optional, becomes an uncraftable potion when unset).
"translation_id" - controls the translation key used for the default item display name. The translation key used is "item.minecraft.<item type>.effect.<id>" (optional).

For example: [base_type=strong_swiftness]
This example produces an item labeled as "Potion of Swiftness - Speed II (1:30)"

Each following item in the list are potion effects, which must be a MapTag in Language:Potion Effect Format.

A very short full default potion item would be: potion[potion_effects=[base_type=regeneration]
A (relatively) short full potion item would be: potion[potion_effects=<list[[base_type=regeneration]|[effect=speed;duration=10s]]>]
(Note the list constructor to force data format interpretation, as potion formats can be given multiple ways and the system will get confused without a constructor)
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPotion.java#L277
Namerarity
ObjectItemTag
InputElementTag
Related Tags<ItemTag.rarity> (Property) Returns an item's rarity Language:Item Components. (...)
Description(Property) Sets an item's rarity Language:Item Components.
See 🔗https://jd.papermc.io/paper/org/bukkit/inventory/ItemRarity.html for valid rarity values.
Provide no input to reset the item to its default value.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/RarityAdapter.java#L10
Nameraw_nbt
ObjectItemTag
InputMapTag
Related Tags<ItemTag.raw_nbt> Returns a map of all non-default raw NBT on this item. (...)
<ItemTag.all_raw_nbt> Returns a map of all raw NBT on this item, including default values. (...)
DescriptionSets the given map of raw NBT keys onto this item.
Note that the input format must be strictly perfect.
Refer to Language:Raw NBT Encoding for explanation of the input format.
Deprecated in favor of Property:ItemTag.custom_data on MC 1.20+.
Deprecateduse 'ItemTag.custom_data'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemRawNBT.java#L378
Nameremove_attribute_modifiers
ObjectItemTag
InputListTag
Related Tags<ItemTag.attribute_modifiers> (Property) Returns the attribute modifiers of an item, with key as the attribute name and value as a list of modifiers, (...)
DescriptionRemoves attribute modifiers from an item. Specify a list of attribute names or modifier keys (UUIDs on versions below MC 1.21) as input.
See also Language:attribute modifiers.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemAttributeModifiers.java#L143
Nameremove_component
ObjectItemTag
InputElementTag
DescriptionRemoves the specified item component from the item, see Language:Item Components for more information.
This can be used to remove item's default behavior, such as making consumable items non-consumable.
See also Property:ItemTag.removed_components.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/ItemRemovedComponents.java#L68
Nameremoved_components
ObjectItemTag
InputListTag
Related Tags<ItemTag.removed_components> (Property) Returns the item components explicitly removed from an item. (...)
Description(Property) Sets the item components explicitly removed from an item.
This can be used to remove item's default behavior, such as making consumable items non-consumable.
Alternatively, use Mechanism:ItemTag.remove_component to remove a single component.
See Language:Item Components for more information.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/ItemRemovedComponents.java#L14
Nameskull_skin
ObjectItemTag
InputElementTag(|ElementTag(|ElementTag))
Related Tags<ItemTag.skull_skin> Returns the UUID of the player whose skin a skull item uses. (...)
<ItemTag.skin> Returns the UUID of the player whose skin a skull item uses. (...)
<ItemTag.has_skin> Returns whether the item has a custom skin set. (...)
DescriptionSets the player skin on a player_head.
A head should have a Texture blob, the player's UUID, and the player's Name.
The most-correct input is UUID|Texture|Name.
You can alternately input Name|Texture|UUID and the order will be automatically corrected.
You can alternately input just a UUID, or just a Name, or just UUID|Texture, or just Name|Texture, and the missing data will be downloaded.
You can alternately input just a Texture and the remaining data will be filled as name "null" and UUID "000-000". Doing this may cause side effects with Minecraft internals or external plugins, use with caution.
See also Language:Player Entity Skins (Skin Blobs).
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemSkullskin.java#L140
Nametrim
ObjectItemTag
InputMapTag
Related Tags<ItemTag.trim> (Property) An armor item's trim. (...)
Description(Property) An armor item's trim.
Allowed keys: material, pattern.
Valid material values can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/meta/trim/TrimMaterial.html
Valid pattern values can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/meta/trim/TrimPattern.html
Valid values also include ones added by datapacks, plugins, etc. as a namespaced key.
For the mechanism, if an item already has a trim, you can omit either material or pattern to keep the original data while also changing the other option.
For example, if you only want to change the pattern and not the material, you can omit the material, and it will use the already existing material.
To remove the trim provide no input.
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemTrim.java#L16
Nameworth
ObjectItemTag
InputElementTag(Decimal)
Related Tags<ItemTag.essentials_worth> Returns the amount of money one of this item is worth in Essentials.
DescriptionDeprecated in favor of Mechanism:ItemTag.essentials_worth.
Generated Example
- adjust <player.item_in_hand> worth:1.5
RequiresDepenizen, Essentials
DeprecatedUse 'ItemTag.essentials_worth'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/essentials/EssentialsItemExtensions.java#L65
Nameexit_location
ObjectLocationTag
InputLocationTag
Related Tags<LocationTag.exit_location> Returns the exit location of an end gateway block.
DescriptionSets the exit location of an end gateway block.
See also Mechanism:LocationTag.is_exact_teleport.
Generated Example
- adjust <player.location> exit_location:<npc.location>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5404
Namegenerate_tree
ObjectLocationTag
InputElementTag
Related Tags<server.tree_types> Returns a list of all tree types known to the server. (...)
DescriptionGenerates a tree at this location if possible.
For a list of valid tree types, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/TreeType.html
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5165
Namejukebox_play
ObjectLocationTag
InputElementTag(Boolean)
Related Tags<LocationTag.jukebox_is_playing> Returns whether the jukebox is currently playing a song.
DescriptionIf 'true', starts playing the record inside. If 'false', stops playing any song.
See also Mechanism:LocationTag.jukebox_record.
Generated Example
- adjust <player.location> jukebox_play:true
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5333
Namejukebox_record
ObjectLocationTag
InputItemTag
Related Tags<LocationTag.jukebox_record> Returns the record item currently inside the jukebox. (...)
DescriptionSets the record item played by a jukebox. Give no input to set the jukebox to empty.
See also Mechanism:LocationTag.jukebox_play.
Generated Example
- adjust <player.location> jukebox_record:<player.item_in_hand>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5305
Namelectern_page
ObjectLocationTag
InputElementTag(Number)
Related Tags<LocationTag.lectern_page> Deprecated in favor of Tag:LocationTag.page.
DescriptionDeprecated in favor of Tag:LocationTag.page.
Generated Example
- adjust <player.location> lectern_page:3
DeprecatedUse LocationTag.page
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5233
Namepatterns
ObjectLocationTag
InputListTag
Related Tags<LocationTag.patterns> Lists the patterns of the banner at this location in the form "COLOR/PATTERN|COLOR/PATTERN" etc. (...)
<server.pattern_types> Returns a list of all banner patterns known to the server. (...)
DescriptionChanges the patterns of the banner at this location. Input must be in the form "COLOR/PATTERN|COLOR/PATTERN" etc.
For the list of possible colors, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html.
For the list of possible patterns, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/banner/PatternType.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5119
Namesherds
ObjectLocationTag
InputMapTag
Related Tags<LocationTag.sherds> Returns a decorated pot's sherds as a map of sides to ObjectType:MaterialTags of the sherds. (...)
DescriptionSets a decorated pot's sherds, input is a map of sides to ObjectType:MaterialTags of the sherds.
You only need to specify the sides you want to set, and the default value (for removing a side's sherd) is a brick.
Valid sides are: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/DecoratedPot.Side.html.
Valid materials are either a brick or any pottery sherd.
Example
# Sets a decorated pot's left side to a random sherd.
- adjust <[potLocation]> sherds:[left=<server.vanilla_tagged_materials[decorated_pot_sherds].random>]
Example
# Removes a decorated pot's sherds.
- adjust <[potLocation]> sherds:[left=brick;right=brick;front=brick;back=brick]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4383
Namesign_glow_color
ObjectLocationTag
InputElementTag
Related Tags<LocationTag.sign_glow_color> Returns the name of the glow-color of the sign at the location. (...)
<LocationTag.sign_glowing> Returns whether the location is a Sign block that is glowing.
DescriptionChanges the glow color of a sign.
For the list of possible colors, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html.
If a sign is not glowing, this is equivalent to applying a chat color to the sign.
Use Mechanism:LocationTag.sign_glowing to toggle whether the sign is glowing.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5528
Namestructure_block_data
ObjectLocationTag
InputMapTag
Related Tags<LocationTag.structure_block_data> Returns the structure block data of the structure block at the location as a map with the following keys: (...)
DescriptionSets the structure block data of the structure block at the location. Input is a map with the following keys (all keys are optional):
- author: EntityTag: The Structure's author, can also input an ElementTag to set the name directly (set to "?" for most vanilla structures).
- integrity: ElementTag(Decimal): The integrity of the structure (0-1). Lower integrity values will result in more blocks being removed when loading a structure.
used with the seed to determine which blocks are randomly removed to mimic "decay".
- metadata: ElementTag: Can only be set while in DATA mode. sets specific functions that can be applied to the structure,
check the Minecraft wiki (🔗https://minecraft.wiki/w/Structure_Block#Data) for more information.
- mirror: ElementTag: How the structure is mirrored; "NONE", "LEFT_RIGHT", or "FRONT_BACK".
- box_position: LocationTag: The position of the structure's bounding box, relative to the position of the structure block. Maximum allowed distance is 48 blocks in any direction.
- rotation: ElementTag: The rotation of the structure; "NONE", "CLOCKWISE_90", "CLOCKWISE_180", or "COUNTERCLOCKWISE_90".
- seed: ElementTag(Number): The seed used to determine how many blocks are removed upon loading of this structure (see "integrity" for more information).
- structure_name: ElementTag: The name of the structure.
- size: LocationTag: The size of the structure's bounding box, The maximum structure size is 48,48,48.
- mode: ElementTag: The structure block's mode; "CORNER", "DATA", "LOAD", or "SAVE". See also Mechanism:MaterialTag.mode.
- box_visible: ElementTag(Boolean): Whether the structure's bounding box is visible, only applies in LOAD mode.
- ignore_entities: ElementTag(Boolean): Whether entities in the structure are ignored, only applies in SAVE mode.
- show_invisible: ElementTag(Boolean): Whether invisible blocks in the structure are shown.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L5553
Nameage
ObjectMaterialTag
InputElementTag(Number)
Related Tags<MaterialTag.age> (Property) Returns an ageable material's current age. This includes plant growth. (...)
Description(Property) Sets an ageable material's current age. This includes plant growth.
See also Tag:MaterialTag.maximum_age.
Generated Example
- adjust <material[stone]> age:3
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialAge.java#L18
Nameattachment_face
ObjectMaterialTag
InputElementTag
Related Tags<MaterialTag.attachment_face> (Property) Returns the current attach direction for attachable materials such as switches, grindstones, and bells. (...)
Description(Property) Sets the current attach direction for attachable materials such as switches, grindstones, and bells.
For bell values, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/type/Bell.Attachment.html
For all other supported type values, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/FaceAttachable.AttachedFace.html
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialAttachmentFace.java#L13
Nameheights
ObjectMaterialTag
InputElementTag
Related Tags<MaterialTag.heights> Deprecated in favor of Property:MaterialTag.sides
DescriptionDeprecated in favor of Property:MaterialTag.sides
Deprecateduse 'sides'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialSides.java#L125
Nameinstrument
ObjectMaterialTag
InputElementTag
Related Tags<MaterialTag.instrument> Returns the name of the instrument played from this note block, (...)
DescriptionSets the instrument played from this note block,
for valid instruments see list at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Instrument.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialInstrument.java#L77
Namelevel
ObjectMaterialTag
InputElementTag(Number)
Related Tags<MaterialTag.level> (Property) Returns the current level for a Levelled material, cake, beehives, snow, farmland, or brushable blocks. (...)
Description(Property) Sets the current level for a Levelled material, cake, beehives, snow, farmland, or brushable blocks.
"Levelled" materials include: water, lava, cauldrons, composters, light blocks, brushable blocks, and any other future Levelled implementing types.
For light blocks, this is the brightness of the light.
For water/lava this is the height of the liquid block.
For cauldrons, this is the amount of liquid contained.
For cake, this is the number of bites left.
For beehives/bee nests, this is the amount of honey contained.
For snow, this is the number of partial layers, or the height, of a snow block.
For farmland, this is the moisture level.
For composters, this is the amount of compost.
For brushable blocks (also referred to as "suspicious blocks"), this is the level of dusting. 1.20+ only.
For dried ghasts, this is the level of hydration. 1.21+ only.
See also Tag:MaterialTag.maximum_level and Tag:MaterialTag.minimum_level.
Generated Example
- adjust <material[stone]> level:2
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialLevel.java#L16
Namevanilla_tags
ObjectMaterialTag
InputListTag
Related Tags<MaterialTag.vanilla_tags> Returns a list of vanilla tags that apply to this material. See also 🔗https://minecraft.wiki/w/Tag.
DescriptionSets a material's vanilla tags.
Any tag name will be accepted - meaning, any tag name input will be added to the material, regardless of whether it previously existed or not.
This will work at any time, but applying your changes once during Event:server prestart is recommended, as usages require a server resources reload.
Example
# Adds the guarded_by_piglins tag to Netherrack, without removing its other tags.
- adjust <material[netherrack]> vanilla_tags:<material[netherrack].vanilla_tags.include[guarded_by_piglins]>
Example
# Removes the dead_bush_may_place_on tag from <[material]>, while keeping its other tags.
- adjust <[material]> vanilla_tags:<[material].vanilla_tags.exclude[dead_bush_may_place_on]>
Example
# Removes all vanilla tags from <[material]>, leaving it with only the wither_summon_base_blocks tag.
- adjust <[material]> vanilla_tags:wither_summon_base_blocks
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java#L707
Nameglow_color
ObjectNPCTag
InputElementTag
Related TagsTODO
DescriptionSets the color the NPC will glow with, when it's glowing. Input must be from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/ChatColor.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L1982
Nameskin
ObjectNPCTag
InputElementTag
Related Tags<NPCTag.skin> Returns the NPC's custom skin, if any.
DescriptionSets the skin of an NPC by name.
Call with no value to clear the custom skin value.
See also Language:Player Entity Skins (Skin Blobs).
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L1686
Nameskin_blob
ObjectNPCTag
InputElementTag
Related Tags<NPCTag.skin> Returns the NPC's custom skin, if any.
DescriptionSets the skin blob of an NPC, in the form of "texture;signature;name".
Call with no value to clear the custom skin value.
See also Language:Player Entity Skins (Skin Blobs).
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L1651
Namewander_delay
ObjectNPCTag
InputDurationTag
Related Tags<NPCTag.wander_delay> Returns the delay for the NPC's wander Waypoint Provider, if that provider is in use.
DescriptionSets the delay for an NPC's wander Waypoint Provider.
Mechanism:NPCTag.waypoint_provider must be set to 'wander' before setting wander_delay.
Set to 0 to disable.
Generated Example
- adjust <npc> wander_delay:5m
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L1391
Namewander_xrange
ObjectNPCTag
InputElementTag(Number)
Related Tags<NPCTag.wander_xrange> Returns the xrange for the NPC's wander Waypoint Provider, if that provider is in use.
DescriptionSets the xrange for an NPC's wander path.
Mechanism:NPCTag.waypoint_provider must be set to 'wander' before setting wander_xrange.
Generated Example
- adjust <npc> wander_xrange:3
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L1412
Namewander_yrange
ObjectNPCTag
InputElementTag(Number)
Related Tags<NPCTag.wander_yrange> Returns the yrange for the NPC's wander Waypoint Provider, if that provider is in use.
DescriptionSets the yrange for an NPC's wander path.
Mechanism:NPCTag.waypoint_provider must be set to 'wander' before setting wander_yrange.
Generated Example
- adjust <npc> wander_yrange:3
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L1435
Nameworldguard_wander_region
ObjectNPCTag
InputWorldGuardRegionTag
Related Tags<NPCTag.worldguard_wander_region> If the NPC's waypoint provider is set to wander (Tag:NPCTag.waypoint_provider), (...)
DescriptionIf the NPC's waypoint provider is set to wander (Mechanism:NPCTag.waypoint_provider),
sets the current WorldGuard region that wandering is restricted to.
Provide no input to remove the region restriction.
RequiresDepenizen, WorldGuard
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/worldguard/WorldGuardNPCExtensions.java#L34
Nameadd_tab_completions
ObjectPlayerTag
InputListTag
DescriptionAdds custom tab completions that will be suggested to the player when typing in chat.
Tab completions added by this mechanism can be removed using Mechanism:PlayerTag.remove_tab_completions.
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperPlayerExtensions.java#L193
Namebanner_update
ObjectPlayerTag
InputElementTag
DescriptionShows the player fake patterns on a banner. Input must be in the form: "LOCATION|COLOR/PATTERN|..."
As of Minecraft 1.13, the base color is unique material types, and so Command:showfake must be used for base color changes.
For the list of possible patterns, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/banner/PatternType.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3930
Nameedit_sign
ObjectPlayerTag
InputLocationTag
DescriptionAllows the player to edit an existing sign. To create a sign, see Command:Sign.
Give no input to make a fake edit interface.
Generated Example
- adjust <player> edit_sign:<npc.location>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3855
Namefake_equipment
ObjectPlayerTag
InputEntityTag(|ElementTag|ItemTag)
DescriptionShows the player fake equipment on the specified living entity, which has no real non-visual effects.
Input is in the form Entity|Slot|Item, where the slot can be one of the following: HAND, OFF_HAND, BOOTS, LEGS, CHEST, HEAD
Optionally, exclude the slot and item to stop showing the fake equipment, if any, on the specified entity.
For example:
- adjust <player> fake_equipment:<[some_entity]>|chest|diamond_chestplate
- adjust <player> fake_equipment:<player>|head|jack_o_lantern
Consider instead using Command:fakeequip.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3603
Namefake_op_level
ObjectPlayerTag
InputElementTag(Number)
DescriptionSends a fake operator level to the client, enabling clientside op-required features like the debug gamemode hotkey (F3+F4).
Input should be a number from 0 to 4, 0 indicating not op and 4 indicating maximum level op.
The input number value corresponds to "op-permission-level" in the server.properties. See also 🔗https://minecraft.wiki/w/Permission_level
This will be reset when a player rejoins, changes world, has their real op status changed, ...
Generated Example
- adjust <player> fake_op_level:1
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperPlayerExtensions.java#L134
Nameflying_fall_damage
ObjectPlayerTag
InputElementTag(Boolean)
Related Tags<PlayerTag.flying_fall_damage> Returns whether the player will take fall damage while Tag:PlayerTag.can_fly is true.
<PlayerTag.can_fly> Returns whether the player is allowed to fly. (...)
DescriptionSets whether the player will take fall damage while Mechanism:PlayerTag.can_fly is true.
Generated Example
- adjust <player> flying_fall_damage:true
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperPlayerExtensions.java#L220
Namehide_entities
ObjectPlayerTag
InputElementTag
DescriptionHides a matchable type of entity from the player. Can use any advanced entity matchers per Language:Advanced Object Matching.
To hide a specific entity from the player, use Mechanism:PlayerTag.hide_entity.
To remove hide sets, use Mechanism:PlayerTag.unhide_entities.
Note that dynamic matchables like 'entity_flagged' will behave in unexpected ways when dynamically changing.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3396
Namehide_entity
ObjectPlayerTag
InputEntityTag
DescriptionHides an entity from the player.
To hide from everyone, use Mechanism:EntityTag.hide_from_players.
See also Mechanism:PlayerTag.show_entity.
Generated Example
- adjust <player> hide_entity:<npc>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3366
Namehide_particles
ObjectPlayerTag
InputElementTag
DescriptionHides a certain type of particle from the player.
Input is the particle type name - refer to Tag:server.particle_types.
Give no input to remove all hides from a player.
Hides will persist through players reconnecting, but not through servers restarting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L4135
Namelast_death_location
ObjectPlayerTag
InputLocationTag
Related Tags<PlayerTag.last_death_location> Returns the location where the player last died, if any. (...)
DescriptionSets the player's last death location, note that this only updates clientside when the player respawns.
Works with offline players.
See also Mechanism:PlayerTag.refresh_player.
Generated Example
- adjust <player> last_death_location:<npc.location>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2593
Namenoclip
ObjectPlayerTag
InputElementTag(Boolean)
DescriptionWhen true, causes the server to allow the player to noclip (ie, walk through blocks without being prevented).
This is purely serverside. The client will still not walk through blocks.
This is useful alongside Command:showfake.
Note that this may sometimes be imperfect / sometimes momentarily continue to clip block.
Note that this may also prevent other collisions (eg projectile impact) but is not guaranteed to.
Generated Example
- adjust <player> noclip:false
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2831
Namequietly_discover_recipe
ObjectPlayerTag
InputListTag
DescriptionCauses the player to discover a recipe, or list of recipes, without being notified or updated about this happening.
Generally helpful to follow this with Mechanism:PlayerTag.resend_discovered_recipes.
Input is in the Namespace:Key format, for example "minecraft:gold_nugget".
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3809
Nameremove_tab_completions
ObjectPlayerTag
InputListTag
DescriptionRemoves custom tab completions added by Mechanism:PlayerTag.add_tab_completions.
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperPlayerExtensions.java#L207
Nameresend_discovered_recipes
ObjectPlayerTag
InputNone
DescriptionSends the player the full list of recipes they have discovered over again.
This is useful when used alongside Mechanism:PlayerTag.quietly_discover_recipe.
Generated Example
- adjust <player> resend_discovered_recipes
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3797
Nameresource_pack
ObjectPlayerTag
InputElementTag(|ElementTag)
DescriptionDeprecated, use Command:resourcepack.
DeprecatedUse the "resourcepack" command instead of this old mechanism.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3052
Namesend_climbable_materials
ObjectPlayerTag
InputListTag(MaterialTag)
Related Tags<server.vanilla_tagged_materials[<tag>]> Returns a list of materials referred to by the specified vanilla tag. See also 🔗https://minecraft.wiki/w/Tag.
DescriptionSends the player a list of climbable materials.
To climb a block, the player has to stand in it, which means only non-full blocks can be climbed.
Note that this gets reset once the player rejoins or once server resources are reloaded (see Event:server resources reloaded).
Example
# Lets the linked player climb iron_bars, while keeping other climbable materials climbable
- adjust <player> send_climbable_materials:<server.vanilla_tagged_materials[climbable].include[iron_bars]>
Example
# Lets the linked player climb only acacia_buttons, making all other materials non-climbable.
- adjust <player> send_climbable_materials:acacia_button
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2800
Nameshow_entity
ObjectPlayerTag
InputEntityTag
DescriptionShows the player a previously hidden entity.
To show for everyone, use Mechanism:EntityTag.show_to_players.
See also Mechanism:PlayerTag.hide_entity.
Generated Example
- adjust <player> show_entity:<npc>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3353
Nameskin
ObjectPlayerTag
InputElementTag
DescriptionChanges the skin of the player to the skin of the given player name.
See also Language:Player Entity Skins (Skin Blobs).
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L4026
Nameskin_blob
ObjectPlayerTag
InputElementTag
Related Tags<PlayerTag.skin_blob> Returns the player's current skin blob. (...)
DescriptionChanges the skin of the player to the specified blob.
In the format: "texture;signature" (two values separated by a semicolon).
See also Language:Player Entity Skins (Skin Blobs).
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L4043
Namespectate
ObjectPlayerTag
InputEntityTag
DescriptionForces the player to spectate from the entity's point of view, using a packet (meaning, the player starts spectating clientside, but not serverside).
The player will not move from their existing location serverside.
To cause real spectator mode spectating, use Mechanism:PlayerTag.spectator_target
Note that in some cases you may want to force the player into the spectate gamemode prior to using this mechanism.
Note: They cannot cancel the spectating without a re-log -- you must make them spectate themselves to cancel the effect.
Like: - adjust <player> spectate:<player>
Generated Example
- adjust <player> spectate:<player>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3719
Namespectator_target
ObjectPlayerTag
InputEntityTag
Related Tags<PlayerTag.spectator_target> Returns the entity that a spectator-mode player is currently spectating, if any.
DescriptionSwitches the player to spectator mode and causes them to immediately start spectating an entity.
To instead fake this effect, use Mechanism:PlayerTag.spectate
Give no input to detach the player from any target.
Generated Example
- adjust <player> spectator_target:<player>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3698
Nameunhide_entities
ObjectPlayerTag
InputElementTag
DescriptionRemoves any entity hides added by Mechanism:PlayerTag.hide_entities. Input must exactly match the input given to the hide mechanism.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L3419
Namewindow_property
ObjectPlayerTag
InputElementTag
DescriptionSets various properties of a window the player has open, such as the open page in a lectern.
Input is of the form PROPERTY,VALUE where the value is a number.
Note that any adjusted window properties are entirely clientside.
Valid properties: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/InventoryView.Property.html
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2914
Namecleanmem
Objectserver
InputNone
DescriptionDeprecated in favor of Mechanism:system.cleanmem
Generated Example
- adjust server cleanmem
Deprecateduse system.cleanmem
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2297
Namedefault_colors
Objectserver
InputMapTag
Related Tags<&> Returns a custom color value based on the common base color names defined in the Denizen config file. (...)
<ElementTag.custom_color> Makes the input text colored by the custom color value based on the common base color names defined in the Denizen config file. (...)
DescriptionSets a default value of a custom color, to be used if the config.yml does not specify a value for that color name.
Input must be a map with the keys as custom color names, and the values as the default color.
This mechanism should probably be executed during Event:scripts loaded.
Example
on scripts loaded:
- adjust server default_colors:[mymagenta=<&color[#ff00ff]>;myred=<&c>]
- debug log "The custom red is <&[myred]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2061
Namedelete_file
Objectserver
InputElementTag
DescriptionDeprecated in favor of Mechanism:system.delete_file
Deprecateduse system.delete_file
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2279
Nameregister_permission
Objectserver
InputMapTag
Related Tags<server.has_whitelist> Returns whether the server's whitelist is active.
DescriptionInput must be a map with the key 'name' set to the permission name.
Can also set 'description' to a description of the permission.
Can also set 'parent' to the name of the parent permission (must already be registered).
Can also set 'default' to any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/permissions/PermissionDefault.html to define default accessibility.
This mechanism should probably be executed during Event:server prestart.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2009
Namereset_event_stats
Objectserver
InputNone
DescriptionDeprecated in favor of Mechanism:system.reset_event_stats
Generated Example
- adjust server reset_event_stats
Deprecateduse system.reset_event_stats
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2288
Namecancel_runlater
Objectsystem
InputElementTag
DescriptionCancels a task scheduled in Command:runlater by its specified unique ID.
If the ID isn't in use, will silently do nothing.
Use Tag:util.runlater_ids to check whether there is already a scheduled task with the given ID.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L1044
Namereset_event_stats
Objectsystem
InputNone
Related Tags<util.event_stats> Returns a simple debuggable stats report for all ScriptEvents during this server session.
<util.event_stats_data> Returns the raw data for Tag:util.event_stats, as a ListTag of MapTags.
DescriptionResets the statistics on events used for Tag:util.event_stats
Generated Example
- adjust system reset_event_stats
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L1060
Namerespawn_phase
ObjectWorldTag
InputElementTag
DescriptionSet the current respawn phase of the ender dragon. Valid phases can be found at 🔗https://jd.papermc.io/paper/1.21.3/org/bukkit/boss/DragonBattle.RespawnPhase.html
Only works if the world is an end world.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L1124
Namesimulation_distance
ObjectWorldTag
InputElementTag(Number)
Related Tags<WorldTag.view_distance> Returns the view distance of this world. Chunks are visible to players inside this radius. (...)
<server.view_distance> Returns the server's current view distance.
DescriptionSets this world's view distance. All chunks within this radius will be tracked by the server.
Input should be a number from 2 to 32.
See also Mechanism:WorldTag.view_distance
Generated Example
- adjust <player.location.world> simulation_distance:1
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperWorldExtensions.java#L140
Nameview_distance
ObjectWorldTag
InputElementTag(Number)
Related Tags<WorldTag.view_distance> Returns the view distance of this world. Chunks are visible to players inside this radius. (...)
<server.view_distance> Returns the server's current view distance.
DescriptionSets this world's view distance. All chunks within this radius of a player will be visible to that player.
Input should be a number from 2 to 32.
See also Mechanism:WorldTag.simulation_distance
Generated Example
- adjust <player.location.world> view_distance:3
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperWorldExtensions.java#L114

ObjectType


NameBiomeTag
Prefixb@
Base TypeElementTag
ImplementsFlaggableObject
Identity FormatThe identity format for biomes is a world name, then a comma, then the biome key. For example: 'hub,desert', or 'space,minecraft:desert'.
DescriptionA BiomeTag represents a world biome type. Vanilla biomes are globally available, however some biomes are world-specific when added by datapacks.

A list of all vanilla biomes can be found at 🔗https://minecraft.wiki/w/Biome#Biome_IDs.

BiomeTags without a specific world will work as though they are in the server's default world.

This object type is flaggable.
Flags on this object type will be stored in the server saves file, under special sub-key "__biomes"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L33
NameColorTag
Prefixco@
Base TypeElementTag
Identity FormatThe identity format for colors is <red>,<green>,<blue> or <red>,<green>,<blue>,<alpha> or the name of a color.
When using the numeric form, the number must be between 0 and 255, where 0 is least bright and 255 is most bright.
For example, 'co@50,64,128' or 'co@255,0,0,128' or 'co@red'.
DescriptionA ColorTag represents an RGBA color code.

Note that a ColorTag is NOT a base dye color (used by wool, etc). That is handled by a separate naming system.

Constructing a ColorTag also accepts 'random' to pick a random RGB color,
or 'transparent' to return 0,0,0,0
or RGB hex code like '#FF00FF',
or RGBA hex codes like '#FF00FF80',
or valid minecraft chat color codes (hex or historical codes).

A list of accepted color names can be found at Tag:util.color_names.

Red/green/blue/alpha values are each from 0 to 255.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ColorTag.java#L20
NameDiscordChannelTag
Prefixdiscordchannel@
Base TypeElementTag
ImplementsFlaggableObject
Identity FormatThe identity format for Discord channels is the bot ID (optional), followed by the channel ID (required).
For example: 1234
Or: mybot,1234
DescriptionA DiscordChannelTag is an object that represents a channel (text or voice) on Discord, either as a generic reference,
or as a bot-specific reference (the relevant guild is inherently linked, and does not need to be specified).

This object type is flaggable.
Flags on this object type will be stored in: plugins/dDiscordBot/flags/bot_(botname).dat, under special sub-key "__channels"
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordChannelTag.java#L25
NameEnchantmentTag
Prefixenchantment@
Base TypeElementTag
ImplementsFlaggableObject
Identity FormatThe identity format for enchantments is the vanilla ID, Denizen ID, or full key. Can also be constructed by Denizen script name.
For example, 'enchantment@sharpness', 'enchantment@my_custom_ench', or 'enchantment@otherplugin:customench'.
DescriptionAn EnchantmentTag represents an item enchantment abstractly (the enchantment itself, like 'sharpness', which *can be* applied to an item, as opposed to the specific reference to an enchantment on a specific item).
For enchantment names, check 🔗https://minecraft.wiki/w/Enchanting#Summary_of_enchantments. Note spaces should swapped to underscores, so for example "Aqua Affinity" becomes "aqua_affinity".

This object type is flaggable.
Flags on this object type will be stored in the server saves file, under special sub-key "__enchantments"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EnchantmentTag.java#L28
NameFlaggableObject
PrefixNone
Identity FormatN/A
Description"FlaggableObject" is a pseudo-ObjectType that represents any type of object that can hold flags,
for use with Command:flag or any other flag related tags and mechanisms.

Just because an ObjectType implements FlaggableObject, does not mean a specific instance of that object type is flaggable.
For example, LocationTag implements FlaggableObject, but a LocationTag-Vector (a location without a world) cannot hold a flag.
Extended ByGriefPreventionClaimTag, NationTag, TownTag, DiscordBotTag, DiscordChannelTag, DiscordCommandTag, DiscordGroupTag, DiscordInteractionTag, DiscordMessageTag, DiscordReactionTag, DiscordRoleTag, DiscordUserTag, BiomeTag, ChunkTag, CuboidTag, EllipsoidTag, EnchantmentTag, EntityTag, InventoryTag, ItemTag, LocationTag, MaterialTag, NPCTag, PlayerTag, PluginTag, PolygonTag, WorldTag, QueueTag, ScriptTag, TimeTag
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/flags/FlaggableObject.java#L7
NameImageTag
Prefiximage@
Base TypeElementTag
Identity FormatThe identity format for ImageTag is a hex encoding of the image's raw bytes, in order.
Each byte is encoded as an individual big-endian hexadecimal pair, like "FF" for byte=255, "00" for byte=0, "0F" for 15, "F0" for 240, ... etc.
Alternatively, an image's identity format can be an image id (from images loaded in with Command:Image), see description for more information.
DescriptionImageTags represent an image of any supported format.
They are represented by either a hex encoding of their bytes or their image id, but new images can also be created by providing a MapTag with the following keys:
- "width": the new image's width, required.
- "height": the new image's height, required.
- "background": a ObjectType:ColorTag for the new image's background, optional.

For id-based images, the image will directly reference the image loaded in under that id, so for example:

- define image <image[drawing]>
- draw id:drawing pixel x:0 y:0 color:red
# The "image" definition has changed as well, since it's an id-based image and the image under that id was edited.

See Tag:ImageTag.copy for getting normal image objects from id-based ones.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ImageTag.java#L30
NameItemTag
Prefixi@
Base TypeElementTag
ImplementsFlaggableObject, PropertyHolderObject
Identity FormatThe identity format for items is the basic material type name, or an item script name. Other data is specified in properties.
For example, 'i@stick'.
DescriptionAn ItemTag represents a holdable item generically.

ItemTags are temporary objects, to actually modify an item in an inventory you must add the item into that inventory.

ItemTags do NOT remember where they came from. If you read an item from an inventory, changing it
does not change the original item in the original inventory. You must set it back in.

Find a list of valid materials at:
🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
Note that some materials on that list are exclusively for use with blocks, and cannot be held as items.

This object type is flaggable.
Flags on this object type will be stored in the item NBT.
MatchableItemTag matchers, sometimes identified as "<item>", often seen as "with:<item>":
"potion": plaintext: matches if the item is any form of potion item.
"script": plaintext: matches if the item is any form of script item.
"item_flagged:<flag>": A Flag Matcher for item flags.
"item_enchanted:<enchantment>": matches if the item is enchanted with the given enchantment name (excluding enchantment books). Allows advanced matchers.
"raw_exact:<item>": matches based on exact raw item data comparison (almost always a bad idea to use).
Item property format: will validate that the item material matches and all directly specified properties also match. Any properties not specified won't be checked.
for example "stick[display=Hi]" will match any 'stick' with a displayname of 'hi', regardless of whether that stick has lore or not, or has enchantments or not, or etc.
Item script names: matches if the item is a script item with the given item script name, using advanced matchers.
If none of the above are used, uses MaterialTag matchables. Refer to MaterialTag matchable list above.
Note that "item" plaintext is always true.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L56
NameMaterialTag
Prefixm@
Base TypeElementTag
ImplementsFlaggableObject, PropertyHolderObject
Identity FormatThe identity format for materials is the material type name.
For example, 'm@stick'.
DescriptionA MaterialTag represents a material (a type of block or item).

Block materials may sometimes also contain property data,
for specific values on the block material such as the growth stage of a plant or the orientation of a stair block.

Material types: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html.

This object type is flaggable.
Flags on this object type will be stored in the server saves file, under special sub-key "__materials"
MatchableMaterialTag matchers, sometimes identified as "<material>", associated with "<block>":
"material" plaintext: always matches.
"block" plaintext: matches if the material is a block-type material.
"item" plaintext: matches if the material is an item-type material.
"material_flagged:<flag>": a Flag Matchable for MaterialTag flags.
"vanilla_tagged:<tag_name>": matches if the given vanilla tag applies to the material. Allows advanced matchers, for example: "vanilla_tagged:mineable*".
If none of the above are used, uses an advanced matcher for the material name, like "stick".
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java#L37
NameQuaternionTag
Prefixquaternion@
Base TypeElementTag
Identity FormatThe identity format for quaternions is <x>,<y>,<z>,<w>
For example "0,0,0,1" is the Identity quaternion.
You can input the word "identity" to get an identity quaternion as well.

You can also construct quaternions via tags such as Tag:VectorObject.to_axis_angle_quaternion or Tag:VectorObject.quaternion_between_vectors.
DescriptionA QuaternionTag represents a 3D rotation in an advanced mathematical format.
These are only useful in certain obscure cases, such as Display entities.
They have some useful capabilities, such as preventing 'gimbal lock' (a phenomenon where repeatedly rotating something eventually stops working).
See 🔗https://en.wikipedia.org/wiki/Quaternion for more info about what a quaternion actually is.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/QuaternionTag.java#L16
NameSecretTag
Prefixsecret@
Base TypeElementTag
Identity FormatThe identity format for secrets is simply the secret key (as defined by the file 'secrets.secret' in the Denizen folder).
DescriptionA SecretTag represents a value that should never be exposed to logs or tags.
For example: authorization tokens, API keys, etc.

A SecretTag is made of a 'key', and a 'value'.
The key is a simple name, like 'my_bot_token', that is safe to show in logs/etc.
The value is the actual internal data that must be kept secret, often a generated code.

The keys and values must be defined in the 'secrets.secret' file inside the Denizen folder.
The contents of that file would look something like:
!SECRETS_FILE
my_bot_token: abc123.123abc
my_api_key: 1a2b3c4d5e6f

The above example defines SecretTag 'my_bot_token' as 'abc123.123abc',
meaning you could then use '<secret[my_bot_token]>' in the input to a command that parses secrets to have it understand the real value to input should be 'abc123.123abc'
However if you use the same tag in for example a narrate command, it would just narrate 'secret@my_bot_token', keeping your real value safe.
Note that the "!SECRETS_FILE" prefix cannot be removed, but comments can be added/removed/altered freely with a "#" prefix.

Commands that accept SecretTag inputs will document that information in the command meta. For example, see Command:webget.

There is intentionally no tag that can read the value of a secret.

You can reload the secrets file via "/ex reload config"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/SecretTag.java#L48

Tag


Name<&click[<click_command>].type[<type>]>
ReturnsElementTag
DescriptionReturns a special chat code that makes the following text execute the input command when clicked.
This tag must be followed by an <&end_click> tag.
Available command types: OPEN_URL, OPEN_FILE, RUN_COMMAND, SUGGEST_COMMAND, COPY_TO_CLIPBOARD, or CHANGE_PAGE.
For example: - narrate "You can <&click[https://denizenscript.com].type[OPEN_URL]>click here<&end_click> to learn about Denizen!"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L90
Name<&click[<click_command>]>
ReturnsElementTag
DescriptionReturns a special chat code that makes the following text execute the input command line value when clicked.
To execute a command "/" should be used at the start. Otherwise, it will display as chat.
This tag must be followed by an <&end_click> tag.
For example: - narrate "You can <&click[wow]>click here<&end_click> to say wow!"
For example: - narrate "You can <&click[/help]>click here<&end_click> for help!"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L73
Name<&end_click>
ReturnsElementTag
DescriptionReturns a special chat code that ends a '&click' tag.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <&end_click>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L125
Name<&end_hover>
ReturnsElementTag
DescriptionReturns a special chat code that ends a '&hover' tag.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <&end_hover>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L136
Name<&end_insertion>
ReturnsElementTag
DescriptionReturns a special chat code that ends an '&insertion' tag.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <&end_insertion>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L147
Name<&font[<font>]>
ReturnsElementTag
DescriptionReturns a chat code that makes the following text display with the specified font.
The default font is "minecraft:default".
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L324
Name<&gradient[from=<color>;to=<color>;(style={RGB}/HSB)]>
ReturnsElementTag
DescriptionReturns a chat code that makes the following text be the specified color.
Input works equivalently to Tag:ElementTag.color_gradient, return to that tag for more documentation detail and input examples.
The gradient runs from whatever text is after this gradient, until the next color tag (0-9, a-f, 'r' reset, or an RGB code. Does not get stop at formatting codes, they will be included in the gradient).
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Example
- narrate "<&gradient[from=black;to=white]>these are the shades of gray <white>that solidifies to pure white"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L299
Name<&hover[<hover_text>].type[<type>]>
ReturnsElementTag
DescriptionReturns a special chat code that makes the following text display the input hover text when the mouse is left over it.
This tag must be followed by an <&end_hover> tag.
Available hover types: SHOW_TEXT, SHOW_ITEM, or SHOW_ENTITY.
For example: - narrate "There is a <&hover[you found it!].type[SHOW_TEXT]>secret<&end_hover> in this message!"
Note: for "SHOW_ITEM", replace the text with a valid ItemTag. For "SHOW_ENTITY", replace the text with a valid spawned EntityTag (requires F3+H to see entities).
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L46
Name<&hover[<hover_text>]>
ReturnsElementTag
DescriptionReturns a special chat code that makes the following text display the input hover text when the mouse is left over it.
This tag must be followed by an <&end_hover> tag.
For example: - narrate "There is a <&hover[you found it!]>secret<&end_hover> in this message!"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L35
Name<&insertion[<message>]>
ReturnsElementTag
DescriptionReturns a special chat code that makes the following text insert the input message to chat when shift-clicked.
This tag must be followed by an <&end_insertion> tag.
For example: - narrate "You can <&insertion[wow]>click here<&end_insertion> to add 'wow' to your chat!"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L108
Name<&keybind[<key>]>
ReturnsElementTag
DescriptionReturns a special chat code that displays a keybind.
For example: - narrate "Press your <&keybind[key.jump]> key!"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L158
Name<&optimize>
ReturnsElementTag
DescriptionReturns a chat code that tells the formatted text parser to try to produce mininalist JSON text.
This is useful in particular for very long text or where text is being sent rapidly/repeatedly.
It is not needed in most normal messages.
It will produce incompatibility issues if used in items or other locations where raw JSON matching is required.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <&optimize>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L339
Name<&score[<name>|<objective>(|<value>)]>
ReturnsElementTag
DescriptionReturns a special chat code that displays a scoreboard entry. Input is an escaped list of:
Name of the relevant entity, name of the objective, then optionally a value (if unspecified, will use current scoreboard value).
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <&score>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L232
Name<&selector[<key>]>
ReturnsElementTag
DescriptionReturns a special chat code that displays a vanilla selector.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L174
Name<&translate[<key>].with[<text>|...]>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:&translate.
DeprecatedUse '<&translate[key=<key>;with=<text>|...]>'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L217
Name<&translate[key=<key>;(fallback=<fallback>);(with=<text>|...)]>
ReturnsElementTag
DescriptionReturns a special chat code that is read by the client to display an auto-translated message.
"key" is the translation key.
Optionally specify "fallback" as text to display when the client can't find a translation for the key.
Optionally specify "with" as a list of input data for the translatable message (parts of the message that are dynamic).
Be warned that language keys can change between Minecraft versions.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
You can use Tag:ElementTag.strip_color to convert the translated output to plain text (pre-translated).
Example
# Narrates a translatable of a diamond sword's name.
- narrate "Reward: <&translate[key=item.minecraft.diamond_sword]>"
Example
# Narrates a translatable with some input data.
- narrate <&translate[key=commands.give.success.single;with=32|<&translate[key=item.minecraft.diamond_sword]>|<player.name>]>
Example
# Narrates a custom translatable (from something like a resource pack), with a fallback in case it can't be translated.
- narrate <&translate[key=my.custom.translation;fallback=Please use the resource pack!]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/TextTagBase.java#L189
Name<AreaObject.spawnable_blocks[(<matcher>)]>
ReturnsListTag(LocationTag)
DescriptionReturns each LocationTag within the area that is safe for players or similar entities to spawn in.
Optionally, specify a material matcher to only return locations with that block type.
Uses the same spawnable check as Tag:LocationTag.is_spawnable
Example
# Spawns a creeper at a random spawnable block within the area.
- spawn creeper <cuboid[my_cuboid].spawnable_blocks.random>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/AreaContainmentObject.java#L254
Name<bigdoor[<door>]>
ReturnsBigDoorsDoorTag
DescriptionReturns a BigDoorsDoorTag object constructed from the input value.
Refer to ObjectType:BigDoorsDoorTag.
RequiresDepenizen, Big Doors
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/BigDoorsBridge.java#L32
Name<binary[<binary>]>
ReturnsBinaryTag
DescriptionReturns a BinaryTag constructed from the input binary data in hexadecimal format.
Refer to ObjectType:BinaryTag.
Generated Example
- filewrite path:data/mypath.dat data:<binary[ff0000]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L74
Name<BinaryTag.decode_integer>
ReturnsElementTag(Number)
DescriptionReturns the integer number represented by this binary data.
Data must be 1, 2, 4, or 8 bytes long.
Uses big-endian twos-complement format.
See also Tag:ElementTag.integer_to_binary
Example
# Narrates '255'
- narrate <binary[000000ff].decode_integer>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L233
Name<BinaryTag.gzip_compress>
ReturnsBinaryTag
DescriptionReturns the binary data, compressed via gzip.
See also Tag:BinaryTag.gzip_decompress
Example
- define data <binary[48454c4c4f20574f524c44]>
- define compressed <[data].gzip_compress>
- define decompressed <[data].gzip_decompress>
- if <[decompressed].to_hex> == <[data].to_hex>:
    - narrate "Everything works!"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L265
Name<BinaryTag.gzip_decompress>
ReturnsBinaryTag
DescriptionReturns the binary data, compressed via gzip.
See also Tag:BinaryTag.gzip_compress
Example
- define data <binary[48454c4c4f20574f524c44]>
- define compressed <[data].gzip_compress>
- define decompressed <[data].gzip_decompress>
- if <[decompressed].to_hex> == <[data].to_hex>:
    - narrate "Everything works!"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L282
Name<BinaryTag.hash[<format>]>
ReturnsBinaryTag
DescriptionReturns the raw binary hash of the binary data, using the given hashing algorithm.
Algorithm can be "MD5", "SHA-1", "SHA-256", or any other algorithm supported by your Java runtime environment per 🔗https://docs.oracle.com/javase/8/docs/api/java/security/MessageDigest.html.
Example
# Narrates binary data "4b68507f1746b0e5f3efe99b8ef42afef79da017", the exact SHA-1 hash of ASCII "HELLO WORLD".
- narrate <binary[48454c4c4f20574f524c44].hash[SHA-1]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L333
Name<BinaryTag.hmac[type=<type>;key=<secret>]>
ReturnsBinaryTag
DescriptionReturns the raw binary HMAC ("hash-based message authentication code") of the binary data, using the given HMAC algorithm and key.
Type can be "HmacMD5", "HmacSHA1", "HmacSHA256", or any other algorithm supported by your Java runtime environment per 🔗https://docs.oracle.com/javase/8/docs/api/javax/crypto/Mac.html.
Key can be a SecretTag, BinaryTag, or ElementTag.
Example
# Narrates "f7bc83f430538424b13298e6aa6fb143ef4d59a14946175997479dbc2d1a3cd8".
- narrate <element[The quick brown fox jumps over the lazy dog].utf8_encode.hmac[type=HmacSHA256;key=key].to_hex>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L355
Name<BinaryTag.nbt_to_map>
ReturnsMapTag
DescriptionConverts raw NBT binary data to a MapTag.
This under some circumstances might not return a map, depending on the underlying data.
Refer to Language:Raw NBT Encoding
Example
# Reads a player ".dat" file's NBT data
- ~fileread path:data/<player.uuid>.dat save:x
- define data <entry[x].data.gzip_decompress.nbt_to_map>
# Now do something with "<[data]>"
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitBinaryTagExtensions.java#L15
Name<BinaryTag.text_decode[<encoding>]>
ReturnsElementTag
DescriptionReturns the raw text represented by this binary data, decoding using the specified encoding method.
Input can be for example "utf-8" or "iso-8859-1".
See also Tag:ElementTag.text_encode
Example
# narrates "HELLO WORLD"
- narrate <binary[48454c4c4f20574f524c44].text_decode[us-ascii]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L212
Name<BinaryTag.to_base64>
ReturnsElementTag
DescriptionReturns a base64 encoding of the binary data.
See also Tag:ElementTag.base64_to_binary
Example
- define data <binary[48454c4c4f20574f524c44]>
- define encoded <[data].to_base64>
- define decoded <[encoded].base64_to_binary>
- if <[decoded].to_hex> == <[data].to_hex>:
    - narrate "Everything works!"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L181
Name<BinaryTag.utf8_decode>
ReturnsElementTag
DescriptionReturns the raw text represented by this binary data, decoding using the standard UTF-8 encoding.
See also Tag:ElementTag.utf8_encode
Example
# narrates "HELLO WORLD"
- narrate <binary[48454c4c4f20574f524c44].utf8_decode>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L198
Name<BinaryTag.zlib_compress>
ReturnsBinaryTag
DescriptionReturns the binary data, compressed via zlib.
See also Tag:BinaryTag.zlib_decompress
Example
- define data <binary[48454c4c4f20574f524c44]>
- define compressed <[data].zlib_compress>
- define decompressed <[data].zlib_decompress>
- if <[decompressed].to_hex> == <[data].to_hex>:
    - narrate "Everything works!"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L299
Name<BinaryTag.zlib_decompress>
ReturnsBinaryTag
DescriptionReturns the binary data, compressed via zlib.
See also Tag:BinaryTag.zlib_compress
Example
- define data <binary[48454c4c4f20574f524c44]>
- define compressed <[data].zlib_compress>
- define decompressed <[data].zlib_decompress>
- if <[decompressed].to_hex> == <[data].to_hex>:
    - narrate "Everything works!"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/BinaryTag.java#L316
Name<biome[<biome>]>
ReturnsBiomeTag
DescriptionReturns a biome object constructed from the input value.
Refer to ObjectType:BiomeTag.
Generated Example
- adjust <player.location.chunk> set_all_biomes:<biome[desert]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L121
Name<BiomeTag.base_temperature>
ReturnsElementTag(Decimal)
MechanismBiomeTag.base_temperature
DescriptionReturns the base temperature of this biome, which is used for per-location temperature calculations (see Tag:BiomeTag.temperature_at).
Example
# In a plains biome, this fills with '0.8'.
- narrate "Stay warm! In a plains biome, the base temperature is <biome[plains].base_temperature>!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L215
Name<BiomeTag.downfall_at[<location>]>
ReturnsElementTag
DescriptionReturns this biome's downfall type at a location (for when a world has weather).
This can be RAIN, SNOW, or NONE.
Generally Tag:LocationTag.downfall_type should be preferred, other than some special cases.
Example
# Tells the linked player what the downfall type at their location is.
- narrate "The downfall type at your location is: <player.location.biome.downfall_at[<player.location>]>!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L307
Name<BiomeTag.downfall_type>
ReturnsElementTag
MechanismBiomeTag.downfall_type
DescriptionDeprecated in favor of Tag:BiomeTag.downfall_at on 1.19+, as downfall is block-specific now.
Returns this biome's downfall type for when a world has weather.
This can be RAIN, SNOW, or NONE.
Example
# In a plains biome, this fills with 'RAIN'.
- narrate "The downfall type in plains biomes is: <biome[plains].downfall_type>!"
DeprecatedMinecraft changed the way biome downfall works, use Tag:BiomeTag.downfall_at on 1.19+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L168
Name<BiomeTag.fog_color>
ReturnsColorTag
MechanismBiomeTag.fog_color
DescriptionReturns the biome's fog color, which is visible when outside water (see also Tag:BiomeTag.water_fog_color).
Example
# Sends the player a message in their current biome's fog color.
- narrate "You are currently seeing fog that looks like <&color[<player.location.biome.fog_color>]>this!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L339
Name<BiomeTag.temperature_at[<location>]>
ReturnsElementTag(Decimal)
DescriptionReturns the temperature of a specific location in this biome.
If this is less than 0.15, snow will form on the ground when weather occurs in the world and a layer of ice will form over water.
Generally Tag:LocationTag.temperature should be preferred, other than some special cases.
Example
# Gives the player water if they are standing in a warm location.
- if <player.location.biome.temperature_at[<player.location]> > 0.5:
  - give water_bucket
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L291
Name<BiomeTag.water_fog_color>
ReturnsColorTag
MechanismBiomeTag.water_fog_color
DescriptionReturns the biome's water fog color, which is visible when underwater (see also Tag:BiomeTag.fog_color).
Example
# Sends the player a message in their current biome's water fog color.
- narrate "If you are underwater, everything looks like <&color[<player.location.biome.water_fog_color>]>this!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/BiomeTag.java#L353
Name<chunk[<chunk>]>
ReturnsChunkTag
DescriptionReturns a chunk object constructed from the input value.
Refer to ObjectType:ChunkTag.
Generated Example
- chunkload <chunk[<player.location.chunk>]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L130
Name<ChunkTag.plugin_tickets>
ReturnsListTag(PluginTag)
MechanismChunkTag.clear_plugin_tickets
DescriptionReturns a list of plugins that are keeping this chunk loaded.
This is related to the Command:chunkload command.
Example
# Narrates the list of plugin names keeping the player's chunk loaded formatted into readable format.
# Example: "Plugins keeping your chunk loaded: Denizen and Citizens".
- narrate "Plugins keeping your chunk loaded: <player.location.chunk.plugin_tickets.formatted>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ChunkTag.java#L368
Name<color[<color>]>
ReturnsColorTag
DescriptionReturns a color object constructed from the input value.
Refer to ObjectType:ColorTag.
Generated Example
- inventory adjust slot:hand color:<color[green]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L83
Name<ColorTag.argb_integer>
ReturnsElementTag(Number)
DescriptionReturns the Alpha, Red, Green, and Blue values of this ColorTag as an integer number, equivalent to an integer reparse of Tag:ColorTag.hex.
Highest order bits are alpha, then red, then green, then lowest is blue.
This is a rare special case encoding usually avoided by most systems, but may be necessary for some obscure tools.
Generated Example
- narrate "the number value is <color[red].argb_integer>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ColorTag.java#L293
Name<ColorTag.rgb_integer>
ReturnsElementTag(Number)
DescriptionReturns the Red, Green, and Blue values of this ColorTag as an integer number, equivalent to an integer reparse of Tag:ColorTag.hex.
Highest order bits are red, then green, then lowest is blue.
This is a rare special case encoding usually avoided by most systems, but may be necessary for some obscure tools.
Generated Example
- narrate "the number value is <color[red].rgb_integer>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ColorTag.java#L281
Name<ColorTag.to_particle_offset>
ReturnsLocationTag
DescriptionReturns the color as a particle offset, for use with Command:playeffect.
Example
# Plays the "SPELL_MOB" effect above the player's head with the particle offset applied to color the particle.
- playeffect at:<player.location.add[0,3,0]> effect:SPELL_MOB data:1 quantity:0 offset:<color[fuchsia].to_particle_offset>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitColorExtensions.java#L29
Name<crackshot.weapon[<weapon_name>]>
ReturnsItemTag
DescriptionReturns the ItemTag for the CrackShot weapon title specified, if it exists. 🔗https://github.com/Shampaggon/CrackShot/wiki/The-Complete-Guide-to-CrackShot#title
RequiresDepenizen, CrackShot
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/CrackShotBridge.java#L51
Name<cuboid[<cuboid>]>
ReturnsCuboidTag
DescriptionReturns a cuboid object constructed from the input value.
Refer to ObjectType:CuboidTag.
Generated Example
- note <cuboid[my_cuboid_note]> as:my_new_cuboid
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L139
Name<CuboidTag.expand_one_side[<location>]>
ReturnsCuboidTag
DescriptionExpands the cuboid by the given amount in just one direction, and returns the changed cuboid.
If a coordinate is positive, it will expand the high value. If it is negative, it will expand the low value.
Note that you can also specify a single number to expand all coordinates by the same amount (equivalent to specifying a location that is that value on X, Y, and Z).
Inverted by Tag:CuboidTag.shrink_one_side
Not valid for multi-member CuboidTags.
Example
# Expands the high value of the cuboid "my_cuboid" by 15,16,17 on one side and notes it as "my_expanded_cuboid".
# If "my_cuboid" spans from 10,10,10 (max) to 5,5,5 (min), then expanding it by 15,16,17 will make "my_expanded_cuboid"
# span from 25,26,27 (max) to 5,5,5 (min).
- note <cuboid[my_cuboid].expand_one_side[15,16,17]> as:my_expanded_cuboid
Example
# Expands the low value of the cuboid "my_cuboid" by -15 (-15,-15,-15) on one side and notes it as "my_expanded_cuboid".
# If "my_cuboid" spans from 10,10,10 (max) to 5,5,5 (min), then shrinking it by -15 will make "my_expanded_cuboid"
# span from 10,10,10 (max) to -10,-10,-10 (min).
- note <cuboid[my_cuboid].expand_one_side[-15]> as:my_expanded_cuboid
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/CuboidTag.java#L1412
Name<CuboidTag.shrink_one_side[<location>]>
ReturnsCuboidTag
DescriptionShrinks the cuboid by the given amount in just one direction, and returns the changed cuboid.
If a coordinate is positive, it will shrink the high value. If it is negative, it will shrink the low value.
Note that you can also specify a single number to expand all coordinates by the same amount (equivalent to specifying a location that is that value on X, Y, and Z).
Inverted by Tag:CuboidTag.expand_one_side
Not valid for multi-member CuboidTags.
If you shrink past the limits of the cuboid's size, the cuboid will flip and start expanding the opposite direction.
Example
# Shrinks the high value of the cuboid "my_cuboid" by 15,16,17 on one side and notes it as "my_smaller_cuboid".
# If "my_cuboid" spans from 10,10,10 (max) to 5,5,5 (min), then shrinking it by 15,16,17 will make "my_smaller_cuboid"
# span from 5,5,5 (max) to -5,-6,-7 (min).
- note <cuboid[my_cuboid].shrink_one_side[15,16,17]> as:my_smaller_cuboid
Example
# Shrinks the low value of the cuboid "my_cuboid" by -15 (-15,-15,-15) on one side and notes it as "my_smaller_cuboid".
# If "my_cuboid" spans from 10,10,10 (max) to 5,5,5 (min), then shrinking it by -15 will make "my_smaller_cuboid"
# span from 20,20,20 (max) to 10,10,10 (min).
- note <cuboid[my_cuboid].shrink_one_side[-15]> as:my_smaller_cuboid
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/CuboidTag.java#L1469
Name<custom_object[<custom-object>]>
ReturnsCustomObjectTag
DescriptionReturns a custom object constructed from the input value.
Refer to ObjectType:CustomObjectTag.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L92
Name<discord_button[(<button>)]>
ReturnsDiscordButtonTag
DescriptionReturns a blank DiscordButtonTag instance, to be filled with data via the with.as tag.
Or, if given an input, returns a Discord Button object constructed from the input value.
Refer to ObjectType:DiscordButtonTag.
Generated Example
- narrate <discord_button>
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L132
Name<discord_channel[<channel>]>
ReturnsDiscordChannelTag
DescriptionReturns a Discord Channel object constructed from the input value.
Refer to ObjectType:DiscordChannelTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L148
Name<discord_command[<command>]>
ReturnsDiscordCommandTag
DescriptionReturns a Discord Command object constructed from the input value.
Refer to ObjectType:DiscordCommandTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L164
Name<discord_embed[(<embed>)]>
ReturnsDiscordEmbedTag
DescriptionReturns a blank DiscordEmbedTag instance, to be filled with data via the with.as tag.
Or, if given an input, returns a Discord Embed object constructed from the input value.
Refer to ObjectType:DiscordEmbedTag.
Generated Example
- narrate <discord_embed>
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L180
Name<discord_group[<group>]>
ReturnsDiscordGroupTag
DescriptionReturns a Discord Group object constructed from the input value.
Refer to ObjectType:DiscordGroupTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L196
Name<discord_interaction[<interaction>]>
ReturnsDiscordInteractionTag
DescriptionReturns a Discord Interaction object constructed from the input value.
Refer to ObjectType:DiscordInteractionTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L212
Name<discord_message[<message>]>
ReturnsDiscordMessageTag
DescriptionReturns a Discord Message object constructed from the input value.
Refer to ObjectType:DiscordMessageTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L228
Name<discord_reaction[<reaction>]>
ReturnsDiscordReactionTag
DescriptionReturns a Discord Reaction object constructed from the input value.
Refer to ObjectType:DiscordReactionTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L244
Name<discord_role[<role>]>
ReturnsDiscordRoleTag
DescriptionReturns a Discord Role object constructed from the input value.
Refer to ObjectType:DiscordRoleTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L260
Name<discord_selection[(<menu>)]>
ReturnsDiscordSelectionTag
DescriptionReturns a blank DiscordSelectionTag instance, to be filled with data via the with.as tag.
Or, if given an input, returns a Discord Selection object constructed from the input value.
Refer to ObjectType:DiscordSelectionTag.
Generated Example
- narrate <discord_selection>
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L276
Name<discord_text_input[(<button>)]>
ReturnsDiscordTextInputTag
DescriptionReturns a blank DiscordTextInputTag instance, to be filled with data via the with.as tag.
Or, if given an input, returns a Discord TextInput object constructed from the input value.
Refer to ObjectType:DiscordTextInputTag.
Generated Example
- narrate <discord_text_input>
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L292
Name<discord_user[<user>]>
ReturnsDiscordUserTag
DescriptionReturns a Discord User object constructed from the input value.
Refer to ObjectType:DiscordUserTag.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/DenizenDiscordBot.java#L308
Name<DiscordButtonTag.with_map[<map>]>
ReturnsDiscordButtonTag
DescriptionReturns a copy of this Button tag, with the map of keys to values applied.
Refer to Tag:DiscordButtonTag.with.as.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordButtonTag.java#L101
Name<DiscordButtonTag.with[<key>].as[<value>]>
ReturnsDiscordButtonTag
DescriptionReturns a copy of this Button tag, with the specified data key set to the specified value.
The following keys are accepted, with values of the listed type:
style: ElementTag of either primary, secondary, success, danger, or link
id: ElementTag, can be a URL
label: ElementTag
disabled: ElementTag(Boolean)
emoji: ElementTag
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordButtonTag.java#L132
Name<DiscordCommandTag.options>
ReturnsListTag(MapTag)
DescriptionReturns the option MapTags of the command. This is the same value as the one provided when creating a command, as documented in Command:DiscordCommand.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordCommandTag.java#L210
Name<DiscordEmbedTag.output_length>
ReturnsElementTag(Number)
DescriptionReturns the total number of displayed characters this embed contains.
Discord rejects embeds with a total character count above 6000.
There are other limits for embed objects, refer to 🔗https://discordjs.guide/popular-topics/embeds.html#embed-limits
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordEmbedTag.java#L373
Name<DiscordEmbedTag.with_map[<map>]>
ReturnsDiscordEmbedTag
DescriptionReturns a copy of this Embed tag, with the map of keys to values applied.
Refer to Tag:DiscordEmbedTag.with.as.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordEmbedTag.java#L210
Name<DiscordEmbedTag.with[<key>].as[<value>]>
ReturnsDiscordEmbedTag
DescriptionReturns a copy of this Embed tag, with the specified data key set to the specified value.
The following keys are accepted, with values of the listed type:
author_name: ElementTag
author_url: ElementTag of a URL (requires author_name set)
author_icon_url: ElementTag of a URL (requires author_name set)
color: ColorTag
description: ElementTag
footer: ElementTag
footer_icon: ElementTag of a URL (requires footer set)
image: ElementTag of a URL
thumbnail: ElementTag of a URL
timestamp: TimeTag
title: ElementTag
title_url: ElementTag of a URL (requires title set)
fields: generally don't use directly, but can be set to a list of maps wherein each sub-map has keys "title", "value", and "inline" (boolean)
For fields, instead prefer Tag:DiscordEmbedTag.add_field.value and Tag:DiscordEmbedTag.add_inline_field.value.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordEmbedTag.java#L247
Name<DiscordMessageTag.url>
ReturnsElementTag
DescriptionReturns the full jump URL to this message.
This returns link text that looks something like "https://discord.com/channels/315163488085475337/315163488085475337/980909305589026906"
Where the URL is Discord's webserver, followed by Group ID, Channel ID, then Message ID.
DM messages follow a slightly different but very similar format.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordMessageTag.java#L214
Name<DiscordRoleTag.permissions>
ReturnsListTag
DescriptionReturns a list of permissions that the role provides for users. You can get a list of possible outputs here: 🔗https://ci.dv8tion.net/job/JDA5/javadoc/net/dv8tion/jda/api/Permission.html
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordRoleTag.java#L243
Name<DiscordSelectionTag.with_map[<map>]>
ReturnsDiscordSelectionTag
DescriptionReturns a copy of this Selection tag, with the map of keys to values applied.
Refer to Tag:DiscordSelectionTag.with.as.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordSelectionTag.java#L150
Name<DiscordTextInputTag.with_map[<map>]>
ReturnsDiscordTextInputTag
DescriptionReturns a copy of this TextInput tag, with the map of keys to values applied.
Refer to Tag:DiscordTextInputTag.with.as.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordTextInputTag.java#L120
Name<DiscordUserTag.display_name>
ReturnsElementTag
DescriptionReturns the global display name of the user, if any.
To obtain a server-specific display name, use Tag:DiscordUserTag.nickname.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordUserTag.java#L416
Name<DiscordUserTag.permissions[<group>]>
ReturnsListTag
DescriptionReturns a list of permissions that the user has in a certain group. You can get a list of possible outputs here: 🔗https://ci.dv8tion.net/job/JDA5/javadoc/net/dv8tion/jda/api/Permission.html
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordUserTag.java#L455
Name<duration[<duration>]>
ReturnsDurationTag
DescriptionReturns a duration object constructed from the input value.
Refer to ObjectType:DurationTag.
Generated Example
- flag server myflag expire:<duration[5m]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L101
Name<element[<element>]>
ReturnsElementTag
DescriptionReturns an element constructed from the input value.
Refer to ObjectType:ElementTag.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L110
Name<ElementTag.as_biome>
ReturnsBiomeTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- adjust <player.location.to_ellipsoid[60,3,10].blocks> biome:<element[hello_world].as_biome>
Groupconversion
Deprecateduse as[biome]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L50
Name<ElementTag.as_chunk>
ReturnsChunkTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- adjust <element[hello_world].as_chunk> set_all_biomes:desert
Groupconversion
Deprecateduse as[chunk]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L63
Name<ElementTag.as_color>
ReturnsColorTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- inventory adjust slot:hand color:<element[hello_world].as_color>
Groupconversion
Deprecateduse as[color]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L76
Name<ElementTag.as_cuboid>
ReturnsCuboidTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- note <element[hello_world].as_cuboid> as:my_new_cuboid
Groupconversion
Deprecateduse as[cuboid]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L89
Name<ElementTag.as_custom>
ReturnsCustomObjectTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- narrate <element[hello_world].as_custom>
Groupconversion
Deprecateduse as[custom]
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L702
Name<ElementTag.as_duration>
ReturnsDurationTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- ratelimit <player> <element[hello_world].as_duration>
Groupconversion
Deprecateduse as[duration]
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L744
Name<ElementTag.as_ellipsoid>
ReturnsEllipsoidTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- note <element[hello_world].as_ellipsoid> as:my_new_ellipsoid
Groupconversion
Deprecateduse as[ellipsoid]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L102
Name<ElementTag.as_enchantment>
ReturnsEnchantmentTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- inventory adjust slot:hand enchantments:[<element[hello_world].as_enchantment>=5]
Groupconversion
Deprecateduse as[enchantment]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L115
Name<ElementTag.as_entity>
ReturnsEntityTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- heal <element[hello_world].as_entity>
Groupconversion
Deprecateduse as[entity]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L128
Name<ElementTag.as_inventory>
ReturnsInventoryTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- note <element[hello_world].as_inventory> as:my_new_inventory
Groupconversion
Deprecateduse as[inventory]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L141
Name<ElementTag.as_item>
ReturnsItemTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- give <element[hello_world].as_item>
Groupconversion
Deprecateduse as[item]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L154
Name<ElementTag.as_list>
ReturnsListTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- foreach <element[hello_world].as_list> as:entry:
    - narrate "found <[entry]>"
Groupconversion
Deprecateduse as[list]
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L674
Name<ElementTag.as_location>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- teleport <player> <element[hello_world].as_location>
Groupconversion
Deprecateduse as[location]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L167
Name<ElementTag.as_map>
ReturnsMapTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- foreach <element[hello_world].as_map> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Groupconversion
Deprecateduse as[map]
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L688
Name<ElementTag.as_material>
ReturnsMaterialTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- modifyblock <player.location.below> <element[hello_world].as_material>
Groupconversion
Deprecateduse as[material]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L180
Name<ElementTag.as_npc>
ReturnsNPCTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- kill <element[hello_world].as_npc>
Groupconversion
Deprecateduse as[npc]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L193
Name<ElementTag.as_player>
ReturnsPlayerTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- narrate "hello there!" targets:<element[hello_world].as_player>
Groupconversion
Deprecateduse as[player]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L206
Name<ElementTag.as_plugin>
ReturnsPluginTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- narrate <element[hello_world].as_plugin>
Groupconversion
Deprecateduse as[plugin]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L219
Name<ElementTag.as_polygon>
ReturnsPolygonTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- note <element[hello_world].as_polygon> as:my_new_polygon
Groupconversion
Deprecateduse as[polygon]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L232
Name<ElementTag.as_queue>
ReturnsQueueTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- narrate <element[hello_world].as_queue>
Groupconversion
Deprecateduse as[queue]
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L730
Name<ElementTag.as_script>
ReturnsScriptTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- narrate <element[hello_world].as_script>
Groupconversion
Deprecateduse as[script]
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L716
Name<ElementTag.as_trade>
ReturnsTradeTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- narrate <element[hello_world].as_trade>
Groupconversion
Deprecateduse as[trade]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L245
Name<ElementTag.as_world>
ReturnsWorldTag
DescriptionDeprecated in favor of Tag:ObjectTag.as
Generated Example
- adjust <element[hello_world].as_world> destroy
Groupconversion
Deprecateduse as[world]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L258
Name<ElementTag.base64_decode>
ReturnsElementTag
DescriptionDecodes a Base64 UTF-8 encoded text to its original text.
Equivalent to using Tag:ElementTag.base64_to_binary and then Tag:BinaryTag.utf8_decode.
Generated Example
- narrate <element[hello_world].base64_decode>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2311
Name<ElementTag.base64_encode>
ReturnsElementTag
DescriptionEncodes some text to UTF-8 Base64.
Equivalent to using Tag:ElementTag.utf8_encode and then Tag:BinaryTag.to_base64.
Generated Example
- narrate <element[hello_world].base64_encode>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2298
Name<ElementTag.base64_to_binary>
ReturnsBinaryTag
DescriptionConverts base64 encoded text to its raw binary form.
See also Tag:BinaryTag.to_base64
Example
- define data <binary[48454c4c4f20574f524c44]>
- define encoded <[data].to_base64>
- define decoded <[encoded].base64_to_binary>
- if <[decoded].to_hex> == <[data].to_hex>:
    - narrate "Everything works!"
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2324
Name<ElementTag.bold>
ReturnsElementTag
DescriptionMakes the input text bold. Equivalent to "<&l><ELEMENT_HERE><&l.end_format>"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].bold>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L631
Name<ElementTag.click_chat[<message>]>
ReturnsElementTag
DescriptionAdds a click command to the element, which makes the element pseudo-chat the input message when clicked, for activating interact script chat triggers (Language:Chat Triggers).
This internally uses the command "/denizenclickable chat SOME MESSAGE HERE" (requires players have permission "denizen.clickable")
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Example
- narrate "You can <element[click here].click_chat[hello]> to say hello to an NPC's interact script!"
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L517
Name<ElementTag.click_url[<url>]>
ReturnsElementTag
DescriptionAdds a click command to the element, which makes the element open the given URL when clicked.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Example
- narrate "You can <element[click here].custom_color[emphasis].on_hover[Click me!].click_url[https://denizenscript.com]> to learn about Denizen!"
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L503
Name<ElementTag.color[<color>]>
ReturnsElementTag
DescriptionMakes the input text colored by the input color. Equivalent to "<COLOR><ELEMENT_HERE><COLOR.end_format>"
Color can be a color name, color code, hex, or ColorTag... that is: ".color[gold]", ".color[6]", and ".color[#AABB00]" are all valid.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].color[blue]>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L697
Name<ElementTag.custom_color[<custom_color_name>]>
ReturnsElementTag
DescriptionMakes the input text colored by the custom color value based on the common base color names defined in the Denizen config file.
If the color name is unrecognized, returns the value of color named 'default'.
Default color names are 'base', 'emphasis', 'warning', 'error'.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L679
Name<ElementTag.end_format>
ReturnsElementTag
DescriptionMakes a chat format code (&klmno, or &[font=...]) be the end of a format, as opposed to the start.
Use like '<&o.end_format>' or '<italic.end_format>'.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].end_format>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L600
Name<ElementTag.escaped>
ReturnsElementTag
DescriptionReturns the element, escaped for safe reuse.
Inverts Tag:ElementTag.unescaped.
See Language:Escaping System.
Generated Example
- narrate <element[hello_world].escaped>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L758
Name<ElementTag.font[<font>]>
ReturnsElementTag
DescriptionMakes the input text display with the input font name. Equivalent to "<&font[new-font]><ELEMENT_HERE><&font[new-font].end_format>"
The default font is "minecraft:default".
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L762
Name<ElementTag.format_number[(<format>)]>
ReturnsElementTag
DescriptionReturns a number reformatted for easier reading.
For example: 1234567 will become 1,234,567.
Optionally, specify a standard number format code to instead use that.
For information on that optional input, refer to 🔗https://docs.oracle.com/javase/7/docs/api/java/text/DecimalFormat.html.
Generated Example
- narrate <element[hello_world].format_number>
Synonyms (Search Aid)elementtag.number_with_commas, elementtag.thousands_separated
Groupelement manipulation
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L1294
Name<ElementTag.format[<format_script>]>
ReturnsElementTag
DescriptionReturns the text re-formatted according to a Language:Format Script Containers.
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2541
Name<ElementTag.from_raw_json>
ReturnsElementTag
DescriptionUn-hides the element's text from invisible color codes back to normal text.
Inverts Tag:ElementTag.to_raw_json.
Generated Example
- narrate <element[hello_world].from_raw_json>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L419
Name<ElementTag.from_secret_colors>
ReturnsElementTag
DescriptionUn-hides the element's text from invisible color codes back to normal text.
Inverts Tag:ElementTag.to_secret_colors.
Generated Example
- narrate <element[hello_world].from_secret_colors>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L393
Name<ElementTag.hex_decode>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:BinaryTag.utf8_decode or Tag:BinaryTag.text_decode
Generated Example
- narrate <element[hello_world].hex_decode>
Groupconversion
Deprecateduse BinaryTag.utf8_decode
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2394
Name<ElementTag.hex_encode>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:ElementTag.utf8_encode or Tag:ElementTag.text_encode
Generated Example
- narrate <element[hello_world].hex_encode>
Groupconversion
Deprecateduse utf8_encode
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2380
Name<ElementTag.hex_to_number>
ReturnsElementTag(Number)
DescriptionEncodes base-16 hexadecimal value to an integer number.
For example input of "F" will return "15".
See also Tag:ElementTag.number_to_hex
Consider instead Tag:BinaryTag.decode_integer
Generated Example
- narrate "the number value is <element[hello_world].hex_to_number>"
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2264
Name<ElementTag.hover_item[<item>]>
ReturnsElementTag
DescriptionAdds a hover message to the element, which makes the element display the input ItemTag when the mouse is left over it.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Example
- narrate "You can <element[hover here].custom_color[emphasis].hover_item[<player.item_in_hand>]> to see what you held!"
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L450
Name<ElementTag.hsb_color_gradient[from=<color>;to=<color>]>
ReturnsElementTag
DescriptionDeprecated in favor of using Tag:ElementTag.color_gradient with "style=hsb"
Grouptext manipulation
Deprecateduse color_gradient[from=color;to=color;style=HSB]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L887
Name<ElementTag.if_true[<object>].if_false[<object>]>
ReturnsObjectTag
DescriptionIf this element is 'true', returns the first given object. If it isn't 'true', returns the second given object.
If the input objects are tags, only the matching tag will be parsed.
For example: "<player.exists.if_true[<player.name>].if_false[server]>"
will return the player's name if there's a player present, or if not will return 'server', and won't show any errors from the '<player.name>' tag even without a player linked.
Groupelement checking
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2478
Name<ElementTag.is_in[<list>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the element is contained by a list.
Essentially equivalent to Tag:ListTag.contains_single, but with input order reversed.
Groupelement checking
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L1006
Name<ElementTag.italicize>
ReturnsElementTag
DescriptionMakes the input text italic. Equivalent to "<&o><ELEMENT_HERE><&o.end_format>"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].italicize>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L619
Name<ElementTag.millis_to_time>
ReturnsTimeTag
DescriptionReturns a TimeTag constructed from the given number of milliseconds after the Unix Epoch (Jan. 1st 1970).
See also Tag:util.current_time_millis and Tag:TimeTag.epoch_millis.
Example
# Takes an arbitrary unix timestamp from an external source, and formats it for a user-friendly date/time display message.
- define some_unix_timestamp <util.time_now.epoch_millis>
- narrate "The timestamp was <[some_unix_timestamp].millis_to_time.format>"
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2508
Name<ElementTag.no_reset>
ReturnsElementTag
DescriptionMakes a color code (&0123456789abcdef) not reset other formatting details.
Use like '<&c.no_reset>' or '<red.no_reset>'.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].no_reset>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L584
Name<ElementTag.number_to_hex>
ReturnsElementTag
DescriptionEncodes base-10 integer number to hexadecimal (base-16) format.
For example input of "15" will return "F".
See also Tag:ElementTag.hex_to_number
Consider instead Tag:ElementTag.integer_to_binary
Generated Example
- narrate <element[hello_world].number_to_hex>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2246
Name<ElementTag.obfuscate>
ReturnsElementTag
DescriptionMakes the input text obfuscated. Equivalent to "<&k><ELEMENT_HERE><&k.end_format>"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].obfuscate>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L667
Name<ElementTag.on_click[<command>]>
ReturnsElementTag
DescriptionAdds a click command to the element, which makes the element execute the input command when clicked.
To execute a command "/" should be used at the start. Prior to 1.19, leaving off the "/" would display the text as chat. This feature was removed as part of the 1.19 secure chat system.
For activating interact script chat triggers (Language:Chat Triggers), you can use the command "/denizenclickable chat SOME MESSAGE HERE" (requires players have permission "denizen.clickable")
For that, instead prefer Tag:ElementTag.click_chat
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Example
- narrate "You can <element[click here].on_click[/help]> for help!"
Example
- narrate "You can <element[click here].on_click[/denizenclickable chat hello]> to say hello to an NPC's interact script!"
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L532
Name<ElementTag.on_click[<message>].type[<type>]>
ReturnsElementTag
DescriptionAdds a click command to the element, which makes the element execute the input command when clicked.
Available command types: OPEN_URL, OPEN_FILE, RUN_COMMAND, SUGGEST_COMMAND, COPY_TO_CLIPBOARD, or CHANGE_PAGE.
For example: - narrate "You can <element[click here].on_click[https://denizenscript.com].type[OPEN_URL]> to learn about Denizen!"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
For run_command, prefer Tag:ElementTag.on_click
For chat, prefer Tag:ElementTag.click_chat
For URLs, prefer Tag:ElementTag.click_url
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L550
Name<ElementTag.on_hover[<message>].type[<type>]>
ReturnsElementTag
DescriptionAdds a hover message to the element, which makes the element display the input hover text when the mouse is left over it.
Available hover types: SHOW_TEXT, SHOW_ITEM, or SHOW_ENTITY.
Note: for "SHOW_ITEM", replace the text with a valid ItemTag. For "SHOW_ENTITY", replace the text with a valid spawned EntityTag (requires F3+H to see entities).
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
For show_text, prefer Tag:ElementTag.on_hover
For show_item, prefer Tag:ElementTag.hover_item
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L475
Name<ElementTag.on_hover[<message>]>
ReturnsElementTag
DescriptionAdds a hover message to the element, which makes the element display the input hover text when the mouse is left over it.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L464
Name<ElementTag.optimize_json>
ReturnsElementTag
DescriptionTells the formatted text parser to try to produce mininalist JSON text.
This is useful in particular for very long text or where text is being sent rapidly/repeatedly.
It is not needed in most normal messages.
It will produce incompatibility issues if used in items or other locations where raw JSON matching is required.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].optimize_json>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L431
Name<ElementTag.parse_color[(<prefix>)]>
ReturnsElementTag
DescriptionReturns the element with all color codes parsed.
Optionally, specify a character to prefix the color ids. Defaults to '&' if not specified.
This allows old-style colors like '&b', or Essentials-style hex codes like '&#ff00ff'
See also Tag:ElementTag.parse_minimessage
Generated Example
- narrate <element[hello_world].parse_color>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L342
Name<ElementTag.parse_minimessage>
ReturnsElementTag
DescriptionReturns the element with all MiniMessage tags parsed, see 🔗https://docs.adventure.kyori.net/minimessage/format.html for more information.
This may be useful for reading data from external plugins, but should not be used in normal scripts.
Generated Example
- narrate <element[hello_world].parse_minimessage>
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperElementExtensions.java#L16
Name<ElementTag.snbt_to_map>
ReturnsMapTag
DescriptionParses a raw SNBT string into an NBT MapTag.
See Language:Raw NBT Encoding for more information on the returned MapTag.
See 🔗https://minecraft.wiki/w/NBT_format#SNBT_format for more information on SNBT.
Example
# Use to set certain SNBT data onto an entity.
- adjust <[entity]> raw_nbt:<[snbt].snbt_to_map>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L909
Name<ElementTag.strikethrough>
ReturnsElementTag
DescriptionMakes the input text struck-through. Equivalent to "<&m><ELEMENT_HERE><&m.end_format>"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].strikethrough>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L655
Name<ElementTag.text_encode[<encoding>]>
ReturnsBinaryTag
DescriptionConverts the text to a binary representation encoded using the specified encoding method.
Input can be for example "utf-8" or "iso-8859-1".
"encoding" label corresponds to the standard charset names listed at 🔗https://docs.oracle.com/javase/8/docs/api/java/nio/charset/Charset.html, or any other charsets added by your Java environment.
See also Tag:BinaryTag.text_decode
Example
# narrates "48454c4c4f20574f524c44"
- narrate "<element[HELLO WORLD].text_encode[us-ascii].to_hex>"
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2357
Name<ElementTag.to_raw_json>
ReturnsElementTag
DescriptionConverts normal colored text to Minecraft-style "raw JSON" format.
Inverts Tag:ElementTag.from_raw_json.
Generated Example
- narrate <element[hello_world].to_raw_json>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L407
Name<ElementTag.to_secret_colors>
ReturnsElementTag
DescriptionHides the element's text in invisible color codes.
Inverts Tag:ElementTag.from_secret_colors.
Generated Example
- narrate <element[hello_world].to_secret_colors>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L374
Name<ElementTag.truncate>
ReturnsElementTag(Number)
DescriptionReturns the element as a number without a decimal by way of stripping the decimal value off the end.
That is, rounds towards zero.
This is an extremely special case tag that should only be used in very specific situations.
If at all unsure, this is probably the wrong tag. Consider Tag:elementtag.round or Tag:elementtag.round_down instead.
Generated Example
- narrate "the number value is <element[hello_world].truncate>"
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L631
Name<ElementTag.underline>
ReturnsElementTag
DescriptionMakes the input text underlined. Equivalent to "<&n><ELEMENT_HERE><&n.end_format>"
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <element[hello_world].underline>
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L643
Name<ElementTag.unescaped>
ReturnsElementTag
DescriptionReturns the element, unescaped.
Inverts Tag:ElementTag.escaped.
See Language:Escaping System.
Generated Example
- narrate <element[hello_world].unescaped>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L800
Name<ElementTag.utf8_encode>
ReturnsBinaryTag
DescriptionConverts the text to a binary representation encoded with the standard UTF-8 encoding.
See also Tag:BinaryTag.utf8_decode
Example
# narrates "48454c4c4f20574f524c44"
- narrate "<element[HELLO WORLD].utf8_encode.to_hex>"
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ElementTag.java#L2342
Name<ElementTag.with_insertion[<message>]>
ReturnsElementTag
DescriptionAdds an insertion message to the element, which makes the element insert the input message to chat when shift-clicked.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Grouptext manipulation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitElementExtensions.java#L571
Name<ellipsoid[<ellipsoid>]>
ReturnsEllipsoidTag
DescriptionReturns an ellipsoid object constructed from the input value.
Refer to ObjectType:EllipsoidTag.
Generated Example
- note <ellipsoid[my_ellipsoid_note]> as:my_new_ellipsoid
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L148
Name<enchantment[<enchantment>]>
ReturnsEnchantmentTag
DescriptionReturns an enchantment object constructed from the input value.
Refer to ObjectType:EnchantmentTag.
Generated Example
- inventory adjust slot:hand enchantments:[<enchantment[sharpness]>=5]
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L157
Name<EnchantmentTag.damage_bonus[level=<level>;type=<type>]>
ReturnsElementTag(Decimal)
DescriptionReturns the damage bonus this enchantment applies against the given monster type.
The input is a MapTag with a level value and a monster type specified, where the type can be any of: ARTHROPOD, ILLAGER, WATER, UNDEAD, or UNDEFINED
See also Tag:EntityTag.monster_type for getting the category of another mob.
Example
# Narrates "With Bane of Arthropods 2, you get a damage bonus of 5 on arthropods!"
- narrate "With Bane of Arthropods 2, you get a damage bonus of <enchantment[bane_of_arthropods].damage_bonus[level=2;type=arthropod]> on arthropods!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EnchantmentTag.java#L425
Name<EnchantmentTag.damage_protection[level=<level>;type=<cause>;(attacker=<entity>)]>
ReturnsElementTag(Number)
DescriptionReturns the damage protection this enchantment applies against the given damage cause and optional attacker.
The input is a MapTag with a level value and a damage type specified, where the damage type must be from Language:Damage Cause.
For entity damage causes, optionally specify the entity attacker.
Example
# Narrates "With the Protection 3 enchantment, there is fall damage protection of 3!"
- narrate "With the Protection 3 enchantment, there is fall damage protection of <enchantment[protection].damage_protection[level=3;type=fall]>!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EnchantmentTag.java#L446
Name<entity[<entity>]>
ReturnsEntityTag
DescriptionReturns an entity object constructed from the input value.
Refer to ObjectType:EntityTag.
Generated Example
- heal <entity[<npc>]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L166
Name<EntityTag.age>
ReturnsElementTag
MechanismEntityTag.age
Description(Property) Returns the entity's age.
Age moves 1 towards zero each tick.
A newly spawned baby is -24000, a standard adult is 0, an adult that just bred is 6000.
For the mechanism, inputs can be 'baby', 'adult', or a valid age number.
Also available: Mechanism:EntityTag.age_locked and Tag:EntityTag.is_baby
Generated Example
- narrate <player.age>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAge.java#L17
Name<EntityTag.ageable>
ReturnsElementTag(Boolean)
DescriptionReturns whether the entity is ageable.
If this returns true, it will enable access to:
Mechanism:EntityTag.age, Mechanism:EntityTag.age_lock,
Tag:EntityTag.is_baby, Tag:EntityTag.age,
and Tag:EntityTag.is_age_locked
Generated Example
- if <player.ageable>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2441
Name<EntityTag.all_raw_nbt>
ReturnsMapTag
MechanismEntityTag.raw_nbt
DescriptionReturns the entity's entire raw NBT data as a MapTag.
See Language:Raw NBT Encoding for more information.
Generated Example
- foreach <player.all_raw_nbt> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3343
Name<EntityTag.allowed_colors>
ReturnsListTag
MechanismEntityTag.color
DescriptionIf the entity can have a color, returns the list of allowed colors.
See also Language:Entity Color Types.
Generated Example
- foreach <player.allowed_colors> as:entry:
    - narrate "found <[entry]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityColor.java#L364
Name<EntityTag.anger_level>
ReturnsElementTag
DescriptionReturns a warden's current anger level, which will be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Warden.AngerLevel.html.
Example
# Use to get a warden's anger level and narrate it.
- narrate "The warden is <[warden].anger_level.to_lowercase>!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3011
Name<EntityTag.armor_pose_list>
ReturnsListTag
MechanismEntityTag.armor_pose
DescriptionDeprecated in favor of Tag:EntityTag.armor_pose_map
Generated Example
- foreach <player.armor_pose_list> as:entry:
    - narrate "found <[entry]>"
Groupattributes
DeprecatedUse 'armor_pose_map'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityArmorPose.java#L91
Name<EntityTag.armor_pose>
ReturnsLocationTag
MechanismEntityTag.armor_pose
DescriptionDeprecated in favor of Tag:EntityTag.armor_pose_map
Generated Example
- teleport <player> <player.armor_pose>
Groupattributes
DeprecatedUse 'armor_pose_map'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityArmorPose.java#L105
Name<EntityTag.arms_raised>
ReturnsElementTag(Boolean)
MechanismEntityTag.arms_raised
DescriptionDeprecated in favor of Tag:EntityTag.aggressive.
Generated Example
- if <player.arms_raised>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
RequiresPaper
Deprecateduse 'aggressive'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityArmsRaised.java#L46
Name<EntityTag.attached_entities[(<player>)]>
ReturnsListTag(EntityTag)
DescriptionReturns the entities attached to this entity by Command:attach.
Optionally, specify a player. If specified, will return entities attached visible to that player. If not specified, returns entities globally attached.
Generated Example
- foreach <player.attached_entities> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2806
Name<EntityTag.attached_offset[(<player>)]>
ReturnsLocationTag
DescriptionReturns the offset of an attachment for this entity to another that was attached by Command:attach.
Optionally, specify a player. If specified, will return entity attachment visible to that player. If not specified, returns any entity global attachment.
Generated Example
- teleport <player> <player.attached_offset>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2848
Name<EntityTag.attached_to[(<player>)]>
ReturnsEntityTag
DescriptionReturns the entity that this entity was attached to by Command:attach.
Optionally, specify a player. If specified, will return entity attachment visible to that player. If not specified, returns any entity global attachment.
Generated Example
- kill <player.attached_to>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2828
Name<EntityTag.attribute_base_value[<attribute>]>
ReturnsElementTag(Decimal)
MechanismEntityTag.attribute_base_values
DescriptionReturns the base value of the named attribute for the entity.
See also Tag:EntityTag.has_attribute.
Valid attribute names are listed at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/attribute/Attribute.html
See also Language:attribute modifiers.
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeBaseValues.java#L116
Name<EntityTag.attribute_default_value[<attribute>]>
ReturnsElementTag(Decimal)
MechanismEntityTag.attribute_base_values
DescriptionReturns the default value of the named attribute for the entity.
See also Tag:EntityTag.has_attribute.
Valid attribute names are listed at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/attribute/Attribute.html
See also Language:attribute modifiers.
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeBaseValues.java#L141
Name<EntityTag.attribute_modifiers>
ReturnsMapTag
MechanismEntityTag.attribute_modifiers
DescriptionReturns a map of all attribute modifiers on the entity, with key as the attribute name and value as a list of modifiers,
where each modifier is a MapTag containing keys 'name', 'amount', 'slot', 'operation', and 'id'.
This is formatted in a way that can be sent back into the 'attribute_modifiers' mechanism.
See also Language:attribute modifiers.
Generated Example
- foreach <player.attribute_modifiers> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeModifiers.java#L275
Name<EntityTag.attribute_value[<attribute>]>
ReturnsElementTag(Decimal)
MechanismEntityTag.attribute_base_values
DescriptionReturns the final calculated value of the named attribute for the entity.
See also Tag:EntityTag.has_attribute.
Valid attribute names are listed at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/attribute/Attribute.html
See also Language:attribute modifiers.
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeBaseValues.java#L91
Name<EntityTag.auto_expire>
ReturnsElementTag(Boolean)
MechanismEntityTag.auto_expire
DescriptionReturns whether a falling_block will auto-expire (after 30 seconds, or 5 when outside the world).
See also Tag:EntityTag.time_lived
Generated Example
- if <player.auto_expire>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityAutoExpire.java#L39
Name<EntityTag.base_potion.is_extended>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Property:EntityTag.potion_type on MC 1.20+.
Deprecateduse 'EntityTag.potion_type' on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L118
Name<EntityTag.base_potion.is_upgraded>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Property:EntityTag.potion_type on MC 1.20+.
Deprecateduse 'EntityTag.potion_type' on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L106
Name<EntityTag.base_potion.type>
ReturnsElementTag
DescriptionDeprecated in favor of Property:EntityTag.potion_type on MC 1.20+.
Deprecateduse 'EntityTag.potion_type' on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L94
Name<EntityTag.base_potion>
ReturnsElementTag
MechanismEntityTag.base_potion
DescriptionDeprecated in favor of Property:EntityTag.potion_type on MC 1.20+.
Generated Example
- narrate <player.base_potion>
Deprecateduse 'EntityTag.potion_type' on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L80
Name<EntityTag.boat_type>
ReturnsElementTag
MechanismEntityTag.boat_type
Description(Property) Returns the wood type of the boat.
Valid wood types can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/TreeSpecies.html
Deprecated in versions 1.19 and above. Use Property:EntityTag.color.
Generated Example
- narrate <player.boat_type>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityBoatType.java#L15
Name<EntityTag.bookshelf_slot>
ReturnsElementTag(Number)
DescriptionReturns the Chiseled Bookshelf slot that the entity is looking at, if any.
See also Tag:LocationTag.slot
Generated Example
- narrate "the number value is <player.bookshelf_slot>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L3325
Name<EntityTag.charged>
ReturnsElementTag(Boolean)
MechanismEntityTag.charged
Description(Property) If the entity is wither_skull, controls whether the skull is charged. Charged skulls are blue.
If the entity is a vex, controls whether the vex is charging. Charging vexes have red lines.
This is a visual effect, and does not cause the vex to actually charge at anyone.
If the entity is a guardian, controls whether the guardian's laser is active.
Note that guardians also require a target to use their laser, see Command:attack.
Generated Example
- if <player.charged>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityCharged.java#L10
Name<EntityTag.color>
ReturnsElementTag
MechanismEntityTag.color
Description(Property) If the entity can have a color, controls the entity's color.
For the available color options, refer to Language:Entity Color Types.
Generated Example
- narrate <player.color>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityColor.java#L25
Name<EntityTag.colorable>
ReturnsElementTag(Boolean)
DescriptionReturns whether the entity can be colored.
If this returns true, it will enable access to Property:EntityTag.color.
Generated Example
- if <player.colorable>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2456
Name<EntityTag.conversion_duration>
ReturnsDurationTag
MechanismEntityTag.conversion_duration
DescriptionReturns the duration of time until an entity completes a conversion. See Tag:EntityTag.is_converting for examples of conversions.
When this value hits 0, the conversion completes.
See also Tag:EntityTag.in_water_duration
Generated Example
- ratelimit <player> <player.conversion_duration>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityConversionTime.java#L57
Name<EntityTag.cursor_on_solid[(<range>)]>
ReturnsLocationTag
DescriptionReturns the location of the solid block the entity is looking at.
Optionally, specify a maximum range to find the location from (defaults to 200).
Note that this will return null if there is no solid block in range.
This only uses solid blocks, ie it ignores passable blocks like tall-grass. Use Tag:EntityTag.cursor_on to include passable blocks.
Equivalent to <EntityTag.eye_location.ray_trace[return=block]>
Generated Example
- teleport <player> <player.cursor_on_solid>
Grouplocation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1585
Name<EntityTag.cursor_on[(<range>)]>
ReturnsLocationTag
DescriptionReturns the location of the block the entity is looking at.
Optionally, specify a maximum range to find the location from (defaults to 200).
This uses logic equivalent to Tag:LocationTag.precise_cursor_on_block.
Note that this will return null if there is no block in range.
This uses all blocks, ie it includes passable blocks like tall-grass and water. Use Tag:EntityTag.cursor_on_solid to exclude passable blocks.
Equivalent to <EntityTag.eye_location.ray_trace[return=block;fluids=true;nonsolids=true]>
Generated Example
- teleport <player> <player.cursor_on>
Grouplocation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1608
Name<EntityTag.custom_effects[<#>].amplifier>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:EntityTag.effects_data.
Deprecateduse 'EntityTag.effects_data'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L334
Name<EntityTag.custom_effects[<#>].duration>
ReturnsDurationTag
DescriptionDeprecated in favor of Tag:EntityTag.effects_data.
Deprecateduse 'EntityTag.effects_data'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L346
Name<EntityTag.custom_effects[<#>].has_particles>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:EntityTag.effects_data.
Deprecateduse 'EntityTag.effects_data'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L358
Name<EntityTag.custom_effects[<#>].is_ambient>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:EntityTag.effects_data.
Deprecateduse 'EntityTag.effects_data'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L370
Name<EntityTag.custom_effects[<#>].type>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:EntityTag.effects_data.
Deprecateduse 'EntityTag.effects_data'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L322
Name<EntityTag.custom_effects>
ReturnsListTag
MechanismEntityTag.custom_effects
DescriptionDeprecated in favor of Tag:EntityTag.effects_data.
Generated Example
- foreach <player.custom_effects> as:entry:
    - narrate "found <[entry]>"
Deprecateduse 'EntityTag.effects_data'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L293
Name<EntityTag.default_background>
ReturnsElementTag(Boolean)
MechanismEntityTag.default_background
Description(Property) Whether a text display entity's background is default (same as the chat window), or custom set (see Property:EntityTag.background_color).
Generated Example
- if <player.default_background>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDefaultBackground.java#L10
Name<EntityTag.disabled_slots.raw>
ReturnsElementTag(Number)
MechanismEntityTag.disabled_slots_raw
DescriptionDeprecated in favor of Tag:EntityTag.disabled_slots_data.
Groupproperties
DeprecatedUse 'disabled_slots_data'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDisabledSlots.java#L108
Name<EntityTag.disabled_slots>
ReturnsListTag
MechanismEntityTag.disabled_slots
DescriptionDeprecated in favor of Tag:EntityTag.disabled_slots_data.
Generated Example
- foreach <player.disabled_slots> as:entry:
    - narrate "found <[entry]>"
Groupproperties
DeprecatedUse 'EntityTag.disabled_slots_data'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDisabledSlots.java#L97
Name<EntityTag.disguise_to_others[(<player>)]>
ReturnsEntityTag
DescriptionReturns the fake entity used to disguise the entity in other's views, either globally (if no context input given), or to the specified player.
Relates to Command:disguise.
Generated Example
- remove <player.disguise_to_others>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2611
Name<EntityTag.disguised_type[(<player>)]>
ReturnsEntityTag
DescriptionReturns the entity type the entity is disguised as, either globally (if no context input given), or to the specified player.
Relates to Command:disguise.
Generated Example
- kill <player.disguised_type>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2577
Name<EntityTag.display>
ReturnsElementTag
MechanismEntityTag.display
Description(Property) For an item display entity this is the model transform it will display, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/ItemDisplay.ItemDisplayTransform.html.
For a text display entity this is its text alignment, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/TextDisplay.html.
Generated Example
- narrate <player.display>
Synonyms (Search Aid)entitytag.display_transform, entitytag.text_alignment
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDisplay.java#L11
Name<EntityTag.dragon_phase>
ReturnsElementTag
MechanismEntityTag.dragon_phase
DescriptionReturns the phase an EnderDragon is currently in.
Valid phases: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EnderDragon.Phase.html
Generated Example
- narrate <player.dragon_phase>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2498
Name<EntityTag.drops_item>
ReturnsElementTag(Boolean)
MechanismEntityTag.drops_item
Description(Property) Whether an eye of ender drops an item when breaking or shatters.
See Property:EntityTag.item for controlling an eye's item.
Generated Example
- if <player.drops_item>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityDropsItem.java#L10
Name<EntityTag.effects_data>
ReturnsListTag(MapTag)
MechanismEntityTag.potion_effects
DescriptionReturns the active potion effects on the entity, or the potion effects an arrow/area effect cloud will apply.
The effects returned are a list of maps in Language:Potion Effect Format.
Generated Example
- foreach <player.effects_data> as:entry:
    - narrate "found <[entry]>"
Groupattribute
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotionEffects.java#L119
Name<EntityTag.entity_type>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:EntityTag.type on MC 1.20+, which returns entity type names as specified by Mojang (scripts using this may need an update when switching).
Generated Example
- narrate <player.entity_type>
DeprecatedUse 'EntityTag.type' on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1255
Name<EntityTag.equipment>
ReturnsListTag(ItemTag)
MechanismEntityTag.equipment
DescriptionDeprecated in favor of Tag:EntityTag.equipment_map.
Generated Example
- foreach <player.equipment> as:entry:
    - narrate "found <[entry]>"
Groupinventory
DeprecatedUse 'EntityTag.equipment_map'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityEquipment.java#L57
Name<EntityTag.fish_hook_in_open_water>
ReturnsElementTag(Boolean)
DescriptionReturns whether this fish hook is in open water. Fish hooks in open water can catch treasure.
See 🔗https://minecraft.wiki/w/Fishing for more info.
Generated Example
- if <player.fish_hook_in_open_water>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2791
Name<EntityTag.force_no_persist>
ReturnsElementTag(Boolean)
MechanismEntityTag.force_no_persist
DescriptionReturns 'true' if the entity is forced to not save to file when chunks unload.
Returns 'false' if not forced to not-save (ie is allowed to save). May return 'false' even for entities that don't save for other reasons.
This is a custom value added in Bukkit to block saving, which is not the same as Mojang's similar option under Tag:EntityTag.is_persistent.
Generated Example
- if <player.force_no_persist>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupattributes
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1985
Name<EntityTag.has_attribute[<attribute>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the entity has the named attribute.
Valid attribute names are listed at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/attribute/Attribute.html
See also Language:attribute modifiers.
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAttributeBaseValues.java#L73
Name<EntityTag.has_custom_effect[(<effect>)]>
ReturnsElementTag(Boolean)
MechanismEntityTag.custom_effects
DescriptionDeprecated in favor of Tag:EntityTag.has_effect.
Generated Example
- if <player.has_custom_effect>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Deprecateduse 'EntityTag.has_effect'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L254
Name<EntityTag.has_effect[<effect>]>
ReturnsElementTag(Boolean)
MechanismEntityTag.potion_effects
DescriptionReturns whether the entity has a specified effect, or whether an arrow/area effect cloud will apply a certain effect.
If no effect is specified, returns whether the entity has any effect.
The effect type must be from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html.
Groupattributes
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotionEffects.java#L132
Name<EntityTag.has_equipped[<item-matcher>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the entity has any armor equipment item that matches the given item matcher, using the system behind Language:Advanced Object Matching.
For example, has_equipped[diamond_*] will return true if the entity is wearing at least one piece of diamond armor.
Groupelement checking
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2659
Name<EntityTag.has_pumpkin_head>
ReturnsElementTag(Boolean)
MechanismEntityTag.has_pumpkin_head
DescriptionDeprecated in favor of Tag:EntityTag.sheared.
Generated Example
- if <player.has_pumpkin_head>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Deprecateduse 'EntityTag.sheared'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntitySheared.java#L82
Name<EntityTag.horse_armor>
ReturnsItemTag
DescriptionDeprecated in favor of Tag:EntityTag.equipment_map with the 'body' key on MC 1.20+.
Generated Example
- give <player.horse_armor>
Groupinventory
DeprecatedUse 'EntityTag.equipment_map.get[body]' on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1446
Name<EntityTag.in_water_duration>
ReturnsElementTag(Boolean)
MechanismEntityTag.in_water_duration
DescriptionIf the entity is a zombie mob, returns the duration of time the zombie has been in water for.
If this value exceeds 600 ticks, the zombie will begin converted to a Drowned mob.
See also Tag:EntityTag.conversion_duration
Generated Example
- if <player.in_water_duration>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityInWaterTime.java#L49
Name<EntityTag.interpolation_duration>
ReturnsDurationTag
MechanismEntityTag.interpolation_duration
Description(Property) The duration a display entity will spend interpolating between interpolated value(s).
See also Language:Display entity interpolation.
Generated Example
- ratelimit <player> <player.interpolation_duration>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityInterpolationDuration.java#L10
Name<EntityTag.interpolation_start>
ReturnsDurationTag
MechanismEntityTag.interpolation_start
Description(Property) The delay between a display entity receiving an update to an interpolated value(s) to it starting its interpolation.
Interpolation is started whenever this value is set. If no changes were made to the entity in the same tick, it will (visually) redo its last interpolation.
See also Language:Display entity interpolation.
Generated Example
- ratelimit <player> <player.interpolation_start>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityInterpolationStart.java#L19
Name<EntityTag.is_age_locked>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:EntityTag.age_locked.
Generated Example
- if <player.is_age_locked>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Deprecateduse 'age_locked'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAgeLocked.java#L53
Name<EntityTag.is_aware>
ReturnsElementTag(Boolean)
MechanismEntityTag.is_aware
Description(Property) For mobs (Tag:EntityTag.is_mob), this is whether the entity is aware of its surroundings.
Unaware entities will not perform any actions on their own, such as pathfinding or attacking.
Similar to Property:EntityTag.has_ai, except allows the entity to be moved by gravity, being pushed or attacked, etc.
For interaction entities, this is whether interacting with them should trigger a response (arm swings, sounds, etc.).
Generated Example
- if <player.is_aware>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAware.java#L13
Name<EntityTag.is_converting>
ReturnsElementTag(Boolean)
DescriptionReturns whether an entity is currently undergoing a conversion process. This can be:
A zombie villager being cured,
A zombie becoming a drowned (See also Tag:EntityTag.in_water_duration),
A husk becoming a zombie, or
A skeleton becoming a stray.
Generated Example
- if <player.is_converting>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityConversionTime.java#L75
Name<EntityTag.is_disguised[(<player>)]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the entity is currently disguised, either globally (if no context input given), or to the specified player.
Relates to Command:disguise.
Generated Example
- if <player.is_disguised>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2551
Name<EntityTag.is_living>
ReturnsElementTag(Boolean)
DescriptionReturns whether the entity type is a living-type entity (eg a cow or a player or anything else that lives, as specifically opposed to non-living entities like paintings, etc).
Not to be confused with the idea of being alive - see Tag:EntityTag.is_spawned.
Generated Example
- if <player.is_living>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupdata
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2352
Name<EntityTag.is_persistent>
ReturnsElementTag(Boolean)
MechanismEntityTag.persistent
DescriptionReturns whether the mob-entity will not be removed completely when far away from players.
This is Bukkit's "getRemoveWhenFarAway" which is Mojang's "isPersistenceRequired".
In many cases, Tag:EntityTag.force_no_persist may be preferred.
Generated Example
- if <player.is_persistent>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupattributes
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1971
Name<EntityTag.is_sheared>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:EntityTag.sheared.
Generated Example
- if <player.is_sheared>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupattributes
Deprecateduse 'EntityTag.sheared'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntitySheared.java#L69
Name<EntityTag.is_sneaking>
ReturnsElementTag(Boolean)
MechanismEntityTag.is_sneaking
Description(Property) Whether an entity is sneaking.
For most entities this just makes the name tag less visible, and doesn't actually update the pose.
Note that Command:sneak is also available.
Generated Example
- if <player.is_sneaking>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
GroupProperties
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntitySneaking.java#L12
Name<EntityTag.last_attack>
ReturnsMapTag
DescriptionReturns an interaction entity's last attack interaction, if any.
The returned map contains:
- 'player' (PlayerTag): the player who interacted
- 'duration' (DurationTag): the amount of time since the interaction. Note that this is a delta time (same limitations as Event:delta time), and may become inaccurate if the interaction entity changes worlds.
- 'raw_game_time' (ElementTag(Number)): the raw game time the interaction occurred at, used to calculate the time above.
Generated Example
- foreach <player.last_attack> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2935
Name<EntityTag.last_interaction>
ReturnsMapTag
DescriptionReturns an interaction entity's last right click interaction, if any.
The returned map contains:
- 'player' (PlayerTag): the player who interacted
- 'duration' (DurationTag): the amount of time since the interaction. Note that this is a delta time (same limitations as Event:delta time), and may become inaccurate if the interaction entity changes worlds.
- 'raw_game_time' (ElementTag(Number)): the raw game time the interaction occurred at, used to calculate the time above.
Generated Example
- foreach <player.last_interaction> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2953
Name<EntityTag.left_rotation>
ReturnsQuaternionTag
MechanismEntityTag.left_rotation
Description(Property) A display entity's "left" rotation.
Note that Mechanism:EntityTag.right_rotation is also available, but should normally use this instead.
Generated Example
- narrate "TODO: Placeholder: quaternion is <player.left_rotation>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityLeftRotation.java#L12
Name<EntityTag.list_effects>
ReturnsListTag
MechanismEntityTag.potion_effects
DescriptionDeprecated in favor of Tag:EntityTag.effects_data
Generated Example
- foreach <player.list_effects> as:entry:
    - narrate "found <[entry]>"
Groupattribute
Deprecateduse 'effects_data' instead
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotionEffects.java#L105
Name<EntityTag.location>
ReturnsLocationTag
DescriptionReturns the location of the entity.
For living entities, this is at the center of their feet.
For eye location, use Tag:EntityTag.eye_location
Works with offline players.
Generated Example
- teleport <player> <player.location>
Grouplocation
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1632
Name<EntityTag.map_trace>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:EntityTag.trace_framed_map
Generated Example
- teleport <player> <player.map_trace>
Grouplocation
Deprecateduse EntityTag.trace_framed_map
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1526
Name<EntityTag.max_temper>
ReturnsElementTag(Number)
MechanismEntityTag.max_temper
Description(Property) Returns the upper-bound for a horse-type entity's chance to be tamed.

When a player mounts an entity, a number between 0 and the entity's max temper is generated.
The entity becomes tamed if this value is less than the entity's temper value.
Otherwise, the player gets bucked and increases the entity's temper by 5.

Because an entity must have a level to reach before it can be tamed, value must be 1 or higher.
Default value for llamas and trader llamas is 30.
Default value for all other entities is 100.

To control the entity's current temper, see Mechanism:EntityTag.temper.
To automatically tame an entity, see Mechanism:EntityTag.tame.
Generated Example
- narrate "the number value is <player.max_temper>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityMaxTemper.java#L10
Name<EntityTag.monster_type>
ReturnsElementTag
DescriptionReturns the entity's monster type, if it is a monster.
This is sometimes called 'mob type' or 'entity category', but it is only applicable to enemy monsters - this is used for enchanted damage bonuses, see Tag:EnchantmentTag.damage_bonus.
This can be any of undead/water/illager/arthropod, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/EntityCategory.html.
Generated Example
- narrate <player.monster_type>
Groupdata
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1408
Name<EntityTag.opacity>
ReturnsElementTag(Number)
MechanismEntityTag.opacity
Description(Property) A text display entity's text opacity, from 0 to 255.
Can be interpolated, see Language:Display entity interpolation.
Note that there's currently an edge-case/bug where 0-3 are completely opaque, and it only becomes transparent at 4.
Generated Example
- narrate "the number value is <player.opacity>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityOpacity.java#L10
Name<EntityTag.painting>
ReturnsElementTag
MechanismEntityTag.painting
DescriptionIf the entity is a painting, returns what art it shows.
See also Tag:server.art_types.
Generated Example
- narrate <player.painting>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPainting.java#L88
Name<EntityTag.particle.color>
ReturnsColorTag
DescriptionDeprecated in favor of Property:EntityTag.color.
Deprecateduse 'EntityTag.color'.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityAreaEffectCloud.java#L144
Name<EntityTag.pivot>
ReturnsElementTag
MechanismEntityTag.pivot
Description(Property) A display entity's pivot point/axes, can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Display.Billboard.html.
Generated Example
- narrate <player.pivot>
Synonyms (Search Aid)entitytag.billboard
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPivot.java#L10
Name<EntityTag.potion_type>
ReturnsElementTag
MechanismEntityTag.potion_type
Description(Property) Returns an Arrow or Area Effect Cloud's base potion type, if any.
See 🔗https://minecraft.wiki/w/Potion#Item_data for a list of potion types.
See Property:EntityTag.potion_effects to control the potion effects applied.
Generated Example
- narrate <player.potion_type>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotionType.java#L13
Name<EntityTag.potion>
ReturnsItemTag
MechanismEntityTag.potion
Description(Property) Deprecated in favor of Property:EntityTag.potion_type for arrows, and Property:EntityTag.item for splash potions.
Generated Example
- give <player.potion>
GroupProperties
Deprecateduse 'EntityTag.potion_type' for arrows, and 'EntityTag.item' for splash potions.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityPotion.java#L19
Name<EntityTag.profession>
ReturnsElementTag
MechanismEntityTag.profession
Description(Property) Returns the profession of a villager or zombie villager.
For the list of possible professions, refer to 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Villager.Profession.html
Generated Example
- narrate <player.profession>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityProfession.java#L12
Name<EntityTag.reputation>
ReturnsMapTag
MechanismEntityTag.reputation
DescriptionReturns a villager's reputations as a map of player UUIDs to reputation maps.
Reputation maps are maps of reputation types to integer values, a full list of all valid reputation types can be found at 🔗https://jd.papermc.io/paper/1.19/com/destroystokyo/paper/entity/villager/ReputationType.html.
Generated Example
- foreach <player.reputation> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Groupproperties
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/EntityReputation.java#L51
Name<EntityTag.right_rotation>
ReturnsQuaternionTag
MechanismEntityTag.right_rotation
Description(Property) A display entity's "right" rotation.
Should usually use Mechanism:EntityTag.left_rotation instead.
Generated Example
- narrate "TODO: Placeholder: quaternion is <player.right_rotation>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityRightRotation.java#L12
Name<EntityTag.rotation>
ReturnsElementTag
MechanismEntityTag.rotation
DescriptionIf the entity can have a rotation, returns the entity's rotation.
Currently, only Hanging-type entities can have rotations.
Value is from 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/BlockFace.html.
Generated Example
- narrate <player.rotation>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityRotation.java#L85
Name<EntityTag.scale>
ReturnsLocationTag
MechanismEntityTag.scale
Description(Property) A display entity's scale, represented as a ObjectType:LocationTag vector.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- teleport <player> <player.scale>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityScale.java#L12
Name<EntityTag.shadow_radius>
ReturnsElementTag(Decimal)
MechanismEntityTag.shadow_radius
Description(Property) The radius of a display entity's shadow.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- narrate "the decimal value is <player.shadow_radius>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityShadowRadius.java#L10
Name<EntityTag.shadow_strength>
ReturnsElementTag(Decimal)
MechanismEntityTag.shadow_strength
Description(Property) The strength of a display entity's shadow.
Note that the final opacity will change based on the entity's distance to the block the shadow is on.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- narrate "the decimal value is <player.shadow_strength>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityShadowStrength.java#L10
Name<EntityTag.sheared>
ReturnsElementTag(Boolean)
MechanismEntityTag.sheared
Description(Property) Returns whether a sheep is sheared, a bogged is harvested, or a snow golem is derped (ie not wearing a pumpkin).
To include drops or for harvesting mushroom cows consider Mechanism:EntityTag.shear.
Generated Example
- if <player.sheared>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Synonyms (Search Aid)has_pumpkin_head
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntitySheared.java#L14
Name<EntityTag.shopkeeper>
ReturnsShopKeeperTag
DescriptionReturns the ShopKeeper for this entity, if it is one (see also Tag:EntityTag.is_shopkeeper).
Generated Example
- narrate <player.shopkeeper>
RequiresDepenizen, ShopKeepers
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/shopkeepers/ShopKeepersEntityExtensions.java#L22
Name<EntityTag.spawn_reason>
ReturnsElementTag
DescriptionReturns the entity's spawn reason.
Valid spawn reasons can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/CreatureSpawnEvent.SpawnReason.html
Generated Example
- narrate <player.spawn_reason>
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java#L24
Name<EntityTag.spell>
ReturnsElementTag
MechanismEntityTag.spell
Description(Property) Returns the spell that an Illager entity (such as an Evoker or Illusioner) should cast.
Valid spells are: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Spellcaster.Spell.html
Generated Example
- narrate <player.spell>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntitySpell.java#L11
Name<EntityTag.state>
ReturnsElementTag
MechanismEntityTag.state
Description(Property) Returns the current state of an armadillo.
Valid states are IDLE, ROLLING, SCARED, and UNROLLING.
The entity may roll or unroll due to normal vanilla conditions. If this is not desired, disable Property:EntityTag.has_ai.
Generated Example
- narrate <player.state>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityState.java#L11
Name<EntityTag.step_height>
ReturnsElementTag(Decimal)
MechanismEntityTag.step_height
Description(Property) Deprecated in favor of the step height attribute on MC 1.20+, see Language:Attribute Modifiers.
Generated Example
- narrate "the decimal value is <player.step_height>"
GroupProperties
DeprecatedUse the step height attribute on MC 1.20+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityStepHeight.java#L14
Name<EntityTag.tameable>
ReturnsElementTag(Boolean)
DescriptionReturns whether the entity is tameable.
If this returns true, it will enable access to:
Mechanism:EntityTag.tame, Mechanism:EntityTag.owner,
Tag:EntityTag.is_tamed, and Tag:EntityTag.owner
Generated Example
- if <player.tameable>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2427
Name<EntityTag.teleport_duration>
ReturnsDurationTag
MechanismEntityTag.teleport_duration
Description(Property) The duration a display entity will spend teleporting between positions.
See also Language:Display entity interpolation.
Generated Example
- flag server myflag expire:<player.teleport_duration>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTeleportDuration.java#L10
Name<EntityTag.temper>
ReturnsElementTag(Number)
MechanismEntityTag.temper
Description(Property) Returns the temper of a horse-type entity.
A value of 0 indicates that no action has been done to try to domesticate this entity.

When a player mounts an entity, a number between 0 and the entity's max temper is generated.
The entity becomes tamed if this value is less than the entity's temper value.
Otherwise, the player gets bucked and increases the entity's temper by 5.
Temper can also be increased by feeding the entity.
- Apples, sugar, and wheat increase temper by 3.
- Golden carrots increase temper by 5.
- Golden apples increase temper by 10.

To control the entity's max temper, see Mechanism:EntityTag.max_temper.
To automatically tame an entity, see Mechanism:EntityTag.tame.
Generated Example
- narrate "the number value is <player.temper>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTemper.java#L10
Name<EntityTag.translated_name>
ReturnsElementTag
DescriptionReturns the localized name of the entity.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <player.translated_name>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1301
Name<EntityTag.translation>
ReturnsLocationTag
MechanismEntityTag.translation
Description(Property) A display entity's translation, represented as a ObjectType:LocationTag vector.
Can be interpolated, see Language:Display entity interpolation.
Generated Example
- teleport <player> <player.translation>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTranslation.java#L12
Name<EntityTag.trap_time>
ReturnsDurationTag
MechanismEntityTag.trap_time
DescriptionReturns the skeleton horse's trap time in ticks.
Trap time will go up every tick for as long as the horse is trapped (see Tag:EntityTag.trapped).
A trapped horse will despawn after it reaches 18000 ticks (15 minutes).
Generated Example
- flag server myflag expire:<player.trap_time>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityTrapTime.java#L44
Name<EntityTag.vanilla_tags>
ReturnsListTag
DescriptionReturns a list of vanilla tags that apply to this entity type. See also 🔗https://minecraft.wiki/w/Tag.
Generated Example
- foreach <player.vanilla_tags> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L1313
Name<EntityTag.variant>
ReturnsElementTag
MechanismEntityTag.variant
Description(Property) Returns which variant a chicken, copper golem, cow, pig, wolf, or zombie nautilus is.
A list of valid chicken variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Chicken.Variant.html.
A list of valid copper golem variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/CopperGolem.CopperWeatherState.html.
A list of valid cow variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Cow.Variant.html.
A list of valid pig variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Pig.Variant.html.
A list of valid wolf variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/Wolf.Variant.html.
A list of valid zombie nautilus variants can be found at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/entity/ZombieNautilus.Variant.html.
Generated Example
- narrate <player.variant>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityVariant.java#L33
Name<EntityTag.visual_fire>
ReturnsElementTag(Boolean)
MechanismEntityTag.visual_fire
Description(Property) Whether an entity has a fake fire effect. For actual fire, see Command:burn and Tag:EntityTag.on_fire.
Generated Example
- if <player.visual_fire>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/entity/EntityVisualFire.java#L9
Name<EntityTag.visual_pose>
ReturnsElementTag
MechanismEntityTag.visual_pose
DescriptionReturns the name of the entity's current visual pose.
See 🔗https://hub.spigotmc.org/javadocs/bukkit/org/bukkit/entity/Pose.html
Generated Example
- narrate <player.visual_pose>
Groupattributes
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/EntityTag.java#L2323
Name<EntityTag.xp_spawn_reason>
ReturnsElementTag
DescriptionIf the entity is an experience orb, returns its spawn reason.
Valid spawn reasons can be found at 🔗https://papermc.io/javadocs/paper/1.17/org/bukkit/entity/ExperienceOrb.SpawnReason.html
Generated Example
- narrate <player.xp_spawn_reason>
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperEntityExtensions.java#L37
Name<FlaggableObject.flag_expiration[<flag_name>]>
ReturnsTimeTag
DescriptionReturns a TimeTag indicating when the specified flag will expire.
See Language:flag system.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/flags/AbstractFlagTracker.java#L71
Name<FlaggableObject.flag_map[<name>|...]>
ReturnsMapTag
DescriptionReturns a raw map of the objects internal flag data for the flags with the given flag name. Names must be root names (no '.').
Output is a MapTag wherein each key is a flag name, and each value is a MapTag, containing keys '__value' and '__expiration', where '__value' contains the real object value.
Output also may contain key '__clear', which is a ListTag of flags that were listed in input but weren't present in output.
Using this without a parameter to get ALL flags is allowed exclusively for debug/testing reasons, and should never be used in a real script.
See Language:flag system.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/flags/AbstractFlagTracker.java#L104
Name<FlaggableObject.flag[<flag_name>]>
ReturnsObjectTag
DescriptionReturns the specified flag from the flaggable object.
If the flag is expired, will return null.
Consider also using Tag:FlaggableObject.has_flag.
See Language:flag system.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/flags/AbstractFlagTracker.java#L37
Name<FlaggableObject.has_flag[<flag_name>]>
ReturnsElementTag(Boolean)
DescriptionReturns true if the flaggable object has the specified flag, otherwise returns false.
See Language:flag system.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/flags/AbstractFlagTracker.java#L55
Name<FlaggableObject.list_flags>
ReturnsListTag
DescriptionReturns a list of the flaggable object's flags.
Note that this is exclusively for debug/testing reasons, and should never be used in a real script.
See Language:flag system.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/flags/AbstractFlagTracker.java#L87
Name<image[<image>]>
ReturnsImageTag
DescriptionReturns an ImageTag constructed from the input value.
Refer to ObjectType:ImageTag.
Generated Example
- draw id:artwork image:<image[width=100;height=100;background=blue]> x:5 y:5
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L121
Name<ImageTag.copy>
ReturnsImageTag
DescriptionReturns a copy of the image, useful for getting normal images from id-based ones (see Command:Image).
Example
# Gets a normal image object from an id-based one.
- define image <image[drawing].copy>
# The "image" definition won't change.
- draw id:drawing pixel x:0 y:0 color:red
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ImageTag.java#L204
Name<ImageTag.pixel_at[x=<x>;y=<y>]>
ReturnsColorTag
DescriptionReturns the color of a specific pixel in an image.
"x" and "y" are the position of the pixel, see Language:Image positions.
Example
# Gets the color of the pixel at 43,21
- narrate "The color is: <[image].pixel_at[x=43;y=21]>."
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ImageTag.java#L135
Name<ImageTag.sub_image[x=<x>;y=<y>;width=<width>;height=<height>]>
ReturnsImageTag
DescriptionReturns a part of the image.
"x" and "y" are the position of the upper left corner of the image part, see Language:Image positions.
"width" and "height" are the size of the image part.
Example
# Gets the top right corner of a 100x100 image.
- define corner <[image].sub_image[x=50;y=0;with=50;height=50]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ImageTag.java#L219
Name<inventory[<inventory>]>
ReturnsInventoryTag
DescriptionReturns an inventory object constructed from the input value.
Refer to ObjectType:InventoryTag.
Generated Example
- inventory set o:<inventory[<player.inventory>]> d:stick slot:5
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L228
Name<InventoryTag.contains_item[<matcher>].quantity[<#>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the inventory contains a certain number of items that match the specified item matcher.
Uses the system behind Language:Advanced Object Matching.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java#L1467
Name<InventoryTag.contains_item[<matcher>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the inventory contains any item that matches the specified item matcher.
Uses the system behind Language:Advanced Object Matching.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java#L1453
Name<InventoryTag.find_all_items[<matcher>]>
ReturnsListTag
DescriptionReturns a list of the location of all slots that contains an item that matches the given item matcher.
Returns an empty list if there's no match.
Uses the system behind Language:Advanced Object Matching.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java#L1887
Name<InventoryTag.find_item[<matcher>]>
ReturnsElementTag(Number)
DescriptionReturns the location of the first slot that contains an item that matches the given item matcher.
Returns -1 if there's no match.
Uses the system behind Language:Advanced Object Matching.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java#L1863
Name<InventoryTag.quantity_item[(<matcher>)]>
ReturnsElementTag(Number)
DescriptionReturns the combined quantity of itemstacks that match an item matcher if one is specified,
or the combined quantity of all itemstacks if one is not.
Uses the system behind Language:Advanced Object Matching.
Generated Example
- narrate "the number value is <player.inventory.quantity_item>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/InventoryTag.java#L2025
Name<item[<item>]>
ReturnsItemTag
DescriptionReturns an item object constructed from the input value.
Refer to ObjectType:ItemTag.
Generated Example
- give <item[<player.item_in_hand>]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L238
Name<ItemTag.all_raw_nbt>
ReturnsMapTag
MechanismItemTag.raw_nbt
DescriptionReturns a map of all raw NBT on this item, including default values.
Refer to format details at Language:Raw NBT Encoding.
Generated Example
- foreach <player.item_in_hand.all_raw_nbt> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemRawNBT.java#L396
Name<ItemTag.attribute_modifiers>
ReturnsMapTag
MechanismItemTag.attribute_modifiers
Description(Property) Returns the attribute modifiers of an item, with key as the attribute name and value as a list of modifiers,
where each modifier is a MapTag containing keys 'name', 'amount', 'slot', 'operation', and 'id'.
For use as a mechanism, this is a SET operation, meaning pre-existing modifiers are removed.
For format details, refer to Language:attribute modifiers.
Generated Example
- foreach <player.item_in_hand.attribute_modifiers> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemAttributeModifiers.java#L30
Name<ItemTag.base_color>
ReturnsElementTag
MechanismItemTag.base_color
Description(Property) Returns the base color of a shield.
For the list of possible colors, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html.
Give no input with a shield to remove the base color (and any patterns).
Tag returns null if there is no base color or patterns.
Generated Example
- narrate <player.item_in_hand.base_color>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemBaseColor.java#L12
Name<ItemTag.color>
ReturnsColorTag
MechanismItemTag.color
Description(Property) Returns the color of a leather armor, potion, filled map, or tipped arrow item.
For potions, will return a white ObjectType:ColorTag if the given item doesn't have a color.
For maps, will return null if the given item doesn't have a color.
Generated Example
- inventory adjust slot:hand color:<player.item_in_hand.color>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemColor.java#L15
Name<ItemTag.components_patch>
ReturnsMapTag
MechanismItemTag.components_patch
Description(Property) Returns the item's internal component patch. That is, the changes in components on top of the item type's default components.
The map is in Language:Raw NBT Encoding format.
This is mainly intended for item data persistence, and scripts should prefer using proper item properties instead of setting raw data directly.
If you're trying to control custom data (such as data set by other plugins), use Property:ItemTag.custom_data.
Note that this is just data that isn't already controlled by other ItemTag properties, see Tag:ItemTag.full_components_patch for the complete component patch.
Generated Example
- foreach <player.item_in_hand.components_patch> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
GroupProperties
Warning(s)Due to this being a direct representation of internal data, compatibility for script usage across versions is not guaranteed.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemComponentsPatch.java#L21
Name<ItemTag.custom_data>
ReturnsMapTag
MechanismItemTag.custom_data
Description(Property) Returns an item's custom NBT data, if any.
The map is in NBT format, see Language:Raw NBT Encoding.
This does not include any normal vanilla data (enchantments, lore, etc.), just extra custom data.
This is useful for integrating with items from external systems (such as custom items from plugins), but item flags should be preferred otherwise.
Example
# Use to check if an item has custom data from another plugin.
- if <[item].custom_data.get[external_plugin_data].if_null[null]> == external_custom_item:
  - narrate "You are using an item from an external plugin!"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemCustomData.java#L13
Name<ItemTag.custom_model_data>
ReturnsElementTag(Number)
MechanismItemTag.custom_model_data
Description(Property) Returns the custom model data ID number of the item.
Use with no input to remove the custom model data.
Prefer Property:ItemTag.item_model on MC 1.21+.
See also Tag:ItemTag.has_custom_model_data
Generated Example
- narrate "the number value is <player.item_in_hand.custom_model_data>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemCustomModel.java#L11
Name<ItemTag.default_attribute_modifiers[<slot>]>
ReturnsMapTag
DescriptionReturns a map of all default attribute modifiers on the item based purely on its material type, for the given slot,
in the same format as Tag:ItemTag.attribute_modifiers
Slot must be one of: HAND, OFF_HAND, FEET, LEGS, CHEST, or HEAD
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemAttributeModifiers.java#L101
Name<ItemTag.effects_data>
ReturnsListTag(MapTag)
MechanismItemTag.potion_effects
DescriptionReturns a list of all potion effects on this item, in the same format as the MapTag input to the mechanism.
This applies to Potion items, Tipped Arrow items, and Suspicious Stews.
Note that for potions or tipped arrows (not suspicious stew) the first value in the list is the potion's base type.
All subsequent entries are potion effects in Language:Potion Effect Format.
Generated Example
- foreach <player.item_in_hand.effects_data> as:entry:
    - narrate "found <[entry]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPotion.java#L262
Name<ItemTag.enchantments>
ReturnsListTag
MechanismItemTag.enchantments
DescriptionDeprecated in favor of Tag:ItemTag.enchantment_types or Tag:ItemTag.enchantment_map
Generated Example
- foreach <player.item_in_hand.enchantments> as:entry:
    - narrate "found <[entry]>"
Groupproperties
DeprecatedUse 'enchantment_types' or 'enchantment_map'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemEnchantments.java#L123
Name<ItemTag.firework>
ReturnsListTag
MechanismItemTag.firework
DescriptionReturns the firework's property value as a list, matching the non-MapTag format of the mechanism.
Consider instead using Tag:ItemTag.firework_data
Generated Example
- foreach <player.item_in_hand.firework> as:entry:
    - narrate "found <[entry]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemFirework.java#L120
Name<ItemTag.food>
ReturnsMapTag
MechanismItemTag.food
Description(Property) Returns an item's food Language:Item Components.
The map includes keys:
- "nutrition", ElementTag(Number) representing the amount of food points restored by this item.
- "saturation", ElementTag(Decimal) representing the amount of saturation points restored by this item.
- "can_always_eat", ElementTag(Boolean) controlling whether the item can always be eaten, even if the player isn't hungry.
Generated Example
- foreach <player.item_in_hand.food> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/FoodAdapter.java#L11
Name<ItemTag.full_components_patch>
ReturnsMapTag
DescriptionReturns the item's entire internal component patch (see Tag:ItemTag.components_patch).
Generated Example
- foreach <player.item_in_hand.full_components_patch> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Warning(s)Due to this being a direct representation of internal data, compatibility for script usage across versions is not guaranteed.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemComponentsPatch.java#L107
Name<ItemTag.glider>
ReturnsElementTag(Boolean)
MechanismItemTag.glider
Description(Property) Returns whether an item can be used to glide when equipped (like elytras by default), see Language:Item Components.
Generated Example
- if <player.item_in_hand.glider>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/GliderAdapter.java#L7
Name<ItemTag.has_custom_model_data>
ReturnsElementTag(Boolean)
MechanismItemTag.custom_model_data
DescriptionReturns whether the item has a custom model data ID number set on it.
Prefer Property:ItemTag.item_model on MC 1.21+.
See also Tag:ItemTag.custom_model_data.
Generated Example
- if <player.item_in_hand.has_custom_model_data>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemCustomModel.java#L53
Name<ItemTag.has_inventory>
ReturnsElementTag(Boolean)
DescriptionReturns whether the item has an inventory.
If this returns true, it will enable access to:
Mechanism:ItemTag.inventory_contents, and Tag:ItemTag.inventory_contents.
Generated Example
- if <player.item_in_hand.has_inventory>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L563
Name<ItemTag.is_book>
ReturnsElementTag(Boolean)
DescriptionReturns whether the item is considered an editable book.
If this returns true, it will enable access to:
Mechanism:ItemTag.book,
Tag:ItemTag.book_author, Tag:ItemTag.book_title, and Tag:ItemTag.book_pages.
Generated Example
- if <player.item_in_hand.is_book>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L519
Name<ItemTag.is_colorable>
ReturnsElementTag(Boolean)
DescriptionReturns whether the item can have a custom color.
If this returns true, it will enable access to:
Mechanism:ItemTag.color, and Tag:ItemTag.color.
Generated Example
- if <player.item_in_hand.is_colorable>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L533
Name<ItemTag.is_firework>
ReturnsElementTag(Boolean)
DescriptionReturns whether the item is a firework.
If this returns true, it will enable access to:
Mechanism:ItemTag.firework, and Tag:ItemTag.firework.
Generated Example
- if <player.item_in_hand.is_firework>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L550
Name<ItemTag.is_lockable>
ReturnsElementTag(Boolean)
DescriptionReturns whether the item is lockable.
If this returns true, it will enable access to:
Mechanism:ItemTag.lock, and Tag:ItemTag.lock.
Generated Example
- if <player.item_in_hand.is_lockable>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L576
Name<ItemTag.is_overridden[<component>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether an item has a specific item component type overridden, see Language:Item Components.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/DataComponentAdapter.java#L80
Name<ItemTag.item_model>
ReturnsElementTag
MechanismItemTag.item_model
Description(Property) Returns an item's model Language:Item Components in namespaced key format.
The default namespace is "minecraft", so for example an input of "stone" becomes "minecraft:stone", and will set the item model to a stone block.
This can also be used to display item models from your own custom resource packs.
Generated Example
- narrate <player.item_in_hand.item_model>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/ItemModelAdapter.java#L11
Name<ItemTag.json>
ReturnsElementTag
DescriptionReturns the item converted to a raw JSON object with one layer of escaping for network transmission.
EG, via /tellraw.
Generally, prefer tags like Tag:ElementTag.on_hover.type with type 'show_item'.
Generated Example
- narrate <player.item_in_hand.json>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L630
Name<ItemTag.lodestone_location>
ReturnsLocationTag
MechanismItemTag.lodestone_location
DescriptionReturns the lodestone location this compass is pointing at (if any).
See also Tag:ItemTag.lodestone_tracked
Generated Example
- teleport <player> <player.item_in_hand.lodestone_location>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemLodestoneLocation.java#L50
Name<ItemTag.lodestone_tracked>
ReturnsElementTag(Boolean)
MechanismItemTag.lodestone_tracked
DescriptionReturns whether the compass will track a lodestone. If "true", the compass will only work if there's a lodestone at the target location.
See also Tag:ItemTag.lodestone_location
Generated Example
- if <player.item_in_hand.lodestone_tracked>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemLodestoneTracked.java#L49
Name<ItemTag.max_durability>
ReturnsElementTag(Number)
MechanismItemTag.max_durability
Description(Property) Returns an item's max durability Language:Item Components.
Generated Example
- narrate "the number value is <player.item_in_hand.max_durability>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxDurabilityAdapter.java#L9
Name<ItemTag.max_stack_size>
ReturnsElementTag(Number)
MechanismItemTag.max_stack_size
Description(Property) Returns an item's max stack size Language:Item Components.
Generated Example
- narrate "the number value is <player.item_in_hand.max_stack_size>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/MaxStackSizeAdapter.java#L9
Name<ItemTag.max_stack>
ReturnsElementTag(Number)
DescriptionReturns the max number of this item possible in a single stack of this type.
For use with Tag:ItemTag.quantity and Mechanism:ItemTag.quantity.
Generated Example
- narrate "the number value is <player.item_in_hand.max_stack>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemQuantity.java#L66
Name<ItemTag.patterns>
ReturnsListTag
MechanismItemTag.patterns
DescriptionLists a banner's patterns in the form "COLOR/PATTERN|COLOR/PATTERN" etc.
For the list of possible colors, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html.
For the list of possible patterns, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/banner/PatternType.html.
Generated Example
- foreach <player.item_in_hand.patterns> as:entry:
    - narrate "found <[entry]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPatterns.java#L112
Name<ItemTag.potion_base_type>
ReturnsElementTag
MechanismItemTag.potion_effects
DescriptionDeprecated in favor of Tag:ItemTag.effects_data
Generated Example
- narrate <player.item_in_hand.potion_base_type>
Groupproperties
Deprecateduse 'effects_data.first.get[base_type]' instead
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPotion.java#L324
Name<ItemTag.potion_base>
ReturnsElementTag
MechanismItemTag.potion_effects
DescriptionDeprecated in favor of Tag:ItemTag.effects_data
Generated Example
- narrate <player.item_in_hand.potion_base>
Groupattribute
Deprecateduse 'effects_data' instead
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPotion.java#L342
Name<ItemTag.potion_effect[<#>]>
ReturnsElementTag
MechanismItemTag.potion_effects
DescriptionDeprecated in favor of Tag:ItemTag.effects_data
Generated Example
- narrate <player.item_in_hand.potion_effect[4]>
Groupattribute
Deprecateduse 'effects_data' instead
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPotion.java#L380
Name<ItemTag.potion_effects>
ReturnsListTag
MechanismItemTag.potion_effects
DescriptionDeprecated in favor of Tag:ItemTag.effects_data
Generated Example
- foreach <player.item_in_hand.potion_effects> as:entry:
    - narrate "found <[entry]>"
Groupattribute
Deprecateduse 'effects_data' instead
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemPotion.java#L363
Name<ItemTag.rarity>
ReturnsElementTag
MechanismItemTag.rarity
Description(Property) Returns an item's rarity Language:Item Components.
See 🔗https://jd.papermc.io/paper/org/bukkit/inventory/ItemRarity.html for valid rarity values.
Generated Example
- narrate <player.item_in_hand.rarity>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/datacomponents/RarityAdapter.java#L10
Name<ItemTag.raw_nbt>
ReturnsMapTag
MechanismItemTag.raw_nbt
DescriptionReturns a map of all non-default raw NBT on this item.
Refer to format details at Language:Raw NBT Encoding.
Deprecated in favor of Tag:ItemTag.custom_data on MC 1.20+.
Generated Example
- foreach <player.item_in_hand.raw_nbt> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Deprecateduse 'ItemTag.custom_data'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemRawNBT.java#L360
Name<ItemTag.removed_components>
ReturnsListTag
MechanismItemTag.removed_components
Description(Property) Returns the item components explicitly removed from an item.
This can be used to remove item's default behavior, such as making consumable items non-consumable.
Alternatively, use Mechanism:ItemTag.remove_component to remove a single component.
See Language:Item Components for more information.
Generated Example
- foreach <player.item_in_hand.removed_components> as:entry:
    - narrate "found <[entry]>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/ItemRemovedComponents.java#L14
Name<ItemTag.repairable>
ReturnsElementTag(Boolean)
DescriptionReturns whether the item can be repaired.
If this returns true, it will enable access to:
Mechanism:ItemTag.durability,
Tag:ItemTag.max_durability, and Tag:ItemTag.durability.
Note that due to odd design choices in Spigot, this is effectively true for all items, even though the durability value of most items is locked at zero.
Generated Example
- if <player.item_in_hand.repairable>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/ItemTag.java#L504
Name<ItemTag.skin>
ReturnsElementTag
MechanismItemTag.skull_skin
DescriptionReturns the UUID of the player whose skin a skull item uses.
Note: Item must be a 'player_head' with a skin.
In format: UUID|Texture|Name.
See also Language:Player Entity Skins (Skin Blobs).
Generated Example
- narrate <player.item_in_hand.skin>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemSkullskin.java#L75
Name<ItemTag.skull_skin>
ReturnsElementTag
MechanismItemTag.skull_skin
DescriptionReturns the UUID of the player whose skin a skull item uses.
Note: Item must be a 'player_head' with a skin.
In format: UUID|Texture|Name.
See also Language:Player Entity Skins (Skin Blobs).
Generated Example
- narrate <player.item_in_hand.skull_skin>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemSkullskin.java#L56
Name<ItemTag.spawner_spawn_delay>
ReturnsElementTag(Number)
MechanismItemTag.spawner_delay_data
DescriptionReturns the current spawn delay for a spawner block item.
This changes over time between Tag:ItemTag.spawner_minimum_spawn_delay and Tag:ItemTag.spawner_maximum_spawn_delay.
Generated Example
- narrate "the number value is <player.item_in_hand.spawner_spawn_delay>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemSpawnerDelay.java#L51
Name<ItemTag.trim>
ReturnsMapTag
MechanismItemTag.trim
Description(Property) An armor item's trim.
Allowed keys: material, pattern.
Valid material values can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/meta/trim/TrimMaterial.html
Valid pattern values can be found here: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/inventory/meta/trim/TrimPattern.html
Valid values also include ones added by datapacks, plugins, etc. as a namespaced key.
For the mechanism, if an item already has a trim, you can omit either material or pattern to keep the original data while also changing the other option.
For example, if you only want to change the pattern and not the material, you can omit the material, and it will use the already existing material.
Generated Example
- foreach <player.item_in_hand.trim> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/item/ItemTrim.java#L16
Name<ItemTag.worth.quantity[<#>]>
ReturnsElementTag(Decimal)
DescriptionDeprecated in favor of Tag:ItemTag.essentials_worth.
RequiresDepenizen, Essentials
DeprecatedUse 'ItemTag.essentials_worth.mul[<#>]'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/essentials/EssentialsItemExtensions.java#L50
Name<ItemTag.worth>
ReturnsElementTag(Decimal)
MechanismItemTag.essentials_worth
DescriptionDeprecated in favor of Tag:ItemTag.essentials_worth.
Generated Example
- narrate "the decimal value is <player.item_in_hand.worth>"
RequiresDepenizen, Essentials
DeprecatedUse 'ItemTag.essentials_worth'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/essentials/EssentialsItemExtensions.java#L33
Name<JavaReflectedObjectTag.read_field[<name>]>
ReturnsObjectTag
DescriptionReads the field of the given name on the object and returns the value in its Denizen-valid format.
See also Tag:JavaReflectedObjectTag.reflect_field
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/JavaReflectedObjectTag.java#L384
Name<JavaReflectedObjectTag.reflect_field[<name>]>
ReturnsJavaReflectedObjectTag
DescriptionReads the field of the given name on the object and returns the value as another reflected tag.
See also Tag:JavaReflectedObjectTag.read_field
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/JavaReflectedObjectTag.java#L402
Name<JobsJobTag.description>
ReturnsElementTag
DescriptionSingle line description is deprecated in Jobs. Use Tag:JobsJobTag.full_description instead.
RequiresDepenizen, Jobs
DeprecatedUse 'JobsJobTag.full_description'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/jobs/JobsJobTag.java#L148
Name<JobsJobTag.name.short>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:JobsJobTag.short_name.
RequiresDepenizen, Jobs
DeprecatedUse 'JobsJobTag.short_name'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/jobs/JobsJobTag.java#L172
Name<JobsJobTag.xp.level>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:JobsJobTag.level.
RequiresDepenizen, Jobs
DeprecatedUse 'JobsJobTag.level'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/jobs/JobsJobTag.java#L217
Name<JobsJobTag.xp.max>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:JobsJobTag.max_xp.
RequiresDepenizen, Jobs
DeprecatedUse 'JobsJobTag.max_xp'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/jobs/JobsJobTag.java#L208
Name<list[(<list>)]>
ReturnsListTag
DescriptionReturns a list object constructed from the input value.
Give no input to create an empty list.
Refer to ObjectType:ListTag.
Generated Example
- foreach <list> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/ListTagBase.java#L10
Name<ListTag.contains_match[<matcher>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the list contains an object that matches the specified matcher,
using the system behind Language:Advanced Object Matching.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L2675
Name<ListTag.contains[<element>|...]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the list contains all of the given elements.
See also Tag:ListTag.contains_single for safer single-value checks.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L2655
Name<ListTag.count_matches[<matcher>]>
ReturnsElementTag(Number)
DescriptionReturns how many times a value in the list matches the matcher,
using the system behind Language:Advanced Object Matching,
For example: a list of "one|two|three" .count[t*] returns 2.
Example
# Narrates "2"
- narrate <list[one|two|two|three].count_matches[t*]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1756
Name<ListTag.filter[<tag>]>
ReturnsListTag
DescriptionReturns a copy of the list with all its contents parsed through the given tag and only including ones that returned 'true'.
One should generally prefer Tag:ListTag.filter_tag.
Example
# Narrates a list of '3|4|5'
- narrate <list[1|2|3|4|5].filter[is_more_than[3]]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L2328
Name<ListTag.find_all_matches[<matcher>]>
ReturnsListTag
DescriptionReturns all the numbered indices of elements that match within a list,
using the system behind Language:Advanced Object Matching,
or an empty list if the list does not contain that item.
Example
# Narrates a list of "2|3"
- narrate <list[one|two|three].find_all_matches[t*]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1631
Name<ListTag.find_match[<matcher>]>
ReturnsElementTag(Number)
DescriptionReturns the numbered index of the first match within a list,
using the system behind Language:Advanced Object Matching,
or -1 if the list does not contain that item.
Example
# Narrates "2"
- narrate <list[one|two|three].find_match[t*]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1695
Name<ListTag.get[<#>].to[<#>]>
ReturnsListTag
DescriptionReturns all elements in the range from the first index to the second.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list of "one|two|three"
- narrate <list[one|two|three|four].get[1].to[3]>
Example
# Narrates a list of "three|four"
- narrate <list[one|two|three|four].get[3].to[last]>
Example
# Narrates a list of "three|four"
- narrate <list[one|two|three|four].get[-2].to[-1]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1566
Name<ListTag.get[<#>|...]>
ReturnsObjectTag
DescriptionReturns an element of the value specified by the supplied context.
Specify more than one index to get a list of results.
Note the index input options described at ObjectType:listtag
Example
# Narrates "one"
- narrate <list[one|two|three].get[1]>
Example
# Narrates a list of "one|three"
- narrate <list[one|two|three].get[1|3]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1526
Name<ListTag.highest[(<tag>)].count[<#>]>
ReturnsListTag
DescriptionReturns a list of the highest values in a list of decimal numbers.
Optionally specify a tag to run on each list entry that returns the numeric value for that entry.
Note: if you want to sort the entire list, rather than just getting a few values, use a sort tag like Tag:listtag.sort_by_number
Example
# Narrates a list of '10|3'
- narrate "<list[3|2|1|10].highest.count[2]>
Example
# Narrates the names of the 5 players with the most money currently online
- narrate <server.online_players.highest[money].count[5].parse[name].formatted>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L2032
Name<ListTag.insert_single[...|...].at[<#>]>
ReturnsListTag
DescriptionReturns a new ListTag with the single item specified inserted to the specified location.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list with 3 values: "one", "two|alsotwo", "three"
- narrate <list[one|three].insert_single[two|alsotwo].at[2]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1109
Name<ListTag.insert[...|...].at[<#>]>
ReturnsListTag
DescriptionReturns a new ListTag with the items specified inserted to the specified location.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list of "one|two|three|four"
- narrate <list[one|four].insert[two|three].at[2]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1076
Name<ListTag.lowest[(<tag>)].count[<#>]>
ReturnsListTag
DescriptionReturns a list of the smallest values in a list of decimal numbers.
Optionally specify a tag to run on each list entry that returns the numeric value for that entry.
Note: if you want to sort the entire list, rather than just getting a few values, use a sort tag link Tag:listtag.sort_by_number
Example
# Narrates a list of '1|2'
- narrate "<list[3|2|1|10].lowest.count[2]>
Example
# Narrates the names of the 5 players with the least money currently online
- narrate <server.online_players.lowest[money].count[5].parse[name].formatted>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1931
Name<ListTag.overwrite[...|...].at[<#>]>
ReturnsListTag
DescriptionReturns a new ListTag with the index specified and beyond replaced with the input list.
The result list will be the same size as the original list, unless (input_list.size + at_index) is greater than the original list size.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list of "one|potato|taco|four"
- narrate <list[one|two|three|four].overwrite[potato|taco].at[2]>
Example
# Narrates a list of "one|potato|taco|hotdog|cheeseburger"
- narrate <list[one|two|three].overwrite[potato|taco|hotdog|cheeseburger].at[2]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1213
Name<ListTag.parse[<tag>]>
ReturnsListTag
DescriptionReturns a copy of the list with all its contents parsed through the given tag.
One should generally prefer Tag:ListTag.parse_tag.
Example
# Narrates a list of 'ONE|TWO'
- narrate <list[one|two].parse[to_uppercase]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L2369
Name<ListTag.remove[<#>].to[<#>]>
ReturnsListTag
DescriptionReturns a new ListTag excluding the items in the specified index range.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list of "one|five"
- narrate <list[one|two|three|four|five].remove[2].to[4]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1369
Name<ListTag.remove[<#>|...]>
ReturnsListTag
DescriptionReturns a new ListTag excluding the items at the specified index.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list of "one|three|four"
- narrate <list[one|two|three|four].remove[2]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1356
Name<ListTag.set_single[<value>].at[<#>]>
ReturnsListTag
DescriptionReturns a new ListTag with the single item specified inserted to the specified location, replacing the object already at that location.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list with 3 values: "one", "potato|taco", "three"
- narrate <list[one|two|three].set_single[potato|taco].at[2]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1179
Name<ListTag.set[...|...].at[<#>]>
ReturnsListTag
DescriptionReturns a new ListTag with the items specified inserted to the specified location, replacing the object already at that location.
Note the index input options described at ObjectType:listtag
Example
# Narrates a list of "one|potato|three"
- narrate <list[one|two|three].set[potato].at[2]>
Example
# Narrates a list of "one|potato|taco|hotdog|three"
- narrate <list[one|two|three].set[potato|taco|hotdog].at[2]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L1140
Name<ListTag.sort[<procedure>].context[<context>]>
ReturnsListTag
DescriptionSort a list, with context. See Tag:ListTag.sort for general sort details.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L2272
Name<ListTag.sort[<procedure>]>
ReturnsListTag
DescriptionReturns a list sorted according to the return values of a procedure.
The <procedure> should link a procedure script that takes two definitions each of which will be an item
in the list, and returns -1, 0, or 1 based on whether the second item should be added. EG, if a procedure
with definitions "one" and "two" returned -1, it would place "two" after "one". Note that this
uses some complex internal sorting code that could potentially throw errors if the procedure does not return
consistently - EG, if "one" and "two" returned 1, but "two" and "one" returned 1 as well - obviously,
"two" can not be both before AND after "one"!
Note that the script should ALWAYS return -1, 0, or 1, or glitches could happen!
Note that if two inputs are exactly equal, the procedure should always return 0.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L2250
Name<ListTag.to_map[(<separator>)]>
ReturnsMapTag
DescriptionInterprets a list of "key/value" pairs as a map, and returns the resulting MapTag.
Optionally specify the map separator symbol, by default '/'.
Inverted by Tag:MapTag.to_list
Generated Example
- foreach <list[one|two].to_map> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L978
Name<location[<location>]>
ReturnsLocationTag
DescriptionReturns a location object constructed from the input value.
Refer to ObjectType:LocationTag.
Generated Example
- teleport <player> <location[<player.location>]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L248
Name<LocationTag.above[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location above this location. Optionally specify a number of blocks to go up.
This just moves straight along the Y axis, equivalent to Tag:VectorObject.add with input 0,1,0 (or the input value instead of '1').
Generated Example
- teleport <player> <player.location.above>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L893
Name<LocationTag.backward_flat[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location behind this location based on yaw but not pitch. Optionally specify a number of blocks to go backward.
This is equivalent to Tag:LocationTag.forward_flat in the opposite direction.
Generated Example
- teleport <player> <player.location.backward_flat>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L931
Name<LocationTag.backward[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location behind this location based on pitch and yaw. Optionally specify a number of blocks to go backward.
This is equivalent to Tag:LocationTag.forward in the opposite direction.
Generated Example
- teleport <player> <player.location.backward>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L958
Name<LocationTag.below[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location below this location. Optionally specify a number of blocks to go down.
This just moves straight along the Y axis, equivalent to Tag:VectorObject.sub with input 0,1,0 (or the input value instead of '1').
Generated Example
- teleport <player> <player.location.below>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L905
Name<LocationTag.block>
ReturnsLocationTag
DescriptionReturns the location of the block this location is on,
i.e. returns a location without decimals or direction.
Note that you almost never actually need this tag. This does not "get the block", this just rounds coordinates down.
If you have this in a script, it is more likely to be a mistake than actually needed.
Consider using Tag:LocationTag.round_down instead.
Generated Example
- teleport <player> <player.location.block>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1061
Name<LocationTag.down[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location below this location based on pitch and yaw. Optionally specify a number of blocks to go down.
This is equivalent to Tag:LocationTag.forward with a -90 degree rotation to the pitch.
To just get the location above this location, use Tag:LocationTag.below instead.
Generated Example
- teleport <player> <player.location.down>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1017
Name<LocationTag.downfall_type>
ReturnsElementTag
DescriptionReturns a location's downfall type (for when a world has weather), based on the biome it's in.
This can be RAIN, SNOW, or NONE.
See also Tag:BiomeTag.downfall_at.
Example
# Tells the linked player what the downfall type at their location is.
- narrate "The downfall type at your location is: <player.location.downfall_type>!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4268
Name<LocationTag.find_spawnable_blocks_within[<#.#>]>
ReturnsListTag(LocationTag)
DescriptionReturns a list of blocks within a radius, that are safe for spawning, with the same logic as Tag:LocationTag.is_spawnable.
Note: current implementation measures the center of nearby block's distance from the exact given location.
Result list is sorted by closeness (1 = closest, 2 = next closest, ... last = farthest).
Generated Example
- foreach <player.location.find_spawnable_blocks_within[1]> as:entry:
    - narrate "found <[entry]>"
Groupfinding
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L2796
Name<LocationTag.find_structure[structure=<structure>;radius=<#>(;unexplored=<true/{false}>)]>
ReturnsLocationTag
DescriptionFinds the closest structure of the given type within the specified chunk radius (if any), optionally only searching for unexplored ones.
For a list of default structures, see 🔗https://minecraft.wiki/w/Structure#ID.
Alternatively, you can specify a custom structure from a datapack, plugin, etc. as a namespaced key.
See also Tag:server.structures for all structures currently available on the server.
Example
# Use to find the desert temple closest to the player, and tell them what direction it's in.
- define found <player.location.find_structure[structure=desert_pyramid;radius=200].if_null[null]>
- if <[found]> != null:
  - narrate "The closet desert temple is <player.location.direction[<[found]>]> of you!"
- else:
  - narrate "No desert temple found."
Groupfinding
Warning(s)See Language:Structure lookups for potential issues/edge cases in structure lookups.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4311
Name<LocationTag.find_tile_entities[(<matcher>)].within[<#.#>]>
ReturnsListTag(LocationTag)
DescriptionReturns a list of tile-entity blocks within a radius, with an optional search parameter for the block material.
This can be more efficient that Tag:LocationTag.find_blocks.within when only tile-entity blocks are relevant.
Note: current implementation measures the center of nearby block's distance from the exact given location.
Result list is sorted by closeness (1 = closest, 2 = next closest, ... last = farthest).
Groupfinding
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L2736
Name<LocationTag.find.structure[<type>].within[<#.#>]>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:LocationTag.find_structure on 1.19+.
DeprecatedUse 'LocationTag.find_structure' on 1.19+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L3075
Name<LocationTag.find.unexplored_structure[<type>].within[<#.#>]>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:LocationTag.find_structure with 'unexplored=true' on 1.19+.
DeprecatedUse 'LocationTag.find_structure' with 'unexplored=true' on 1.19+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L3100
Name<LocationTag.lectern_page>
ReturnsElementTag(Number)
MechanismLocationTag.lectern_page
DescriptionDeprecated in favor of Tag:LocationTag.page.
Generated Example
- narrate "the number value is <player.location.lectern_page>"
Groupworld
DeprecatedUse 'LocationTag.page'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L3689
Name<LocationTag.left[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location to the left of this location based on pitch and yaw. Optionally specify a number of blocks to go left.
This is equivalent to Tag:LocationTag.forward with a +90 degree rotation to the yaw and the pitch set to 0.
Generated Example
- teleport <player> <player.location.left>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L971
Name<LocationTag.local_difficulty>
ReturnsElementTag(Decimal)
DescriptionReturns the local difficulty (damage scaler) at the location.
This is based internally on multiple factors, including Tag:ChunkTag.inhabited_time and Tag:WorldTag.difficulty.
Generated Example
- narrate "the decimal value is <player.location.local_difficulty>"
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L3992
Name<LocationTag.patterns>
ReturnsListTag
MechanismLocationTag.patterns
DescriptionLists the patterns of the banner at this location in the form "COLOR/PATTERN|COLOR/PATTERN" etc.
For the list of possible colors, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/DyeColor.html.
For the list of possible patterns, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/banner/PatternType.html.
Generated Example
- foreach <player.location.patterns> as:entry:
    - narrate "found <[entry]>"
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1202
Name<LocationTag.precise_cursor_on_block[(<range>)]>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:LocationTag.ray_trace with input setting [return=block].
Generated Example
- teleport <player> <player.location.precise_cursor_on_block>
Groupworld
Deprecateduse "ray_trace[return=block]" instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1909
Name<LocationTag.precise_cursor_on[(<range>)]>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:LocationTag.ray_trace with all default settings (no input other than optionally the range).
Generated Example
- teleport <player> <player.location.precise_cursor_on>
Groupworld
Deprecateduse "ray_trace" instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1930
Name<LocationTag.precise_impact_normal[(<range>)]>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:LocationTag.ray_trace with input setting [return=normal].
Generated Example
- teleport <player> <player.location.precise_impact_normal>
Groupworld
Deprecateduse "ray_trace[return=normal]" instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1888
Name<LocationTag.precise_target_position[(<range>)].type[<entity_type>|...]>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:LocationTag.ray_trace with "entities=" set to your input types as a matcher.
Groupworld
Deprecateduse "ray_trace[entities=(your_types)]" instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L2032
Name<LocationTag.precise_target_position[(<range>)]>
ReturnsLocationTag
DescriptionDeprecated in favor of Tag:LocationTag.ray_trace with input of [entities=*]
Generated Example
- teleport <player> <player.location.precise_target_position>
Groupworld
Deprecateduse "ray_trace[entities=*]" instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L2017
Name<LocationTag.ray_trace_target[(range=<#.#>/{200});(blocks=<{true}/false>);(fluids=<true/{false}>);(nonsolids=<true/{false}>);(entities=<matcher>);(ignore=<entity>|...);(raysize=<#.#>/{0})]>
ReturnsEntityTag
DescriptionTraces a line from this location towards the direction it's facing, returning the first hit entity (if any).
This is similar to Tag:LocationTag.precise_target and Tag:PlayerTag.target, except offering more options for how the ray trace is performed.
For ray tracing locations, see Tag:LocationTag.ray_trace.
Optionally specify:
range: (defaults to 200) a maximum distance (in blocks) to trace before giving up.
blocks: (defaults to true) specify "false" to ignore all blocks, solid or nonsolid or fluid, between this location and the target entity.
fluids: (defaults to false) specify "true" to count fluids like water as solid, or "false" to ignore them.
nonsolids: (defaults to false) specify "true" to count passable blocks (like tall_grass) as solid, or "false" to ignore them.
entities: (defaults to none) specify an entity matcher for entities to ray trace for. Any non-matching entities along the way are ignored. Leave blank to match any entity.
ignore: (defaults to none) optional list of EntityTags to ignore even if they match the matcher.
raysize: (defaults to 0) sets the radius of the ray being used to trace entities.
Example
# Removes the entity a player is looking at.
- define target <player.eye_location.ray_trace_target[ignore=<player>]||null>
- if <[target]> != null:
    - remove <[target]>
Example
# Returns any player within the view of an NPC.
- define target <npc.eye_location.ray_trace_target[entities=player;raysize=2]||null>
Example
# Highlights an entity through any number or types of blocks.
- define target <player.eye_location.ray_trace_target[ignore=<player>;blocks=false]||null>
- if <[target]> != null:
    - adjust <[target]> glowing:true
Synonyms (Search Aid)locationtag.raycast_target, locationtag.raytrace_target, locationtag.ray_cast_target
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1824
Name<LocationTag.ray_trace[(range=<#.#>/{200});(return=<{precise}/block/normal>);(default=<{null}/air>);(fluids=<true/{false}>);(nonsolids=<true/{false}>);(entities=<matcher>);(ignore=<entity>|...);(raysize=<#.#>/{0})]>
ReturnsLocationTag
DescriptionTraces a line from this location towards the direction it's facing, returning the location of the first hit block or (optionally) entity.
This tag has also been referred to as 'cursor_on' or 'precise_cursor_on' in the past.
For ray tracing entities, see Tag:LocationTag.ray_trace_target.
Using 'return=normal' instead replaces the old 'precise_impact_normal' tag.
Optionally specify:
range: (defaults to 200) a maximum distance (in blocks) to trace before giving up.
return: (defaults to precise)
specify "precise" to return the exact location of the hit (if it hits a block, returns a location along the edge of the block -- but if it hits an entity, returns a location along the body of the entity)
"normal" to return the normal vector of the impact location,
or "block" to return the location of the block hit (if it hits an entity, returns equivalent to 'precise')
For "precise" and "block", the location's direction is set to the direction of the block face hit (or entity bounding box face), pointing exactly away from whatever was hit (the 'normal' direction).
default: (defaults to "null")
specify "null" to return null when nothing is hit,
or "air" to return the location of the air at the end of the trace (NOTE: can potentially be in water or other ignored block type, not just literal air).
fluids: (defaults to false) specify "true" to count fluids like water as solid, or "false" to ignore them.
nonsolids: (defaults to false) specify "true" to count passable blocks (like tallgrass) as solid, or false to ignore them.
entities: (defaults to none) specify an entity matcher for entities to count as blocking the trace, "*" for any entity counts, or leave off (or empty) to ignore entities.
ignore: (defaults to none) optional list of EntityTags to ignore even if they match the matcher.
raysize: (defaults to 0) sets the radius of the ray being used to trace entities (and NOT for blocks!).
Example
# Destroys whatever solid block the player is looking at.
- define target <player.eye_location.ray_trace[return=block]||null>
- if <[target]> != null:
    - modifyblock <[target]> air
Example
# Spawns a heart wherever the player is looking, no more than 5 blocks away.
- playeffect effect:heart offset:0 at:<player.eye_location.ray_trace[range=5;entities=*;ignore=<player>;fluids=true;nonsolids=true;default=air]>
Example
# Spawns a line of fire starting at the player's target location and spewing out in the direction of the blockface or entity hit, demonstrating the concept of a normal vector.
- define hit <player.eye_location.ray_trace[entities=*;ignore=<player>;fluids=true;nonsolids=true]||null>
- if <[hit]> != null:
    - playeffect effect:flame offset:0 at:<[hit].points_between[<[hit].forward[2]>].distance[0.2]>
Synonyms (Search Aid)locationtag.raycast, locationtag.raytrace, locationtag.ray_cast
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1728
Name<LocationTag.relative[<location>]>
ReturnsLocationTag
DescriptionReturns the location relative to this location. Input is a vector location of the form left,up,forward.
For example, input -1,1,1 will return a location 1 block to the right, 1 block up, and 1 block forward.
To just get the location relative to this without rotation math, use Tag:VectorObject.add instead.
Generated Example
- teleport <player> <player.location.relative[<npc.location>]>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1033
Name<LocationTag.right[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location to the right of this location based on pitch and yaw. Optionally specify a number of blocks to go right.
This is equivalent to Tag:LocationTag.forward with a -90 degree rotation to the yaw and the pitch set to 0.
Generated Example
- teleport <player> <player.location.right>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L986
Name<LocationTag.round>
ReturnsLocationTag
DescriptionReturns a rounded version of the LocationTag's coordinates.
That is, each component (X, Y, Z, Yaw, Pitch) is rounded
(eg, 0.1 becomes 0.0, 0.5 becomes 1.0, 0.9 becomes 1.0).
This is NOT equivalent to the block coordinates. For that, use Tag:LocationTag.round_down.
Generated Example
- teleport <player> <player.location.round>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1586
Name<LocationTag.sherds>
ReturnsMapTag
MechanismLocationTag.sherds
DescriptionReturns a decorated pot's sherds as a map of sides to ObjectType:MaterialTags of the sherds.
The map will always contain every side, with a brick being the default value for when a side has no sherd.
Valid sides are: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/DecoratedPot.Side.html.
Valid sherd materials are either a brick or any pottery sherd.
Example
# Tells the player if they're looking at a pot that has any sherds.
- if <player.cursor_on.sherds.values.contains_match[!brick].if_null[false]>:
  - narrate "That pot has sherds in it! You should check!"
- else:
  - narrate "Try looking somewhere else."
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4356
Name<LocationTag.sign_glow_color>
ReturnsElementTag
MechanismLocationTag.sign_glow_color
DescriptionReturns the name of the glow-color of the sign at the location.
See also Tag:LocationTag.sign_glowing
Generated Example
- narrate <player.location.sign_glow_color>
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4169
Name<LocationTag.simplex_3d>
ReturnsElementTag(Decimal)
DescriptionReturns the 3D simplex noise value (from -1 to 1) for this location's X/Y/Z.
See also Tag:util.random_simplex
Generated Example
- narrate "the decimal value is <player.location.simplex_3d>"
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1087
Name<LocationTag.slot[<vector>]>
ReturnsElementTag(Number)
DescriptionReturns the appropriate slot based on a given point along the bookshelves' surface relative to its position.
It will return 0 if the given vector is not within the bounds of any slot.
See also Tag:EntityTag.bookshelf_slot
Example
# Obtain and narrate the slot that the player right-clicked.
on player right clicks chiseled_bookshelf:
- define slot <player.eye_location.ray_trace.sub[<context.location>]>
- narrate <context.location.slot[<[slot]>]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4491
Name<LocationTag.spawner_spawn_delay>
ReturnsElementTag(Number)
MechanismLocationTag.spawner_delay_data
DescriptionReturns the current spawn delay for the spawner.
This changes over time between Tag:LocationTag.spawner_minimum_spawn_delay and Tag:LocationTag.spawner_maximum_spawn_delay.
Generated Example
- narrate "the number value is <player.location.spawner_spawn_delay>"
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1294
Name<LocationTag.structure_block_data>
ReturnsMapTag
MechanismLocationTag.structure_block_data
DescriptionReturns the structure block data of the structure block at the location as a map with the following keys:
- author: ElementTag: The name of the structure's creator. set to "?" for most vanilla structures.
- integrity: ElementTag(Decimal): The integrity of the structure (0-1). Lower integrity values will result in more blocks being removed when loading a structure.
used with the seed to determine which blocks are randomly removed to mimic "decay".
- metadata: ElementTag: Only applies in DATA mode, sets specific functions that can be applied to the structure,
check the Minecraft wiki (🔗https://minecraft.wiki/w/Structure_Block#Data) for more information.
- mirror: ElementTag: How the structure is mirrored; "NONE", "LEFT_RIGHT", or "FRONT_BACK".
- box_position: LocationTag: The position of the structure's bounding box, relative to the position of the structure block. Maximum allowed distance is 48 blocks in any direction.
- rotation: ElementTag: The rotation of the structure; "NONE", "CLOCKWISE_90", "CLOCKWISE_180", or "COUNTERCLOCKWISE_90".
- seed: ElementTag(Number): The seed used to determine how many blocks are removed upon loading of this structure (see "integrity" for more information).
- structure_name: ElementTag: The name of the structure.
- size: LocationTag: The size of the structure's bounding box, The maximum structure size is 48,48,48.
- mode: ElementTag: The structure block's mode; "CORNER", "DATA", "LOAD", or "SAVE". See also Mechanism:MaterialTag.mode.
- box_visible: ElementTag(Boolean): Whether the structure's bounding box is visible, only applies in LOAD mode.
- ignore_entities: ElementTag(Boolean): Whether entities in the structure are ignored, only applies in SAVE mode.
- show_invisible: ElementTag(Boolean): Whether invisible blocks in the structure are shown.
Generated Example
- foreach <player.location.structure_block_data> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4202
Name<LocationTag.switched>
ReturnsElementTag(Boolean)
DescriptionReturns whether the block at the location is considered to be switched on.
(For buttons, levers, etc.)
To change this, see Command:Switch
Generated Example
- if <player.location.switched>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Groupworld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1232
Name<LocationTag.temperature>
ReturnsElementTag(Decimal)
DescriptionReturns a location's temperature, based on the biome it's in.
If this is less than 0.15, snow will form on the ground when weather occurs in the world and a layer of ice will form over water.
See also Tag:BiomeTag.temperature_at.
Example
# Gives the player water if they are standing in a warm location.
- if <player.location.temperature> > 0.5:
  - give water_bucket
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L4251
Name<LocationTag.towny.resident>
ReturnsPlayerTag
DescriptionReturns the resident of a Towny plot at the location, if any.
Deprecated in favor of Tag:LocationTag.towny_resident.
RequiresDepenizen, Towny
Deprecateduse 'towny_resident'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/towny/TownyLocationProperties.java#L50
Name<LocationTag.tree_distance>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:MaterialTag.distance
Used like <[location].material.distance>
Generated Example
- narrate "the number value is <player.location.tree_distance>"
Groupworld
DeprecatedUse MaterialTag.distance
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L3757
Name<LocationTag.up[(<#.#>)]>
ReturnsLocationTag
DescriptionReturns the location above this location based on pitch and yaw. Optionally specify a number of blocks to go up.
This is equivalent to Tag:LocationTag.forward with a +90 degree rotation to the pitch.
To just get the location above this location, use Tag:LocationTag.above instead.
Generated Example
- teleport <player> <player.location.up>
Groupmath
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/LocationTag.java#L1001
Name<LuckPermsTrackTag.groups[(<player>)]>
ReturnsListTag
DescriptionThis returns names of the groups instead of ObjectType:LuckPermsGroupTags, as groups can be unloaded from LuckPerms but still be part of the track.
If a player input is specified, limits to only the groups that the player is in.
RequiresDepenizen, LuckPerms
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/luckperms/LuckPermsTrackTag.java#L149
Name<map[(<map>)]>
ReturnsMapTag
DescriptionReturns a map object constructed from the input value.
Give no input to create an empty map.
Refer to ObjectType:MapTag.
For example: <map[a=1;b=2;c=3]>
Generated Example
- foreach <map> key:key as:val:
    - narrate "<[key]> is set as <[val]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/MapTagBase.java#L10
Name<MapTag.map_to_nbt>
ReturnsBinaryTag
DescriptionConverts the NBT-formatted MapTag to raw binary NBT.
Refer to Language:Raw NBT Encoding
Example
# Stores a player ".dat" file's NBT data
# NOTE: replace 'something' with your map data
- define playerdata something
- define data <[playerdata].map_to_nbt.gzip_compress>
- ~filewrite path:data/<player.uuid>.dat data:<[data]>
Groupconversion
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitMapExtensions.java#L16
Name<MapTag.parse_value[<tag>]>
ReturnsMapTag
DescriptionReturns a copy of the map with all its values updated through the given tag.
One should generally prefer Tag:MapTag.parse_value_tag.
Example
# Narrates a map of '[alpha=ONE;beta=TWO]'
- narrate <map[alpha=one;bravo=two].parse_value[to_uppercase]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/MapTag.java#L991
Name<MapTag.reverse>
ReturnsMapTag
DescriptionReturns a reversed copy of the map. That is, the last key becomes the first key and vice-versa, akin to Tag:ListTag.reverse
Not to be confused with Tag:MapTag.invert
Example
# Narrates a map of '[c=3;b=2;a=1]'
- narrate <map[a=1;b=2;c=3].reverse>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/MapTag.java#L786
Name<MapTag.sort_by_value[(<tag>)]>
ReturnsMapTag
DescriptionReturns a copy of the map, sorted alphanumerically by the value under each key.
Optionally, specify a tag to apply to the value.
To sort by key, use Tag:MapTag.get_subset with list sort tags, like 'map.get_subset[map.keys.sort_by_value[...]]'.
This also lets you apply list filters or similar to the keyset.
To apply a '.parse' to the values, use Tag:ListTag.map_with, like 'map.keys.map_with[map.values.parse[...]]'
Example
# Narrates a map of [a=1;b=2;c=3]
- narrate <map[c=3;a=1;b=2].sort_by_value>
Example
# Narrates a map of [c=3;b=2;a=1]
- narrate <map[c=3;a=1;b=2].sort_by_value[mul[-1]]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/MapTag.java#L432
Name<MapTag.to_json[(native_types=<true/false>);(indent=<#>)]>
ReturnsElementTag
DescriptionReturns a JSON encoding of this map. Primarily useful with interop with other software, such as when use Command:webget or Command:webserver.
Optionally specify configuration input with:
'native_types' (defaults to false) if 'true' will attempt to convert 'true' or 'false' to booleans, and numbers to raw numbers.
'indent' (defaults to 0) to specify the indentation level of the JSON text output. 0 means no spacing or newlines at all.
Example
# Narrates {"a":"1","b":"2"}
- narrate <map[a=1;b=2].to_json>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/MapTag.java#L955
Name<MapTag.to_list[(<separator>)]>
ReturnsListTag
DescriptionReturns a list of all key/value pairs in this map, separated by the specified separator symbol. If none is given, uses the slash '/' symbol.
Note that there is no escaping of the separator, so maps that have the separator in their keys will not be possible to convert back to a map.
Inverted by Tag:ListTag.to_map
Example
# Narrates "a/1", then "b/2", then "c/3"
- foreach <map[a=1;b=2;c=3].to_list> as:slashed:
    - narrate "<[slashed]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/MapTag.java#L938
Name<material[<material>]>
ReturnsMaterialTag
DescriptionReturns a material object constructed from the input value.
Refer to ObjectType:MaterialTag.
Generated Example
- modifyblock <player.location.below> <material[stone]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L257
Name<MaterialTag.age>
ReturnsElementTag(Number)
MechanismMaterialTag.age
Description(Property) Returns an ageable material's current age. This includes plant growth.
See also Tag:MaterialTag.maximum_age.
Generated Example
- narrate "the number value is <material[stone].age>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialAge.java#L18
Name<MaterialTag.attachment_face>
ReturnsElementTag
MechanismMaterialTag.attachment_face
Description(Property) Returns the current attach direction for attachable materials such as switches, grindstones, and bells.
For bell values, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/type/Bell.Attachment.html
For all other supported type values, see 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/block/data/FaceAttachable.AttachedFace.html
Generated Example
- narrate <material[stone].attachment_face>
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialAttachmentFace.java#L13
Name<MaterialTag.food_points>
ReturnsElementTag(Number)
DescriptionIf the material is an item, returns the amount of hunger it restores when eaten.
See 🔗https://minecraft.wiki/w/Food for more information on food mechanics.
Generated Example
- narrate "the number value is <material[stone].food_points>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java#L664
Name<MaterialTag.heights>
ReturnsListTag
MechanismMaterialTag.heights
DescriptionDeprecated in favor of Property:MaterialTag.sides
Generated Example
- foreach <material[stone].heights> as:entry:
    - narrate "found <[entry]>"
Groupproperties
Deprecateduse 'sides'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialSides.java#L115
Name<MaterialTag.instrument>
ReturnsElementTag
MechanismMaterialTag.instrument
DescriptionReturns the name of the instrument played from this note block,
see list at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Instrument.html.
For the instrument that a material *would* produce if below a noteblock Tag:MaterialTag.produced_instrument.
Generated Example
- narrate <material[stone].instrument>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialInstrument.java#L41
Name<MaterialTag.level>
ReturnsElementTag(Number)
MechanismMaterialTag.level
Description(Property) Returns the current level for a Levelled material, cake, beehives, snow, farmland, or brushable blocks.
"Levelled" materials include: water, lava, cauldrons, composters, light blocks, brushable blocks, and any other future Levelled implementing types.
For light blocks, this is the brightness of the light.
For water/lava this is the height of the liquid block.
For cauldrons, this is the amount of liquid contained.
For cake, this is the number of bites left.
For beehives/bee nests, this is the amount of honey contained.
For snow, this is the number of partial layers, or the height, of a snow block.
For farmland, this is the moisture level.
For composters, this is the amount of compost.
For brushable blocks (also referred to as "suspicious blocks"), this is the level of dusting. 1.20+ only.
For dried ghasts, this is the level of hydration. 1.21+ only.
See also Tag:MaterialTag.maximum_level and Tag:MaterialTag.minimum_level.
Generated Example
- narrate "the number value is <material[stone].level>"
GroupProperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialLevel.java#L16
Name<MaterialTag.produced_instrument>
ReturnsElementTag
DescriptionReturns the name of the instrument that would be used by a note block placed above or below (depending on the material type) a block of this material.
See list at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Instrument.html.
For the current instrument of a note block material refer to Tag:MaterialTag.instrument.
Generated Example
- narrate <material[stone].produced_instrument>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java#L624
Name<MaterialTag.translated_name>
ReturnsElementTag
DescriptionReturns the localized name of the material.
Note that this is a magic Denizen tool - refer to Language:Denizen Text Formatting.
Generated Example
- narrate <material[stone].translated_name>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java#L520
Name<MaterialTag.valid_directions>
ReturnsListTag
MechanismMaterialTag.direction
DescriptionReturns a list of directions that are valid for a directional material.
See also Tag:MaterialTag.direction
Generated Example
- foreach <material[stone].valid_directions> as:entry:
    - narrate "found <[entry]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialDirectional.java#L64
Name<MaterialTag.valid_faces>
ReturnsListTag
MechanismMaterialTag.faces
DescriptionReturns a list of faces that are valid for a material that has multiple faces.
See also Tag:MaterialTag.faces
Generated Example
- foreach <material[stone].valid_faces> as:entry:
    - narrate "found <[entry]>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/material/MaterialFaces.java#L41
Name<MaterialTag.vanilla_tags>
ReturnsListTag
MechanismMaterialTag.vanilla_tags
DescriptionReturns a list of vanilla tags that apply to this material. See also 🔗https://minecraft.wiki/w/Tag.
Generated Example
- foreach <material[stone].vanilla_tags> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/MaterialTag.java#L609
Name<mythicmob[<name>]>
ReturnsMythicMobsMobTag
DescriptionReturns a MythicMobsMobTag based on the name input.
Refer to ObjectType:MythicMobsMobTag.
RequiresDepenizen, MythicMobs
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/MythicMobsBridge.java#L116
Name<mythicspawner[<name>]>
ReturnsMythicSpawnerTag
DescriptionReturns a MythicSpawnerTag based on the name input.
Refer to ObjectType:MythicSpawnerTag.
RequiresDepenizen, MythicMobs
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/MythicMobsBridge.java#L132
Name<NationTag.assistants>
ReturnsListTag(PlayerTag)
DescriptionReturns a list of the nation's assistants.
Deprecated in favor of Tag:NationTag.members_by_rank.
RequiresDepenizen, Towny
Deprecateduse 'members_by_rank'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/towny/NationTag.java#L170
Name<npc[(<npc>)]>
ReturnsNPCTag
DescriptionReturns an npc object constructed from the input value.
Refer to ObjectType:NPCTag.
If no input value is specified, returns the linked NPC.
Generated Example
- walk <npc> <player.location>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/NPCTagBase.java#L45
Name<NPCTag.engaged[(<player>)]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the NPC is currently engaged.
See Command:engage
Generated Example
- if <npc.engaged>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L789
Name<NPCTag.invulnerable>
ReturnsElementTag(Boolean)
DescriptionReturns whether the NPC is currently invulnerable.
See Command:vulnerable
Generated Example
- if <npc.invulnerable>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L800
Name<NPCTag.is_sitting>
ReturnsElementTag(Boolean)
DescriptionReturns true if the NPC is sitting. Relates to Command:sit.
Generated Example
- if <npc.is_sitting>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L474
Name<NPCTag.is_sleeping>
ReturnsElementTag(Boolean)
DescriptionReturns true if the NPC is sleeping. Relates to Command:sleep.
Generated Example
- if <npc.is_sleeping>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L485
Name<NPCTag.script>
ReturnsScriptTag
DescriptionDeprecated variant of Tag:NPCTag.scripts.
Generated Example
- narrate <npc.script>
DeprecatedUse 'NPCTag.scripts' (plural) instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L1012
Name<NPCTag.skin_blob>
ReturnsElementTag
MechanismNPCTag.skin_blob
DescriptionReturns the NPC's custom skin blob, if any.
In the format: "texture;signature" (two values separated by a semicolon).
See also Language:Player Entity Skins (Skin Blobs).
Generated Example
- narrate <npc.skin_blob>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L851
Name<NPCTag.skull_skin>
ReturnsElementTag
DescriptionReturns the NPC's current skin blob, formatted for input to a Player Skull item.
In the format: "UUID|Texture" (two values separated by pipes).
See also Language:Player Entity Skins (Skin Blobs).
Generated Example
- narrate <npc.skull_skin>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/NPCTag.java#L873
Name<NPCTag.worldguard_wander_region>
ReturnsWorldGuardRegionTag
MechanismNPCTag.worldguard_wander_region
DescriptionIf the NPC's waypoint provider is set to wander (Tag:NPCTag.waypoint_provider),
returns the current WorldGuard region that wandering is restricted to, if any.
Generated Example
- narrate <npc.worldguard_wander_region>
RequiresDepenizen, WorldGuard
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/worldguard/WorldGuardNPCExtensions.java#L13
Name<ObjectTag.advanced_matches[<matcher>]>
ReturnsElementTag(Boolean)
DescriptionReturns whether the object matches some matcher text, using the system described at Language:Advanced Object Matching.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/CoreObjectTags.java#L261
Name<ObjectTag.is[<operator>].than[<object>]>
ReturnsElementTag(Boolean)
DescriptionTakes an operator, and compares the first object to the given second object.
Returns the outcome of the comparable, either true or false. For information on operators, see Language:operator.
Equivalent to Tag:ObjectTag.is.to
Groupcomparison
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/CoreObjectTags.java#L210
Name<ObjectTag.is[<operator>].to[<object>]>
ReturnsElementTag(Boolean)
DescriptionTakes an operator, and compares the first object to the given second object.
Returns the outcome of the comparable, either true or false. For information on operators, see Language:operator.
Equivalent to Tag:ObjectTag.is.than
Groupcomparison
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/CoreObjectTags.java#L200
Name<ObjectTag.null_if_tag[<dynamic-boolean>]>
ReturnsObjectTag
DescriptionParses the given tag on the object, expecting a boolean return.
This requires a fully formed tag as input, making use of the 'null_if_value' definition.
If the return is 'true', the 'null_if' tag returns null.
If the return is 'false', the 'null_if' tag returns the original object.
Consider also Tag:ObjectTag.null_if_tag.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/CoreObjectTags.java#L176
Name<ObjectTag.null_if[<tag>]>
ReturnsObjectTag
DescriptionParses the given tag on the object, expecting a boolean return.
If the return is 'true', the 'null_if' tag returns null.
If the return is 'false', the 'null_if' tag returns the original object.
Consider also Tag:ObjectTag.null_if_tag.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/CoreObjectTags.java#L141
Name<party[<party>]>
ReturnsPartyTag
DescriptionReturns a party object constructed from the input value.
Refer to ObjectType:PartyTag.
RequiresDepenizen, mcMMO
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/McMMOBridge.java#L48
Name<placeholder[<name>]>
ReturnsElementTag
DescriptionReturns the value of the placeholder.
For example, <placeholder[server_name]>
Note that you do not need to include the "%" marks on the placeholder.
The queue's linked player, if any, will be linked to the placeholder as well for any player-specific placeholder usage.
Note: this should generally only be used for reading values from other plugins not already supported by Depenizen.
This should not be used for cases where a Denizen tag already exists, or should exist.
RequiresDepenizen, PlaceholderAPI
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/PlaceholderAPIBridge.java#L53
Name<player[(<player>)]>
ReturnsPlayerTag
DescriptionReturns a player object constructed from the input value.
Refer to ObjectType:PlayerTag.
If no input value is specified, returns the linked player.
Generated Example
- kill <player>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/PlayerTagBase.java#L20
Name<PlayerTag.bossbar_ids>
ReturnsListTag
DescriptionReturns a list of all bossbars from Command:bossbar that this player can see.
Does not list bossbars created by any other source.
Generated Example
- foreach <player.bossbar_ids> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2514
Name<PlayerTag.calculated_bed_spawn>
ReturnsLocationTag
DescriptionReturns the player's calculated bed spawn location.
This is a location around their set spawn where they could actually spawn, such as a safe block next to a bed.
See Tag:PlayerTag.bed_spawn for the actual spawn location they have set.
Generated Example
- teleport <player> <player.calculated_bed_spawn>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L835
Name<PlayerTag.disguise_to_self[(<player>)]>
ReturnsEntityTag
DescriptionReturns the fake entity used to disguise the entity in the player's self-view (only relevant to players), either globally (if no context input given), or to the specified player.
Relates to Command:disguise.
Generated Example
- kill <player.disguise_to_self>
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2365
Name<PlayerTag.fake_block_locations>
ReturnsListTag(LocationTag)
DescriptionReturns a list of locations that the player will see a fake block at, as set by Command:showfake or connected commands.
Generated Example
- foreach <player.fake_block_locations> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2307
Name<PlayerTag.fake_block[<location>]>
ReturnsMaterialTag
DescriptionReturns the fake material that the player will see at the input location, as set by Command:showfake or connected commands.
Works best alongside Tag:PlayerTag.fake_block_locations.
Returns null if the player doesn't have a fake block at the location.
Generated Example
- foreach <player.location.find_blocks[<player.fake_block[<npc.location>]>].within[5]> as:loc:
    - modifyblock <[loc]> air
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2324
Name<PlayerTag.fake_entities>
ReturnsListTag(EntityTag)
DescriptionReturns a list of fake entities the player can see, as set by Command:fakespawn.
Note that these entities are not being tracked by the server, so many operations may not be possible on them.
Generated Example
- foreach <player.fake_entities> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2347
Name<PlayerTag.flying_fall_damage>
ReturnsElementTag(Boolean)
MechanismPlayerTag.flying_fall_damage
DescriptionReturns whether the player will take fall damage while Tag:PlayerTag.can_fly is true.
Generated Example
- if <player.flying_fall_damage>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Grouppaper
RequiresPaper
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/paper/src/main/java/com/denizenscript/denizen/paper/properties/PaperPlayerExtensions.java#L180
Name<PlayerTag.last_action_time>
ReturnsTimeTag
DescriptionReturns the time of the last direct input from the player. Internally used with Tag:server.idle_timeout.
Generated Example
- flag server myflag expire:<player.last_action_time>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2472
Name<PlayerTag.scoreboard_id>
ReturnsElementTag
DescriptionReturns the ID of the scoreboard from Command:scoreboard that a player is currently viewing, if any.
Generated Example
- narrate <player.scoreboard_id>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2484
Name<PlayerTag.sidebar_lines>
ReturnsListTag
DescriptionReturns the current lines set on the player's Sidebar via Command:sidebar.
Generated Example
- foreach <player.sidebar_lines> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1623
Name<PlayerTag.sidebar_scores>
ReturnsListTag
DescriptionReturns the current scores set on the player's Sidebar via Command:sidebar,
in the same order as Tag:PlayerTag.sidebar_lines.
Generated Example
- foreach <player.sidebar_scores> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1651
Name<PlayerTag.sidebar_title>
ReturnsElementTag
DescriptionReturns the current title set on the player's Sidebar via Command:sidebar.
Generated Example
- narrate <player.sidebar_title>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1637
Name<PlayerTag.skin_blob>
ReturnsElementTag
MechanismPlayerTag.skin_blob
DescriptionReturns the player's current skin blob.
In the format: "texture;signature" (two values separated by a semicolon).
See also Language:Player Entity Skins (Skin Blobs).
Generated Example
- narrate <player.skin_blob>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1703
Name<PlayerTag.skull_item>
ReturnsItemTag
DescriptionReturns a Player_Head item with the skin of the player.
See also Language:Player Entity Skins (Skin Blobs).
Generated Example
- give <player.skull_item>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1733
Name<PlayerTag.skull_skin>
ReturnsElementTag
DescriptionReturns the player's current skin blob, formatted for input to a Player Skull item.
In the format: "UUID|Texture|Name" (three values separated by pipes).
See also Language:Player Entity Skins (Skin Blobs).
Generated Example
- narrate <player.skull_skin>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1716
Name<PlayerTag.statistic[<statistic>].qualifier[<material>/<entity>]>
ReturnsElementTag(Number)
DescriptionReturns the player's current value for the specified statistic, with the
specified qualifier, which can be either an entity or material.
Valid statistics: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Statistic.html
To check a statistic type dynamically, refer to Tag:server.statistic_type.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1402
Name<PlayerTag.statistic[<statistic>]>
ReturnsElementTag(Number)
DescriptionReturns the player's current value for the specified statistic.
Valid statistics: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Statistic.html
Works with offline players.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L1381
Name<PlayerTag.time>
ReturnsElementTag(Number)
DescriptionReturns the time the player is currently experiencing.
This time could differ from the time that the rest of the world is currently experiencing if Command:time is being used on the player.
Generated Example
- narrate "the number value is <player.time>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2158
Name<PlayerTag.viaversion_protocol>
ReturnsElementTag(Number)
DescriptionReturns the protocol version number of the player's client.
See 🔗https://wiki.vg/Protocol_version_numbers as a reference list.
See also Tag:PlayerTag.viaversion_version
Generated Example
- narrate "the number value is <player.viaversion_protocol>"
RequiresDepenizen, ViaVersion
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerExtensions.java#L21
Name<PlayerTag.viaversion_version>
ReturnsElementTag
DescriptionReturns the player's client version ("1.19.4", "1.18.2"...).
See also Tag:PlayerTag.viaversion_protocol
Generated Example
- narrate <player.viaversion_version>
RequiresDepenizen, ViaVersion
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerExtensions.java#L34
Name<PlayerTag.viaversion>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:PlayerTag.viaversion_protocol.
Generated Example
- narrate "the number value is <player.viaversion>"
RequiresDepenizen, ViaVersion
DeprecatedUse 'PlayerTag.viaversion_protocol'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/viaversion/ViaVersionPlayerExtensions.java#L12
Name<PlayerTag.worldguard.can_build[<location>]>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:PlayerTag.worldguard_can_build
RequiresDepenizen, WorldGuard
DeprecatedUse 'PlayerTag.worldguard_can_build'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/worldguard/WorldGuardPlayerExtensions.java#L32
Name<PlayerTag.worldguard.test_flag[<name>].at[<location>]>
ReturnsObjectTag
DescriptionDeprecated in favor of Tag:PlayerTag.worldguard_flag
RequiresDepenizen, WorldGuard
DeprecatedUse 'PlayerTag.worldguard_flag'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/worldguard/WorldGuardPlayerExtensions.java#L70
Name<PlayerTag.worldguard.test_flag[<name>]>
ReturnsObjectTag
DescriptionDeprecated in favor of Tag:PlayerTag.worldguard_flag
RequiresDepenizen, WorldGuard
DeprecatedUse 'PlayerTag.worldguard_flag'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/properties/worldguard/WorldGuardPlayerExtensions.java#L51
Name<PlayerTag.xp_total>
ReturnsElementTag(Number)
DescriptionReturns the total amount of experience points the player has.
This is how much XP the player has ever received, not a current value.
To get the current total, use Tag:PlayerTag.calculate_xp.
Works with offline players.
Generated Example
- narrate "the number value is <player.xp_total>"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/PlayerTag.java#L2221
Name<plugin[<plugin>]>
ReturnsPluginTag
DescriptionReturns a plugin object constructed from the input value.
Refer to ObjectType:PluginTag.
Generated Example
- narrate <plugin[Denizen]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L330
Name<polygon[<polygon>]>
ReturnsPolygonTag
DescriptionReturns a polygon object constructed from the input value.
Refer to ObjectType:PolygonTag.
Generated Example
- note <polygon[my_polygon_note]> as:my_new_polygon
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L339
Name<PropertyHolderObject.with[<mechanism>=<value>;...]>
ReturnsPropertyHolderObject
DescriptionReturns a copy of the object with mechanism adjustments applied.
Be careful with dynamic inputs, they may break from escaping flaws.
Consider using Tag:PropertyHolderObject.with_single instead.
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/properties/PropertyParser.java#L463
Name<quaternion[<quaternion>]>
ReturnsQuaternionTag
DescriptionReturns a QuaternionTag object constructed from the input value.
Refer to ObjectType:QuaternionTag.
Generated Example
- narrate "TODO: Placeholder: quaternion is <quaternion[identity]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L167
Name<QuaternionTag.negative>
ReturnsQuaternionTag
DescriptionReturns the negative of this quaternion.
That is, (-x, -y, -z, -w).
This is not just making the rotation backwards, for that use Tag:QuaternionTag.inverse.
Generated Example
- narrate "TODO: Placeholder: quaternion is <quaternion[identity].negative>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/QuaternionTag.java#L294
Name<QuaternionTag.plus[<quaternion>]>
ReturnsQuaternionTag
DescriptionReturns this quaternion "plus" another, using simple addition.
This is NOT the same as combining quaternions! For that, use Tag:QuaternionTag.mul.
Generated Example
- narrate "TODO: Placeholder: quaternion is <quaternion[identity].plus[identity]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/QuaternionTag.java#L203
Name<QuaternionTag.represented_angle>
ReturnsElementTag(Decimal)
DescriptionReturns the angle (in radians) represented by this quaternion.
Pairs with Tag:QuaternionTag.represented_axis.
Generated Example
- narrate "the decimal value is <quaternion[identity].represented_angle>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/QuaternionTag.java#L346
Name<QuaternionTag.represented_axis>
ReturnsVectorObject
DescriptionReturns the axis represented by this quaternion, as a vector.
Pairs with Tag:QuaternionTag.represented_angle.
Generated Example
- adjust <player> velocity:<quaternion[identity].represented_axis>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/QuaternionTag.java#L357
Name<QuaternionTag.xyz_vector>
ReturnsVectorObject
DescriptionReturns the X, Y, and Z values of this quaternion as a ObjectType:VectorObject.
Generated Example
- adjust <player> velocity:<quaternion[identity].xyz_vector>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/QuaternionTag.java#L193
Name<queue[(<queue>)]>
ReturnsQueueTag
DescriptionReturns a queue object constructed from the input value.
Refer to ObjectType:QueueTag.
If no input is given, returns the current queue.
Generated Example
- narrate <queue>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/QueueTagBase.java#L18
Name<QueueTag.determination>
ReturnsListTag
DescriptionReturns the values that have been determined via Command:Determine
for this queue, or null if there is none.
Generated Example
- foreach <queue.determination> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/QueueTag.java#L317
Name<QueueTag.npc>
ReturnsNPCTag
MechanismQueueTag.linked_npc
DescriptionReturns the NPCTag linked to a queue.
Generated Example
- heal <queue.npc>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitQueueExtensions.java#L13
Name<QueueTag.player>
ReturnsPlayerTag
MechanismQueueTag.linked_player
DescriptionReturns the PlayerTag linked to a queue.
Generated Example
- kill <queue.player>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitQueueExtensions.java#L34
Name<reflected[<reflected-tag>]>
ReturnsJavaReflectedObjectTag
DescriptionReturns a JavaReflectedObjectTag constructed from the input reference ID lookup.
Refer to ObjectType:JavaReflectedObjectTag.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L130
Name<region[<region>]>
ReturnsWorldGuardRegionTag
DescriptionReturns a WorldGuard region object constructed from the input value.
Refer to ObjectType:WorldGuardRegionTag.
RequiresDepenizen, WorldGuard
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/WorldGuardBridge.java#L33
Name<residence[<name>]>
ReturnsResidenceTag
DescriptionReturns a residence object constructed from the input value.
Refer to ObjectType:ResidenceTag.
RequiresDepenizen, Residence
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/bridges/ResidenceBridge.java#L16
Name<script[(<script>)]>
ReturnsScriptTag
DescriptionReturns a script object constructed from the input value.
If no input is given, will return the current script that the tag is within.
Refer to ObjectType:ScriptTag.
Generated Example
- narrate <script>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/ScriptTagBase.java#L10
Name<ScriptTag.step_expiration[(<player>)]>
ReturnsTimeTag
DescriptionReturns the time that an interact script step expires at, if applied by Command:zap with a duration limit.
Generated Example
- flag server myflag expire:<script.step_expiration>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/properties/bukkit/BukkitScriptExtensions.java#L65
Name<secret[<secret>]>
ReturnsSecretTag
DescriptionReturns a SecretTag object constructed from the input value.
Refer to ObjectType:SecretTag.
Example
- webget <secret[my_secret_url]> "post:Message to secret address!"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L182
Name<server.advancement_types>
ReturnsListTag
DescriptionReturns a list of all registered advancement names.
Generally used with Tag:PlayerTag.has_advancement.
See also 🔗https://minecraft.wiki/w/Advancement.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L682
Name<server.art_types>
ReturnsListTag
DescriptionReturns a list of all known art types.
Generally used with Tag:EntityTag.painting and Mechanism:EntityTag.painting.
For the default ("vanilla") art types, see the "Resource location" column in 🔗https://minecraft.wiki/w/Painting#Canvases.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L672
Name<server.available_processors>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.available_processors
Deprecateduse util.available_processors
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2158
Name<server.biome_types>
ReturnsListTag(BiomeTag)
DescriptionReturns a list of all biomes known to the server, including custom added ones.
Generally used with ObjectType:BiomeTag.
See 🔗https://minecraft.wiki/w/Biome#List_of_biomes for a list of all default (vanilla) biomes.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L727
Name<server.bossbar_viewers[<bossbar_id>]>
ReturnsListTag(PlayerTag)
DescriptionReturns a list of players that should be able to see the given bossbar ID from Command:bossbar.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1644
Name<server.color_names>
ReturnsListTag
DescriptionDeprecated in favor of Tag:util.color_names
Deprecateduse util.color_names
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2262
Name<server.current_bossbars>
ReturnsListTag
DescriptionReturns a list of all currently active boss bar IDs from Command:bossbar.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1634
Name<server.current_tick>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.current_tick
Deprecateduse util.current_tick
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2166
Name<server.current_time_millis>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.current_time_millis
Deprecateduse util.current_time_millis
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2190
Name<server.damage_causes>
ReturnsListTag
DescriptionReturns a list of all registered damage causes.
Generally used with Event:entity damaged.
This is only their Bukkit enum names, as seen at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/event/entity/EntityDamageEvent.DamageCause.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L707
Name<server.debug_enabled>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:util.debug_enabled
Deprecateduse util.debug_enabled
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2254
Name<server.delta_time_since_start>
ReturnsDurationTag
DescriptionDeprecated in favor of Tag:util.delta_time_since_start
Deprecateduse util.delta_time_since_start
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2174
Name<server.disk_free>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.disk_free
Deprecateduse util.disk_free
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2102
Name<server.disk_total>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.disk_total
Deprecateduse util.disk_total
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2110
Name<server.disk_usage>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.disk_usage
Deprecateduse util.disk_usage
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2118
Name<server.effect_types>
ReturnsListTag
DescriptionReturns a list of all 'effect' types known to the server.
Generally used with Command:playeffect.
This is only their Bukkit enum names, as seen at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Effect.html.
Refer also to Tag:server.particle_types.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L860
Name<server.entity_types>
ReturnsListTag
DescriptionReturns a list of all entity types known to the server.
Generally used with ObjectType:EntityTag.
For the default ("vanilla") entity types, see 🔗https://minecraft.wiki/w/Java_Edition_data_values#Entities.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L781
Name<server.flag_expiration[<flag_name>]>
ReturnsTimeTag
DescriptionSee Tag:FlaggableObject.flag_expiration
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L597
Name<server.flag_map[<name>|...]>
ReturnsMapTag
DescriptionSee Tag:FlaggableObject.flag_map
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L626
Name<server.flag[<flag_name>]>
ReturnsObjectTag
DescriptionSee Tag:FlaggableObject.flag
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L606
Name<server.generate_loot_table[id=<id>;location=<location>;(killer=<entity>);(entity=<entity>);(loot_bonus=<#>/{-1});(luck=<#.#>/{0})]>
ReturnsListTag(ItemTag)
DescriptionReturns a list of items from a loot table, given a map of input data.
Required input: id: the loot table ID, location: the location where it's being generated (LocationTag).
Optional inputs: killer: an online player (or player-type NPC) that is looting, entity: a dead entity being looted from (a valid EntityTag instance that is or was spawned in the world),
loot_bonus: the loot bonus level (defaults to -1) as an integer number, luck: the luck potion level (defaults to 0) as a decimal number.

Some inputs will be strictly required for some loot tables, and ignored for others.

A list of valid loot tables can be found here: 🔗https://minecraft.wiki/w/Loot_table#List_of_loot_tables
Note that the tree view represented on the wiki should be split by slashes for the input - for example, "cow" is under "entities" in the tree so "entities/cow" is how you input that.
CAUTION: Invalid loot table IDs will generate an empty list rather than an error.
Example
- give <server.generate_loot_table[id=chests/spawn_bonus_chest;killer=<player>;location=<player.location>]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1796
Name<server.has_file[<name>]>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:util.has_file
Deprecateduse util.has_file
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2198
Name<server.has_flag[<flag_name>]>
ReturnsElementTag(Boolean)
DescriptionSee Tag:FlaggableObject.has_flag
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L587
Name<server.idle_timeout>
ReturnsDurationTag
Mechanismserver.idle_timeout
DescriptionReturns the server's current idle timeout limit (how long a player can sit still before getting kicked).
Internally used with Tag:PlayerTag.last_action_time.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1686
Name<server.java_version>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:util.java_version
Deprecateduse util.java_version
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2214
Name<server.last_reload>
ReturnsTimeTag
DescriptionDeprecated in favor of Tag:util.last_reload
Deprecateduse util.last_reload
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2238
Name<server.list_files[<path>]>
ReturnsListTag
DescriptionDeprecated in favor of Tag:util.list_files
Deprecateduse util.list_files
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2206
Name<server.list_flags>
ReturnsListTag
DescriptionSee Tag:FlaggableObject.list_flags
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L616
Name<server.map_cursor_types>
ReturnsListTag
DescriptionReturns a list of all map cursor types known to the server.
Generally used with Command:map and Language:Map Script Containers.
For the default ("vanilla") map cursor types, see the "Text ID" column in 🔗https://minecraft.wiki/w/Map#Map_icons.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L925
Name<server.material_types>
ReturnsListTag(MaterialTag)
DescriptionReturns a list of all materials known to the server.
Generally used with ObjectType:MaterialTag.
This is only types listed in the Bukkit Material enum, as seen at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html.
Note: Some materials might be disabled in specific worlds, check using Tag:MaterialTag.is_enabled.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L803
Name<server.nbt_attribute_types>
ReturnsListTag
DescriptionReturns a list of all registered attribute names.
Generally used with Tag:EntityTag.has_attribute.
For the default ("vanilla") attribute types, see 🔗https://minecraft.wiki/w/Attribute#Attributes.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L697
Name<server.notes[<type>]>
ReturnsListTag
DescriptionDeprecated in favor of Tag:util.notes
Deprecateduse util.notes
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2086
Name<server.object_is_valid[<object>]>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:ObjectTag.exists or Tag:ObjectTag.is_truthy
DeprecatedUse 'exists' or 'is_truthy'
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L549
Name<server.particle_types>
ReturnsListTag
DescriptionReturns a list of all particle effect types known to the server.
Generally used with Command:playeffect.
For the default ("vanilla") particle types, see 🔗https://minecraft.wiki/w/Particles_(Java_Edition)#Types_of_particles.
Refer also to Tag:server.effect_types.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L849
Name<server.pattern_types>
ReturnsListTag
DescriptionReturns a list of all banner patterns known to the server.
Generally used with Tag:ItemTag.patterns.
For the default ("vanilla") pattern types, see the "Resource name" column in 🔗https://minecraft.wiki/w/Banner/Patterns.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L871
Name<server.potion_effect_types>
ReturnsListTag
DescriptionReturns a list of all potion effects known to the server.
Can be used with Command:cast.
This is only their Bukkit enum names, as seen at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/potion/PotionEffectType.html.
Refer also to Tag:server.potion_types.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L881
Name<server.potion_types>
ReturnsListTag
DescriptionReturns a list of all potion types known to the server, including their "strong" and extended variants.
For the default ("vanilla") potion types, see the table in 🔗https://minecraft.wiki/w/Potion#Item_data.
Refer also to Tag:server.potion_effect_types.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L905
Name<server.ram_allocated>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.ram_allocated
Deprecateduse util.ram_allocated
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2126
Name<server.ram_free>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.ram_free
Deprecateduse util.ram_free
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2142
Name<server.ram_max>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.ram_max
Deprecateduse util.ram_max
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2134
Name<server.ram_usage>
ReturnsElementTag(Number)
DescriptionDeprecated in favor of Tag:util.ram_usage
Deprecateduse util.ram_usage
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2150
Name<server.real_time_since_start>
ReturnsDurationTag
DescriptionDeprecated in favor of Tag:util.real_time_since_start
Deprecateduse util.real_time_since_start
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2182
Name<server.scoreboard[(<board>)].objective[<name>].display_slot>
ReturnsElementTag
DescriptionReturns the display slot specified for the given objective. Can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/scoreboard/DisplaySlot.html.
Note that not all objectives have a display slot.
Optionally, specify which scoreboard to use.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L445
Name<server.scripts>
ReturnsListTag(ScriptTag)
DescriptionDeprecated in favor of Tag:util.scripts
Deprecateduse util.scripts
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2230
Name<server.slot_id[<slot>]>
ReturnsElementTag(Number)
DescriptionReturns the slot ID number for an input slot (see Language:Slot Inputs).
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L165
Name<server.sound_types>
ReturnsListTag
DescriptionDeprecated in favor of Tag:server.sound_keys on MC 1.21+.
DeprecatedUse 'server.sound_keys' on MC 1.21+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L821
Name<server.sql_connections>
ReturnsListTag
DescriptionDeprecated in favor of Tag:util.sql_connections
Deprecateduse util.sql_connections
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2222
Name<server.stack_trace>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:util.stack_trace
Deprecateduse util.stack_trace
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2246
Name<server.started_time>
ReturnsTimeTag
DescriptionDeprecated in favor of Tag:util.started_time
Deprecateduse util.started_time
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L2094
Name<server.statistic_type[<statistic>]>
ReturnsElementTag
DescriptionReturns the qualifier type of the given statistic, will be one of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Statistic.Type.html.
Generally relevant to usage with Tag:PlayerTag.statistic.qualifier.
Refer also to Tag:server.statistic_types.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1006
Name<server.statistic_types[(<type>)]>
ReturnsListTag
DescriptionReturns a list of all statistic types known to the server.
Generally used with Tag:PlayerTag.statistic.
This is only their Bukkit enum names, as seen at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Statistic.html.
Optionally, specify a type to limit to statistics of a given type. Can be any of 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Statistic.Type.html.
Refer also to Tag:server.statistic_type.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L954
Name<server.structure_types>
ReturnsListTag
DescriptionDeprecated in favor of Tag:server.structures on 1.19+.
Deprecateduse 'server.structures' on 1.19+.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L976
Name<server.structures>
ReturnsListTag
DescriptionReturns a list of all structures known to the server, including custom ones added by datapacks.
For more information and a list of default structures, see 🔗https://minecraft.wiki/w/Structure.
For locating specific structures, see Language:Structure lookups.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L993
Name<server.teleport_causes>
ReturnsListTag
DescriptionReturns a list of all registered player teleport causes.
Generally used with Event:entity teleports.
See Language:teleport cause for the current list of causes.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L717
Name<server.tree_types>
ReturnsListTag
DescriptionReturns a list of all tree types known to the server.
Generally used with Mechanism:LocationTag.generate_tree.
This is only their Bukkit enum names, as seen at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/TreeType.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L915
Name<server.vanilla_entity_tags>
ReturnsListTag
DescriptionReturns a list of vanilla tags applicable to entity types. See also 🔗https://minecraft.wiki/w/Tag.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1698
Name<server.vanilla_material_tags>
ReturnsListTag
DescriptionReturns a list of vanilla tags applicable to blocks, fluids, or items. See also 🔗https://minecraft.wiki/w/Tag.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1726
Name<server.vanilla_tagged_entities[<tag>]>
ReturnsListTag(EntityTag)
DescriptionReturns a list of entity types referred to by the specified vanilla tag. See also 🔗https://minecraft.wiki/w/Tag.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1708
Name<server.vanilla_tagged_materials[<tag>]>
ReturnsListTag(MaterialTag)
DescriptionReturns a list of materials referred to by the specified vanilla tag. See also 🔗https://minecraft.wiki/w/Tag.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L1736
Name<server.world_types>
ReturnsListTag
DescriptionReturns a list of all world types known to the server.
Generally used with Command:createworld.
This is only their Bukkit enum names, as seen at 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/WorldType.html.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/tags/core/ServerTagBase.java#L944
Name<tern[<condition>].pass[<result>].fail[<result>]>
ReturnsObjectTag
DescriptionReturns either the 'pass' input, or 'fail' input depending on the outcome of the condition.
The 'pass' input will be returned when the condition returns 'true', otherwise the 'fail' input will be returned.
Example: '<tern[<player.is_spawned>].pass[Player is spawned!].fail[Player is not spawned!]>'
Consider instead using Tag:ElementTag.if_true.if_false
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/TernaryTagBase.java#L23
Name<time[<time>]>
ReturnsTimeTag
DescriptionReturns a time object constructed from the input value.
Refer to ObjectType:TimeTag.
Generated Example
- flag server myflag expire:<time[<util.time_now>]>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/ObjectFetcher.java#L193
Name<TimeTag.format_discord[(<style>)]>
ReturnsElementTag
DescriptionReturns the time formatted for display on Discord, optionally using the specified style from 🔗https://discord.com/developers/docs/reference#message-formatting-timestamp-styles.
For example: <util.time_now.format_discord> or <util.time_now.format_discord[R]>
Note that style input, if used, is case sensitive.
Generated Example
- narrate <util.time_now.format_discord>
Groupextensions
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/properties/DiscordTimeTagExtensions.java#L10
Name<TimeTag.format[(<format>)]>
ReturnsElementTag
DescriptionReturns the time, formatted to the date format specification given.
If no format input is given, uses "yyyy/MM/dd HH:mm:ss".
The optional input to this tag uses semi-standard date format symbols, such as 'yyyy' to mean a 4-digit year or 'MM' to mean a 2-digit month.
There are a variety of additional symbols accepted, as listed under "Patterns for Formatting and Parsing" on 🔗https://docs.oracle.com/javase/8/docs/api/java/time/format/DateTimeFormatter.html.
Generated Example
- narrate <util.time_now.format>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/TimeTag.java#L698
Name<TimeTag.from_now>
ReturnsDurationTag
DescriptionReturns the DurationTag between this time object and the real current system time.
The value will always be positive.
This is equivalent to the absolute value of ".duration_since[<util.time_now>]", and exists primarily as a convenience tag.
For example, a TimeTag for Tuesday will return a DurationTag of '1d' when the tag is used on a Monday.
A TimeTag for Sunday will also return a DurationTag of '1d' when used on a Monday.
If positive/negative differences are required, consider instead using Tag:TimeTag.duration_since.
Generated Example
- ratelimit <player> <util.time_now.from_now>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/TimeTag.java#L651
Name<TimeTag.to_zone[<zone>]>
ReturnsTimeTag
DescriptionReturns a copy of the TimeTag, converted to the specified time zone.
The hour (and when relevant: day/month/year) of this TimeTag will automatically be converted from the value for the original TimeTag's timezone to the new timezone.
For some zones, the minute might also change.
Zone input can be like 'UTC-5' or like 'America/New_York'
You can find a list of named zones here: 🔗https://en.wikipedia.org/wiki/List_of_tz_database_time_zones using the "TZ database name"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/TimeTag.java#L407
Name<TownTag.assistants>
ReturnsListTag
DescriptionReturns a list of the town's assistants. Players will be valid PlayerTag instances, non-players will be plaintext of the name.
Deprecated in favor of Tag:TownTag.members_by_rank.
RequiresDepenizen, Towny
Deprecateduse 'members_by_rank'
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/towny/TownTag.java#L194
Name<TownTag.plots>
ReturnsListTag(ChunkTag)
DescriptionReturns a list of chunks the town has claimed.
Note that this will not be accurate if the plot size has been changed in your Towny config.
Generally, use Tag:TownTag.cuboids instead.
RequiresDepenizen, Towny
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/objects/towny/TownTag.java#L489
Name<trade[<trade>]>
ReturnsTradeTag
DescriptionReturns a trade object constructed from the input value.
Refer to ObjectType:TradeTag.
Generated Example
- narrate <trade[trade[result=diamond;max_uses=10;inputs=stick]]>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L348
Name<util.color_names>
ReturnsListTag
DescriptionReturns a list of all color names recognized by ObjectType:ColorTag.
Generated Example
- foreach <util.color_names> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L431
Name<util.current_time_millis>
ReturnsElementTag(Number)
DescriptionReturns the number of milliseconds since Jan 1, 1970.
Note that this can change every time the tag is read!
Use Tag:util.time_now if you need stable time.
Generated Example
- narrate "the number value is <util.current_time_millis>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L832
Name<util.delta_time_since_start>
ReturnsDurationTag
DescriptionReturns the duration of delta time since the server started.
Note that this is delta time, not real time, meaning it is calculated based on the server tick,
which may change longer or shorter than expected due to lag or other influences.
If you want real time instead of delta time, use Tag:util.real_time_since_start.
Generated Example
- ratelimit <player> <util.delta_time_since_start>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L806
Name<util.event_stats_data>
ReturnsListTag(MapTag)
DescriptionReturns the raw data for Tag:util.event_stats, as a ListTag of MapTags.
Generated Example
- foreach <util.event_stats_data> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L602
Name<util.java_class_context>
ReturnsListTag
DescriptionReturns a list of class names in the current stack history.
More stable than Tag:util.stack_trace
This contains a lot of stray content, the first 4 to 20 or so classes in this list are likely irrelevant to what you're searching for.
Each entry in the list is a raw class name, like "com.denizenscript.denizencore.tags.core.UtilTagBase".
Class names may appear multiple times in a row if that class contains methods that call each other.
Generated Example
- foreach <util.java_class_context> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L995
Name<util.list_numbers_to[<#>]>
ReturnsListTag
DescriptionReturns a list of integer numbers from 1 to the specified input number (inclusive).
Note that you should NEVER use this as the input to a "foreach" command. Instead, use Command:repeat.
In most cases, there's a better way to do what you're trying to accomplish than using this tag.
Consider instead using Tag:util.list_numbers
Generated Example
- foreach <util.list_numbers_to[4]> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L298
Name<util.list_numbers[to=<#>;(from=<#>/{1});(every=<#>/{1})]>
ReturnsListTag
DescriptionReturns a list of integer numbers in the specified range.
You must specify at least the 'to' input, you can optionally specify 'from' (default 1), and 'every' (default 1).
Note that this generally should not be used as input to the 'foreach' command. Instead, use Command:repeat.
Example
# Narrates "1, 2, and 3"
- narrate <util.list_numbers[to=3].formatted>
Example
# Narrates "3, 4, and 5"
- narrate <util.list_numbers[from=3;to=5].formatted>
Example
# Narrates "4, 8, and 12"
- narrate <util.list_numbers[from=4;to=12;every=4].formatted>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L266
Name<util.mongo_connections>
ReturnsElementTag
DescriptionReturns a list of all Mongo connections opened by Command:mongo.
Generated Example
- narrate <util.mongo_connections>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L916
Name<util.random_simplex[x=<#.#>;(y=<#.#>);(z=<#.#>);(w=<#.#>)]>
ReturnsElementTag(Decimal)
DescriptionReturns a pseudo-random decimal number from -1 to 1, based on a Simplex Noise algorithm. See 🔗https://en.wikipedia.org/wiki/Simplex_noise
Input map is like "x=1.0", or "x=1.0;y=2.0", or "x=1.0;y=2.0;z=3" or "x=1;y=2;z=3;w=4"
(That is: 1d, 2d, 3d, or 4d).
Generated Example
- narrate "the decimal value is <util.random_simplex>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L236
Name<util.random.boolean>
ReturnsElementTag(Boolean)
DescriptionDeprecated in favor of Tag:util.random_boolean
Deprecateduse 'util.random_boolean' with a '_'
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L125
Name<util.random.decimal>
ReturnsElementTag(Decimal)
DescriptionDeprecated in favor of Tag:util.random_decimal
Deprecateduse 'util.random_decimal' with a '_'
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L113
Name<util.random.gauss>
ReturnsElementTag(Decimal)
DescriptionDeprecated in favor of Tag:util.random_gauss
Deprecateduse 'util.random_gauss' with a '_'
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L137
Name<util.random.uuid>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:util.random_uuid
Deprecateduse 'util.random_uuid' with a '_'
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L149
Name<util.real_time_since_start>
ReturnsDurationTag
DescriptionReturns the duration of real time since the server started.
Note that this is real time, not delta time, meaning that the it is accurate to the system clock, not the server's tick.
System clock changes may cause this value to become inaccurate.
In many cases Tag:util.delta_time_since_start is preferable.
Generated Example
- ratelimit <player> <util.real_time_since_start>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L819
Name<util.redis_connections>
ReturnsListTag
DescriptionReturns a list of all Redis connections opened by Command:redis.
Generated Example
- foreach <util.redis_connections> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L893
Name<util.runlater_ids>
ReturnsListTag
DescriptionReturns a list of all scheduled task IDs for Command:runlater.
Note that usages of runlater that didn't specify an ID will not show up here.
Generated Example
- foreach <util.runlater_ids> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L622
Name<util.sql_connections>
ReturnsListTag
DescriptionReturns a list of all SQL connections opened by Command:sql.
Generated Example
- foreach <util.sql_connections> as:entry:
    - narrate "found <[entry]>"
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L867
Name<util.stack_trace>
ReturnsElementTag
DescriptionGenerates and shows a stack trace for the current context.
This tag is strictly for internal debugging reasons.
WARNING: Different Java versions generate different stack trace formats and details.
WARNING: Java internally limits stack trace generation in a variety of ways. This tag cannot be relied on to output anything.
For gathering stable context, prefer Tag:util.java_class_context
Generated Example
- narrate <util.stack_trace>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L981
Name<util.time_now>
ReturnsTimeTag
DescriptionReturns the current system date/time.
This value may be wrong if a server is currently heavily lagging, as it only updates once each tick.
Use Tag:util.current_time_millis if you need sub-tick precision.
Generated Example
- flag server myflag expire:<util.time_now>
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/tags/core/UtilTagBase.java#L474
Name<world[<world>]>
ReturnsWorldTag
DescriptionReturns a world object constructed from the input value.
Refer to ObjectType:WorldTag.
Generated Example
- adjust <world[space]> destroy
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/utilities/CommonRegistries.java#L358
Name<WorldTag.enough_deep_sleeping[(<#>)]>
ReturnsElementTag(Boolean)
DescriptionReturns whether enough players have been in bed long enough for the night to advance (generally 100 ticks).
Loops through all online players, so is typically used after checking Tag:WorldTag.enough_sleeping
By default, automatically checks the players_sleeping_percentage gamerule,
but this can optionally be overridden by specifying a percentage integer.
Any integer above 100 will always yield 'false'. Requires at least one player to be sleeping to return 'true'.
Generated Example
- if <player.location.world.enough_deep_sleeping>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L1009
Name<WorldTag.enough_sleeping[(<#>)]>
ReturnsElementTag(Boolean)
DescriptionReturns whether enough players are sleeping to prepare for the night to advance.
Typically used before checking Tag:WorldTag.enough_deep_sleeping
By default, automatically checks the players_sleeping_percentage gamerule,
but this can optionally be overridden by specifying a percentage integer.
Any integer above 100 will always yield 'false'. Requires at least one player to be sleeping to return 'true'.
Generated Example
- if <player.location.world.enough_sleeping>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L988
Name<WorldTag.has_storm>
ReturnsElementTag(Boolean)
DescriptionReturns whether there is currently a storm in this world.
ie, whether it is raining. To check for thunder, use Tag:WorldTag.thundering.
Generated Example
- if <player.location.world.has_storm>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L733
Name<WorldTag.is_day>
ReturnsElementTag(Boolean)
DescriptionReturns whether it is considered day in this world. Players are not allowed to sleep at this time.
Note that in certain worlds, this and Tag:WorldTag.is_night can both be 'false'! (The nether, for example!)
In typical worlds, this is 'true' if Tag:WorldTag.sky_darkness is less than 4.
To check the current time without storm interference, see Tag:WorldTag.time and related tags.
Generated Example
- if <player.location.world.is_day>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L1042
Name<WorldTag.is_night>
ReturnsElementTag(Boolean)
DescriptionReturns whether it is considered night in this world. Players are typically allowed to sleep at this time.
Note that in certain worlds, this and Tag:WorldTag.is_day can both be 'false'! (The nether, for example!)
In typical worlds, this is 'true' if Tag:WorldTag.sky_darkness is 4 or higher.
To check the current time without storm interference, see Tag:WorldTag.time and related tags.
Generated Example
- if <player.location.world.is_night>:
    - narrate "it was true!"
- else:
    - narrate "it was false!"
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L1055
Name<WorldTag.simulation_distance>
ReturnsElementTag(Number)
MechanismWorldTag.simulation_distance
DescriptionReturns the simulation distance of this world. Chunks inside of this radius to players are ticked and processed.
See also Tag:WorldTag.view_distance
Generated Example
- narrate "the number value is <player.location.world.simulation_distance>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L974
Name<WorldTag.time.duration>
ReturnsDurationTag
DescriptionDeprecated in favor of Tag:WorldTag.time_duration
DeprecatedUse Tag:WorldTag.time_duration instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L614
Name<WorldTag.time.full>
ReturnsDurationTag
DescriptionDeprecated in favor of Tag:WorldTag.time_full
DeprecatedUse Tag:WorldTag.time_full instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L627
Name<WorldTag.time.period>
ReturnsElementTag
DescriptionDeprecated in favor of Tag:WorldTag.time_period
DeprecatedUse Tag:WorldTag.time_period instead.
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L640
Name<WorldTag.view_distance>
ReturnsElementTag(Number)
MechanismWorldTag.view_distance
DescriptionReturns the view distance of this world. Chunks are visible to players inside this radius.
See also Tag:WorldTag.simulation_distance
Generated Example
- narrate "the number value is <player.location.world.view_distance>"
Groupproperties
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L960
Name<WorldTag.world_type>
ReturnsElementTag
DescriptionReturns the world type of the world.
Can return any enum from: 🔗https://hub.spigotmc.org/javadocs/spigot/org/bukkit/WorldType.html
Generated Example
- narrate <player.location.world.world_type>
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/objects/WorldTag.java#L412
Name<yaml[<id>].parsed_key[<path>]>
ReturnsElementTag
DescriptionReturns the value from a data key on the YAML document as an ElementTag, ListTag, or MapTag.
Will automatically parse any tags contained within the value of the key, preserving key data structure
(meaning, a tag that returns a ListTag, inside a data list, will insert a ListTag inside the returned ListTag, as you would expect).
Generally, prefer to use Tag:yaml.read.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/scripts/commands/file/YamlCommand.java#L743

Just Barely Matched Results



Command


Nameattach
Syntaxattach [<entity>|...] [to:<entity>/cancel] (offset:<offset>) (relative) (yaw_offset:<#.#>) (pitch_offset:<#.#>) (sync_server) (no_rotate/no_pitch) (for:<player>|...)
Short DescriptionAttaches a list of entities to another entity, for client-visible motion sync.
Full DescriptionAttaches a list of entities to another entity, for client-visible motion sync.

You must specify the entity or list of entities to be attached.
You must specify the entity that they will be attached to, or 'cancel' to end attachment.

Optionally, specify an offset location vector to be a positional offset. This can include a yaw/pitch to offset those as well.
Note that setting an offset of 0,0,0 will produce slightly different visual results from not setting any offset.

Optionally, specify 'relative' to indicate that the offset vector should rotate with the target entity.
If relative is used, optionally specify yaw_offset and/or pitch_offset to add an offset to rotation of the target entity when calculating the attachment offset.

Optionally, specify 'for' with a player or list of players to only sync motion for those players.
If unspecified, will sync for everyone.

Optionally, specify 'sync_server' to keep the serverside position of the attached entities near the target entity.
This can reduce some visual artifacts (such as entity unloading at distance), but may produce unintended functional artifacts.
Note that you should generally only use 'sync_server' when you exclude the 'for' argument.

Optionally specify 'no_rotate' to retain the attached entity's own rotation and ignore the target rotation.
Optionally instead specify 'no_pitch' to retain the attached entity's own pitch, but use the target yaw.

Note that attaches involving a player will not be properly visible to that player, but will still be visible to *other* players.

It may be ideal to change setting "Packets.Auto init" in the Denizen config to "true" to guarantee this command functions as expected.
Related Tags<EntityTag.attached_entities[(<player>)]> Returns the entities attached to this entity by Command:attach. (...)
<EntityTag.attached_to[(<player>)]> Returns the entity that this entity was attached to by Command:attach. (...)
<EntityTag.attached_offset[(<player>)]> Returns the offset of an attachment for this entity to another that was attached by Command:attach. (...)
Usage Example
# Use to attach random NPC to the air 3 blocks above a linked NPC.
- attach <server.list_npcs.random> to:<npc> offset:0,3,0
Groupentity
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/entity/AttachCommand.java#L26
NameClickable
Syntaxclickable (<script>/cancel:<id>) (def:<element>|.../defmap:<map>/def.<name>:<value>) (usages:<#>) (for:<player>|...) (until:<duration>)
Short DescriptionGenerates a clickable command for players.
Full DescriptionGenerates a clickable command for players.

Generally, prefer to write a command script and simply "on_click[/yourcommandhere]" rather than using generated clickables.
Generated clickables are a utility intended to enable clickables that are restricted from being normally accessed without receiving a clickable message.

Specify a task script to run, or put an executable script section as sub-commands.

When running a task, optionally any definitions to pass.

When using a sub-section, the running commands will be in their own queue, but copy out the original queue's definitions and context source.

Optionally specify a maximum number of usages (defaults to unlimited).

Optionally specify a maximum duration it can be used for with 'until'.

If no duration is specified, the clickable will remain valid until the server stops or restarts.
WARNING: if you use clickables very often without a duration limit, this can lead to a memory leak.
Clickables that have a specified max duration will occasionally be cleaned from memory.

Optionally specify what players are allowed to use it. Defaults to unrestricted (any player that sees the click message may use it).
Note that it is possible for a player to find the generated command ID in their logs and send it to another player to "/" execute, so if you don't restrict player access it may be abused in that way.

This internally generates a command of the form "/denizenclickable <generated_id>".

Players will need the permission "denizen.clickable" to be able to use this.

You can cancel a clickable at any time via "cancel:<id>", where ID is the generated ID from saving the initial generated command.
Related Tags<entry[saveName].command> returns the command to use in "on_click".
<entry[saveName].id> returns the generate command's ID.
<ElementTag.on_click[<command>]> Adds a click command to the element, which makes the element execute the input command when clicked. (...)
Usage Example
# Use to generate a clickable that just narrates "hello there!" when clicked.
- clickable save:my_clickable:
    - narrate "Hello there!"
- narrate "Click <blue><element[here].on_click[<entry[my_clickable].command>]><reset>!"
Usage Example
# Use to generate a clickable message that will run a task script named 'test_script'.
- clickable test_script save:my_clickable
- narrate "Click <blue><element[here].on_click[<entry[my_clickable].command>]><reset>!"
Usage Example
# Use to generate a clickable message that will run a task script named 'reward_drop', that can be used by only the first person to click it.
- clickable reward_drop usages:1 save:reward
- announce "<blue><bold><element[Reward Here].on_click[<entry[reward].command>]><reset>!"
Usage Example
# Use to generate a clickable message exclusively for the linked player, that must be used within a minute.
- clickable your_secret def:quest3 for:<player> until:1m save:secretmessage
- narrate "Do you want to know the secret? <blue><element[Yes].on_click[<entry[secretmessage].command>]><reset> / No."
Usage Example
# Use to generate a clickable message and cancel it manually later.
- clickable test_script save:my_clickable save:myclickable
- narrate "Click <blue><element[here].on_click[<entry[my_clickable].command>]><reset> before you land!"
- waituntil rate:1s max:30s <player.is_on_ground>
- clickable cancel:<entry[myclickable].id>
Groupplayer
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/player/ClickableCommand.java#L38
NameExecute
Syntaxexecute [as_player/as_op/as_npc/as_server] [<Bukkit-command>] (silent)
Short DescriptionExecutes an arbitrary server command as if the player, NPC, or server typed it in.
Full DescriptionAllows the execution of server commands through a Denizen script.
Commands can be executed as the server, as an npc, as an opped player, or as a player, as though it was typed by the respective source.

Note that you should generally avoid using 'as_op', which is only meant for very specific special cases. 'as_server' is usually a better option.

Note: do not include the slash at the start. A slash at the start will be interpreted equivalent to typing two slashes at the front in-game.

Note that this is a Denizen script command that executes Bukkit commands.
This can be considered the inverse of '/ex' (a Bukkit command that executes Denizen script commands).

The 'silent' option can be specified with 'as_server' to hide the output. Note that 'silent' might or might not work with different plugins depending on how they operate.
It can also be used with 'as_player' or 'as_op' to use network interception to silence the command output to player chat.

Generally, you should never use this to execute a vanilla command, there is almost always a script command that should be used instead.
Usually the 'execute' command should be reserved for interacting with external plugins.
Related Tags<entry[saveName].output> returns the output to an as_server sender.
Usage Example
# Use to execute the save-all command as the server.
- execute as_server "save-all"
Usage Example
# Use to make the linked (non-op) player execute a command that normally only ops can use. Generally avoid ever doing this.
- execute as_op "staffsay hi"
Groupserver
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/scripts/commands/server/ExecuteCommand.java#L36
Namelibsdisguise
Syntaxlibsdisguise [remove/player/mob/misc] (type:<entity type>) (target:<entity>) (name:<text>) (display_name:<text>) (baby) (id:<item>) (self) (hide_name)
Short DescriptionDisguises an entity as a different entity.
Full DescriptionDisguises an entity using Lib's Disguises.
This hides the true entity and replaces it with a fake entity as a disguise.
The entity mimics the same actions and movement as the entity in a disguise.

The required argument depends on the first argument:
For 'mob':
Specify an entity type.
Optionally, specify if the mob is a baby or not (defaults to false).
For 'player':
Specify the player name.
For 'misc':
Specify a misc disguise type.
Optionally, specify id as an ItemTag.

Removing a disguise shows the true entity again for all players.
Only one disguise can be set per target, if another one is set, the previous disguise is removed.

Optionally specify 'self' to hide the disguise from the target player, so they still see their normal player.

Optionally specify 'baby' to make the disguised mob a baby (where applicable).

Optionally specifiy 'hide_name' to hide the nameplate of a player disguise.

Optionally specify 'display_name' to set the display name of the disguise.
Related Tags<EntityTag.libsdisguise_is_disguised> Returns whether the entity is in a disguise.
<EntityTag.libsdisguise_disguise> Returns the disguise of the entity.
Usage Example
# Use to disguise the linked player as a different player named Bob.
- libsdisguise player name:Bob
Usage Example
# Use to disguise the linked player as a baby Zombie, which can only be seen by other players.
- libsdisguise mob type:ZOMBIE baby:true self:true
Usage Example
# Use to disguise the linked player as a Boat.
- libsdisguise misc type:Boat
Usage Example
# Use to disguise the linked player as a Sponge Block.
- libsdisguise misc type:Falling_Block id:sponge
Usage Example
# Use to remove the disguise from the linked player.
- libsdisguise remove
Usage Example
# Use to disguise an entity as a player named Bob.
- libsdisguise player target:<player.target> name:Bob
Usage Example
# Use to remove a disguise from an entity.
- libsdisguise remove target:<player.target>
GroupDepenizen
RequiresDepenizen, LibsDisguises
Sourcehttps://github.com/DenizenScript/Depenizen/blob/master/src/main/java/com/denizenscript/depenizen/bukkit/commands/libsdisguises/LibsDisguiseCommand.java#L25

Event


Nameloot generates
Event Lines loot generates
Triggerswhen loot is generated somewhere in the world (like a vanilla chest being opened for the first time).
Generated Examplesafter loot generates:
Has Playerwhen the linked entity is a player. - this adds switches 'flagged:<flag name>' + 'permission:<node>', in addition to the '<player>' link.
Switchesfor:<type> to only process the event if a certain inventory type is receiving loot (like 'for:chest').
Contexts<context.entity> returns an entity that caused loot generation, if any.
<context.inventory> returns the InventoryTag that loot is generating into.
<context.items> returns a ListTag of the items being generated.
<context.loot_table_id> returns an element indicating the minecraft key for the loot-table that was generated.
Determine"LOOT:<ListTag(ItemTag)>" to change the list of items that will generate as loot.
CancellableTrue - This adds <context.cancelled> and determine 'cancelled' or 'cancelled:false'
Has LocationTrue - This adds the switches 'in:<area>', 'location_flagged:<flag>', ...
GroupWorld
Sourcehttps://github.com/DenizenScript/Denizen/blob/dev/plugin/src/main/java/com/denizenscript/denizen/events/world/LootGenerateScriptEvent.java#L22

ObjectType


NameDiscordBotTag
Prefixdiscord@
Base TypeElementTag
ImplementsFlaggableObject
Identity FormatThe identity format for Discord bots is the bot ID (as chosen in Command:discord).
For example: mybot
DescriptionA DiscordBotTag is an object that represents a Discord bot powered by dDiscordBot.

This object type is flaggable.
Flags on this object type will be stored in: plugins/dDiscordBot/flags/bot_(botname).dat
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordBotTag.java#L19
NameDiscordEmbedTag
Prefixdiscordembed@
Base TypeElementTag
Identity FormatThe identity format for Discord embeds is a map of embed data.
The map matches the key set documented at Tag:DiscordEmbedTag.with.as, along with a "fields" key as a ListTag of MapTags with keys "title", "value", and "inline".
DescriptionA DiscordEmbedTag is an object that represents a Discord embed for use with dDiscordBot.
RequiresdDiscordBot
Sourcehttps://github.com/DenizenScript/dDiscordBot/blob/master/src/main/java/com/denizenscript/ddiscordbot/objects/DiscordEmbedTag.java#L21
NameListTag
Prefixli@
Base TypeElementTag
Identity FormatThe identity format for ListTags is each item, one after the other, in order, separated by a pipe '|' symbol.
For example, for a list of 'taco', 'potatoes', and 'cheese', it would be 'li@taco|potatoes|cheese|'
A list with zero items in it is simply 'li@',
and a list with one item is just the one item and a pipe on the end.

If the pipe symbol "|" appears in a list entry, it will be replaced by "&pipe",
similarly if an ampersand "&" appears in a list entry, it will be replaced by "&amp".
This is a subset of Denizen standard escaping, see Language:Escaping System.
DescriptionA ListTag is a list of any data. It can hold any number of objects in any order.
The objects can be of any Denizen object type, including another list.

List indices start at 1 (so, the tag 'get[1]' gets the very first entry)
and extend to however many entries the list has (so, if a list has 15 entries, the tag 'get[15]' gets the very last entry).

Inputs that accept list indices will generally accept 'first' to mean '1', 'last' to mean the last entry in the list,
or negative numbers to automatically select an index starting at the end - so for example 'get[-1]' gets the last entry, 'get[-2]' gets the second-to-last, etc.
Synonyms (Search Aid)arraytag
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/ListTag.java#L32
NameMapTag
Prefixmap@
Base TypeElementTag
Identity FormatThe identity format for MapTags is a replica of property syntax - square brackets surrounded a semi-colon separated list of key=value pairs.
For example, a map of "taco" to "food", "chicken" to "animal", and "bob" to "person" would be "map@[taco=food;chicken=animal;bob=person]"
A map with zero items in it is simply 'map@[]'.

If the semicolon symbol ";" appears in a key or value, it will be replaced by "&sc", an equal sign "=" will become "&eq",
a left bracket "[" will become "&lb", a right bracket "]" will become "&rb", and an ampersand "&" will become "&amp".
This is a subset of Denizen standard escaping, see Language:Escaping System.
DescriptionA MapTag represents a mapping of keys to values.
Keys are plain text, case-insensitive.
Values can be anything, even lists or maps themselves.

Any given key can only appear in a map once (ie, no duplicate keys).
Values can be duplicated into multiple keys without issue.

Order of keys is preserved. Casing in keys is preserved in the object but ignored for map lookups.
Sourcehttps://github.com/DenizenScript/Denizen-Core/blob/master/src/main/java/com/denizenscript/denizencore/objects/core/MapTag.java#L25