Velocity Discord
Chat from all servers gets bridged with a Discord channel
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_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
Options that are not overridden will inherit the global config values
For example, to override ingame message format and the channel messages are sent to for a server named
lobby:[override.lobby.minecraft] message = "different format {username}: {message}" [override.lobby.discord] channel_id = "123456789012345678"[!NOTE] Config sections (e.g.,
[minecraft],[discord]) need to be preifxed withoverride.server_name.:[override.lobby.minecraft][override.lobby.discord][override.lobby.discord.chat.message]
New Contributors
- @Kaludii made their first contribution in https://github.com/fooooooooooooooo/VelocityDiscord/pull/64
- @elliotnash made their first contribution in https://github.com/fooooooooooooooo/VelocityDiscord/pull/62
- @coolguy284 made their first contribution in https://github.com/fooooooooooooooo/VelocityDiscord/pull/67
- @LunaSquee made their first contribution in https://github.com/fooooooooooooooo/VelocityDiscord/pull/78
Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compare/1.9.0...2.0.0
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.reloadpermission node - Add command to preview topic ingame - requires
discord.topic.previewpermission 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 = 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/compare/1.8.2...1.9.0
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 = trueFull Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compare/1.8.1...1.8.2
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/compare/1.8.0...1.8.1
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_chunkof 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>" - This is in the
Full Changelog: https://github.com/fooooooooooooooo/VelocityDiscord/compare/1.7.0...1.8.0
- Added ability to disable some messages by setting their template value to
falseor"":discord.chat.messagediscord.chat.join_messagediscord.chat.leave_messagediscord.chat.disconnect_messagediscord.chat.server_switch_messagediscord.chat.death_messagediscord.chat.advancement_messagediscord.commands.list.no_playersdiscord.commands.list.server_offline
- Added ability to disable some messages by setting their template value to
- Improvements in the list command and configuration loading by 4drian3d
- Add
enable_everyone_and_hereconfig option:
# Enable @everyone and @here pings from Minecraft chat enable_everyone_and_here = false- 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
