COWMODSКаталог модов

ZDiscord

ZDiscord bridges Minecraft and Discord: two-way chat with webhook avatars, live server status (players/TPS), account linking with role grants, and a built-in ticket system. Folia support, native JDA 5 slash commands, 15+ toggleable modules.

6036обновлён 10 окт. 2026 г.
УправлениеОбщениеУтилиты

Описание

ZDiscord connects Minecraft and Discord directly. Players chat across both platforms, check who is online, link accounts, open tickets, and view profiles or leaderboards. Staff use the same connection for console logs, alerts, and private staff chat.

How it fits your server

Commands use native Discord slash commands, buttons, and selection menus. One JAR runs on Paper, Folia, and Spigot. You can toggle each module in the configuration.

Features

  • Chat bridge: Two-way chat with reply context and webhook avatars. Supports SkinsRestorer with Java and Bedrock fallbacks.
  • Server status: An updating Discord message showing player count, TPS, and memory usage.
  • Live stats: Combined panel showing online players, server performance, and current leaders.
  • Console streaming: Forwards server console logs to a Discord channel.
  • Account linking: One-time codes link Discord and Minecraft accounts, with optional link-to-join enforcement.
  • Staff chat: /sc toggles a staff-only channel bridged to Discord.
  • Tickets: Players open private support channels from Discord buttons or /ticket.
  • Leaderboards: Track kills, deaths, and playtime with paging, stat switching, and timed refreshes.
  • Event messages: Posts joins, quits, deaths, and advancements to Discord.
  • Performance monitor: Tracks TPS and memory over time with configurable alerts.
  • Anti-raid: Detects mass joins and triggers automated lockdown when needed.
  • Command logger: Logs watched and critical commands to a staff channel.
  • Voice status: Shows a tab-list indicator when linked players join a Discord voice channel.
  • Reaction roles: Maps message reactions to Discord roles and in-game permissions.
  • Player profiles: /profile [player] shows an embed with the player avatar, NameMC link, stats, and a follow button.
  • Follow system: Get DM notifications when followed players join. Manage subscriptions with /following and /unfollow.
  • Anonymous confessions: /confess posts to a designated channel with cooldowns and customizable embeds.
  • Setup wizard: /setup configures channels and roles directly from Discord.
  • Plugin bridges: Forwards Onlysleep and RedstoneReboot messages through your existing bot connection.

Requirements

  • Java 17 or newer
  • Paper 1.20.4 or newer, Folia, or Spigot 1.20.4 or newer
  • A Discord bot token with Server Members and Message Content intents enabled
  • MySQL 8.0 or newer only when using the optional MySQL storage backend

Installation

  1. Download ZDiscord-1.4.2.jar from the releases page.
  2. Place the JAR in your server's plugins/ directory.
  3. Start the server to generate the default config.yml and messages.yml.
  4. Open plugins/ZDiscord/config.yml and set your bot token and Discord server ID.
  5. Restart the server.
  6. Run /setup in Discord to choose channels and roles.

Configuration

All settings live in plugins/ZDiscord/config.yml. User-facing Minecraft text is in messages.yml. YAML storage works without a database; MySQL is available when you need shared or larger-scale storage.

Галерея

bannerhalloween logologo

Последние версии

Все версии →
release

ZDiscord 1.5.0

