ModsJava
sDiscord — Advanced Discord Link System ⭑ 26.3 ✅
Java mod listed for Minecraft 1.12–26.x. Downloads from the MC Java Mods app on Android.
⬇ Download on Spigot
sDiscord
The complete Discord bridge: chat, live console, account linking, reports and staff tools
Spigot • Paper • Purpur | 1.13 → 26.x | MySQL • MariaDB • SQLite | BungeeCord networks
The complete Discord bridge: chat, live console, account linking, reports and staff tools
Spigot • Paper • Purpur | 1.13 → 26.x | MySQL • MariaDB • SQLite | BungeeCord networks
★ About
sDiscord connects your Minecraft server with your Discord community in one plugin. Chat flows both ways — delivered under each player's real name and skin head, with formatting, mentions, replies and emojis translating cleanly between both sides. The server console streams live into a staff channel where trusted roles can even run commands. Players link their accounts with codes, roles stay in sync automatically, and every report, note and audit entry lands where your staff needs it. Everything is configured in plain YAML, hot-reloadable with a single command, shipped in five languages, and runs from Minecraft 1.13 all the way to 26.x.
★ Features
Chat bridge
- ✔ Two-way chat — Minecraft <-> Discord with join/leave and server start/stop announcements
- ✔ Webhook delivery under the player's exact name and skin head (any avatar service, configurable)
- ✔ Markdown translation, both directions — **bold**, *italic*, __underline__, ~~strike~~, ||spoiler||, quotes and `code` become Minecraft formatting; Minecraft format codes become Discord markdown
- ✔ Mention translation, both directions — user, role and channel tags read as names in game; @everyone/@here are neutralized; @Player typed in game becomes a real ping on the linked account
- ✔ Reply support — Discord replies shown in Minecraft with the quoted text
- ✔ Emoji support — unicode or shortcode modes for Discord custom emojis
- ✔ Vanish-aware — players hidden by any vanish plugin are never announced in public channels and can't be exposed through /report
- ✔ Live console channel — [HH:mm:ss LEVEL] timestamps, min-level and regex filters, batching
- ✔ Console overflow protection — big backlogs are uploaded as a console-*.log attachment instead of flooding
- ✔ Run commands from Discord — role-gated console execution with ✅/❌ reactions, whitelist/blacklist and rate limit
- ✔ Account linking — /connect codes (with optional staff verification), one link per account, stored forever
- ✔ Auto role sync — map LuckPerms groups or permissions to Discord roles (added/removed automatically)
- ✔ Reports & bug reports — in-game GUI, /report, /reportbug and Discord slash commands, staff notifications
- ✔ Staff channel — join/quit/server start/server stop notices with colored embeds per event
- ✔ Audit log — links, unlinks, verifications, remote commands, lockouts, broadcasts and reloads
- ✔ Storage: SQLite (default), MySQL & MariaDB with connection pooling, all async
- ✔ BungeeCord networks — shared storage, cross-server chat relay, one config per server
- ✔ 5 languages — English (default), Español, Português, Polski, Deutsch; switch live with /sdiscord reload
- ✔ PlaceholderAPI expansion (%sdiscord_linked% and more) + presence placeholders: %players%, %online%, %max%, %server%
- ✔ Developer API — events (DiscordChatEvent, ConsoleCommandEvent, PlayerLinkedEvent...) + placeholders
- ✔ Hot reload — configs re-apply without a restart; a broken YAML keeps the last known values and is never overwritten
- ✔ Update checker — one console line and an in-game notice for admins when a new version is published
- ✔ Small & self-sufficient — a ~232 KB jar; the connecting libraries download themselves once on first boot (integrity-checked) and are cached locally; Java 8+
★ Commands & Permissions
Players
- /discord (alias /sd) — Shows your link status and how to get started
- /connect <code> — Links your Discord account — sdiscord.connect (default: all)
- /disconnect — Unlinks your Discord account — sdiscord.disconnect (default: all)
- /report <player> [reason] — Reports a player — sdiscord.report (default: all)
- /reportbug <description> — Sends a bug report — sdiscord.reportbug (default: all)
- /verify <player> — Approves a pending link (when staff verification is enabled) — sdiscord.verify (default: OP)
- /sdiscord (alias /sdadmin) — Admin panel: status, reload, broadcast, reports, unlink, verify, audit, admin, codes, debug, selftest — sdiscord.admin (default: OP)
- /sdiscord reload — Re-applies every config, lang file and module without a restart — sdiscord.admin
- /sdiscord broadcast <message> — Network-wide announcement — sdiscord.broadcast (default: OP)
- /sdiscord selftest — Live checks: token, chat channel, storage, console capture, drivers and integrations — sdiscord.admin
★ Setup (60 seconds)
- Create an application in the Discord Developer Portal, add a Bot, enable the SERVER MEMBERS and MESSAGE CONTENT intents and invite it to your server.
- Drop sDiscord.jar into /plugins and start the server once — the connecting libraries download themselves on this first boot and stay cached from then on.
- Open plugins/sDiscord/config.yml and paste your bot token.
- Open channels.yml and paste your chat, console, reports, bugs and staff channel IDs.
- Run /sdiscord reload — no restart needed.
- Done! Chat flows instantly; players link with /discord and /connect.
★ Webhooks (recommended)
Create a webhook in your chat channel, copy its URL and set it in features.yml: every player message is delivered with the player's exact name and skin avatar instead of the bot identity — exactly how players expect a chat bridge to look. With SkinsRestorer installed, the avatar is built from the skin the player actually wears, so offline-mode servers get real skins too.
Spoiler: features.yml (chat section)
Code (YAML):
chatBridge:
mcToDiscord : true
discordToMc : true
# Discord -> Minecraft
translateDiscordMarkdown : true # **bold** etc. become MC formatting
translateMentions : true # user, @role and #channel tags read as names
showReplies : true # Discord replies shown in game
emojiMode : "unicode" # unicode / shortcode / off
# Minecraft -> Discord
translateMcMarkdown : true # MC format codes become Discord markdown
translateMentionsToDiscord : true # @player pings the linked account
# Webhook delivery
webhookUrl : "https://discord.com/api/webhooks/1234567890/your-webhook-token"
webhookAvatarUrl : "https://crafatar.com/avatars/%uuid%?size=128&overlay"
skinsRestorerAvatars : true
webhookAvatarSkinUrl : "https://mc-heads.net/avatar/%texture%/128"
webhookRelayToMc : false # keep false to avoid echoes
mcToDiscord : true
discordToMc : true
# Discord -> Minecraft
translateDiscordMarkdown : true # **bold** etc. become MC formatting
translateMentions : true # user, @role and #channel tags read as names
showReplies : true # Discord replies shown in game
emojiMode : "unicode" # unicode / shortcode / off
# Minecraft -> Discord
translateMcMarkdown : true # MC format codes become Discord markdown
translateMentionsToDiscord : true # @player pings the linked account
# Webhook delivery
webhookUrl : "https://discord.com/api/webhooks/1234567890/your-webhook-token"
webhookAvatarUrl : "https://crafatar.com/avatars/%uuid%?size=128&overlay"
skinsRestorerAvatars : true
webhookAvatarSkinUrl : "https://mc-heads.net/avatar/%texture%/128"
webhookRelayToMc : false # keep false to avoid echoes
★ Console from Discord
Your console channel mirrors the server with [HH:mm:ss LEVEL] timestamps. Members holding any role from consoleRoles can type commands directly — each one runs on the server console, gets a ✅/❌ reaction, is rate-limited and recorded in the audit log. When the console gets busy (crash dumps, spam), sDiscord stops flooding and uploads the remaining lines as a .log attachment.
★ config.yml example
Spoiler: config.yml
Code (YAML):
token
:
"your-bot-token"
applicationId : ""
guildId : "your-server-id" # instant slash commands; auto-detected for single-server bots
serverName : "Survival"
inviteUrl : "https://discord.gg/your-invite"
language : en_US # en_US / es_AR / pt_BR / pl_PL / de_DE
storage:
type : AUTO # AUTO / SQLITE / MYSQL / MARIADB / JSON
mysql:
host : localhost
port : 3306
database : sdiscord
user : root
password : ""
poolSize : 8
prefix : sdiscord_
network:
enabled : false
serverId : ""
role : PRIMARY
reconnect:
initialSeconds : 2
maxSeconds : 120
quietSeconds : 300 # repeated warnings collapse into one line
presence:
enabled : true
status : ONLINE
intervalSeconds : 60 # activities rotate (minimum 15)
activities :
- "Minecraft | %players% players"
- "%server% — %online%/%max% online"
intents:
members : true
messageContent : true
applicationId : ""
guildId : "your-server-id" # instant slash commands; auto-detected for single-server bots
serverName : "Survival"
inviteUrl : "https://discord.gg/your-invite"
language : en_US # en_US / es_AR / pt_BR / pl_PL / de_DE
storage:
type : AUTO # AUTO / SQLITE / MYSQL / MARIADB / JSON
mysql:
host : localhost
port : 3306
database : sdiscord
user : root
password : ""
poolSize : 8
prefix : sdiscord_
network:
enabled : false
serverId : ""
role : PRIMARY
reconnect:
initialSeconds : 2
maxSeconds : 120
quietSeconds : 300 # repeated warnings collapse into one line
presence:
enabled : true
status : ONLINE
intervalSeconds : 60 # activities rotate (minimum 15)
activities :
- "Minecraft | %players% players"
- "%server% — %online%/%max% online"
intents:
members : true
messageContent : true
★ Networks (BungeeCord)
Set storage.type to MYSQL (or MARIADB) on every backend server pointing to the same database, enable network and give each server its own serverId with one PRIMARY. Links are shared network-wide and chat relays between servers automatically.
★ Compatibility
- Spigot, Paper and Purpur — tested on Paper 26.3 and Paper 1.21.4
- Minecraft 1.13 → 26.x (api-version 1.13, modern API only)
- Java 8+ — one small jar; the connecting libraries self-download once (integrity-checked) and are cached
- BungeeCord networks with shared MySQL/MariaDB storage
- Optional integrations: LuckPerms, PlaceholderAPI, SkinsRestorer
- Vanish plugins respected: SuperVanish, PremiumVanish, Essentials, CMI, VanishNoPacket — plus generic detection for most others
Spoiler: Version history
1.6.0 — Two-way chat upgrade: skin avatars with SkinsRestorer support (offline-mode included), formatting and mentions translate both ways, Discord replies shown in Minecraft, emoji unicode/shortcode modes; /report no longer reveals vanished players; verified on 26.3.
1.5.3 — Presence fix: %players% counts correctly and activities rotate; %online%/%max%/%server% placeholders; /report and /verify tab completion hides vanished players.
1.5.2 — Update checker (console + in-game admin notice); reload no longer duplicates chat relays.
1.5.1 — Vanish-aware join/quit (hidden staff only reach the log); duplicated report ids fixed; a mistyped number no longer stops messages.
1.5.0 — Deobfuscated for cross-version compatibility: commands always reply instantly, chat / join-quit / menus work on all supported versions.
1.4.2 — Survives missing privileged intents with one clear warning; every slash command guaranteed to answer; guildId auto-detected for single-server bots.
1.4.1 — /vincular and /desvincular answer from Discord; role checks read from the event (no guildId needed); chat delivery errors log the real cause; selftest live-checks token and channel.
1.4 — Heartbeat spam fixed (one warning + a recovery summary); exponential backoff with session resume; zero leaked threads.
1.3 — Webhook chat with skin avatars, Discord markdown translation, mention resolution, console overflow attachments, safe hot reload, config watchdog, English default.
1.1 — Gateway stability (no more 1006 loops), console timestamps.
1.0 — Initial release: linking, chat, console, reports, autorole, staff, audit, networks, 5 languages.
1.5.3 — Presence fix: %players% counts correctly and activities rotate; %online%/%max%/%server% placeholders; /report and /verify tab completion hides vanished players.
1.5.2 — Update checker (console + in-game admin notice); reload no longer duplicates chat relays.
1.5.1 — Vanish-aware join/quit (hidden staff only reach the log); duplicated report ids fixed; a mistyped number no longer stops messages.
1.5.0 — Deobfuscated for cross-version compatibility: commands always reply instantly, chat / join-quit / menus work on all supported versions.
1.4.2 — Survives missing privileged intents with one clear warning; every slash command guaranteed to answer; guildId auto-detected for single-server bots.
1.4.1 — /vincular and /desvincular answer from Discord; role checks read from the event (no guildId needed); chat delivery errors log the real cause; selftest live-checks token and channel.
1.4 — Heartbeat spam fixed (one warning + a recovery summary); exponential backoff with session resume; zero leaked threads.
1.3 — Webhook chat with skin avatars, Discord markdown translation, mention resolution, console overflow attachments, safe hot reload, config watchdog, English default.
1.1 — Gateway stability (no more 1006 loops), console timestamps.
1.0 — Initial release: linking, chat, console, reports, autorole, staff, audit, networks, 5 languages.
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.12, 1.13, 1.14
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
sDiscord — Advanced Discord Link System ⭑ 26.3 ✅ is a free Minecraft Java mod. Compatible with Minecraft 1.12, 1.13, 1.14, 1.15 and newer. Downloaded 120 times (via Spigot). Download it and open it directly in the game.