Skip to content

Messages Customization

Every message Journey sends can be customized through messages.json. Change text, colors, and formatting for tasks, parties, global events, bounty boards, levelables, and more.

File: config/journey/messages.json


Journey uses MiniMessage for all text formatting.

Colors: <red>, <green>, <blue>, <yellow>, <gold>, <gray>, <dark_gray>, <white>

Hex colors: <#FF5555>, <color:#FF00FF>

Styles: <bold>, <italic>, <underlined>, <strikethrough>

Gradients: <gradient:red:blue>Text</gradient>


{
"tasks": { },
"party": { },
"globalTasks": { },
"bountyBoard": { },
"contracts": { },
"levelables": { },
"general": { }
}

{
"tasks": {
"trackSuccess": "<green>Now tracking: <yellow>{task_name}",
"trackAlreadyTracked": "<yellow>This task is already being tracked",
"trackMaxReached": "<red>You have reached the maximum number of tracked tasks ({max_tracked})",
"trackNotActive": "<red>You don't have this task active",
"untrackSuccess": "<yellow>No longer tracking: <gray>{task_name}",
"taskStarted": "<green>Task started: <yellow>{task_name}",
"taskCompleted": "<gold>Task completed: <green>{task_name}",
"taskFailed": "<red>Task failed: <gray>{task_name}",
"subtaskCompleted": "<gold>Subtask completed: <green>{subtask_name}",
"subtaskProgress": "<blue>{subtask_name}: <yellow>{progress}/{target}",
"objectiveCompleted": "<gray>[<green>Done<gray>] {objective_name}",
"objectiveProgress": "<gray>[<yellow>{progress}/{target}<gray>] {objective_name}",
"objectiveLocked": "<dark_gray>[Locked] {objective_name}",
"taskNotFound": "<red>Task not found: {task_id}",
"taskAlreadyActive": "<yellow>You already have this task active",
"taskRequirementsNotMet": "<red>You don't meet the requirements for this task"
}
}

Placeholders: {task_name}, {task_id}, {subtask_name}, {objective_name}, {progress}, {target}, {max_tracked}


{
"party": {
"created": "<green>Party created: <yellow>{party_name}",
"disbanded": "<red>Party disbanded",
"joined": "<green>{player} joined the party",
"left": "<yellow>{player} left the party",
"youJoined": "<green>You joined <yellow>{party_name}",
"youLeft": "<yellow>You left the party",
"kicked": "<red>You were kicked from the party",
"playerKicked": "<red>{player} was kicked from the party",
"youNowLeader": "<gold>You are now the party leader",
"leaderChanged": "<gold>{player} is now the party leader",
"inviteSent": "<green>Party invitation sent to <yellow>{player}",
"inviteReceived": "<yellow>{player} <green>invited you to join their party",
"inviteAccepted": "<green>Invitation accepted",
"inviteDeclined": "<red>Invitation declined",
"inviteExpired": "<gray>Party invitation expired",
"notInParty": "<red>You are not in a party",
"alreadyInParty": "<red>You are already in a party",
"partyFull": "<red>This party is full",
"notLeader": "<red>Only the party leader can do this"
}
}

Placeholders: {party_name}, {player}


{
"globalTasks": {
"started": "<gold>Global Event Started: <yellow>{task_name}",
"completed": "<green>Global Event Completed: <yellow>{task_name}",
"failed": "<red>Global Event Failed: <gray>{task_name}",
"progress": "<blue>Global Progress: <yellow>{progress}/{target} <gray>({percentage}%)",
"contributed": "<green>+{amount} contribution to <yellow>{task_name}",
"subtaskCompleted": "<green>Subtask completed: <yellow>{subtask_name}",
"rewardClaimed": "<gold>Reward claimed for <yellow>{task_name}",
"rewardAvailable": "<green>You have unclaimed rewards! Use <yellow>/journey rewards"
}
}

Placeholders: {task_name}, {progress}, {target}, {percentage}, {amount}, {subtask_name}


{
"bountyBoard": {
"rotationAnnouncement": "<gold>Bounty Board Rotated: <yellow>{board_name}",
"newTasksAvailable": "<green>{count} new tasks available on <yellow>{board_name}",
"taskAccepted": "<green>Task accepted: <yellow>{task_name}",
"taskAlreadyAccepted": "<yellow>You already have this task",
"taskOnCooldown": "<red>This task will be available again in {time}",
"boardEmpty": "<gray>No tasks available on this board",
"boardNotFound": "<red>Bounty board not found: {board_id}"
}
}

Placeholders: {board_name}, {board_id}, {task_name}, {count}, {time}


{
"contracts": {
"started": "<green>Contract started: <yellow>{contract_name}",
"accepted": "<green>Contract accepted: <yellow>{contract_name}",
"completed": "<gold>Contract completed: <green>{contract_name}",
"failed": "<red>Contract failed: <gray>{contract_name}",
"expired": "<red>Contract expired: <gray>{contract_name}",
"abandoned": "<yellow>Contract abandoned: <gray>{contract_name}",
"subtaskCompleted": "<blue>{subtask_name} completed",
"subtaskProgress": "<gray>{subtask_name}: <yellow>{progress}/{target}",
"rewardsClaimed": "<gold>Rewards claimed!",
"rewardsMoneyReceived": "<green>+{amount}",
"rewardsItemReceived": "<green>+{count}x {item}"
}
}

Placeholders: {contract_name}, {subtask_name}, {progress}, {target}, {amount}, {count}, {item}


{
"levelables": {
"levelUp": "<gold>Level Up! <yellow>{levelable_name} <green>is now level {level}",
"expGained": "<green>+{amount} {levelable_name} XP",
"maxLevel": "<yellow>You have reached the maximum level for {levelable_name}",
"levelableNotFound": "<red>Levelable not found: {levelable_id}"
}
}

Placeholders: {levelable_name}, {levelable_id}, {level}, {amount}


{
"general": {
"success": "<green>Success!",
"saved": "<green>Saved successfully",
"error": "<red>An error occurred",
"noPermission": "<red>You don't have permission to do this",
"invalidArgument": "<red>Invalid argument: {argument}",
"playerNotFound": "<red>Player not found: {player}",
"cooldown": "<yellow>Please wait {time} before doing this again",
"inventoryFull": "<red>Your inventory is full",
"itemReceived": "<green>Received: {item}"
}
}

Placeholders: {argument}, {player}, {time}, {message}, {item}


{
"tasks": {
"taskCompleted": "{task_name}",
"taskStarted": "{task_name}",
"subtaskProgress": "{subtask_name} ({progress}/{target})"
}
}
{
"tasks": {
"taskCompleted": "<gold><bold>QUEST COMPLETED!</bold> <yellow>{task_name}",
"taskStarted": "<green>You have embarked upon: <yellow><italic>{task_name}",
"subtaskCompleted": "<gold>{subtask_name} <green>done!"
}
}
{
"tasks": {
"taskCompleted": "<gradient:green:blue>COMPLETE</gradient> <white>{task_name}",
"taskFailed": "<red>FAILED <dark_gray>{task_name}",
"subtaskProgress": "{subtask_name} <gray>[<yellow>{progress}<dark_gray>/<white>{target}<gray>]"
}
}

After editing messages.json:

/journey reload

  • Keep messages concise — players should understand them at a glance
  • Use consistent colors: green for success, red for errors, yellow for warnings, gray for info
  • Always include relevant placeholders so players know what happened
  • Test your color choices against both light and dark backgrounds