Skip to content

Messages Customization

Journey allows full customization of all in-game messages through the messages.json file. Customize text, colors, and formatting for tasks, parties, global events, contracts, and more.


The messages system provides:

  • Full Customization - Change any message text
  • Color Support - MiniMessage formatting with colors
  • Placeholders - Dynamic values like player names, amounts, times
  • Localization Ready - Easy translation support
  • Server-Sync - Distributed to all clients automatically

Location: config/journey/messages.json (server-side)

The messages file is automatically synced to all clients when they connect.

{
"tasks": { /* Task-related messages */ },
"party": { /* Party system messages */ },
"globalTasks": { /* Global event messages */ },
"bountyBoard": { /* Bounty board messages */ },
"contracts": { /* Contract system messages */ },
"levelables": { /* XP and leveling messages */ },
"general": { /* Generic messages */ },
"guiTitles": { /* GUI title messages */ }
}

Journey uses MiniMessage formatting for colors and styles.

<red>Red text
<green>Green text
<blue>Blue text
<yellow>Yellow text
<gold>Gold text
<gray>Gray text
<dark_gray>Dark gray text
<white>White text
<#FF5555>Custom red
<#00FF00>Custom green
<color:#FF00FF>Custom magenta
<bold>Bold text
<italic>Italic text
<underlined>Underlined text
<strikethrough>Strikethrough text
<obfuscated>Obfuscated text
<green><bold>Bold Green Text
<yellow><italic>Italic Yellow
<gold><underlined>Underlined Gold
<gradient:red:blue>Rainbow text!
<gradient:#FF0000:#0000FF>Custom gradient

Messages support dynamic placeholders that are replaced with actual values at runtime.

PlaceholderDescriptionExample
{player}Player nameNotch
{amount}Numeric amount42, $500
{time}Formatted time5m 30s, 2h
{percentage}Percentage value75%
{count}Count/quantity3
  • {task_name} - Task display name
  • {task_id} - Task identifier
  • {subtask_name} - Subtask display name
  • {objective_name} - Objective display name
  • {progress} - Current progress
  • {target} - Target amount
  • {max_tracked} - Max trackable tasks
  • {party_name} - Party display name
  • {player} - Player name
  • {task_name} - Global task name
  • {progress} - Total progress
  • {target} - Target amount
  • {percentage} - Completion percentage
  • {subtask_name} - Subtask name
  • {board_name} - Bounty board name
  • {board_id} - Board identifier
  • {task_name} - Task name
  • {count} - Number of tasks
  • {time} - Time remaining
  • {contract_name} - Contract name
  • {subtask_name} - Subtask name
  • {progress} - Current progress
  • {target} - Target amount
  • {item} - Item name
  • {amount} - Amount/money
  • {levelable_name} - Levelable display name
  • {levelable_id} - Levelable identifier
  • {level} - Level number
  • {amount} - XP amount
  • {argument} - Command argument
  • {message} - Warning message
  • {item} - Item name

Configure all task-related messages.

{
"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>✔<gray>] {objective_name}",
"objectiveProgress": "<gray>[<yellow>{progress}/{target}<gray>] {objective_name}",
"objectiveLocked": "<dark_gray>[<gray>✘<dark_gray>] {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"
}
}

Minimal Style:

{
"taskCompleted": "✓ {task_name}",
"taskFailed": "✗ {task_name}",
"subtaskProgress": "{subtask_name} ({progress}/{target})"
}

Verbose Style:

{
"taskCompleted": "<gold><bold>QUEST COMPLETED!</bold> <yellow>{task_name}",
"taskStarted": "<green>You have begun the quest: <yellow><italic>{task_name}",
"subtaskCompleted": "<green>→ You completed: <yellow>{subtask_name}"
}

Emoji Style:

{
"taskCompleted": "🎉 <gold>{task_name} <green>complete!",
"taskFailed": "❌ <red>{task_name} failed",
"subtaskProgress": "📊 {subtask_name}: {progress}/{target}"
}

Configure party system messages.

{
"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",
"inviteAlreadyInParty": "<red>{player} is already in a party",
"inviteNoPermission": "<red>Only the party leader can invite players",
"settingsUpdated": "<yellow>Party settings updated",
"visibilityPublic": "<green>Party is now public",
"visibilityPrivate": "<yellow>Party is now private",
"invitesEnabled": "<green>Members can now invite others",
"invitesDisabled": "<yellow>Only the leader can invite players",
"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",
"partyNotFound": "<red>Party not found",
"cannotKickSelf": "<red>You cannot kick yourself from the party"
}
}

