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

Deaths to Discord

Takes scoreboard death counter and uses Discord webhook to display a death counter leaderboard on your discord server.

Автор: mccreeper13182810обновлён 13 окт. 2026 г.
УправлениеУтилиты

Описание

DeathsToDiscord

DeathsToDiscord is a lightweight Paper plugin that keeps a Minecraft death leaderboard synced to a single Discord webhook message.

Instead of posting a new Discord message every time someone dies, the plugin creates one leaderboard message and updates it as deaths occur. It can display every tracked player or only the top players, include or hide zero-death players, and automatically trims very large leaderboards to stay within Discord's message limit.

Features

  • Updates the Discord leaderboard whenever a player dies
  • Uses a single Discord message instead of creating message spam
  • Supports ALL and TOP leaderboard modes
  • Includes offline players that have been tracked by the server
  • Optional display of players with zero deaths
  • Automatically saves and reuses the Discord message ID
  • Batches rapid deaths with a configurable update delay
  • Protects against Discord's 2,000-character message limit
  • Reloadable configuration without restarting the server
  • No additional plugin dependencies

Requirements

  • Paper 26.2
  • Java 25
  • A Discord server where you can create a webhook
  • A Minecraft scoreboard objective that tracks player deaths

Installation

  1. Download the latest DeathsToDiscord .jar from the GitHub Releases page.
  2. Stop your Minecraft server.
  3. Place the .jar in the server's plugins folder.
  4. Start the server once to generate the configuration file.
  5. Configure your Discord webhook and scoreboard objective in plugins/DeathsToDiscord/config.yml.
  6. Restart the server, or run /d2d reload after saving the configuration.

Discord Webhook Setup

  1. Open the Discord server and choose the channel where the leaderboard should appear.
  2. Open Server Settings → Integrations → Webhooks.
  3. Create a new webhook and select the desired channel.
  4. Copy the webhook URL.
  5. Paste it into webhook-url in the DeathsToDiscord configuration.

Treat the webhook URL like a password. Anyone with the URL can use that webhook to post to its Discord channel.

Minecraft Scoreboard Setup

DeathsToDiscord reads an existing scoreboard objective. It does not create or increment the death objective itself.

To create a standard death counter named deaths, run:

/scoreboard objectives add deaths deathCount "Deaths"

To see the objectives already available on your server, run:

/scoreboard objectives list

If your death objective uses a different name, set that name under objective-name in config.yml.

Configuration

Configuration file:

plugins/DeathsToDiscord/config.yml

Default configuration:

webhook-url: "PASTE_WEBHOOK_URL_HERE"

# Your scoreboard objective name from /scoreboard objectives list
objective-name: "deaths"

# "ALL" = list everyone
# "TOP" = list top N only
mode: "ALL"
top: 10

# If true, players with 0 deaths are included in the leaderboard
show-zero-deaths: true

# The plugin will create the first message and fill this automatically
message-id: ""

# Small delay to batch rapid deaths & avoid rate limits
update-delay-seconds: 2

# Discord message content can be up to 2000 characters.
# This leaves a small safety buffer and trims very large leaderboards instead of failing.
max-discord-content-characters: 1900

webhook-url

The Discord webhook URL used to create and update the leaderboard message.

webhook-url: "PASTE_WEBHOOK_URL_HERE"

objective-name

The Minecraft scoreboard objective DeathsToDiscord reads for each player's death count.

objective-name: "deaths"

Use /scoreboard objectives list to verify the correct objective name.

mode

Controls how many tracked players are displayed.

mode: "ALL"

Available values:

  • ALL — displays all tracked players that fit in the Discord message
  • TOP — displays only the highest-ranked players, limited by the top setting

Players are sorted from the highest death count to the lowest. Ties are sorted alphabetically.

top

Sets the number of players shown when mode is set to TOP.

top: 10

The minimum effective value is 1.

show-zero-deaths

