Sueta
VE

Velocity Discord

2.0.0

Chat from all servers gets bridged with a Discord channel

·Plugin
  1. 2.0.0latestv2.0.0Nov 10, 2025

    What's Changed

    - Send every user event via webhook by @chaos-baum in https://github.com/fooooooooooooooo/VelocityDiscord/pull/59 - Add support for Discord role prefixes to in-game messages sent from Discord by @Kaludii in https://github.com/fooooooooooooooo/VelocityDiscord/pull/64 - Add discord username chat completion by @elliotnash in https://github.com/fooooooooooooooo/VelocityDiscord/pull/62 - fix raw discord pings bypassing filter by @coolguy284 in https://github.com/fooooooooooooooo/VelocityDiscord/pull/67 - Fix Server Discord Message Advancement Overrides Not Working by @coolguy284 in https://github.com/fooooooooooooooo/VelocityDiscord/pull/71 - fix: fix webhook configuration by @LunaSquee in https://github.com/fooooooooooooooo/VelocityDiscord/pull/78

    Config changes

    Version bumped
    - config_version = "1.9"
    + config_version = "2.0"
    Added server display names section
    # Server display names
    # If a server is not found in this list, the server name (from velocity.toml) will be used instead
    [server_names]
    # lobby = "Lobby"
    Moved channel topic config under the discord.channel_topic section
    # Channel topic config (if enabled)
    + [discord.channel_topic]
    # Template for the channel topic
    # Placeholders available:
    # {players} - Total number of players online
    # {player_list} - List of players (format is defined below)
    # {servers} - Number of servers
    # {server_list} - List of server names
    # {hostname} - Server hostname
    # {port} - Server port
    # {motd} - Message of the Day (MOTD)
    # {query_port} - Query port
    # {max_players} - Maximum number of players
    # {plugins} - Number of plugins
    # {plugin_list} - List of plugin names
    # {version} - Server version
    # {software} - Software name
    # {average_ping} - Average ping of all players
    # {uptime} - Server uptime in hours and minutes
    # {server[SERVERNAME]} - Dynamic placeholder for each server's name and status (e.g., {server[MyServer]}, {server[AnotherServer]}, {server[Lobby]}, etc.)
    - topic = """{players}/{max_players}
    + format = """{players}/{max_players}
    {player_list}
    {hostname}:{port}
    Uptime: {uptime}"""
    
    # Template for server[SERVERNAME] placeholder in the channel topic
    # Placeholders available: {name}, {players}, {max_players}, {motd}, {version}, {protocol}
    - topic_server = "{name}: {players}/{max_players}"
    + server = "{name}: {players}/{max_players}"
    
    # Template for server[SERVERNAME] placeholder in the channel topic when the server is offline
    # Placeholders available: {name}
    - topic_server_offline = "{name}: Offline"
    + server_offline = "{name}: Offline"
    
    # Can be disabled with "" or false to hide the list completely when no players are online
    - topic_player_list_no_players_header = "No players online"
    + player_list_no_players_header = "No players online"
    
    # Can be disabled with "" or false to hide the header and only show the player list
    - topic_player_list_header = "Players: "
    + player_list_header = "Players: "
    
    # Placeholders available: {username}, {ping}
    - topic_player_list_player = "{username}"
    + player_list_player = "{username}"
    
    # Separator between players in the list, \n can be used for new line
    - topic_player_list_separator = ", "
    + player_list_separator = ", "
    
    # Maximum number of players to show in the topic
    # Set to 0 to show all players
    - topic_player_list_max_count = 10
    + player_list_max_count = 10
    Removed webook_ prefix from webhook config options
    [discord.webhook]
    # Full webhook URL to send chat messages to
    - webhook_url = ""
    + url = ""
    # Full URL of an avatar service to get the player's avatar from
    # Placeholders available: {uuid}, {username}
    avatar_url = "https://visage.surgeplay.com/face/96/{uuid}"
    
    # The format of the webhook's username
    # Placeholders available: {username}, {server}
    - webhook_username = "{username}"
    + username = "{username}"
    Moved chat message formats into their own sections
    - [discord.chat]
    + [discord.chat.message]
    
    - message = "{username}: {message}"
    + format = "{username}: {message}"
    
    - message_type = "text"
    + type = "text"
    
    - message_embed_color = ""
    + embed_color = ""
    
    + [discord.chat.join]
    
    - join_message = "**{username} joined the game**"
    + format = "**{username} joined the game**"
    
    - join_message_type = "text"
    + type = "text"
    
    - join_message_embed_color = "#40bf4f"
    + embed_color = "#40bf4f"
    
    + [discord.chat.leave]
    
    - leave_message = "**{username} left the game**"
    + format = "**{username} left the game**"
    
    - leave_message_type = "text"
    + type = "text"
    
    - leave_message_embed_color = "#bf4040"
    + embed_color = "#bf4040"
    
    + [discord.chat.disconnect]
    
    - disconnect_message = "**{username} disconnected**"
    + format = "**{username} disconnected**"
    
    - disconnect_message_type = "text"
    + type = "text"
    
    - disconnect_message_embed_color = "#bf4040"
    + embed_color = "#bf4040"
    
    + [discord.chat.server_switch]
    
    - server_switch_message = "**{username} moved to {current} from {previous}**"
    + format = "**{username} moved to {current} from {previous}**"
    
    - server_switch_message_type = "text"
    + type = "text"
    
    - server_switch_message_embed_color = "#40bf4f"
    + embed_color = "#40bf4f"
    
    + [discord.chat.death]
    
    - death_message = "**{death_message}**"
    + format = "**{death_message}**"
    
    - death_message_type = "text"
    + type = "text"
    
    - death_message_embed_color = "#bf4040"
    + embed_color = "#bf4040"
    
    + [discord.chat.advancement]
    
    - advancement_message = "**{username} has made the advancement __{advancement_title}__**\n_{advancement_description}_"
    + format = "**{username} has made the advancement __{advancement_title}__**\n_{advancement_description}_"
    
    - advancement_message_type = "text"
    + type = "text"
    
    - advancement_message_embed_color = "#40bf4f"
    + embed_color = "#40bf4f"
    
    + [discord.chat.proxy_start]
    
    - proxy_start_message = "**Proxy started**"
    + format = "**Proxy started**"
    
    - proxy_start_message_type = "text"
    + type = "text"
    
    - proxy_start_message_embed_color = "#40bf4f"
    + embed_color = "#40bf4f"
    
    + [discord.chat.proxy_stop]
    
    - proxy_stop_message = "**Proxy stopped**"
    + format = "**Proxy stopped**"
    
    - proxy_stop_message_type = "text"
    + type = "text"
    
    - proxy_stop_message_embed_color = "#bf4040"
    + embed_color = "#bf4040"
    
    + [discord.chat.server_start]
    
    - server_start_message = "**{server} has started**"
    + format = "**{server} has started**"
    
    - server_start_message_type = "text"
    + type = "text"
    
    - server_start_message_embed_color = "#40bf4f"
    + embed_color = "#40bf4f"
    
    + [discord.chat.server_stop]
    
    - server_stop_message = "**{server} has stopped**"
    + format = "**{server} has stopped**"
    
    - server_stop_message_type = "text"
    + type = "text"
    
    - server_stop_message_embed_color = "#bf4040"
    + embed_color = "#bf4040"
    Added plugin command name config
    [minecraft]
    # Ingame command for plugin
    # Not server overridable
    # e.g., /discord, /discord reload, /discord topic preview
    plugin_command = "discord"
    Added role prefix config
    [minecraft]
    
    # ...
    
    - message = "{discord_chunk} {username_chunk}<dark_gray>: <reset>{message} {attachments}"
    + message = "{discord_chunk} {role_prefix} {username_chunk}<dark_gray>: <reset>{message} {attachments}"
    
    # Role prefix configuration
    # Format: "role_id" = "prefix format using MiniMessage"
    + [minecraft.role_prefixes]
    # "123456789" = "<dark_gray>[</dark_gray><red><b>OWNER</b></red><dark_gray>]</dark_gray>"
    # "987654321" = "<dark_gray>[</dark_gray><blue>ADMIN</blue><dark_gray>]</dark_gray>"
    # "456789123" = "<dark_gray>[</dark_gray><green>MOD</green><dark_gray>]</dark_gray>"
    # "789123456" = "<dark_gray>[</dark_gray><aqua>HELPER</aqua><dark_gray>]</dark_gray>"
    Added link detection and formatting config
    [minecraft]
    
    # ...
    
    # Placeholders available: {url}, {link_color}
    # Can be disabled with "" or false
    links = "<click:open_url:\"{url}\"><hover:show_text:\"Click to open {url}\"><dark_gray>[</dark_gray><{link_color}>Link<dark_gray>]</hover></click>"
    
    # ...
    
    link_color = "#4abdff"
    Added ability to override most config options per server
    729 downloads
  2. 1.9.0v1.9.0Aug 23, 2024

    What's Changed

    - Fix Discord webhooks from other bots not being mirrored to Minecraft by @jackmawer in https://github.com/fooooooooooooooo/VelocityDiscord/pull/43 - Use YepLib for advancements / death messages by @unilock in https://github.com/fooooooooooooooo/VelocityDiscord/pull/44 - Exclude disabled servers from Yep events by @unilock in https://github.com/fooooooooooooooo/VelocityDiscord/pull/45 - Add channel topic by @Ceddicedced in https://github.com/fooooooooooooooo/VelocityDiscord/pull/48 - Refactor code and add missing scheduler by @Ceddicedced in https://github.com/fooooooooooooooo/VelocityDiscord/pull/50 - chore: Add missing variables from config by @Ceddicedced in https://github.com/fooooooooooooooo/VelocityDiscord/pull/52 - Add LuckPerms prefix to discord message templates - Queue messages while plugin is starting so they are not lost - Add config reload command ingame - requires discord.reload permission node - Add command to preview topic ingame - requires discord.topic.preview permission node - Update dependencies

    Config changes

    Version bumped
    - config_version = "1.8"
    + config_version = "1.9"
    Added server online ping interval
    # How often to ping all servers to check for online status (seconds)
    # Set to 0 to disable
    # Excluded servers will not be pinged
    ping_interval = 30
    Added channel topic update interval
    # OPTIONAL - Configuration for updating the Discord channel topic
    # Set the interval (in minutes) for updating the channel topic.
    # Use a value less than 10 to disable this feature.
    update_channel_topic_interval = -1
    Added channel topic options
    # Template for the channel topic.
    # Placeholders available:
    # {players} - Total number of players online
    # {player_list} - List of players (format is defined below)
    # {servers} - Number of servers
    # {server_list} - List of server names
    # {hostname} - Server hostname
    # {port} - Server port
    # {motd} - Message of the Day (MOTD)
    # {query_port} - Query port
    # {max_players} - Maximum number of players
    # {plugins} - Number of plugins
    # {plugin_list} - List of plugin names
    # {version} - Server version
    # {software} - Software name
    # {average_ping} - Average ping of all players
    # {uptime} - Server uptime in hours and minutes
    # {server[SERVERNAME]} - Dynamic placeholder for each server's name and status (e.g., {server[MyServer]}, {server[AnotherServer]}, {server[Lobby]}, etc.)
    topic = """{players}/{max_players}
    {player_list}
    {hostname}:{port}
    Uptime: {uptime}"""
    
    # Template for server[SERVERNAME] placeholder in the channel topic.
    # Placeholders available: {name}, {players}, {max_players}, {motd}, {version}, {protocol}
    topic_server = "{name}: {players}/{max_players}"
    
    # Template for server[SERVERNAME] placeholder in the channel topic when the server is offline.
    # Placeholders available: {name}
    topic_server_offline = "{name}: Offline"
    
    # Can be disabled to hide the list completely when no players are online
    topic_player_list_no_players_header = "No players online"
    
    # Can be disabled to hide the header and only show the player list
    topic_player_list_header = "Players: "
    
    # Placeholders available: {username}, {ping}
    topic_player_list_player = "{username}"
    
    # Separator between players in the list, \n can be used for new line
    topic_player_list_separator = ", "
    
    # Maximum number of players to show in the topic
    # Set to < 1 to show all players
    topic_player_list_max_count = 10
    Update default webhook avatar url
    [discord.webhook]
    # Full webhook URL to send more fancy Minecraft chat messages to
    webhook_url = ""
    # Full URL of an avatar service to get the player's avatar from
    # Placeholders available: {uuid}, {username}
    -avatar_url = "https://crafatar.com/avatars/{uuid}?overlay"
    +avatar_url = "https://visage.surgeplay.com/face/96/{uuid}"
    Added message_type and message_embed_color
    # for user messages, the following types can be used
    # "text"    - Normal text only message with the above
    #
    # "webhook" - Use a Discord webhook to have the bot use the player's username and avatar when sending messages
    #             Requires a webhook URL to be set below
    #             Ignores the above message format, and just sends the message as the content of the webhook
    #
    # "embed"   - Discord embed with the above format as the description field
    message_type = "text"
    # Can be disabled
    message_embed_color = ""
    Added join_message_type and join_message_embed_color
    join_message_type = "text"
    # Can be disabled
    join_message_embed_color = "#40bf4f"
    Added leave_message_type and leave_message_embed_color
    leave_message_type = "text"
    # Can be disabled
    leave_message_embed_color = "#bf4040"
    Added disconnect_message_type and disconnect_message_embed_color
    disconnect_message_type = "text"
    # Can be disabled
    disconnect_message_embed_color = "#bf4040"
    Added server_switch_message_type and server_switch_message_embed_color
    server_switch_message_type = "text"
    # Can be disabled
    server_switch_message_embed_color = "#40bf4f"
    Added death_message_type and death_message_embed_color, changed default death_message
    # Placeholders available: {username}, {death_message}
    # death_message includes the username just as it is shown ingame
    # Can be disabled
    -death_message = "**{username} {death_message}**"
    +death_message = "**{death_message}**"
    death_message_type = "text"
    # Can be disabled
    death_message_embed_color = "#bf4040"
    Added advancement_message_type and advancement_message_embed_color
    advancement_message_type = "text"
    # Can be disabled
    advancement_message_embed_color = "#40bf4f"
    Added proxy_start, proxy_stop, server_start, and server_stop messages
    # Can be disabled
    proxy_start_message = "**Proxy started**"
    proxy_start_message_type = "text"
    # Can be disabled
    proxy_start_message_embed_color = "#40bf4f"
    
    # Can be disabled
    proxy_stop_message = "**Proxy stopped**"
    proxy_stop_message_type = "text"
    # Can be disabled
    proxy_stop_message_embed_color = "#bf4040"
    
    # Placeholders available: {server}
    # Can be disabled
    server_start_message = "**{server} has started**"
    server_start_message_type = "text"
    # Can be disabled
    server_start_message_embed_color = "#40bf4f"
    
    # Placeholders available: {server}
    # Can be disabled
    server_stop_message = "**{server} has stopped**"
    server_stop_message_type = "text"
    # Can be disabled
    server_stop_message_embed_color = "#bf4040"
    Updated minecraft.username_chunk
    [minecraft]
    # Placeholders available: {role_color}, {display_name}, {username}, {nickname}
    # <insert> tag allows you to shift right-click the username to insert @{username} in the chat
    -username_chunk = "<{role_color}><hover:show_text:{username}>{nickname}</hover><reset>"
    +username_chunk = "<{role_color}><insert:@{username}><hover:show_text:{display_name}>{nickname}</hover></insert><reset>"

    New Contributors

    - @jackmawer made their first contribution in https://github.com/fooooooooooooooo/VelocityDiscord/pull/43 - @Ceddicedced made their first contribution in https://github.com/fooooooooooooooo/VelocityDiscord/pull/48 Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compa…
    926 downloads
  3. 1.8.2v1.8.2Dec 6, 2023

    What's Changed

    * Excluded servers no longer receive messages from discord by default, the old behavior can be enabled by setting
    excluded_servers_receive_messages = true
    Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compa…
    251 downloads
  4. 1.8.1v1.8.1Oct 26, 2023

    What's Changed

    * Update JDA + use its new webhooks API by unilock * Buildscript fixes by unilock * Prevent disabled servers being included in the output of /list by unilock Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compa…
    327 downloads
  5. 1.8.0v1.8.0Oct 14, 2023

    What's Changed

    * Added ability to exclude servers by name from join/leave/ingame messages * Properly shutdown JDA on plugin exit * Added more information to default config * Removed deprecated discriminator placeholder * This is in the username_chunk of your config under the [minecraft] category * Before:
      username_chunk = "<{role_color}><hover:show_text:{username}#{discriminator}>{nickname}</hover><reset>"
      
    * After:
      username_chunk = "<{role_color}><hover:show_text:{username}>{nickname}</hover><reset>"
      
    Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compa…
    119 downloads
  6. 1.7.0v1.7.0Aug 25, 2023
    * Added ability to disable some messages by setting their template value to false or "": * discord.chat.message * discord.chat.join_message * discord.chat.leave_message * discord.chat.disconnect_message * discord.chat.server_switch_message * discord.chat.death_message * discord.chat.advancement_message * discord.commands.list.no_players * discord.commands.list.server_offline
    134 downloads
  7. 1.6.0v1.6.0Feb 21, 2023
    * Improvements in the list command and configuration loading by 4drian3d * Add enable_everyone_and_here config option:
    # Enable @everyone and @here pings from Minecraft chat
    enable_everyone_and_here = false
    215 downloads
  8. 1.5.0v1.5.0Jan 28, 2023
    - Add Discord webhook by @voruti - Allow customization of webhook username by @unilock - Reduce used permissions by @voruti - Make /list command ephemeral by @voruti - Show player count as activity by @voruti - Allow configuring list command ephemeral by @voruti - Don't ignore timing out players by @voruti - /list: Detect if backend server is unreachable by @unilock
    187 downloads

Similar projects

Plugin →