RPG Style:

{
"created": "⚔️ <gold>Your fellowship has been formed: <yellow>{party_name}",
"joined": "🛡️ <green>{player} <yellow>has joined your fellowship!",
"youNowLeader": "👑 <gold>You are now the leader of this fellowship"
}

Modern Style:

{
"inviteReceived": "📨 <yellow>{player} <green>wants you to join their squad",
"youJoined": "✅ <green>You're now part of <yellow>{party_name}",
"left": "👋 {player} left"
}

Configure global event messages.

{
"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",
"notParticipated": "<red>You did not participate in this event",
"alreadyClaimed": "<yellow>You already claimed this reward",
"noRewards": "<gray>No rewards available"
}
}

Server-Wide Announcements:

{
"started": "<gold><bold>═══════════════════════════════</bold>\n<yellow>⚡ GLOBAL EVENT: {task_name}\n<gold><bold>═══════════════════════════════</bold>",
"completed": "🎉 <gold><bold>EVENT COMPLETE!</bold> <green>Everyone contributed to: <yellow>{task_name}",
"contributed": "✨ <green>+{amount} <gray>points added!"
}

Configure bounty board messages.

{
"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}",
"taskAvailableAgainAt": "<gray>Available again when board rotates in {time}",
"boardEmpty": "<gray>No tasks available on this board",
"boardOnCooldown": "<yellow>This board will refresh in {time}",
"boardNotFound": "<red>Bounty board not found: {board_id}",
"noPermission": "<red>You don't have permission to use this board"
}
}

Configure contract system messages.

{
"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}",
"expiredCannotClaim": "<red>This contract has expired and cannot be claimed",
"abandoned": "<yellow>Contract abandoned: <gray>{contract_name}",
"alreadyAccepted": "<red>This contract has already been accepted",
"cannotAcceptOwn": "<red>You cannot accept your own contract",
"subtaskCompleted": "<blue>▸ {subtask_name} completed",
"subtaskProgress": "<gray>▸ {subtask_name}: <yellow>{progress}/{target}",
"rewardsClaimed": "<gold>✔ Rewards claimed!",
"rewardsMoneyReceived": "<green>+{amount}",
"rewardsItemReceived": "<green>+{count}x {item}",
"rewardsExpReceived": "<green>+{amount} XP",
"notComplete": "<red>This contract is not complete yet",
"alreadyClaimed": "<yellow>Rewards already claimed",
"inventoryFull": "<red>Your inventory is full",
"claimFailed": "<red>Failed to claim rewards. Make sure you have inventory space.",
"itemNotFound": "<red>Contract item not found in inventory",
"noContract": "<red>You don't have a contract"
}
}

Configure XP and leveling messages.

{
"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}",
"cannotLevel": "<red>You cannot level up {levelable_name} yet"
}
}

Classic RPG:

{
"levelUp": "🌟 <gold>LEVEL UP! <yellow>{levelable_name} <green>→ Level {level}",
"expGained": "<green>+{amount} EXP <gray>({levelable_name})"
}

Modern Gaming:

{
"levelUp": "⬆️ <gradient:green:gold>{levelable_name}</gradient> <white>reached <yellow>Lv.{level}",
"expGained": "<green>+{amount} <gray>XP"
}

Generic messages used across Journey.

{
"general": {
"success": "<green>✔ Success!",
"saved": "<green>✔ Saved successfully",
"deleted": "<yellow>✔ Deleted",
"error": "<red>✘ An error occurred",
"notFound": "<red>Not found",
"noPermission": "<red>You don't have permission to do this",
"invalidArgument": "<red>Invalid argument: {argument}",
"playerNotFound": "<red>Player not found: {player}",
"playerOffline": "<yellow>Player is offline: {player}",
"warning": "<yellow>⚠ Warning: {message}",
"cooldown": "<yellow>Please wait {time} before doing this again",
"confirmAction": "<yellow>Are you sure? Type <gold>/confirm <yellow>to proceed",
"actionCancelled": "<gray>Action cancelled",
"actionConfirmed": "<green>Action confirmed",
"loading": "<gray>Loading...",
"pleaseWait": "<gray>Please wait...",
"inventoryFull": "<red>Your inventory is full",
"itemReceived": "<green>Received: {item}",
"itemRemoved": "<yellow>Removed: {item}"
}
}

