Velocity Carbon Discord
Bridge for integrating Carbon chat channels with the Discord platform.
To use this plugin, Carbon must be installed on the proxy server. If you use Carbon on your backend servers, please utilize DiscordSRV compatibility.
Key Features
- Flexible configuration settings
- Message delivery via webhooks or bot
- Display of player count in bot status
- Mentioning Discord users from in-game
- Responding to in-game messages from Discord
- Support for separate chat channel mappings (e.g., separate channel for global chat and staff chat)
- Customizable Minecraft avatar display
- Display of Discord attachments in-game
- Status messages on server startup and shutdown, as well as player connection, disconnection, or server switching
- Formatting of Xaero's Minimap shared waypoints in Discord
Installation
- Create a Discord bot application
- Enable
SERVER MEMBERS INTENTandMESSAGE CONTENT INTENToptions in thePrivileged Gateway Intentssection - Go to the
OAuth2tab and copy theCLIENT ID - Create an invitation link for your new bot
- Enable permissions:
View Channels,Send Messages, andRead Message History - Paste the copied
CLIENT IDinto the appropriate field - Follow the generated link to add the bot to your Discord server
- On the
Bottab, copy the bot token (you may need to clickReset Token) - Install the plugin on the server, start the server to generate configuration, and stop it
- Open the plugin configuration files at
plugins/velocitycarbondiscord/config.yaml - Replace
TOKENwith the previously copied bot token - Configure channel mapping by specifying Carbon and Discord channel identifiers
- Set additional configuration parameters as desired
- Start the server
Configuration
Default configuration generated on startup:
discord:
token: 'TOKEN'
# Available placeholders: <username>
messages:
# Additional placeholders: <displayname> <message>
chat_message: '<username>: <message>'
# Additional placeholders: <server>
join_message: '<username> joined <server>'
leave_message: '<username> left <server>'
# Additional placeholders: N/A
disconnect_message: '<username> was disconnected'
# Additional placeholders: <server>
disconnect_server_message: '<username> was disconnected from <server>'
# Additional placeholders: <previous_server> <server>
server_switch_message: '<username> moved from <previous_server> to <server>'
# Available placeholders: N/A
shutdown_message: 'Proxy shutting down'
start_message: 'Ready for connections'
# Additional placeholders: <displayname> <title> <description>
advancement_defaultmessage: "<username> has just earned the achievement [<title>]** (<description>)_"
advancement_challengemessage: "<username> has completed the challenge [<title>]** (<description>)_"
advancement_goalmessage: "<username> has reached the goal [<title>]** (<description>)_"
advancement_taskmessage: "<username> has made the advancement [<title>]** (<description>)_"
# Additional placeholders: <displayname> <message>
death_message: "<message>"
webhook:
# Available placeholders: <displayname> <username> <uuid>
avatar_url: 'https://crafatar.com/renders/head/<uuid>?overlay'
username: '<username>'
# Available placeholders: <message>
message: '<message>'
show_bot_messages: false
show_attachments_ingame: true
show_activity: true
# Available placeholders: <amount>
activity_text: 'with <amount> players online'
enable_mentions: true
enable_everyone_and_here: false
prefer_webhook: true
# Available placeholders: <message> <nickname> <role_color> <username>
minecraft:
# Additional placeholders: <attachments> <discord_format> <reply_format> <username_format>
format: '<discord_format> <reply_format><username_format> <dark_gray>» <reset><message><attachments>'
discord_format: '<dark_gray>(<color:#7289da>discord<dark_gray>)<reset>'
username_format: '<color:<role_color>><hover:show_text:<username>><nickname></hover><reset>'
mention_format: '<color:<role_color>><underlined>@<nickname></underlined></color>'
# Additional placeholders: <reply_message> <reply_nickname> <reply_role_color> <reply_url> <reply_username>
reply_format: '<dark_gray><click:open_url:<reply_url>>[<color:#4abdff>←<color:<reply_role_color>><hover:show_text:<reply_username>><reply_nickname></hover><dark_gray>]</click><reset> '
# Additional placeholders: <attachment_url>
attachment_format: '<dark_gray><click:open_url:<attachment_url>>[<color:#4abdff>Attachment<dark_gray>]</click><reset>'
channels:
- name: 'carbon:global'
enabled: true
broadcast_events: true
discord:
webhook:
url: 'WEBHOOK_URL'
channel_id: 'CHANNEL_ID'
- name: 'carbon:staff'
enabled: true
minecraft:
format: '<discord_format> <gray>✦</gray> <username_format> <dark_gray>» <aqua><message><attachments>'
discord:
webhook:
url: 'WEBHOOK_URL'
channel_id: 'CHANNEL_ID'
Credits
- fooooooooooooooo: Creation of Velocity Discord, which inspired many features and this documentation
- Draycia: Creator of Carbon, and provided significant assistance in resolving implementation details