Denizen/Types of Scripts

From Citizens Wiki

For more up-to-date information and full details on specific features (individual commands or tags, for example), check the Meta Documentation.

If you want a full tutorial to help get you set up, check out the Tutorial Videos on youtube or the Beginner's Guide text website.

If you need quick help, visit our Discord group.




This wiki is outdated, please view the tutorial videos/guide, meta documentation, or Discord group (all linked above) for up-to-date information!





In Denizen, there are multiple different types of scripts each made to fill a different purpose. When writing a script, you will need to use several of these, so they're important to know!

(Note: Page under construction! There's a lot more than just what's listed here!)

Types: interact, book, item, entity, task, assignment, procedure, world, format, inventory

Also: All the example scripts on this page work together...

To see them all work, add them all to your server and assign "MyAssignmentScript" to an NPC, then right-click it.

Assignment Script

MyAssignmentScript:
    type: assignment
    actions:
        on assignment:
        - chat "I has been assigned!"
        - trigger name:proximity state:true

The assignment script is the first script any NPC needs - it lists everything the NPC does!

One of the most important uses is the "on assignment:" action, which is run when the script is assigned to an NPC, in which you normally enable triggers, and run other important commands.

You can link interact scripts by adding:

    Interact Scripts:
    - 10 MyInteractScript

Interact Scripts

MyInteractScript:
    type: Interact
    Steps:
        '1':
            Proximity trigger:
                Entry:
                    Script:
                    - chat "Hi there, <player.name>!"
                    - run mytask

Interact scripts control what the NPC does when a player fires triggers such as proximity, click, chat, or damage.

Item Scripts

myitem:
    type: item
    material: wool:3
    recipe:
    - air|air|air
    - dirt|wool|dirt
    - air|air|air

Item scripts hold data on custom items.

World Scripts

formatybit:
  type: world
  events:
    on formattybit command:
    - narrate format:formatdemo "Hello, I'm a well-formatted narrate, caused by a world event '/formattybit' command!"
    - determine fulfilled


World scripts run world events.

Task Scripts

mytask:
    type: task
    script:
    - chat "Here, a book for you!"
    - give myfancybook

Task scripts contain random scripts to be run by other scripts using the command - run (taskscriptname)

Book Scripts

myfancybook:
    type: book
    title: My Fancy Book
    author: NotNotch
    text:
    - This is my book. There are many like it, but this one is mine!
    - Many <n>new <n> lines!
    - <p>Paragraphs, <p>too!

Book scripts hold information on a complex book item.

Each - line in the text: category is a new page.

After defining a book in a script, you can give it to a player in any runnable script using - give (bookname)

Format Scripts

formatdemo:
  type: format
  format: "<&f>[<&b>Message<&f>- <&2><text><&f>]"

CommandScripts

my custom command:
  type: command
  name: formatbit
  script:
  - narrate format:formatdemo "Hello, I'm a well-formatted narrate, caused by a command script '/formatbit' command!"


World scripts run world events.