This guide provides practical examples of using Runway with various plugin types and scenarios. All examples use actual code patterns from the Runway source.
Chat Plugin Integration
Chat plugins are the most common use case for Runway. Here’s how to integrate MiniMessage formatting into chat messages.
EssentialsX Chat
Install Runway
Place Runway in your plugins folder alongside EssentialsX and EssentialsXChat.
Configure chat format
Edit plugins/EssentialsChat/config.yml: format : '[mm][p]<gradient:green:blue>{DISPLAYNAME}</gradient> <gray>»</gray> <white>{MESSAGE}'
# For different ranks:
group-formats :
Admin : '[mm][p]<red>[Admin]</red> <gradient:red:gold>{DISPLAYNAME}</gradient> <gray>»</gray> <white>{MESSAGE}'
VIP : '[mm][p]<gold>[VIP]</gold> {DISPLAYNAME} <gray>»</gray> <white>{MESSAGE}'
default : '[mm][p]{DISPLAYNAME} <gray>»</gray> <white>{MESSAGE}'
Configure Runway
Ensure system messages are enabled in plugins/Runway/config.yml: require-prefix :
minimessage : true # Requires [mm] prefix
placeholders : true # Requires [p] prefix
placeholder-hook :
placeholderapi : true # Enable for {DISPLAYNAME} and other placeholders
miniplaceholders : false
listeners :
system-messages : true # Required for chat messages
Test the setup
/runway parse < gradient:green:blu e > Test Message < /gradien t >
Player names display with gradient colors
Messages support full MiniMessage formatting
PlaceholderAPI variables like resolve correctly
Different ranks can have different color schemes
ChatControl Red
# plugins/ChatControl/messages.yml
Formats :
Chat :
Message : '[mm][p]<hover:show_text:"<gray>Rank: <yellow>{vault_rank}</yellow>"><gradient:{primary_color}:{secondary_color}>{player}</gradient></hover> <gray>→</gray> <white>{message}'
Join :
Message : '[mm][p][actionbar]<green>+ {player} joined the server'
Quit :
Message : '[mm][p][actionbar]<red>- {player} left the server'
# Custom placeholders for colors
Variables :
primary_color :
Admin : 'red'
Moderator : 'blue'
Default : 'gray'
secondary_color :
Admin : 'gold'
Moderator : 'aqua'
Default : 'white'
Features demonstrated:
Hover text with rank information
Dynamic gradient colors based on player rank
Join/quit messages in action bar
Placeholder integration for player data
Runway automatically formats inventory titles and item names/lore when the appropriate listeners are enabled.
# plugins/DeluxeMenus/gui_menus/shop.yml
menu_title : '[mm]<gradient:gold:yellow>Server Shop</gradient>'
size : 27
items :
diamond_sword :
material : DIAMOND_SWORD
slot : 13
display_name : '[mm]<gradient:aqua:blue>Legendary Sword</gradient>'
lore :
- '[mm]<gray>A powerful weapon'
- '[mm]'
- '[mm][p]<yellow>Price:</yellow> <green>%vault_eco_balance% coins</green>'
- '[mm]'
- '[mm]<green>Click to purchase!'
left_click :
- '[console] give %player_name% diamond_sword'
- '[message] [mm][p]<green>Purchased Legendary Sword for <gold>1000</gold> coins!'
Runway configuration:
# plugins/Runway/config.yml
listeners :
inventory :
title : true # Parse menu titles
items : true # Parse item names and lore
items : true # Also parse items outside inventories
disable-italics : true # Prevents italic lore text (recommended)
The disable-italics: true setting is highly recommended for GUI plugins. Without it, all lore text will be italic by default (Minecraft behavior), which can look inconsistent with MiniMessage formatting.
ChestCommands
# plugins/ChestCommands/menu/warp.yml
menu-settings :
name : '[mm]<rainbow>Warp Menu</rainbow>'
rows : 3
items :
spawn :
MATERIAL : COMPASS
POSITION-X : 2
POSITION-Y : 2
NAME : '[mm]<gradient:green:lime>Spawn</gradient>'
LORE :
- '[mm]<gray>Teleport to spawn'
- '[mm]'
- '[mm][p]<yellow>Online:</yellow> <green>%server_online%</green>'
COMMAND : 'spawn'
pvp :
MATERIAL : DIAMOND_SWORD
POSITION-X : 4
POSITION-Y : 2
NAME : '[mm]<gradient:red:dark_red>PvP Arena</gradient>'
LORE :
- '[mm]<gray>Fight other players!'
- '[mm]'
- '[mm][p]<red>⚠</red> <yellow>Players in arena:</yellow> <green>%players_in_world_world_pvp%</green>'
COMMAND : 'warp pvp'
Economy Plugins
Economy plugins frequently send system messages that can be enhanced with MiniMessage formatting.
Vault-based Economy Messages
# Example from a custom economy plugin or shop plugin
messages :
purchase_success : '[mm][p][actionbar]<green>✓</green> <white>Purchased <aqua>{item}</aqua> for <gold>${amount}</gold>'
purchase_fail : '[mm][actionbar]<red>✗</red> <white>Insufficient funds! Need <gold>${amount}</gold>'
balance : '[mm][p]<gray>Your balance:</gray> <gold>${vault_eco_balance}</gold>'
pay_sent : '[mm][p]<green>Sent <gold>${amount}</gold> to <aqua>{recipient}</aqua>'
pay_received : '[mm][p][actionbar]<green>+ ${amount}</green> <gray>from <aqua>{sender}</aqua>'
Runway configuration:
# plugins/Runway/config.yml
require-prefix :
minimessage : true
placeholders : true
placeholder-hook :
placeholderapi : true # Required for %vault_eco_balance%
miniplaceholders : false
listeners :
system-messages : true # Most economy plugins use system messages
PlayerShops Integration
# plugins/PlayerShops/config.yml
shop :
name : '[mm][p]<gradient:gold:yellow>%player_name% '' s Shop</gradient>'
messages :
shop_created : '[mm]<green>Shop created successfully! Use <click:run_command:/shop><aqua>/shop</aqua></click> to manage it.'
item_sold : '[mm][p][actionbar]<green>+$%amount%</green> <gray>from selling <white>%item_name%</white>'
item_bought : '[mm][p]<green>Purchased <aqua>%item_name%</aqua> for <gold>$%amount%</gold>'
shop_visit : '[mm][p]<gray>Visiting <gradient:gold:yellow>%shop_owner%</gradient> '' s shop'
Quest/Progression Plugins
Quest plugins benefit from action bar notifications and formatted objectives.
BetonQuest
# plugins/BetonQuest/QuestPackages/main/events.yml
events :
quest_start : |
message [mm]<gradient:blue:cyan>Quest Started:</gradient> <yellow>{quest_name}</yellow>
quest_complete : |
message [mm][actionbar]<green>✓ Quest Complete!</green>
message [mm][p]<gradient:gold:yellow>Completed:</gradient> <white>{quest_name}</white>
message [mm][p]<gray>Reward:</gray> <gold>+{quest_reward} coins</gold>
objective_update : |
actionbar [mm][p]<yellow>{objective_name}:</yellow> <green>{progress}</green><gray>/</gray><green>{total}</green>
Runway configuration:
# plugins/Runway/config.yml
require-prefix :
minimessage : true
placeholders : true
listeners :
system-messages : true # For quest messages
titles : true # For quest announcements
# Custom placeholders for quest rewards
placeholders :
# Define in plugins/Runway/placeholders.yml
custom-placeholders :
quest_icon : '<gradient:blue:cyan>⭐</gradient>'
quest_complete_icon : '<green>✓</green>'
quest_fail_icon : '<red>✗</red>'
Scoreboard & Tab List
Runway can format scoreboards (using Teams) and tab list headers/footers.
TAB Plugin
# plugins/TAB/config.yml
header-footer :
enabled : true
header :
- '[mm]'
- '[mm]<gradient:blue:cyan>╔═══════════════╗</gradient>'
- '[mm]<bold><gradient:gold:yellow>MY SERVER</gradient></bold>'
- '[mm]<gradient:blue:cyan>╚═══════════════╝</gradient>'
- '[mm]'
footer :
- '[mm]'
- '[mm][p]<gray>Players Online:</gray> <green>%server_online%</green><gray>/</gray><green>%server_max_players%</green>'
- '[mm][p]<gray>Your Rank:</gray> <gradient:gold:yellow>%vault_rank%</gradient>'
- '[mm]'
scoreboard :
enabled : true
title : '[mm]<bold><gradient:red:gold>SERVER</gradient></bold>'
lines :
- '[mm]<gray>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬'
- '[mm]'
- '[mm][p]<yellow>Rank:</yellow> <gradient:gold:yellow>%vault_rank%</gradient>'
- '[mm][p]<yellow>Balance:</yellow> <green>$%vault_eco_balance%</green>'
- '[mm]'
- '[mm][p]<yellow>Players:</yellow> <green>%server_online%</green>'
- '[mm]'
- '[mm]<gray>▬▬▬▬▬▬▬▬▬▬▬▬▬▬▬'
Runway configuration:
# plugins/Runway/config.yml
listeners :
tablist : true # Required for TAB header/footer
scoreboards : true # Required for scoreboard (uses Teams)
system-messages : true
placeholder-hook :
placeholderapi : true # For %vault_rank%, %server_online%, etc.
Scoreboard support uses Minecraft Teams and may not work with all scoreboard plugins. Test with your specific setup. Set scoreboards: false if you experience issues.
Title & Subtitle Messages
Plugins that send titles can use MiniMessage formatting through Runway.
Title Configuration Example
# Example from a custom plugin or TitleManager
titles :
welcome :
title : '[mm]<gradient:gold:yellow>Welcome Back!</gradient>'
subtitle : '[mm][p]<gray>Last login: <aqua>%player_last_join%</aqua>'
fade-in : 10
stay : 40
fade-out : 10
achievement :
title : '[mm]<gradient:green:lime>Achievement Unlocked!</gradient>'
subtitle : '[mm]<white>{achievement_name}</white>'
fade-in : 5
stay : 60
fade-out : 10
death :
title : '[mm]<red><bold>YOU DIED</bold></red>'
subtitle : '[mm][p]<gray>Killed by <red>{killer_name}</red>'
fade-in : 5
stay : 40
fade-out : 10
Runway configuration:
# plugins/Runway/config.yml
listeners :
titles : true # Required for title parsing
require-prefix :
minimessage : true
placeholders : true
Advanced Patterns
Custom Placeholders
Define your own static placeholders in Runway for consistent styling across plugins.
# plugins/Runway/placeholders.yml
custom-placeholders :
# Color schemes
primary_color : '<gradient:blue:cyan>'
secondary_color : '<gradient:gold:yellow>'
error_color : '<red>'
success_color : '<green>'
# Common UI elements
separator : '<gray>━━━━━━━━━━━━━━━━━━━━</gray>'
arrow : '<gray>→</gray>'
bullet : '<dark_gray>•</dark_gray>'
checkmark : '<green>✓</green>'
crossmark : '<red>✗</red>'
# Server branding
server_name : '<bold><gradient:red:gold>MY SERVER</gradient></bold>'
prefix : '<gradient:blue:cyan>[MS]</gradient>'
# Common messages
no_permission : '<red>You do not have permission to do this!</red>'
invalid_arguments : '<red>Invalid arguments! Check /help for usage.</red>'
Usage in plugins:
# Any plugin config
messages :
welcome : '[mm]<primary_color>Welcome to <server_name><primary_color>!'
denied : '[mm]<prefix> <no_permission>'
separator : '[mm]<separator>'
How it works:
Custom placeholders are loaded from placeholders.yml (ProcessHandler.java:37-49)
Keys are normalized: lowercase, spaces/dashes → underscores
Applied after PlaceholderAPI/MiniPlaceholders resolution
Available in all messages, even without [p] prefix
Clickable Messages
Combine MiniMessage click events with Runway for interactive messages.
# Example custom plugin or announcement system
messages :
help : |
[mm]<separator>
[mm]<gradient:gold:yellow><bold>HELP MENU</bold></gradient>
[mm]
[mm]<click:run_command:/spawn><hover:show_text:'<green>Click to teleport'><green>[Spawn]</green></hover></click> <gray>Return to spawn
[mm]<click:run_command:/help><hover:show_text:'<green>Click for help'><aqua>[Help]</aqua></hover></click> <gray>View commands
[mm]<click:open_url:'https://example.com'><hover:show_text:'<blue>Click to visit'><blue>[Website]</blue></hover></click> <gray>Visit our website
[mm]<click:suggest_command:/msg ><hover:show_text:'<yellow>Click to message staff'><yellow>[Contact]</yellow></hover></click> <gray>Message staff
[mm]
[mm]<separator>
rules : |
[mm]<red><bold>SERVER RULES</bold></red>
[mm]
[mm]<bullet> <white>No griefing
[mm]<bullet> <white>No cheating
[mm]<bullet> <white>Be respectful
[mm]
[mm]<gray>Click to accept:</gray> <click:run_command:/accept rules><green><bold>[ACCEPT]</bold></green></click>
Use PlaceholderAPI extensions for conditional MiniMessage formatting.
# Requires PlaceholderAPI with CheckItem/Player extensions
messages :
# Different colors based on health
health_display : '[mm][p]<yellow>Health:</yellow> %player_health_color%%player_health%</yellow>'
# Where %player_health_color% is a custom placeholder returning:
# <green> if health > 15
# <yellow> if health > 10
# <red> if health <= 10
# Different prefix based on rank
chat_format : '[mm][p]%vault_rank_color%[%vault_rank%]</> <white>%player_name%: {message}'
# Where %vault_rank_color% returns appropriate color tags
Setup:
Install PlaceholderAPI expansion for conditional logic
Create custom placeholders that return MiniMessage tags
Use [mm][p] to process the dynamic tags
Complete Server Configuration
Here’s a comprehensive Runway configuration for a full-featured server:
# plugins/Runway/config.yml
require-prefix :
minimessage : true # Safe default - explicit control
placeholders : true # Prevents unnecessary parsing
placeholder-hook :
placeholderapi : true # For Vault, player stats, etc.
miniplaceholders : true # For modern placeholder support
disable-italics : true # Cleaner inventory/item formatting
ignore-legacy : true # Convert § to & automatically
listeners :
system-messages : true # Chat, announcements, plugin messages
tablist : true # Tab header/footer
titles : true # Title/subtitle messages
scoreboards : true # Scoreboard teams (may need tuning)
inventory :
title : true # Menu titles
items : true # Item names and lore in menus
items : true # Items in world/player inventory
# plugins/Runway/placeholders.yml
custom-placeholders :
# Branding
server_name : '<bold><gradient:red:orange:yellow:green:blue:purple>RAINBOW SERVER</gradient></bold>'
server_prefix : '<gradient:blue:cyan>[RS]</gradient>'
# UI Components
separator : '<dark_gray><strikethrough> </strikethrough></dark_gray>'
arrow_right : '<dark_gray>→</dark_gray>'
arrow_left : '<dark_gray>←</dark_gray>'
bullet : '<dark_gray>•</dark_gray>'
# Status indicators
online_indicator : '<green>●</green>'
offline_indicator : '<red>●</red>'
# Common icons
coin_icon : '<gold>⛃</gold>'
heart_icon : '<red>❤</red>'
star_icon : '<yellow>⭐</yellow>'
warning_icon : '<red>⚠</red>'
info_icon : '<blue>ℹ</blue>'
Testing Your Configuration
Test MiniMessage parsing
/runway parse < gradient:red:blu e > Test Message < /gradien t >
Should show formatted gradient text.
Test placeholder resolution
/runway parse [p]Your name is %player_name%
Should replace %player_name% with your actual name.
Test custom placeholders
/runway parse < server_prefi x > Welcome!
Should show your custom prefix from placeholders.yml.
Test plugin integration
Send a test message through your chat plugin or open a GUI menu to verify formatting appears correctly.
Reload after changes
Always reload after editing configuration files.
Common Recipes
Gradient Player Names format : '[mm][p]<gradient:{color1}:{color2}>%player_name%</gradient>'
Clickable Help help : '[mm]<click:run_command:/help><green>[?]</green></click>'
Hover Info rank : '[mm]<hover:show_text:"<aqua>VIP Member">[VIP]</hover>'
Action Bar Updates status : '[mm][p][actionbar]<yellow>Coins:</yellow> <gold>%vault_eco_balance%</gold>'
Rainbow Text message : '[mm]<rainbow>Rainbow message!</rainbow>'
Styled Separators separator : '[mm]<gradient:blue:purple><strikethrough> </strikethrough></gradient>'
Additional Resources
MiniMessage Format Complete MiniMessage tag reference
PlaceholderAPI Placeholders Available PlaceholderAPI placeholders
MiniMessage Web Viewer Test MiniMessage formatting online
Color Picker Generate gradient colors