1.5.0
10 окт. 2026 г.126Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - **Halloween seasonal event** A configurable seasonal mob hunt with customizable date window (`halloween.window-start` / `halloween.window-end`), mob kill tracking, point scoring, and finale rewards. PvP kills are excluded. - In-game `/zdiscord halloween [status|top]` displays event dates, personal points, and standings with the default player permission `zdiscord.halloween`. - Discord `/halloween` slash command displays event state, standings, and countdown. - Daily countdown announcements in Discord and Minecraft broadcasts leading up to the event opening. - Live standings embed panel auto-updating during the event window. - Milestone announcements when players reach configured point thresholds, with boss multiplier bonuses for dragons, withers, and elder guardians. - Configurable event timezone, eligible worlds and mob types, excluded game modes, and spawner-mob filtering. - Optional Halloween join titles, ambient sounds, and milestone particles with separate appearance controls (cosmetics require explicit opt-in). - Independent switches for opening announcements and public Minecraft broadcasts. - Automatic ticket inactivity closure, persistent exclusive staff claims, and complete paginated transcripts with chronological attachments and embed records. ### Changed - Configuration schema version bumped to 16; existing settings are preserved while new defaults are materialized. - Startup banner counts 17 modules, including the seasonal event. - Halloween messages and displays use concise text, orange accents, and numbered standings; all in-game text customizable via `messages.yml`. - Seasonal progress is described as points to reflect boss bonuses; Discord standings capped at 25 entries. - Removed empty internal lifecycle hooks, unused message templates and status fields, obsolete ticket-count writes, and decorative emoji. ### Fixed - Setup dropdowns and modals check administrator permissions in the configured guild; category IDs, colors, and limits are validated. - Reloads unregister command-log listeners, cancel console and lockdown timers, and reconcile public API settings. - Shutdown drains Discord callbacks before closing storage and prevents late bot reconnects. - Paper staff-chat toggles relay each message once, namespaced sensitive commands redact arguments, and Discord console works when the chat channel is unset. - Shaded SLF4J providers are discovered through the plugin classloader, and turning off log suppression restores normal library logging. - Text conversion preserves literal ampersands and strips hex colors correctly. Slash profile, seen, and following titles honor message settings; update checks avoid duplicate notices and tolerate oversized version numbers. - Ticket controls validate the configured guild and tracked channel; failed interaction acknowledgements or deletion requests release the closing guard for retry. - Required account linking supplies a code in the rejected login message. Each Minecraft account has one pending code, and relinking keeps both account directions consistent. - Concurrent playtime flushes claim each interval once, preserving fractional seconds. Leaderboard updates persist in the same order as accepted changes. - Stored follows are available before a player joins; reloads and the public follower API preserve accepted buffered writes. - Configuration reloads and Discord setup reconcile enabled modules, refresh channel settings, and replace repeating panel timers. Local linking and statistics also initialize without Discord. - Discord panels serialize creation, ignore stale callbacks, and replace messages only when Discord confirms deletion. - Ticket interactions defer before channel creation. Atomic reservations enforce linked-account limits, private channels explicitly grant bot access, and slots are released only after confirmed deletion. - MySQL schema failures close the connection pool and select YAML fallback instead of reporting a working database. - Discord REST/callback workers drain before Paper closes the plugin classloader. Disabled-plugin database cleanup avoids rejected scheduler tasks, and concurrent ticket welcomes display their own ticket number. - Link/follow event threading matches the caller. Join/follower database lookups run off the game thread, and delayed welcome messages use the player scheduler. - Update notifications use Spigot-compatible clickable components. Advancement embeds use display titles, and quit embeds show the correct online-player count. - Discord attachments carry clickable Minecraft URLs using the Spigot component API. - Minecraft seasonal scoring and commands remain available without a connected Discord bot. - Creative, Spectator, passive-mob, and spawner kills are excluded from the default hunt. - Actual mob deaths and boss bonuses contribute to the hunt, including milestones crossed by a multi-point kill. - Event reloads retire old panel loops, preserve in-flight panel creation, and retain scores and reward claims across the master switch. - Late and offline finale checks recover the recorded event, and winner rewards apply to first place only. - MySQL write ordering prevents stale score writes from replacing newer values; shutdown drains pending writes before closing the pool. ### Install Download the JAR below and place it in your server's `plugins/` folder.
release

ZDiscord 1.4.2

1.4.2
4 окт. 2026 г.34Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - Added standalone `/link` in-game command as a direct shortcut for `/zdiscord link`. - Added `chat.enabled` boolean option in `config.yml` to allow toggling the chat bridge without clearing the configured channel ID. ### Changed - Configuration schema version bumped to 13. - In-game `/zdiscord` help and tab completion now filter subcommands based on player permissions. ### Fixed - Fixed `/zdiscord link` permission check blocking players without `zdiscord.admin` from generating account linking codes. - Fixed playtime leaderboard stats not updating while players remain connected online. Active session playtime is now flushed periodically and on server reload/shutdown. - Fixed stale leaderboard cached rankings when clicking the Discord refresh button or when stats are updated.
release

ZDiscord 1.4.1

1.4.1
3 окт. 2026 г.13Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - A secret Halloween easter egg was added.
release

ZDiscord 1.4.0

1.4.0
21 сент. 2026 г.74Minecraft: 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - Optional CraftyAI integration via `/crafty` slash command for asking questions from Discord with private replies, rate limiting, and role/channel allowlists. ### Changed - Configuration schema version bumped to 12. - Updated official website links to demonz.org. ### Fixed - Fixed an infinite loop in `LeaderboardModule` that could freeze the server thread when recording stats for a player without prior entries.
release

ZDiscord 1.3.1

1.3.1
30 авг. 2026 г.80Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Fixed - The startup banner now derives its module total from all 16 current modules, including Live Stats, Confession, and the Onlysleep/RedstoneReboot integration bridge. ### Changed - Completed a maintainability pass across configuration, storage, Discord bridge, module, and utility code while preserving public API documentation and runtime behavior. - Added regression coverage for startup module accounting.
release

