VE
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/78Config 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_topicsection# 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 = 10Removed
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
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 - requiresdiscord.reloadpermission node - Add command to preview topic ingame - requiresdiscord.topic.previewpermission node - Update dependenciesConfig 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 = 30Added 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 = -1Added 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 = 10Update 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_typeandmessage_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_typeandjoin_message_embed_colorjoin_message_type = "text" # Can be disabled join_message_embed_color = "#40bf4f"Added
leave_message_typeandleave_message_embed_colorleave_message_type = "text" # Can be disabled leave_message_embed_color = "#bf4040"Added
disconnect_message_typeanddisconnect_message_embed_colordisconnect_message_type = "text" # Can be disabled disconnect_message_embed_color = "#bf4040"Added
server_switch_message_typeandserver_switch_message_embed_colorserver_switch_message_type = "text" # Can be disabled server_switch_message_embed_color = "#40bf4f"Added
death_message_typeanddeath_message_embed_color, changed defaultdeath_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_typeandadvancement_message_embed_coloradvancement_message_type = "text" # Can be disabled advancement_message_embed_color = "#40bf4f"Added
proxy_start,proxy_stop,server_start, andserver_stopmessages# 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…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
Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compa…excluded_servers_receive_messages = true1.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…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 theusername_chunkof your config under the[minecraft]category * Before:
* After:username_chunk = "<{role_color}><hover:show_text:{username}#{discriminator}>{nickname}</hover><reset>"
Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compa…username_chunk = "<{role_color}><hover:show_text:{username}>{nickname}</hover><reset>"1.7.0v1.7.0Aug 25, 2023 * Added ability to disable some messages by setting their template value tofalseor"": *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_offline1.6.0v1.6.0Feb 21, 2023 * Improvements in the list command and configuration loading by 4drian3d * Addenable_everyone_and_hereconfig option:# Enable @everyone and @here pings from Minecraft chat enable_everyone_and_here = false1.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
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta