Deaths to Discord
1.4.2Takes scoreboard death counter and uses Discord webhook to display a death counter leaderboard on your discord server.
1.4.2latestDeaths to Discord 1.4.2Sep 10, 2026 [1.4.2]
Changed
- Added Dependabot configuration to check Gradle dependencies, the Gradle wrapper, and GitHub Actions weekly on thedevbranch. - Paper API updates are excluded from Dependabot so Paper compatibility changes remain manually controlled.Fixed
- Fixed issue #33: webhook validation now accepts only HTTPS Discord webhook endpoints, rejects ordinary Discord/channel and non-Discord URLs, and message creation replaces an existingwaitquery parameter instead of appending a duplicate. - Fixed issue #34: an explicitly presentmax-discord-content-characterssetting with a YAML null value is now rejected instead of being mistaken for an omitted legacy setting and silently defaulted to1900. - Fixed issue #35: unchecked filesystem, scheduler, world, and Paper profile lookup failures during historical-player discovery are now handled as best-effort failures so startup discovery still completes and the initial Discord synchronization can proceed.Dependencies
- Updateactions/setup-javato5- Updatecom.google.code.gson:gsonto2.14.0- Updateactions/checkoutto7- Updateorg.junit.platform:junit-platform-launcherto6.1.3- Updateorg.junit.jupiter:junit-jupiterto6.1.3- Updategradle-wrapperto9.7.1- Updategradle/actionsto6- Updateactions/upload-artifactto7- Updateio.papermc.paper:paper-apito26.2.build.121-stable1.4.1Deaths to Discord 1.4.1Aug 30, 2026 [1.4.1] - 8/30/26
Fixed
- Fixed issue #7: deaths that occur while a Discord update is in flight now trigger one fresh follow-up update instead of being missed. - Fixed issue #8: historical-player discovery is cached, filesystem work and leaderboard formatting run asynchronously, and Bukkit profile/score lookups are spread across bounded tick batches to prevent large player histories from stalling one server tick on every update. - Fixed issue #9: overlapping updates can no longer create multiple initial Discord leaderboard messages. - Fixed issue #10: Discord updates are serialized so an older leaderboard snapshot cannot finish after and overwrite a newer snapshot. - Fixed issue #11: Discord HTTP 429 responses honor the requested retry delay and retry without dropping the pending leaderboard update. - Fixed issue #12: a deleted Discord leaderboard message is detected and recreated automatically on the next update. - Fixed issue #15: Discord response payloads are parsed with a JSON parser instead of formatting-sensitive string searches. - Fixed issue #16: Discord message IDs now live in a dedicated state file, are bound to a non-secret webhook fingerprint, migrate from legacy configuration, and cannot cross webhook reload sessions. - Fixed issue #17: invalid mode, count, delay, boolean, URL, objective, and Discord content-limit settings now produce clear configuration errors instead of being silently normalized or ignored. - Fixed issue #18:/d2d reloadtab completion is no longer shown to senders withoutd2d.admin. - Fixed issue #19: leaderboard updates now use Discord-native timestamps that render in each viewer's locale and timezone. - Fixed issue #20: player names are escaped before being placed in Discord Markdown. - Fixed issue #21: event handling, commands, configuration, player discovery, score collection, message formatting, Discord networking, JSON parsing, request coordination, and persisted state are now separated into focused components. - Fixed issue #29: transient Discord PATCH failures caused by timeouts, connection errors, HTTP 408 responses, or HTTP 5xx responses now retry with bounded exponential backoff. - Fixed issue #30: messages whose creation completes while the plugin is being disabled are cleaned up without relying on a new plugin-scheduled task. - Fixed issue #31: malformed Discord retry delays are capped at five minutes so a single HTTP 429 response cannot stall updates for years. - Fixed issue #32: Discord message state is written with atomic replacement and a recovery backup to prevent interrupted writes from creating duplicate leaderboard messages. - Historical-player discovery now merges Bukkit's complete offline-player registry with first-world player-data files so existing scores remain visible when a player's.datfile is stored elsewhere.Security
- Fixed issue #13: malformed webhook URLs and Discord request failures can no longer expose webhook tokens in logs or administrator-facing errors.1.4.1-beta.2Deaths to Discord 1.4.1 Beta 2Aug 19, 2026 [1.4.1-beta.2]
Added
- Added regression tests for initial Discord message creation coordination, including overlapping update requests and failed creation attempts. - Added regression tests for serialized Discord PATCH ordering and for keeping fresh post-creation updates behind the creator PATCH. - Added regression tests that verify Discord webhook secrets are removed from exception messages before they can be logged or shown to administrators.Changed
- Changed overlapping startup, reload, and death-triggered updates to wait for an in-progress initial Discord message creation whenmessage-idis blank. - Changed Discord leaderboard PATCH requests to run serially in submission order instead of concurrently. - Changed initial message creation so its captured leaderboard PATCH completes before queued updates are released to rebuild and submit fresher snapshots. - Changed Discord request error handling to sanitize exception details before reporting failures while preserving useful non-secret diagnostics. - Preserved the existing 1.4/1.4.1 configuration format and savedmessage-idbehavior; no configuration migration is required.Fixed
- Fixed issue #9: multiple overlapping updates can no longer create multiple Discord leaderboard messages whilemessage-idis blank. - Fixed queued updates after a failed initial message creation so their completion callbacks are released instead of remaining stuck. - Fixed issue #10: concurrent PATCH requests can no longer finish out of order and allow an older leaderboard snapshot to overwrite a newer one. - Fixed the initial-message race where queued fresh updates could be released before the creator's older PATCH, allowing the stale creator snapshot to become the final Discord message.Security
- Fixed issue #13: malformed webhook URLs and related Discord request exceptions can no longer expose the configured webhook URL or token through server logs or administrator-facing failure messages. - Added defense-in-depth redaction for Discord webhook URLs found in exception text even when they do not exactly match the currently configured webhook value.What's Changed
* Fix duplicate initial leaderboard messages for issue 9 by @mccreeper1318 in https://github.com/mccreeper1318/deathstodiscord/pull/25 * Fix concurrent PATCH ordering for issue 10 by @mccreeper1318 in https://github.com/mccreeper1318/deathstodiscord/pull/26 * Fix webhook token exposure in error logs by @mccreeper1318 in https://github.com/mccreeper1318/deathstodiscord/pull/27 Full Changelog: https://github.com/mccreeper1318/deathstodiscord/compare/…
Beta versions are pre-release builds intended for testing. They may contain bugs, incomplete changes, or unexpected behavior and may not be as stable as the latest full release. Before installing a beta: Back up your server and plugin configuration. Review the changelog for known changes. Be prepared to roll back if problems occur. Beta builds are recommended for testing environments or users comfortable troubleshooting issues. For production servers, use the latest stable release whenever possible.Beta Release Warning
1.4.1-beta.1Deaths to Discord 1.4.1-beta.1Aug 19, 2026 1.4.1-beta1 Changelog
Added
- Added automated GitHub Actions build and release workflows for Java 25/Gradle builds, tests, verified plugin artifacts, and SHA-256 checksums. - Added automated tests for leaderboard ordering, TOP mode behavior, Discord message-length trimming, and death-update scheduling.Changed
- Changed the Gradle project version to1.4.1as the base version for the1.4.1prerelease/stable series. - Changedplugin.ymlversion handling so the plugin version is sourced from Gradle during the build. - Pinned the Paper 26.2 API dependency to a specific build for reproducible builds. - Changed death-triggered update scheduling to track scheduled, in-flight, and pending update states while preserving the existing configurable debounce delay.Fixed
- Fixed issue #7: deaths that occur after a leaderboard snapshot starts, including while the Discord request is still in progress, now queue a fresh follow-up update instead of being silently missed. - Fixed rapid in-flight deaths so they coalesce into one follow-up update rather than producing unnecessary duplicate requests. - Fixed the Gradle 9.3 test runtime configuration by explicitly including the JUnit Platform launcher.What's Changed
* 7 deaths can be missed while a discord request is in progress by @mccreeper1318 in https://github.com/mccreeper1318/deathstodiscord/pull/24 Full Changelog: https://github.com/mccreeper1318/deathstodiscord/compare/…
Beta versions are pre-release builds intended for testing. They may contain bugs, incomplete changes, or unexpected behavior and may not be as stable as the latest full release. Before installing a beta: Back up your server and plugin configuration. Review the changelog for known changes. Be prepared to roll back if problems occur. Beta builds are recommended for testing environments or users comfortable troubleshooting issues. For production servers, use the latest stable release whenever possible.Beta Release Warning
1.4Update for 26.2Jun 29, 2026 Changelog v1.4
* Updated the plugin for Paper 26.2. * Updated the Gradle Paper API dependency to use the Paper 26.2 build format. * Updated the Java toolchain target to Java 25. * Updated plugin.yml to target api-version 26.2. * Reworked leaderboard update scheduling so Bukkit/Paper scoreboard and player data are read on the main server thread. * Replaced deprecated ChatColor command messages with Adventure Component messages. * Added Discord message length protection for large leaderboards. * Added max-discord-content-characters to config.yml, defaulting to 1900 characters. * Improved webhook patch handling for webhook URLs that may include query parameters.1.3.0Deaths to Discord 1.3.0Mar 6, 2026 * Added support for players with 0 deaths * Added show-zero-deaths configuration option * Leaderboard now includes players who have joined but never died * Improved player discovery using world playerdata files * Improved sorting when players have the same score1.2.1Deaths to Discord 1.2.1Mar 1, 2026 DeathsToDiscord Changelog Version 1.0.0 - Initial release - Readsdeathsscoreboard objective - Posts leaderboard to Discord via webhook - Supports configurable update interval - Supports ALL players or TOP N display modes - Basic config.yml setup Version 1.1.0 - Switched from interval updates to updating on every player death - Added automatic creation of a single Discord message - Implemented PATCH editing to update the same message (no spam) - Added message-id storage in config.yml - Added update delay batching to prevent Discord rate limits - Added /d2d reload command for live config reload - Added permission node: d2d.admin Version 1.2.0 - Improved leaderboard formatting - Enhanced error handling for missing objective or webhook - Added automatic startup update - Improved scoreboard parsing reliability - Improved config validation and console logging Version 1.2.1 - Fixed "Invalid HTTP method: PATCH" error - Replaced HttpURLConnection with Java 21 HttpClient - Improved PATCH request reliability and Discord compatibility - Minor internal cleanup and stability improvements
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta