Features

Chat sync

Send the Minecraft chat to a Discord channel and messages from the channel back into the game.

Chat sync connects a Discord channel to the chat of your Minecraft server. The MC-Sync plugin or mod runs on the server for this. You don't need to open a port.

Set up

  1. Get the file for your server from the download page.
  2. Put it into the plugins folder (Spigot, Paper, Folia) or the mods folder (Fabric, Quilt, Forge, NeoForge) and start the server. This creates the config.
  3. Connect the server to a Discord channel:
  1. In the dashboard, open "Servers" and then your server. If it's missing, add it with "+ Add server".
  2. Open the "Connection & chat" tab.
  3. Pick the chat channel.
  4. Accept the terms and click "Connect and create token".
  1. Put the token into the config and restart the server.
yaml
# Spigot, Paper, Folia: plugins/mc-sync/config.yml
api:
  token: "your-token"
properties
# Fabric, Quilt, Forge, NeoForge: config/mc-sync.properties
api.token=your-token
  1. Write a message in the game. It shows up in the Discord channel after a few seconds.

If it doesn't, see Problems.

Settings

In the dashboard the switches are under "Connection & chat". In Discord you set them with /server chat.

Dashboard/server chatEffect
ActiveactiveTurns chat sync off. Channel and token stay.
Chatchat-messagesChat messages in both directions
Join/leavejoin-leave-messagesPosts when someone joins or leaves the server
Deathsdeath-messagesDeath messages from the game
AdvancementsadvancementsAdvancements, from Minecraft 1.12
languageLanguage of the messages the bot writes itself
channelMoves the chat to another channel
/server chat server: Survival death-messages: False

Only in the dashboard:

  • Chat format: messages as the player with head and name, as an embed or as a plain line. Your own templates for join, leave, death and advancement, and a word filter.
  • Token: an expiry date and a grace period when you renew it, during which the old token still works.
  • Chat history: the latest messages of the channel, loaded straight from Discord.

Start, stop, outages and the weekly report are set under Notices.

Commands in the game

CommandEffect
/mcsync statusShows whether the connection is up, which commands the server accepts and whether there's an update
/mcsync reloadReads the config again. The token and some settings still need a restart.
/mcsync toggleHides the Discord chat for you only
/mcsync link <code>Links your Minecraft account to Discord, see Link accounts

status and reload need the mcsync.admin permission. On Fabric, Quilt, Forge and NeoForge, whoever may use /kick may use them. Anyone can use toggle and link.

Disconnect

  • Dashboard: "Connection & chat" → "Disconnect".
  • Discord: /server disconnect server: Survival.

The token stops working. The server stays in the list with its address and public page. /server remove deletes the server too.

Problems

The plugin doesn't check in

  • Check that the token is in the config in full, without spaces.
  • Restart the server after adding it. /mcsync reload isn't enough for the token.
  • The server must reach api.mc-sync.eu over HTTPS. Some hosts block outgoing connections; ask yours.

Messages from Discord don't show up in the game

  • Check that the "Chat" switch is on.
  • The bot must be allowed to see the channel ("View Channel").
  • If a player used /mcsync toggle, only they don't see the Discord chat.

Messages show up as an embed instead of with the player's head

To post as the player, the bot needs "Manage Webhooks" in the channel. Without it, it posts an embed. Grant it in the channel's Discord settings under "Permissions".

The channel isn't in the list

A channel can only belong to one server. Channels that are already used for something else aren't offered.

/mcsync doesn't exist

On Forge before Minecraft 1.19, the mod doesn't have the command. You can see whether the connection is up in the dashboard under "Connection & chat".

Background: how chat gets through without an open port

The Minecraft server opens an outgoing HTTPS connection to the bot itself and keeps it open. Messages from Discord come in over that connection. If it drops, the server asks every second until it's back.

While Discord can't be reached, chat, joins and deaths wait on the server's disk: in plugins/mc-sync/queue/ or config/mc-sync-queue/. They survive a restart too. How long they wait is set in the config under queue.*.