ZDiscord 1.3.0

1.3.0
30 авг. 2026 г.13Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
### Added - Real profile pictures. If SkinsRestorer is installed, `/profile` cards and leaderboard thumbnails use the player's actual skin instead of the default Steve/Alex head. Set `profile.skin-restorer` to `false` to disable. - Discord replies are now quoted in Minecraft chat. Replying to a bridged message shows a short "Replying to X: ..." line above it, so it's clear what the message is answering. See `chat.show-replies`, `chat.reply-format`, `chat.reply-preview-length`. - More console logging: account links/unlinks, ticket open/close, and a shutdown summary with storage flush confirmation. - `SkinsRestorer` listed as a soft dependency in `plugin.yml`. - `/zdiscord diagnostics` — a read-only health check in-game: storage backend and unflushed writes, Discord ping, active webhooks, SkinsRestorer/Geyser detection with Bedrock player count, and module states. - **Live stats panel** — one combined embed that refreshes itself in a channel: players online (with names), TPS, memory, top kills, most playtime, and most followed. Enable it with `live-stats.channel` in config.yml; refresh rate via `live-stats.update-interval`. - **Self-refreshing `/leaderboard` replies** — command responses now re-edit themselves with fresh data every `leaderboard.auto-refresh-seconds` (default 60s, 0 disables) and follow you when you page or switch stats. They stop after 30 minutes or if the message is deleted. - `logging.debug: false` in config.yml — one switch for troubleshooting. Turns every log category to DEBUG, unsuppresses JDA/Hikari connection logs, and applies live via `/zdiscord reload` (previously logging changes needed a restart). `/zdiscord diagnostics` shows whether it's on. - Geyser/Floodgate awareness for avatars. Bedrock players get name-based mc-heads heads when SkinsRestorer has no skin for them instead of a guaranteed-broken UUID URL. `chat.avatar-url` now also accepts `"auto"` (the new default) which picks the best source per player; custom `%uuid%`/`%name%` formats still work everywhere. - The "Most Followed Players" leaderboard panel now reads follower counts from storage, so players who haven't joined since the last restart no longer disappear from it. - Ticket channels store their owner in the channel topic, so closing a ticket always frees the right person's ticket slot. - Optional Onlysleep and RedstoneReboot bridges forward sleep/night and restart messages through ZDiscord's existing bot connection. Each can use a dedicated channel or fall back to `channels.events`. - The public API can queue plain messages and `EmbedData` objects to configured Discord channels. ### Changed - `config-version` bumped to 11 so existing configs pick up all avatar, logging, live-stats, reply, and integration keys. Untouched `chat.avatar-url` defaults are migrated to `"auto"` automatically. - JDA updated from 5.2.1 to 6.5.0 for current Discord API behavior and 2026 permission changes; SLF4J updated/aligned to 2.0.18 and relocated inside the plugin JAR. - MySQL connections encrypt by default (`use-ssl: true`) but no longer demand a CA-signed certificate; set `storage.mysql.ssl-verify-certificate: true` if yours has one. The official Connector/J driver is now bundled and relocated, so MySQL 8+ storage works on a clean server without another plugin supplying a driver. - Stat-update events (`ZDiscordStatUpdateEvent`) fire before the value lands and cancelling one no longer rolls back increments that raced with it. - `/zdiscord embed` reports "bot not connected" instead of throwing when startup failed. ### Fixed - Emoji shortcodes (`:green_circle:` etc.) showed as raw text in every embed - Discord only renders shortcodes in plain messages, not embed titles/fields/footers. All ~80 usages across panels, cards, tickets, and status embeds now use real Unicode emoji, which render everywhere. (config-version 10) - YAML storage could silently drop writes: a save landing between the flusher's file snapshot and its dirty-flag reset was lost until restart. Dirty flags now live under the same lock as the save itself. - Pending MySQL writes queued during shutdown ran anyway instead of being cancelled with the scheduler teardown. - `/ticket` from Discord no longer blocks JDA's gateway thread during channel creation (chat relay froze while tickets were being made). - `/players` and the status embed no longer risk a `ConcurrentModificationException` when someone joins or leaves mid-refresh; the status panel just skips the player list that tick. - Two simultaneous first messages in a channel can't create duplicate "ZChat" webhooks anymore (orphans count against Discord's 10-webhook channel cap). - Unlinking no longer clears the reverse lookup when legacy data maps several players to one Discord ID - the other linked player keeps working. - Startup gives up on a stuck Discord connection after 15 seconds instead of hanging the server enable phase forever. - Transcript button on a fresh empty ticket replies with a friendly message instead of an exception. - Numbers formatted into URLs and embeds (TPS, memory, K/D, avatar URLs) now use locale-independent formatting, so servers running under digit-substituting locales don't produce broken image links. - Skin cache is bounded (~2048 entries) so very large servers don't accumulate entries forever; confession/follow cooldown maps evict expired entries too. - SkinsRestorer's overloaded texture helper is resolved by its `SkinProperty` parameter, avoiding a runtime mismatch with the `String` overload. - Release automation publishes only the shaded runtime JAR and now runs from immutable `v*` tags instead of every push to `main`. - Discord console commands keep a hard denylist even when a custom allowlist is configured; shutdown, permission escalation, arbitrary command execution, and plugin reload commands cannot be enabled remotely. - Minecraft chat cannot trigger Discord `@everyone`, `@here`, or role/user mentions, and console/webhook buffers now have hard memory bounds under message floods. - Ticket numbering no longer resets to #1 after a restart (the counter was written as a string and read back as 0). - ZDiscord no longer crashes at startup if the server console can't display unicode; the startup banner and console messages are ASCII-safe. - `status.embed.color` is honored again; it was silently ignored during the rewrite. - TPS reading falls back to a flat 20.0 on old Spigot builds instead of breaking the embed.
release