Titles for GUI windows.

{
"guiTitles": {
"contractView": "{contract_name}"
}
}

Clean, no-nonsense messages:

{
"tasks": {
"taskCompleted": "✓ {task_name}",
"taskFailed": "✗ {task_name}",
"taskStarted": "→ {task_name}"
},
"party": {
"joined": "{player} joined",
"left": "{player} left",
"youJoined": "Joined {party_name}"
},
"levelables": {
"levelUp": "{levelable_name}: Lv.{level}",
"expGained": "+{amount} XP"
}
}

Immersive fantasy messages:

{
"tasks": {
"taskCompleted": "<gold><bold>⚔ QUEST COMPLETED ⚔</bold>\n<yellow>You have successfully finished: <green>{task_name}",
"taskStarted": "<green>You have embarked upon a new quest:\n<yellow><italic>{task_name}",
"subtaskCompleted": "<gold>→ <green>You completed a quest objective: <yellow>{subtask_name}"
},
"party": {
"created": "⚔️ <gold>Your fellowship has been formed: <yellow>{party_name}",
"joined": "🛡️ <green>{player} <yellow>joins your fellowship!",
"youNowLeader": "👑 <gold>You now lead this band of adventurers"
},
"levelables": {
"levelUp": "🌟 <gradient:yellow:gold>ASCENSION!</gradient>\n<yellow>{levelable_name} <white>has reached <gold>Level {level}",
"expGained": "✨ <green>+{amount} <yellow>{levelable_name} <gray>experience"
}
}

Contemporary game aesthetics:

{
"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>]"
},
"party": {
"inviteReceived": "📨 <gradient:aqua:blue>{player}</gradient> <white>invited you to their squad",
"youJoined": "✅ <green>Joined <gradient:yellow:gold>{party_name}</gradient>",
"left": "👋 <gray>{player} disconnected"
},
"globalTasks": {
"started": "⚡ <gradient:gold:yellow>LIVE EVENT</gradient>\n<white>» {task_name}",
"contributed": "✨ <green>+{amount} <gray>contribution"
}
}

The messages system is perfect for creating translated versions:

{
"tasks": {
"taskCompleted": "<gold>✔ Task completed: <green>{task_name}"
}
}
{
"tasks": {
"taskCompleted": "<gold>✔ Tarea completada: <green>{task_name}"
}
}
{
"tasks": {
"taskCompleted": "<gold>✔ タスク完了: <green>{task_name}"
}
}

Note: Server administrators would need to manually swap message files or implement a locale system.


Keep it concise - Players should understand messages at a glance

Use consistent colors - Same colors for similar message types

  • Success: <green>
  • Errors: <red>
  • Warnings: <yellow>
  • Info: <gray> or <blue>

Include context - Use placeholders to show relevant data

Test readability - Ensure colors work with different backgrounds

Success Messages:

"success": "<green>✔ Success!",
"completed": "<gold>✔ Completed: <green>{task_name}",
"saved": "<green>✔ Saved successfully"

Error Messages:

"error": "<red>✘ An error occurred",
"notFound": "<red>Not found",
"noPermission": "<red>You don't have permission to do this"

Warning Messages:

"warning": "<yellow>⚠ Warning: {message}",
"cooldown": "<yellow>Please wait {time} before doing this again",
"alreadyTracked": "<yellow>This task is already being tracked"

Info Messages:

"progress": "<blue>Progress: <yellow>{progress}/{target}",
"loading": "<gray>Loading...",
"pleaseWait": "<gray>Please wait..."

Always include placeholders when dynamic data is available

"taskCompleted": "<gold>✔ Task completed: <green>{task_name}" // Good
"taskCompleted": "<gold>✔ Task completed!" // Missing context

Format numbers consistently

"contributed": "<green>+{amount} contribution"
"expGained": "<green>+{amount} XP"
"rewardsMoneyReceived": "<green>+${amount}"

After editing messages.json, reload with:

Terminal window
/journey reload messages

Or restart the server to apply changes.