- Native Minecraft Version:
- Tested Minecraft Versions:
- Source Code:
- Languages Supported:
- English, French, German, Japanese, Korean, Dutch, Russian
The most powerful, configurable, open-source Discord to Minecraft bridging plugin available.
Yes: it's completely compatible with 1.16.x.
- Direct link to the latest dev build
- DiscordSRV's Discord server - come here for quick support and to tell us feature requests
- Source at GitHub
Using this plugin, you are able to give players the ability to chat in-game to chat with players on your Discord server as well as having people on the Discord server be able to chat with people on the server- this is useful for the situation of someone not being at their computer and being able to talk in-game.
As well as that, this plugin also has a remote console feature. You can designate a text channel for the plugin to listen on where messages sent to that channel are run as commands by the server console. You should restrict sending this channel to a developer or high ranking role only. Due to how Discord's permissions work, though, you can have some server roles being able to see the console, yet not being able to send messages in that channel, thus creating a read-only console for trusted staff members.
Both the chat and console link are toggleable through the configuration file. Some, but not all, options can be refreshed with /discord reload, by an op. VanishNoPacket permissions like silent join/quit, fake join/quit and join without announcing are checked when sending player join messages in the chat channel.
Java 8+ is required. It's recommended to go to DiscordSRV's wiki at https://github.com/DiscordSRV/DiscordSRV/wiki/Installation for picture instructions, though, you can just follow these steps:
Have only the best
- Create a new application at https://discordapp.com/developers/applications/
- On the application's page, go to the "Bot" tab, click "Add Bot", and confirm
- Optional: set your bot's avatar. If you don't do it now, you can later by command.
- Enable the SERVER MEMBERS INTENT option under "Privileged Gateway Intents" on the bot tab as well
- Click the copy button under "Token" on the bot tab, we'll be using it later
- Install the plugin, run & stop the server, then open the configuration file
- Paste the token you copied earlier into the BotToken value
- Go to https://scarsz.me/authorize & paste your application's Client ID value to the page
- Find your client ID in the "General Information" tab
- In the config option labeled Channels, input the Discord channel ID you want to be for your chat under "global"- you can set more channels up here and their linked channels.
- If you are using TownyChat, change the channel to "general" instead of "global"
- For reference, to obtain a channel ID, go to the cog on the bottom left of Discord, go to the appearance tab, enable developer mode. From there you can right click a guild, channel, user, or role and there will be a "Copy ID" option
- Optionally add a console channels ID in the config to access your server console from Discord
- Run through all the config options, you'll be surprised with how many features this plugin has
See the comparison chart for DiscordSRV and DiscordMC available here: https://scarsz.me/comparison
DiscordSRV implements with a fair amount of plugins for chat and vanish functionality. We recommend you try VentureChat by Aust1n46 but plugins such as Herochat, VentureChat, Essentials, Premium/Super vanish, VanishNoPacket, and Multiverse all have functionality in DiscordSRV.
All of DiscordSRV's commands can be exposed from /discord.
How do I fix the error "Unsupported major.minor version 52.0?"
Update the server's Java JRE version to Java 8+. <1.8 is unsupported.
I reloaded the plugin/server and now it won't work
DON'T RELOAD THE PLUGIN. IT BREAKS IT.
When I join/quit my server, a message isn't sent in the chat channel for me. What gives?
You have one of DiscordSRV's permissions to join/quit silently. To disallow this, give yourself or the group one of the following depending on what you want to allow.
First off, thank you from the bottom of my heart for the pizza. If you would like to donate, go to https://scarsz.me/donate. $10 is the suggested amount but you can donate however much you would like- anything is a massive thank you from me. In the note put your Discord username and if you're in DiscordSRV's server you'll be set as a donator and you'll receive some neat perks in the future. If you donated without the note, send me a PM on Discord and I'll manually check it.
If you want to interface DiscordSRV with your plugin, you can do so by adding the Maven dependency or adding the plugin jar to your project. For an example of this, see https://github.com/Scarsz/DiscordSRV-ApiTest. Be sure to add "DiscordSRV" to your plugin's plugin.yml depends/softdepends list.
Anything and everything shown at https://bstats.org/plugin/bukkit/DiscordSRV will be visible to the public with your server included in the statistics. This is only for statistics, no private information of your server is sent. If you don't want your server included in this, specify the config option "MetricsDisabled" and set it to "true" in the config.
I have absolutely no clue why you would want to disable this, but if you do, set the "UpdateCheckDisabled" config option to "true".
A Minecraft to Discord and back linkage plugin.
Paper-Spigot 1.16.4 #409
[Server thread/ERROR]: Could not pass event PlayerQuitEvent to DiscordSRV v1.21.2
github.scarsz.discordsrv.dependencies.kevinsawicki.http.HttpRequest$HttpRequestException: java.net.UnknownHostException: api.ashcon.app
at github.scarsz.discordsrv.dependencies.kevinsawicki.http.HttpRequest.code(HttpRequest.java:1562) ~[?:?]
at github.scarsz.discordsrv.dependencies.mojang.Mojang.fetch(Mojang.java:81) ~[?:?]
at github.scarsz.discordsrv.DiscordSRV.getAvatarUrl(DiscordSRV.java:1892) ~[?:?]
at github.scarsz.discordsrv.DiscordSRV.getAvatarUrl(DiscordSRV.java:1883) ~[?:?]
at github.scarsz.discordsrv.DiscordSRV.sendLeaveMessage(DiscordSRV.java:1697) ~[?:?]
at github.scarsz.discordsrv.listeners.PlayerJoinLeaveListener.PlayerQuitEvent(PlayerJoinLeaveListener.java:132) ~[?:?]
at com.destroystokyo.paper.event.executor.asm.generated.GeneratedEventExecutor889.execute(Unknown Source) ~[?:?]
at org.bukkit.plugin.EventExecutor.lambda$create$1(EventExecutor.java:69) ~[patched_1.16.4.jar:git-Paper-409]
at co.aikar.timings.TimedEventExecutor.execute(TimedEventExecutor.java:80) ~[patched_1.16.4.jar:git-Paper-409]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:70) ~[patched_1.16.4.jar:git-Paper-409]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:607) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.PlayerList.disconnect(PlayerList.java:513) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.PlayerConnection.a(PlayerConnection.java:1690) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.NetworkManager.handleDisconnection(NetworkManager.java:500) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.ServerConnection.c(ServerConnection.java:165) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.MinecraftServer.b(MinecraftServer.java:1376) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.DedicatedServer.b(DedicatedServer.java:377) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.MinecraftServer.a(MinecraftServer.java:1204) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.MinecraftServer.w(MinecraftServer.java:992) ~[patched_1.16.4.jar:git-Paper-409]
at net.minecraft.server.v1_16_R3.MinecraftServer.lambda$a$0(MinecraftServer.java:173) ~[patched_1.16.4.jar:git-Paper-409]
at java.lang.Thread.run(Thread.java:832) [?:?]
From a user's perspective, this is a perfect plugin and everything works as intended with minimal fuss. This is the kind of plugin that does a thing and does it well.
However, I can only rate the plugin 4 out of 5, due to two issues on the administrative side:
- Plugin configs do not migrate entirely. Because of this, every update must also require two server restarts per server: one for migrating the config, and another to update the changes that I have to migrate by hand every time.
- On the subject of updates, the plugin nags for updates in the server's WARN thread. This is the only plugin I've used that considers this an acceptable practice. Just put a small INFO notification, once, upon initializing the plugin.
Bottom line: Plugin is awesome, does what it says, super user-friendly. Great support on Discord. Just please make updating versions more seamless if you're going to nag for it.