Controls whether players with zero deaths are included.

show-zero-deaths: true
  • true — include players with zero deaths
  • false — hide players with zero deaths

message-id

Stores the ID of the Discord leaderboard message.

message-id: ""

Leave this blank during the initial setup. DeathsToDiscord creates the first message automatically and saves its ID here.

Normally, this value should not be edited manually. If the leaderboard message is deleted from Discord, clear the value, save the config, and run /d2d reload so the plugin can create a replacement message.

You should also clear it if you move the plugin to a different webhook or Discord channel and the existing message can no longer be edited through that webhook.

update-delay-seconds

Adds a short delay before updating Discord after a death.

update-delay-seconds: 2

This helps combine rapid deaths into one update and reduces unnecessary webhook requests. A value of 0 disables the delay.

max-discord-content-characters

Sets the maximum size DeathsToDiscord will use for the leaderboard message.

max-discord-content-characters: 1900

Discord allows a maximum of 2,000 characters for normal message content. DeathsToDiscord defaults to 1900 to leave a safety buffer. Configured values are limited to a minimum of 500 and a maximum of 2000.

If the leaderboard is too large, the plugin keeps as many ranked players as will fit and adds a line showing how many additional players were omitted.

Commands

/d2d reload

Reloads config.yml and immediately updates the Discord leaderboard message.

Permission:

d2d.admin

The permission defaults to server operators.

How the Leaderboard Works

When DeathsToDiscord starts with a valid webhook configured, it immediately synchronizes the leaderboard.

If message-id is blank, the plugin creates a new Discord message and automatically saves its ID to config.yml. Future updates edit that same message.

Whenever a player dies, DeathsToDiscord waits for the configured update-delay-seconds value and then rebuilds the leaderboard from the configured scoreboard objective. Rapid deaths during the delay are combined into the same update.

A Discord leaderboard resembles:

💀 Death Leaderboard (Everyone)
1. PlayerOne — 12
2. PlayerTwo — 7
3. PlayerThree — 2

Tracked players: 3
Updated: ...

Troubleshooting

The plugin says the webhook URL is not set

Open plugins/DeathsToDiscord/config.yml, replace PASTE_WEBHOOK_URL_HERE with a valid Discord webhook URL, save the file, and run /d2d reload.

The objective cannot be found

Run:

/scoreboard objectives list

Then make sure objective-name exactly matches the death objective on the server.

The Discord leaderboard message was deleted

Set:

message-id: ""

Save the config and run:

/d2d reload

DeathsToDiscord will create a new leaderboard message and save the new message ID automatically.

The webhook or Discord channel was changed

If the old message-id belongs to a message that the new webhook cannot edit, clear message-id and run /d2d reload to create a new message through the new webhook.

Some players are not displayed

Check the following:

  • The player has been tracked by the server.
  • The configured scoreboard objective contains the expected score.
  • show-zero-deaths is enabled if the player has zero deaths.
  • mode is not set to TOP with a limit that excludes the player.
  • The leaderboard has not reached the configured Discord content limit.

The leaderboard says some players were omitted

The full leaderboard is larger than the configured Discord message limit. Increase max-discord-content-characters up to 2000, use TOP mode, or reduce the number of players displayed.

Support and Bug Reports

If you find a bug or have a feature request, open an issue on the GitHub Issues page.

License

DeathsToDiscord is released under the MIT License.

Галерея

Death Leaderboard Example

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

Все версии →
release

Deaths to Discord 1.5.0

1.5.0
13 окт. 2026 г.49Minecraft: 26.2, 26.3paper
Скачать
Что нового
# 1.5.0 ### Changed - Paper API: `26.3.build.157-beta` → `26.3.build.178-stable` - Updated Paper 26.3 compatibility documentation for stable.
release

Deaths to Discord 1.5.0 Beta 2

