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

    type: assignment
        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

    type: Interact
            Proximity trigger:
                    - chat "Hi there, <>!"
                    - run mytask

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

Item Scripts

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

Item scripts hold data on custom items.

World Scripts

  type: world
    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

    type: task
    - 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

    type: book
    title: My Fancy Book
    author: NotNotch
    - 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

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


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

World scripts run world events.