TESSERA

systems 02

Welcome

Tessera can greet players on join with a title, an actionbar line, chat lines, a broadcast and a written book. Everything lives in the welcome section of config.yml.

The sequence runs welcome.delay_ticks after join, which gives the client time to render the world. First joins and returning joins are configured separately.

Structure

welcome:
  enabled: true
  delay_ticks: 25
  first_join:
    enabled: true
    sound:
      type: "UI_TOAST_CHALLENGE_COMPLETE"
      volume: 1.0
      pitch: 1.0
    title: "<gradient:#00c6ff:#0072ff><bold>WELCOME TO THE SERVER</bold></gradient>"
    subtitle: "<gray>Greetings, <yellow>%player%</yellow>!</gray>"
    fade_in_ticks: 15
    stay_ticks: 80
    fade_out_ticks: 20
    actionbar: "<gray>Have fun on your first adventure</gray>"
    chat_lines:
      - "<gray>Type <yellow>/tessera menu</yellow> to browse the catalog.</gray>"
    broadcast:
      enabled: true
      message: "<aqua>%player%</aqua> <gray>joined for the first time.</gray>"
    book:
      enabled: true
      title: "<gradient:#00c6ff:#0072ff>Starter Guide</gradient>"
      author: "Tessera Server"
      pages:
        - "<bold>Welcome to Tessera</bold>"
  regular_join:
    enabled: true
    # same keys, minus the book

Keys

KeyApplies toNotes
enabledbothSection switch. welcome.enabled turns the whole system off.
delay_ticksglobalDelay before the sequence runs.
sound.type, sound.volume, sound.pitchbothPlayed to the joining player.
title, subtitlebothTitle card.
fade_in_ticks, stay_ticks, fade_out_ticksbothTitle timing.
actionbarbothOne actionbar line.
chat_linesbothList of lines sent to the joining player only.
broadcast.enabled, broadcast.messagebothSent to everyone.
book.enabled, book.title, book.author, book.pagesfirst joinWritten book placed in the inventory.

All text is MiniMessage and glyphs are substituted, so :tessera_badge: works here too. Chat lines support MiniMessage click and hover tags.

Four placeholders are replaced in every welcome string:

PlaceholderValue
%player%Player name
%displayname%Display name
%online%Players online
%max_players%Server slot count

PlaceholderAPI placeholders are not parsed here in 2.0.0.

First join detection

A join counts as a first join when the server has never seen the player and the player has no tessera:welcomed marker in their PersistentDataContainer. The marker is written right after the first-join sequence runs, so replaying it by hand does not re-trigger it on the next login.

Testing

/tessera welcome      # tessera.admin, runs the join sequence on yourself