1.5.0-beta.2
10 окт. 2026 г.17Minecraft: 26.3paper
Скачать
Что нового
## 1.5.0 Beta 2 ### Changed - Updated gradle wrapper from `9.7.1` to `9.8.0` - Updated Paper API from `beta 134` to `beta 157`
release

Deaths to Discord 1.5.0 Beta 1

1.5.0-beta.1
30 сент. 2026 г.15Minecraft: 26.3paper
Скачать
Что нового
## 1.5.0 ### Changed - Promoted the Paper 26.3 compatibility release line to version `1.5.0`. - Bumped actions/setup-java from 5 to 6. - Updated the Paper API compile and test runtime target to `26.3.build.134-beta` for Paper 26.3 compatibility validation while retaining `api-version: '26.2'` and Java 25. - Validated the plugin's scheduler, player discovery, scoreboard, event, Adventure, plugin metadata, world-path, and SnakeYAML API usage against Paper 26.3 beta; no Java source migration or `api-version` bump was required. - Completed manual Paper 26.3 beta server testing for startup, existing configuration and Discord state reuse, `/d2d reload`, death-triggered updates, ALL/TOP modes, zero-death handling, historical/offline players, restart synchronization, and server logs with no compatibility regressions found.
release

Deaths to Discord 1.4.2

1.4.2
10 сент. 2026 г.16Minecraft: 26.2paper
Скачать
Что нового
## [1.4.2] ### Changed - Added Dependabot configuration to check Gradle dependencies, the Gradle wrapper, and GitHub Actions weekly on the `dev` branch. - 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 existing `wait` query parameter instead of appending a duplicate. - Fixed issue #34: an explicitly present `max-discord-content-characters` setting with a YAML null value is now rejected instead of being mistaken for an omitted legacy setting and silently defaulted to `1900`. - 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 - Update `actions/setup-java` to `5` - Update `com.google.code.gson:gson` to `2.14.0` - Update `actions/checkout` to `7` - Update `org.junit.platform:junit-platform-launcher` to `6.1.3` - Update `org.junit.jupiter:junit-jupiter` to `6.1.3` - Update `gradle-wrapper` to `9.7.1` - Update `gradle/actions` to `6` - Update `actions/upload-artifact` to `7` - Update `io.papermc.paper:paper-api` to `26.2.build.121-stable`
release

Deaths to Discord 1.4.1

1.4.1
30 авг. 2026 г.12Minecraft: 26.2paper
Скачать
Что нового
## [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 reload` tab completion is no longer shown to senders without `d2d.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 `.dat` file 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.
beta

Deaths to Discord 1.4.1 Beta 2

1.4.1-beta.2
19 авг. 2026 г.11Minecraft: 26.2paper
Скачать
Что нового
## [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 when `message-id` is 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 saved `message-id` behavior; no configuration migration is required. ### Fixed - Fixed issue #9: multiple overlapping updates can no longer create multiple Discord leaderboard messages while `message-id` is 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/1.4.1-beta.1...1.4.1-beta.2 ## ⚠️ Beta Release Warning 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

Deaths to Discord 1.4.1-beta.1

1.4.1-beta.1
19 авг. 2026 г.9Minecraft: 26.2paper
Скачать
Что нового
## 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 to `1.4.1` as the base version for the `1.4.1` prerelease/stable series. - Changed `plugin.yml` version 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/1.4...1.4.1-beta.1 ## ⚠️ Beta Release Warning 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.
release

Update for 26.2

1.4
29 июн. 2026 г.58Minecraft: 26.2paper
Скачать
Что нового
## 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.
release

Deaths to Discord 1.3.0

1.3.0
6 мар. 2026 г.69Minecraft: 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.11paper
Скачать
Что нового
* 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 score
release

Deaths to Discord 1.2.1

1.2.1
1 мар. 2026 г.25Minecraft: 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.11paper
Скачать
Что нового
DeathsToDiscord Changelog Version 1.0.0 - Initial release - Reads `deaths` scoreboard 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