ZDiscord 1.2.0

1.2.0
27 июн. 2026 г.157Minecraft: 1.20, 1.20.1, 1.20.2, 1.20.3, 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2bukkit, folia, paper, purpur, spigot
Скачать
Что нового
## [1.2.0] - 2026-06-16 ### Added - Developer API (`ZDiscordAPI`, `ZDiscordProvider`, Bukkit events) for third-party plugins. - Interactive leaderboards with medals, head thumbnails, pagination, and stat-switcher dropdown. - Auto-updating leaderboard panel in a configurable channel. - Centralized logger (`ZLogger`) with 9 categories, 6 levels, compact format. - `/profile [player]` — player card with avatar, NameMC link, stats, and follow button. - `/seen <player]` — last-seen lookup with online status, playtime, sessions. - `/following` and `/unfollow <player>` — manage follow subscriptions from Discord. - `/confess <message>` — anonymous confessions with cooldown and configurable color. - Achievement rarity badges ("First of the day", rare advancement threshold). - Player activity storage (last_seen, first_join, sessions, advancement unlocks, follows). - `ColorUtil.toDiscordMarkdown()` for `&l`, `&o`, `&n`, `&m` conversion. - `FollowModule` — in-memory cache with non-blocking DM dispatch. - `PlayerProfileBuilder` for profile card embeds with Discord username resolution. - In-game `/confess <message>` command for anonymous confessions. ### Changed - `config-version` bumped to 6. Default avatar changed to mc-heads.net. - `HeadUtil` rewritten for mc-heads.net with `avatar()`, `body()`, `combo()`. - Storage backends gained 12 new methods for activity, advancements, and follows. - `AdvancementListener` persists unlocks, reads rarity stats async, guards against duplicates. - `UpdateChecker` interval 6h → 5h. Silent Discord notice fires once per release. - `JoinQuitListener` writes last_seen and increments sessions on every join/quit. - First-join detection uses storage instead of `player.hasPlayedBefore()`. ### Fixed - `SetupCommand` "Loading options failed" bug and NPE on removed ticket categories. - `JoinQuitListener` null-safe bot connection checks. - `/seen` avatar resolution and "never joined" message. - `FollowModule.onPlayerJoin` no longer blocks scheduler thread. - `MySQLStorage.isFollowing` uses `SELECT COUNT(*)` instead of fetching all followers. - Profile card shows actual Discord username instead of raw ID. - Confession handles use monotonic counter instead of `hash % 10000`. - Confession embeds use a real love-letter emoji instead of a Discord shortcode. - Stat update events match the calling thread, fixing Paper quit-event crashes. - JDA SLF4J provider packaging fixed so startup does not use the fallback logger. - Ticket setup now uses the guided `/setup` wizard only and posts a ticket-specific setup flow. - Ticket creation ignores placeholder support-role IDs instead of aborting channel creation. - Setup and follow buttons use real emoji instead of Discord shortcode text. - Ticket panel dropdown values now submit category IDs instead of display labels. - `/panel` no longer crashes in thread or forum channels. - `UpdateChecker` Discord announcement retries on failure.
release

ZDiscord 1.0.0

1.0.0
2 апр. 2026 г.106Minecraft: 1.20.4, 1.20.5, 1.20.6, 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1bukkit, folia, paper, purpur, spigot
Скачать
Что нового
# Initial release