QuestLines Titles
A player title system for Hytale servers. Grant players richly formatted titles as quest rewards, display them as chat prefixes, and let players choose their active title from a selection UI.
How It Works
QuestLineTitles maintains two stores: a server-wide title catalogue
(titles.json) that defines every available title, and per-player
title data that records which titles each player has unlocked and
which one is currently active.
Titles are awarded through QuestLines actions (giveTitle:), admin
commands (/titleadmin grant), or directly via the
developer API. Once a player owns at least one
title they can open /title to browse their collection and set an
active title. The active title is then exposed to chat plugins and PlaceholderAPI.
QuestLineTitles works as a standalone plugin. The
QuestLines integration (actions,
requirements, and the {title} variable) is automatically enabled
when QuestLines Core is also installed on the server.
titles.json
All available titles are defined in mods/QuestLineTitles/titles.json.
The file is created with a set of defaults on first start and can be edited
directly or updated via /titleadmin. Reload with
/titleadmin reload to pick up file changes without restarting.
Each entry is keyed by a unique title ID (convention: category:name)
and carries a category string and a value display string.
The display string supports rich formatting — see
Title Formatting below.
{
"misc:newcomer": {
"category": "misc",
"value": "&3Newcomer"
},
"misc:king": {
"category": "misc",
"value": "{#FFAA00}{b}King{/}{/}"
},
"pvp:champion": {
"category": "pvp",
"value": "<gradient:#FF4444:#FFAA00>Champion</gradient>"
},
"builder:artisan": {
"category": "builder",
"value": "<rainbow>Artisan</rainbow>"
}
}
| Field | Required | Description |
|---|---|---|
category |
No (defaults to misc) |
Groups related titles together in the selection UI. Can be any string. |
value |
No (defaults to the ID) | The display text shown in chat, the UI, and placeholders. Supports rich formatting tags. |
Title Formatting
Title values support three overlapping formatting syntaxes. All three are parsed by the same formatter and can be mixed freely in a single value string.
Brace Tags
| Tag | Effect |
|---|---|
{b}text{/} | Bold |
{i}text{/} | Italic |
{u}text{/} | Underline |
{m}text{/} | Monospace |
{#RRGGBB}text{/} | Hex color (3- or 6-digit) |
{link:URL}text{/} | Clickable link |
{/} | Closes the innermost open tag |
XML-style Tags
| Tag | Effect |
|---|---|
<b>text</b> or <bold> | Bold |
<i>text</i> or <italic> | Italic |
<u>text</u> or <underlined> | Underline |
<m>text</m> or <monospace> | Monospace |
<#RRGGBB>text</#RRGGBB> | Hex color |
<gold>text</gold> | Named color (Minecraft palette: gold, red, aqua, green, etc.) |
<rainbow>text</rainbow> | Per-character rainbow colors |
<gradient:#FF0000:#0000FF>text</gradient> | Color gradient (2+ stops) |
<url:https://...>text</url> | Clickable link |
&-Codes
Standard Minecraft &X codes are supported. A color code resets
all active formatting before applying the new color.
| Code | Effect |
|---|---|
&0–&9, &a–&f | Minecraft color palette |
&l | Bold |
&o | Italic |
&r | Reset all formatting |
// &-code color + bold
"&6&lLegend"
// Brace-tag hex color with bold
"{#FFAA00}{b}King{/}{/}"
// XML gradient
"<gradient:#FF4444:#FFAA00>Champion</gradient>"
// Tags can nest freely
"{b}{#FF55FF}Grand{/} Explorer{/}"
Commands
Player Commands
| Command | Permission | Description |
|---|---|---|
/title |
none | Opens the title selection UI. Players can browse their unlocked titles and set one as active. |
Admin Commands
All /titleadmin subcommands require the questlinetitles.titleadmin permission.
| Command | Description |
|---|---|
/titleadmin grant <username> <titleId> |
Unlock a title for a player. No-op if they already own it. |
/titleadmin remove <username> <titleId> |
Revoke a title from a player. Also clears active title if it was the removed one. |
/titleadmin list <username> |
List all titles a player has unlocked. |
/titleadmin available |
List all titles defined in titles.json. |
/titleadmin ui <username> |
Open the admin title management UI, optionally viewing a specific player’s data. |
QuestLines Integration
When QuestLines Core is installed alongside QuestLineTitles, the following actions, requirements, and text variables are automatically registered with the QuestLines engine.
No extra configuration is needed. QuestLineTitles detects QuestLines Core
at runtime and registers the integration automatically. A log line confirms:
[Titles] QuestLines detected – registering requirements, actions & variables.
Actions
| Action | Description |
|---|---|
giveTitle:<titleId> |
Unlock the specified title for the player. No-op if already owned. |
removeTitle:<titleId> |
Revoke the specified title from the player. Also clears active title if it matches. |
Requirements
| Requirement | Passes when… |
|---|---|
hasTitle:<titleId> |
The player has unlocked the specified title (whether or not it is active). |
titleActive:<titleId> |
The player’s currently active title is the specified title. |
Text Variable
| Variable | Replaced with… |
|---|---|
{title} |
The player’s active title as plain text (all formatting stripped). Empty string if no title is active. |
// Quest response action: award a title on quest completion
"Actions": [
"questCompleted:dragon_slayer",
"giveTitle:pvp:dragonslayer",
"message:You earned the title: {title}!"
]
// Requirement: only show page if player has the title
"Requirements": [ "hasTitle:pvp:dragonslayer" ]
Integrations
VaultUnlocked
When VaultUnlocked is installed, QuestLineTitles registers as a ChatUnlocked provider. Chat plugins that consume VaultUnlocked’s chat API will automatically receive the player’s active title as a chat prefix. No additional configuration is required.
PlaceholderAPI
When PlaceholderAPI is installed, QuestLineTitles registers the
title expansion. Use %title% in any
PlaceholderAPI-aware plugin (e.g. a chat formatter) to insert the player’s
active title. The returned value has {…} formatting tags
stripped but retains &-codes and §-codes for downstream
color-code processing.
File Layout
| File | Purpose |
|---|---|
mods/QuestLineTitles/titles.json |
Server-wide title catalogue. Edit to add, rename, or remove titles. |
mods/QuestLineTitles/playerdata/<username>.json |
Per-player title state: unlocked titles, timestamps, and active title. |
Permissions
| Permission | Default | Description |
|---|---|---|
questlinetitles.titleadmin |
false | Required for all /titleadmin subcommands. |