RunearaBridge
The all-in-one Discord ⇄ Minecraft bridge — chat, moderation, economy, levels, giveaways, and a web panel, in one plugin.
Built-in JDA bot |
Custom WebSocket bot support |
No external dependencies required
The all-in-one Discord ⇄ Minecraft bridge — chat, moderation, economy, levels, giveaways, and a web panel, in one plugin.
Overview
RunearaBridge connects your Minecraft server to Discord with a full feature set out of the box, so you don't have to stack three or four separate plugins together just to get chat sync, moderation, an economy, and a web panel all working in harmony. Run it entirely on the included bot, or hand the connection off to your own custom bot over a secure built-in WebSocket bridge — either way, no third-party Discord bot framework is required to get started.Beyond chat bridging, RunearaBridge gives you a complete moderation suite with automatic strike escalation and a full ticket system, a shared coin economy with vouchers and inactivity decay, a MEE6-style Discord leveling system with boost events and prestige, a full Discord-managed giveaway system, weekly activity heatmaps, staff-triggered server events, community engagement tools like welcome flows and a weighted "Player of the Week" system, a self-hosted web admin panel, and a real-money donation shop powered by Stripe and/or PayPal.
Every module is independent and toggled on its own in config, off by default. Run just chat bridging if that's all you need, or switch everything on and run your entire Discord-side community operation from a single plugin.
Core Bridge
The heart of RunearaBridge is fast, reliable two-way chat sync between Minecraft and Discord, with per-world channel routing so different worlds (survival, creative, your skyblock map) can post to their own dedicated channels. Join, leave, death, and advancement events post as configurable embeds, first-time joiners get a special first-join announcement, and your server console can mirror straight into a Discord channel, with staff able to send commands back from Discord to the console (role-gated).- Two-way Minecraft ⇄ Discord chat, with per-world channel routing and Discord → Minecraft message filtering (length limits + blocked-word list)
- Join / leave / death / advancement embeds with fully configurable colours, plus a separate first-time-join announcement
- Console bridge — server logs to Discord, Discord commands back to console (role-gated)
- Self-updating "Server Pulse" embed: player count + list, colour-coded TPS, uptime, world time-of-day, weather, and any active giveaways
- Player count voice channel mirror (auto-renames a locked voice channel, e.g. "
Players: 12/100") - Staff chat forwarding in prefix mode or toggle mode (/staffchat), with optional in-game echo to other staff
- Scheduled broadcasts on a timer — fire to Discord, in-game, or both, with PlaceholderAPI expansion per-player
- In-game welcome chat message on join, separate from the Discord welcome embed, with a distinct first-join message
- Discord reaction rewards — react with a configured emoji to a bridged chat message to pay the sender bonus coins
- Vanish suppression (auto-detects SuperVanish, PremiumVanish, Essentials, CMI, StaffFacilities, or any plugin using the standard "vanished" metadata tag), AFK detection, and world-change event bridging
- Per-world config overrides — set different reward amounts, XP rates, or welcome messages for any individual world
- BungeeCord / Velocity proxy support, including a /rb server command to send a player to another backend server and live proxy-wide player counts
- Run your own custom bot via a secure built-in WebSocket server (TLS supported, with reconnect replay buffer, optional crash-resilient disk persistence, and inbound rate limiting)
Moderation
A full moderation toolkit lives alongside the bridge, so staff can manage your server without ever leaving Discord. Every command is independently role-gated per action, so you can hand out exactly the level of access each staff rank needs, and a mod-log channel records everything automatically.- Discord slash commands:
/warn,/pardon,/warnings,/note,/timeout,/mute,/unmute,/kick,/ban,/unban,/purge,/slowmode,/lock(channel lockdown),/search(warning lookup) - Automatic strike escalation — configurable 3-tier system (e.g. tier 1 = auto-timeout, tier 2 = longer timeout, tier 3 = ban or timeout) triggered whenever a member's active warning count crosses a threshold
- Configurable warning expiry (warnings auto-expire after N days)
- Raid protection — detects a join-flood within a sliding time window and automatically locks the server into member-only verification for a set duration, with a mod-log alert
- Built-in auto-mod: excessive caps detection, repeated-message spam detection, and link filtering with a per-channel allowlist — all independently toggleable, with exempt roles
- Full ticket system —
/ticket open(Support/Report/Appeal or your own custom categories),/ticket close,/ticket add,/ticket panel; per-category Discord categories, per-category prompt templates so users know exactly what info to provide, post-close embed transcripts, 1–5★ closer ratings, configurable auto-close on inactivity, and SLA escalation pings if a ticket goes unclaimed too long - Staff applications —
/applyopens a 5-question modal (username, age, country, timezone, about),/applypanelposts a staff-only review panel - Discord-side self-whitelist command, optionally gated to a required role and to linked accounts only
Economy
RunearaBridge ships with a shared coin economy that can sync with Vault and your server's existing economy plugin, with multiple layers of engagement on top: streak rewards, gambling, vouchers, vote parties, and a fully configurable shop.- Shared coin economy with optional Vault sync — automatically matches your server's existing currency name (e.g. "dollars") or use your own custom currency name and symbol
- Daily reward with a streak bonus, plus separate weekly and monthly bonus payouts for consistent daily claims
- Earn coins from Discord messages (with per-channel allow/block lists and role multipliers), and from in-game kills, advancements, votes, and playtime for linked accounts
/coins paywith configurable daily send caps (global or per-role) and an optional transfer tax that can be burned or routed to a server pot account/coins flip— even-odds coin flip with a configurable cooldown and max bet/coins slots— six-symbol slot machine with weighted reels, a growing jackpot pool funded by 5% of every bet, and payouts up to a full jackpot win on three
- Inactivity coin decay — optional periodic tax on inactive balances to keep the economy from stagnating, with a configurable floor so balances are never wiped out entirely
- Voucher system — staff generate one-time redeemable coin codes (
/coins voucher) for giveaways, events, or stream rewards - Season management (
/coins season) for periodic economy resets with an announcement embed - Configurable coin shop supporting item kits, loot boxes (random reward pools), Discord roles (temporary or permanent), in-game/Discord nickname changes, and GriefPrevention claim blocks
- GriefPrevention claim block shop with FIVE independent ways to earn blocks for free: a daily claim command, vote rewards, message-count batches, playtime intervals, and one-time rewards for reaching specific Discord levels
- Vote Party — server-wide reward broadcast (in-game and Discord) once accumulated votes cross a threshold, running a configurable command for every online player
- Daily Challenge — a randomly generated daily in-game objective that doubles a player's daily-reward payout when completed first, with a
/streakscommand for progress and a weekly streak leaderboard
Levels
A MEE6-style leveling system tracks Discord XP from messages, in-game playtime, kills, and advancements, so activity both in Discord and in-game feeds the same progression track./level(your level + progress bar),/level top(leaderboard),/level rewards(role rewards at each tier)- Configurable XP per Discord message (with cooldown), per minute of in-game playtime, per kill, and per advancement — each can be overridden per-world
- Level-up announcements in-channel and/or via DM
/level boost— staff can start temporary XP boost events that stack multiplicatively with each other/level channel-xp— set a per-channel XP multiplier at runtime (silence a channel entirely, or double its rate) with no config edits needed- Prestige system — players above a configurable level floor can reset their XP for a prestige badge and an optional bonus role
- XP decay for inactive members to keep the leaderboard fresh, with a configurable floor
- Discord role ⇄ permissions group sync (via RunearaPerms or any compatible plugin), plus a playtime role ladder that walks players up Discord roles as they accumulate hours
- Linked-account perk sync — map specific Discord roles (e.g. Nitro Booster, Patron) to a one-time Vault coin bonus and/or a Bukkit permission node granted automatically when a player links or logs in
Giveaways
A complete Discord-native giveaway system — no need to run a separate giveaway bot./giveaway start— set a prize, duration, number of winners, target channel, and an optional role requirement to enter- Deferred (scheduled) start — set a delay before the giveaway opens for entries, configured directly on the start command
- Bonus entries — configurable rules grant extra entries to linked accounts, server boosters, or holders of specific roles
- An optional in-game console command can run automatically for each winner (e.g. delivering a prize directly), with
{player}and{discord_id}placeholders - Winners are notified by DM in addition to the public announcement
/giveaway endto close early,/giveaway rerollto redraw winners on an already-ended giveaway- Giveaway timers survive a server restart and resume automatically
- Active giveaways are surfaced in the Server Pulse embed and on the web panel
Server Events
Staff can trigger temporary server-wide events directly from Discord — no need to log in-game./event drop-party— broadcast a drop-party announcement/event pvp-night— enable a timed PvP-night buff window/event double-xp— enable a timed 2× XP window/event custom— fire a generic named event with your own message and duration/event stop— cancel a running event early
Activity Heatmap
- Every week, RunearaBridge automatically generates a GitHub-style contribution heatmap (7 days × 24 hours) showing exactly when your server is busiest, rendered in pure Java2D and posted straight to a configured Discord channel
- Colour intensity reflects distinct players online per hour slot, sampled continuously while the server runs
- Posting day, hour, and sample interval are all configurable
Community
Tools to make your community feel alive: welcome flows for new members, milestone announcements, a full marriage/partner system, and a suggestion box with weighted voting and duplicate detection.- Welcome embeds with optional DM, plus a verification gate (button-click role grant) with an optional CAPTCHA challenge for extra protection against bots/alts
- Member-count milestone announcements at any thresholds you choose
- Player of the Week — automatically computed and announced from a configurable weighted score of playtime, kills, advancements, and votes, with an optional winner role and in-game broadcast
- Marriage / Partner system:
/marry propose,/marry info,/marry divorce,/marry history— includes a shared partner role, one-time coin and XP bonuses for both partners, automatic anniversary announcements, and a wedding ceremony embed with live RSVP buttons (capped guest count) - Suggestion box —
/suggestposts a votable embed with a staff status dropdown (Accepted/In Progress/Declined); automatic discussion threads per suggestion, role-based vote weighting (e.g. staff votes count 3×), and cosine-similarity duplicate detection to block near-identical re-submissions - Automated server health alerts — background TPS and JVM heap monitoring that posts (and auto-resolves) an alert embed when performance degrades for a sustained period
Web Panel
A token-secured, self-hosted web panel gives you live oversight of your server without needing to be logged in-game or in Discord — useful for checking in from your phone or handing limited, scoped access to a co-owner.- Live stats (TPS, player count, uptime, version), an online player table (health, location, ping, gamemode, Discord link), and a full browser-based console
- Broadcast tool, whitelist management, and a moderation overview of active warnings and staff notes
- Giveaway and staff-application browsing straight from the dashboard
- Its own extended auto-mod module (separate from, and running alongside, the Discord-side auto-mod) — banned word lists with configurable action, spam detection, Discord invite blocking, and external link blocking with a domain allowlist
- Live-editable welcome AND goodbye embeds, fully configurable from the dashboard without touching config files
- Auto-role — automatically assigns a role to every new member, with bot-skipping and a minimum account-age requirement
- Extra Levels controls: voice-channel XP (earn XP for time spent in a voice channel), global XP multiplier events, ignored channels/roles, and DM-or-channel level-up announcement routing
- Token-secured (Bearer secret), with optional built-in TLS via a JKS/PKCS12 keystore, and trusted reverse-proxy support for real-IP resolution
Donation Shop
A full real-money storefront backed by Stripe and/or PayPal — no third-party webstore plugin required./storein Discord — players browse and purchase packages directly- Each package supports a custom description, price, image, any number of console commands to run on delivery, and an optional Discord role grant
- Automatic delivery — runs immediately if the player is online, or queues for delivery the next time they log in (configurable per package)
- Purchase receipts and staff purchase notifications can be posted to separate Discord channels
- Stripe and PayPal both supported simultaneously, with sandbox/test mode for PayPal and webhook signature verification for Stripe
Inventory Renderer
/invand/enderrender real, textured inventory images pulled from an actual Minecraft client jar — not plain text dumps- Staff can view, clear, restore, and copy any player's inventory or ender chest, online or offline
- Supports stacking multiple resource packs on top of the base textures, applied in priority order, for fully custom item appearances
- Player skin heads are cached locally with a configurable refresh interval
Commands
| Command | Description |
|---|---|
/discord | Shows your Discord invite link |
/rb (bridge, runearabridge) | Link/unlink your Discord account, check status; admin: reload, adminunlink, server (proxy send), panelrole |
/inv | View your inventory in Discord; staff can view, clear, restore, and copy other players' inventories |
/ender | View your ender chest in Discord; staff can view, clear, and copy other players' ender chests |
/notify | Staff: send a Discord DM to a linked player |
/mcnotify | Manage your own Discord notification preferences and friend list |
/coins | Check your balance in-game; admin: view another player's balance |
/buyclaimblocks | Spend coins on GriefPrevention claim blocks |
/playtime | View all-time playtime stats, or a top-N leaderboard |
/staffchat (sc) | Toggle staff chat Discord forwarding |
/seen | Check a player's last login, first join, playtime, and session count |
/socialspy | Monitor private messages between players |
/freeze | Freeze or unfreeze a player in place |
/vanish | Toggle vanish state for yourself or another player |
Discord slash commands include:
/warn, /pardon, /warnings, /note, /timeout, /mute, /unmute, /kick, /ban, /unban, /purge, /slowmode, /lock, /search, /ticket, /apply, /applypanel, /whitelist, /coins, /level, /marry, /suggest, /giveaway, /event, /store, and /streaks.Permissions
| Permission | Default | Grants |
|---|---|---|
runearabridge.discord | true | /discord |
runearabridge.player | true | /rb link/unlink/status |
runearabridge.inv | true | /inv (own inventory) |
runearabridge.inv.staff | op | /inv on other players |
runearabridge.ender | true | /ender (own ender chest) |
runearabridge.ender.staff | op | /ender on other players |
runearabridge.notify | op | /notify |
runearabridge.coins | true | /coins (own balance + shop) |
runearabridge.buyclaimblocks | true | /buyclaimblocks |
runearabridge.playtime | true | /playtime |
runearabridge.staffchat | op | Staff chat forwarding |
runearabridge.seen | op | /seen |
runearabridge.socialspy | op | /socialspy |
runearabridge.freeze | op | /freeze |
runearabridge.vanish | op | /vanish |
runearabridge.admin | op | Reload, adminunlink, server, panelrole, coins-other |
runearabridge.* | op | Grants everything |
Dependencies
Required: None — RunearaBridge works standalone with zero required dependencies.Soft Dependencies (optional — auto-detected if present, unlock extra features):
| Plugin | Unlocks |
|---|---|
| Vault | Coin economy sync with your server's economy, currency name auto-matching |
| EssentialsX (or any Vault-compatible economy) | Live economy transaction/milestone events, AFK timer integration |
| GriefPrevention | Claim block shop, /buyclaimblocks, all five free/passive claim-block earning methods |
| NuVotifier / Votifier | Vote rewards, vote party, vote-based claim blocks |
| PlaceholderAPI | %placeholder% expansion in welcome messages, broadcasts, and reward notices |
| RunearaPerms (or any compatible permissions plugin) | Permission group ⇄ Discord role sync, linked-account perk sync |
| RunearaChat | Chat-channel compatibility tweaks for the WebSocket bridge |
| SuperVanish / PremiumVanish / CMI / StaffFacilities | Auto-detected vanish suppression for join/leave events |
| Everwild | War / plague / settlement-tier world-event embeds |
| Runeradom | Empire war / nation world-event embeds |
| BungeeCord / Velocity | Cross-server player sending, proxy player counts (requires proxy.enabled) |
None of the above are required to install or run the plugin — every integration is optional and only activates if the corresponding plugin is detected.
Discord Bot Setup — Required Permissions & Scopes
OAuth2 Scopes (when generating your invite link in the Developer Portal):bot— requiredapplications.commands— required for all slash commands
Gateway Intents (enable under Bot → Privileged Gateway Intents):
- Server Members Intent — required (welcome/verification, role sync, member milestones, raid protection, auto-role)
- Message Content Intent — required (chat bridging, auto-mod, suggestion/ticket text, XP from messages)
- Presence Intent — not required
Bot Permissions (select these in the permissions calculator, or just grant Administrator on a private/staff bot for simplicity):
| Permission | Why it's needed |
|---|---|
| View Channels | Read chat, tickets, console channel, etc. |
| Send Messages | Chat bridge, embeds, command replies |
| Embed Links | Almost every feature posts rich embeds |
| Attach Files | Inventory/ender chest image renders, ticket transcripts, activity heatmap images |
| Read Message History | Ticket transcripts, duplicate-suggestion detection |
| Add Reactions | Chat reaction coin rewards, suggestion voting |
| Use External Emojis | Custom item emoji in coin/shop embeds |
| Manage Messages | Auto-mod deletions, purge command, pinning the Server Pulse embed |
| Manage Channels | Ticket channel creation/closing, raid-lockdown changes |
| Manage Threads / Create Public Threads | Suggestion discussion threads |
| Manage Roles | Verification role, level rewards, playtime ladder, marriage role, linked-perk roles, role sync, auto-role, giveaway role requirements — bot's role must sit above any role it assigns |
| Manage Nicknames | Coin-shop nickname item (Discord target) |
| Manage Webhooks | Skin-avatar webhook for Minecraft → Discord chat |
| Manage Server | Raid protection (temporarily raises verification level) |
| Moderate Members (Timeout) | /timeout, strike auto-escalation |
| Kick Members | /kick |
| Ban Members | /ban, /unban, tier-3 strike auto-ban |
| Connect | Player-count voice channel — bot needs Connect/View on that channel to rename it |
| Move Members | Only if you plan to use voice features beyond the count mirror |
Tip: the simplest path for a private/self-hosted bot is to give it Administrator — it satisfies every permission above with no chance of a missing-permission error. Use the granular list only if your security policy requires least-privilege.
Setup Guide
1. Install
- Drop
RunearaBridge.jarinto yourplugins/folder. - Start the server once and let it boot fully, then stop it (or just let it run — config is hot-reloadable). This generates the full config set in
plugins/RunearaBridge/:config.yml,discord.yml,discord-moderation.yml,discord-currency.yml,discord-levels.yml,discord-features.yml,modules.yml,renderer.yml,webpanel.yml,websocket.yml, anddonation-shop.yml. - Every module across these files ships disabled by default — nothing turns on or starts talking to Discord until you explicitly flip it on, so it's safe to install on a live server with zero risk of unexpected behaviour.
2. Create your Discord bot
- Go to the Discord Developer Portal and create a New Application.
- Under Bot, click "Reset Token" and copy it somewhere safe — you'll only see it once.
- On the same Bot page, enable Server Members Intent and Message Content Intent under Privileged Gateway Intents (see the Permissions section above for exactly why each is needed).
- Under OAuth2 → URL Generator, tick the
botandapplications.commandsscopes, then select the bot permissions you need (or just tick Administrator for a private/self-hosted bot — see the permissions table above). - Open the generated URL and invite the bot to your Discord server.
- In Discord, enable Developer Mode (User Settings → Advanced), then right-click your server icon and "Copy Server ID" — this is your guild ID.
3. Configure the core bridge
Opendiscord.yml and fill in the essentials:discord.token— the bot token from step 2. (Leave this blank to run in WebSocket-only mode and let your own Node.js bot handle everything instead — see the custom bot section below.)discord.guild-id— your server's ID from step 2.discord.chat-channelanddiscord.log-channel— right-click the channels you want chat and join/leave/death logs posted to, "Copy Channel ID", and paste them in. Set them to the same channel to combine both into one feed.discord.invite-urlandconfig.yml'sdiscord-invite— your actual Discord invite link, so/discordin-game doesn't point to a placeholder.discord.timezone— an IANA timezone (e.g.America/New_York) used for daily-reward resets and other per-day logic. Defaults to UTC if left blank.
discord.yml — the Server Pulse embed, per-world channel routing, staff chat forwarding, the player-count voice mirror, message filtering, reaction rewards — is optional and can be turned on individually whenever you're ready.4. Turn on the modules you want
Each major system lives in its own file, fully commented with examples. Open whichever ones are relevant to you and set the top-levelenabled: true (plus any sub-feature flags inside):discord-moderation.yml— staff role / per-command roles, mod-log channel, warning strikes, raid protection, auto-mod, the ticket system, staff applications, self-whitelist.discord-currency.yml— the coin economy, daily/weekly/monthly rewards, gambling, the shop, claim-block earning, vote party, and daily challenges.discord-levels.yml— XP/leveling, prestige, playtime role ladder, role sync, and linked-account perks.discord-features.yml— welcome & verification, Player of the Week, the marriage system, the suggestion box, and server health alerts.modules.yml— AFK detection, economy events, the in-game welcome message, scheduled broadcasts, proxy support, and vanish suppression, plus per-world config overrides.renderer.yml— setclient-jarto a Minecraft client jar (download one from https://mcversions.net and drop it inplugins/RunearaBridge/, or leave blank to auto-detect) so/invand/enderrender real textured inventory images instead of plain text. Drop any resource packs intoplugins/RunearaBridge/resourcepacks/and list them here to overlay custom textures.
5. Apply changes
Run/rb reload in-game or from console after editing any config file. This re-reads every YAML file and reconnects all bridges — no server restart needed for config changes (the renderer's client-jar and a few low-level WebSocket settings are the only things that may need a restart).6. Optional: Web Panel
- Open
webpanel.yml, setenabled: true, and generate a strong secret (e.g.openssl rand -hex 32) for thesecretfield — this is your dashboard's auth token, so keep it private. - By default the panel listens on all interfaces at port
8888over plain HTTP. For anything beyond local/VPN access, put a TLS-terminating reverse proxy (Caddy or Nginx — examples are included in the config comments) in front of it, or configure the built-in TLS keystore option. - Once running, just open the panel URL — your secret is pre-filled automatically.
7. Optional: run your own custom bot instead
If you'd rather run your own Node.js (or other) Discord bot instead of the built-in JDA bot:- Leave
discord.tokenblank indiscord.ymlto disable the built-in bot. - Open
websocket.yml, set aportand a long randomsecret— your bot authenticates to the plugin's built-in WebSocket server with this secret. - Connect your bot as a WebSocket client on that port using the matching secret, and build your own command/embed logic against the event stream.
- Enable
tls.enabledwith a keystore if your bot runs on a different machine than the Minecraft server. - If you want to run BOTH the built-in bot and your own bot side by side, use the
suppress-builtin-*flags to stop the JDA bot from double-posting chat, commands, or start/stop embeds.
8. Optional: Donation Shop
- Open
donation-shop.ymland setenabled: true. - Fill in Stripe (
secret-key,webhook-secret) and/or PayPal (client-id,client-secret,webhook-id) credentials — you can configure either or both. - Set
webhook-base-urlto your web panel's public HTTPS address, then register the webhook endpoints shown in the config comments (/api/donate/webhook/stripeand/api/donate/webhook/paypal) in each provider's dashboard. - Add your packages — each one needs an id, name, description, price, and a list of console commands to run on delivery (an optional Discord role grant too).
- Run
/rb reloadand your storefront is live via/storein Discord.
[/LIST>
Support
Found a bug or have a feature request? Open a discussion or drop a review below — actively maintained and updated.
Discord: https://discord.gg/HSgNTS2Ppr
Constructive criticism welcome!
