CustomDeathMessages
1.7.0Die with style, not silence! Replace boring death notices with hilarious, colorful, and personalized messages. Add sounds, particles, and titles to turn every demise into a memorable event.
1.7.0latestCustomDeathMessages 1.7.0 (Legacy)2 weeks ago Legacy build for Minecraft 1.8 - 1.20.x (Java 8+). Use the Modern build for Minecraft 1.21 - 26.3. This is the first release that loads on Minecraft 1.20.x and older. It is built from the same code base and uses the same configuration files, commands and features as the Modern build.Added
- Legacy build withoutapi-version, compiled for Java 8. - Runtime compatibility layer for sounds, particles, titles, action bars, biomes, potion effects, item-in-hand checks and hex colors. - LegacyEffectparticles on 1.8, plusParticlenames when the server provides them. - Cross-version sound aliases in both directions, including chains such asENTITY_LIGHTNING_BOLT_THUNDER->ENTITY_LIGHTNING_THUNDER->AMBIENCE_THUNDER. - Cross-version particle aliases in both directions (EXPLOSION<->EXPLOSION_LARGE,EXPLOSION_EMITTER<->EXPLOSION_HUGE,SMOKE<->SMOKE_NORMAL, and more). - Hex color fallback: on servers withoutChatColor#ofthe closest legacy color is used. - 1.8-compatible titles and action bars.Fixed
- Epic thunder sound rejected on Minecraft 1.9 - 1.12. - 1.16.5 particles rejected because 1.17 names were validated literally. -/cdmreloadaborted even when validation passed, due to a mis-encoded error check. -/cdmconfig validatecould report the wrong issue count. -/cdmbroadcast particleprinted a raw enum name instead of the configured name. - Default particles no longer depend onEffect.CLOUD, which is missing from newer APIs.Compatibility
| Build | Minecraft | Java | |---|---|---| | Modern | 1.21 - 26.3 | 21+ | | Legacy | 1.8 - 1.20.x | 8+ | Tested on Paper 1.8.8, 1.12.2, 1.16.5 and 1.20.6 with real deaths and epic effects. No configuration keys changed.1.6.1CustomDeathMessages 1.6.13 weeks ago The previous version only works with versions 1.26+. This one will work from 1.21+ onwards.
1.6Custom Death Messages 1.63 weeks ago CustomDeathMessages — Version 1.6
Hex Color Rendering, Performance, and Minecraft 26.3 Compatibility Release
Description
Version 1.6 is a focused quality, compatibility, and performance release. It resolves the remaining hex color rendering problems that could make<#RRGGBB>and&#RRGGBBappear as literal text, fixes action bar colors, and makes color handling consistent across every configurable message path. This release also improves death attribution, removes several cross-world and null-configuration edge cases, reduces per-death configuration work through caching, and updates the plugin for Minecraft 26.3 with Java 21. Server owners can upgrade without rewriting their configuration. Existingconfig.ymlandmessages.ymlfiles remain valid; the new broadcast message keys have built-in defaults and can be added optionally. ---Release Statistics
| Category | Count | |---|---:| | Critical fixes | 6 | | Bug fixes | 22 | | Performance improvements | 14 | | Configuration and message additions | 6 | | Quality-of-life improvements | 10 | | Behavior changes | 7 | | Total documented changes | 65 | ---Critical Fixes
Hex Color Rendering
- Fixed<#RRGGBB>and&#RRGGBBcolors not rendering in death messages, titles, subtitles, action bars, command feedback, help text, test summaries, broadcast feedback, reload messages, configuration validation, update notices, and respawn messages. Both hex syntaxes are now translated consistently instead of being shown as literal text. Raw color sequences also no longer appear in console enable/disable logs.Action Bar Colors
- Fixed action bar text not interpreting legacy§color codes correctly. Action bar messages now use legacy text parsing, so colors and formatting render as intended.Death Attribution and World Safety
- Fixed a cross-world distance error that could occur when the victim and the responsible entity were in different worlds. Distance is now calculated only when both entities share the same world. - Fixed stale killer attribution. Damage information used to credit a killer now expires after 15 seconds, preventing an old hit from claiming an unrelated later death. - Fixed projectile fallback attribution. When tracked damage data is unavailable, projectile deaths now resolve the shooter instead of crediting the projectile itself.Platform Compatibility
- Added Minecraft 26.3 support with Spigot API 26.3 and Java 21, including an updatedapi-versiondeclaration. ---Bug Fixes
Commands and Message Formatting
- Fixed hex colors in/cdm,/cdmhelp,/cdm test,/cdmbroadcast,/cdm reload, and/cdm configfeedback. - Fixed hex colors in update notifications and respawn messages. - Fixed/cdmhelpformatting command descriptions twice, which could alter literal&sequences or produce unexpected colors. - Fixed blank or missing values inmessages.ymlcausingNullPointerExceptions in commands. - Fixed the invalid-cause response from the message formatter bypassing the color pipeline. - Fixed the broadcast mode overview using hardcoded text instead of configurablemessages.ymlentries.Broadcast Handling
- Fixed negative broadcast radii being interpreted as a sound or particle name instead of a radius value. - Fixed invalid broadcast radii not being reported clearly. The invalid value and the fallback radius are now shown. - Fixed broadcast mode and radius resolution reading configuration through multiple inconsistent paths; both now use one effective resolution path and refresh on reload.Messages, Placeholders, and Integrations
- Fixed conditional death messages being rebuilt from YAML on every death. They are now cached by group and damage cause. - Fixed a blankmessage-not-foundentry inmessages.ymlcausing aNullPointerExceptionduring fallback message selection. - Fixed unnecessary placeholder work by resolving only the placeholders that actually appear in the selected message. - Fixed PlaceholderAPI availability being checked repeatedly. Availability is now cached, while still allowing recovery if PlaceholderAPI is enabled later. - Fixed a broken PlaceholderAPI installation repeatedly attempting placeholder expansion; a missing class is now handled once and the death flow continues normally. - Fixed Essentials nickname lookups repeating unnecessary plugin-manager checks; the hook now revalidates itself when needed. - Fixed the missing-economy warning being printed on every death. It is now shown once per server session.Validation and Safety
- Fixed negative epic particle counts being passed to the server; they are now clamped to a safe value. - Fixed negative group sound volumes; they are now clamped to zero. - Fixed the update checker retaining state between checks; it now resets before each check. - Fixed the test command creating multiple death contexts for a single test instead of reusing one. - Fixed tab completion suggestions not being filtered by the typed prefix and using locale-sensitive casing. - Fixed console enable/disable messages containing raw color codes instead of clean, readable text. ---Performance Improvements
- Conditional death messages are cached per group and damage cause, eliminating repeated YAML section traversal during the death flow. - Broadcast mode and radius settings are cached and rebuilt only when the configuration is reloaded. - Placeholder resolution skips lookups for placeholders that are not present in the selected message. - PlaceholderAPI availability is cached after the first successful check, avoiding a plugin lookup for every message. - Essentials integration avoids repeated plugin-manager lookups during nickname resolution. - The darken-screen particle ring offsets are precomputed once instead of recalculating trigonometry every tick. - Darken-screen recipients are resolved once per tick instead of once for each of the 12 particle points. -/cdm testreuses a singleDeathContextand cached effect managers. -/cdmbroadcastcaches itsBroadcastManager,SoundManager, andParticleManagerinstances. - Message selection usesRandom.nextDouble()instead of the sharedMath.random()implementation. - Tab completion filters candidates by prefix before constructing the suggestion list. - Case conversions useLocale.ROOT, preventing locale-dependent behavior and unnecessary work. - Victim weapon resolution readsItemMetaonce per lookup instead of twice. - Particle counts, sound volumes, radii, durations, and economy costs are clamped early, preventing invalid or unexpectedly expensive effect calls. ---Configuration and Message Additions
The following new keys are available undersystem-messagesinmessages.yml: -broadcast-current-sound-radius— current sound broadcast radius display. -broadcast-current-particle-radius— current particle broadcast radius display. -broadcast-current-message-radius— current message radius display. -broadcast-current-message-world— current world message mode display. -broadcast-current-message-victim— current victim-only message mode display. -broadcast-invalid-radius— feedback shown when an invalid broadcast radius is entered. These keys are optional. If they are missing from an existingmessages.yml, the plugin uses built-in defaults. ---Quality-of-Life Improvements
-/cdmbroadcast modesnow uses configurablemessages.ymlentries for its current-settings output. - Invalid radius feedback now shows both the rejected value and the fallback value. - Broadcast command help and examples are now sourced from the message system, making them easier to translate and customize. - Help descriptions containing color codes now render exactly as written. - Missing or blank message entries fall back to readable built-in defaults instead of failing silently. - Console logs are clean and readable without raw&or hex color sequences. - Vault users receive one clear warni1.5Oct 3, 2026 CustomDeathMessages – Version 1.5
Stability, Accuracy, Configuration Alignment, and Production Hardening Release
Description
Version 1.5 is a major maintenance release focused on correctness, stability, and making advertised features behave as expected. This version fixes several critical issues affecting economy charges, message targeting, broadcast modes, epic deaths, reload behavior, test command reliability, killer/source resolution, placeholders, sound handling, particle handling, permissions, memory cleanup, update checking, optional integrations, and build/runtime compatibility. The goal of this release is to align runtime behavior with configuration expectations, reduce silent failures, improve admin confidence, and make death messages more accurate and consistent in gameplay. This revision also incorporates a deeper final audit pass that addressed additional edge cases found after the first 1.5 review, including economy exemption consistency, test command permission-group alignment, broadcast-mode synchronization, reload validation isolation, message-history cleanup, external placeholder resilience, nickname integration recovery, global particle delivery behavior, update-checker lifecycle safety, and build/runtime compatibility hardening. ---Release Statistics
| Category | Count | |---|---:| | Critical bug fixes | 18 | | Standard bug fixes | 36 | | Total bugs fixed | 54 | | Stability, memory, and lifecycle improvements | 16 | | Build and compatibility corrections | 8 | | Quality-of-life improvements | 28 | | Behavior changes | 10 | | New additions | 8 | | Total changelog entries | 124 | ---Critical Bug Fixes
Economy and Death Message Charging
- Fixed the economy system not actually charging players when a death message was triggered. - Death message costs configured by server owners are now enforced during the death flow. - Players with insufficient funds are now handled correctly instead of silently receiving the full custom death flow. - Added proper insufficient-funds feedback using configurable messaging. - Added successful charge feedback using configurable messaging. - Added exemption feedback so players who do not pay due to group exemption receive clearer behavior. - Fixed group-based cost exemptions so exempt groups no longer pay the configured death message cost. - Fixed exemption behavior so cost exemptions now depend on the player’s real permission group instead of only on the message-selection group. - Improved behavior when the economy provider is missing or unavailable. - The plugin now avoids breaking the death flow. - A safer fallback behavior is used when economy integration cannot be completed. - Improved economy provider recovery so late-loading economy integrations can become available without requiring a full restart. - Improved validation of economy transactions instead of assuming withdrawal always succeeds. - The cost placeholder now reflects an actually enforced cost rather than being purely cosmetic. ---Message Targeting and Radius Priority
- Fixed message radius not overriding world-wide message delivery. - Configured radius values now correctly take priority when radius messaging is enabled. - Death messages now respect the intended targeting order: - radius first when configured, - world second when radius is disabled, - victim-only delivery when neither applies. - Fixed inconsistency between documented behavior and actual runtime behavior. - Test command broadcast behavior now follows the same targeting rules as real death messages. - Prevented test broadcasts from ignoring configured message scope. - Improved reliability of nearby-player calculation for radius-based messaging. - Reduced unexpected global spam from test commands. - Made message delivery more predictable for servers using multiple worlds. ---Broadcast Mode Compatibility and Effective Resolution
- Fixed the victim-only broadcast mode being unusable through commands despite being advertised in help and tab completion. - Added compatibility handling so the shorter victim mode name is accepted and resolved correctly. - Extended victim-mode compatibility beyond commands so configuration values using the shorter alias are now resolved correctly as well. - Synchronized command usage, help text, tab completion, validation output, and internal mode handling. - Fixed divergence between legacy broadcast settings and unified broadcast settings. - Broadcast mode resolution now uses a single effective configuration path, reducing confusion when multiple related settings exist. - Prevented invalid mode errors when using documented broadcast modes. - Improved consistency between sound, particle, message, title, action bar, and screen-effect broadcast modes. - Made broadcast mode validation clearer for administrators. - Reduced confusion caused by mismatched mode names. - Improved reliability of manual broadcast testing commands. ---True Global Particle Broadcasting
- Fixed global particle broadcasts not actually reaching all online players. - Global particle mode now sends particles to all online players instead of being limited by world or tracking range. - Improved cross-world particle delivery behavior so players outside the victim’s world still receive a safe visible fallback effect. - Improved consistency between global sound broadcasting and global particle broadcasting. - Prevented players in other worlds from completely missing particles that were configured as global. - Made global particle behavior closer to administrator expectations. - Improved reliability of particle tests using global mode. - Reduced confusion when comparing global, world, radius, and victim-only particle modes. ---Epic Death System Alignment
- Fixed epic death effects reading different configuration locations than the ones defined by server owners. - Epic sound, particle, particle count, title, and subtitle settings now correctly affect runtime behavior. - Fixed epic customization being silently ignored. - Improved consistency between epic configuration, validation, and actual death effects. - Fixed epic particle count not being applied correctly. - Fixed epic title and subtitle not loading from the intended configuration area. - Improved epic death reliability across: - chat messages, - sounds, - particles, - titles, - subtitles, - lightning effects. - Reduced mismatch between epic messages and epic visual/audio effects. - Made epic deaths more predictable and configurable. ---Epic Subtitle and Visual Effect Context Accuracy
- Fixed epic subtitles using an incomplete death context. - Epic subtitles can now correctly resolve placeholders such as: - victim, - killer name, - killer source, - cause, - distance, - world, - time. - Prevented epic subtitles from showing unknown or empty values when real death information was available. - Improved consistency between epic chat messages and epic title/subtitle effects. - Made epic deaths feel more integrated and less disconnected. - Reduced confusing placeholder output during epic deaths. - Improved reliability of custom epic subtitle formatting. ---Visual Effect Placeholder and Color Pipeline
- Fixed titles, subtitles, and action bar messages bypassing the full placeholder pipeline used by chat messages. - Visual death effects now support internal death placeholders more consistently. - Visual death effects now support external placeholder expansion where available. - Visual death effects now pass through the same color formatting pipeline as chat messages. - Reduced cases where visual effects displayed unresolved placeholders, raw ampersands, or missing hex colors. - Improved consistency between chat death messages and screen effects. - Made custom visual death feedback more expressive and reliable. ---Configuration Reload Stability
- Fixed reload operations using stale message data when rebuilding internal caches. - Re1.4Bugs Fixes and Improvements.Sep 24, 2026 CustomDeathMessages - Changelog
---Version 1.4
Now targeting Minecraft 26.3. ---Critical Bug Fixes
Message Lookup System - Fixed group message cache building incorrect configuration paths. The cache searched for keys without the required parent prefix, causing all group messages to return null at runtime and fall back to the hardcoded default. Messages configured under permission groups now resolve correctly. - Fixed cause-specific message keys using an incorrect section name. The lookup expected a different key structure than what the configuration file provides, causing cause-based messages such as FALL, FIRE, and ENTITY_ATTACK to never be found. - Fixed default group message key mismatch. The cache builder searched for a key name that does not exist in the configuration schema. - Fixed conditional message lookup using an incorrect path prefix. Conditional messages were searched at the wrong configuration depth, preventing all condition-based messages from being evaluated at runtime. - Fixed conditional message default entries in the shorthand YAML format not being recognized. Entries using the single-key default notation were ignored because the parser only checked for the explicit condition and message pair format. - Fixed group sound cache building paths without the required parent prefix, causing per-group death sounds to never load at runtime despite passing validation. Killer Resolution - Fixed environmental deaths incorrectly resolving the victim as their own killer. The fallback damage cause lookup used a method that returns the damaged entity rather than the damaging entity, causing deaths by lava, fire, fall, and void to display the victim's own name in the killer placeholder. - Added defensive handling in the killer name placeholder to return a safe default when the killer is unresolved, preventing edge cases where the placeholder could resolve to an unintended value. Test Command - Fixed the test command rejecting all valid input due to a redundant subcommand check. The command router already consumed the subcommand keyword before passing arguments to the handler, but the handler still expected it, causing every invocation to return a usage error. - Fixed argument parsing offset being misaligned by one position after the routing layer strips the subcommand keyword. This caused causes, killers, and sources to be read from the wrong argument positions. - Fixed broadcast and effect flags being parsed as cause or killer arguments instead of being extracted before argument interpretation. Flags such as global, global-sound, and global-particles can now appear in any position without corrupting the parsed values. - Fixed inconsistent usage documentation between two separate message entries. Both now display the same syntax. Epic Death System - Fixed epic death determination performing two independent random rolls, one for effects and one for message selection. This caused desynchronization where epic effects could play with a normal message, or an epic message could appear without any effects. The roll is now performed once and shared across all systems. - Fixed epic messages overriding per-world messages. Per-world messages now always take priority regardless of epic status. - Fixed the epic death subtitle displaying a hardcoded generic cause instead of the actual cause of death. Thread Safety - Fixed death message recipient calculation executing on an asynchronous thread, accessing world and entity data outside the main server thread. This could cause concurrent modification exceptions and inconsistent player lists under load. Recipient calculation now executes synchronously on the main thread. Particle Effects - Fixed the darken screen effect spawning zero particles due to a count parameter set to zero. The effect was active in configuration but produced no visible output. Configuration File Structure - Fixed newly added system message entries being placed under the wrong configuration section. All system messages are now correctly located under the system-messages block and are properly loaded at runtime. ---Bug Fixes
Help System - Fixed compound command help lookup failing for multi-word commands. The help system only read the first argument, preventing lookup of entries with spaces in their key names such as config validate. - Fixed help command displaying a hardcoded player-only error instead of using the configurable message. - Fixed help detail labels for description, usage, and permission being hardcoded instead of configurable. - Fixed help command list line format being hardcoded instead of configurable. Command System - Fixed unified command router displaying a hardcoded unknown command error instead of using the configurable message. - Fixed general help output displaying hardcoded strings instead of using configurable messages. - Fixed configuration command displaying hardcoded permission and usage errors instead of using configurable messages. - Fixed reload manager displaying hardcoded status messages instead of using configurable messages. - Fixed test error output displaying a hardcoded error prefix instead of using the configurable message. - Fixed test context builder throwing exceptions with hardcoded messages instead of using configurable messages. Test Summary - Fixed the test summary sound and particle information performing independent random rolls, causing the displayed information to not match the actual test result. The epic status is now determined once and shared across the entire summary. Event Registration - Fixed startup log reporting an incorrect number of registered event listeners. Update Checker - Fixed version comparison crashing with a NumberFormatException when the remote version string contains non-numeric characters such as suffixes or prefixes. Version strings are now sanitized before comparison. Tab Completion - Added tab completion support for the test command, including death causes, online player names, and effect flags. - Fixed help tab completion only suggesting an incomplete set of options. Configuration Validator - Fixed validation passing without checking the internal structure of message groups. The validator now verifies that each group contains the required message sections and reports warnings when they are missing, preventing silent runtime failures. - Added validation for conditional message structure within each group. Performance - Fixed the particle manager being instantiated twice per death event. A single instance is now created and reused. Build Configuration - Removed a duplicate build configuration file that conflicted with the primary build definition. - Removed an unused internal message selection class that contained duplicate path resolution bugs. ---Changes
- All user-facing messages have been migrated from hardcoded strings to the external message configuration file. Server owners can now fully customize every message the plugin sends, including command errors, help text, test summaries, broadcast confirmations, and reload status messages. - Per-world messages now take absolute priority over all other message selection logic, including epic deaths. - The epic death flag is determined once per death event and shared consistently across message selection, sound playback, particle effects, titles, action bar, and lightning. - The test command now extracts effect flags before parsing positional arguments, allowing flags to appear in any position without corrupting the cause, killer, or source values. - The test summary now displays whether the simulated death rolled as epic. - The configuration validator now performs deep structural validation of message groups and conditional message sections. ---Improvements
- Improved killer resolution logic to properly distinguish between entity-caused and environment-caused deaths. - Improved message c1.3May 18, 2026 CustomDeathMessages v1.3 Changelog
This release addresses critical issues with configuration reloading, cross-world sound broadcasting, and localization consistency. Server owners upgrading from v1.2 should review the notes below before deployment.Bug Fixes
- Fixed a critical issue where/cdmreloadwould unregister all event listeners without reinitializing them. This caused the plugin to stop intercepting player deaths, resulting in vanilla death messages appearing and making configuration changes appear ignored or reset. - Resolved an issue with theGLOBALsound broadcast mode. Sounds were previously anchored to the victim's coordinates, causing distance-based attenuation and preventing playback for players in different worlds (particularly noticeable in Multiverse environments). Global sounds now play directly at each recipient's location, ensuring consistent server-wide audio. - Fixed configuration validation during reloads to properly abort on critical YAML parsing errors, preventing broken plugin states from malformed configuration files.Localization & Translations
- Corrected missing, inconsistent, and improperly formatted translation keys acrossmessages.ymland internal system messages. - Standardized language formatting and improved fallback strings to ensure reliable multi-language server support. - Fixed color code parsing in localized messages to maintain consistent formatting across all supported languages.Technical Improvements
- OverhauledReloadManagerto safely reinitialize all event listeners, formatters, and dependency references during hot-reloads. - UpdatedBroadcastManagerto dynamically adjust sound origin based on the configured broadcast mode.GLOBALandVICTIM_ONLYnow use recipient coordinates, whileWORLDandRADIUSretain victim coordinates for positional audio. - Improved internal caching and validation routines for configuration and message files.Upgrade Notes
- A full server restart is recommended when upgrading from v1.2 to clear any lingering listener states from previous reload attempts. - If you maintain custom translations, review the updatedconfig.ymltemplate to ensure all corrected keys are properly merged. - The/cdmreloadcommand is now fully functional and safe for production use. Configuration changes will apply immediately without requiring a server restart. For detailed technical changes, refer to the commit history or source repository.1.2Apr 3, 2026 CHANGELOG - CustomDeathMessages v1.2
🎯 Focused on Accuracy & Stability
This update is a direct response to community feedback regarding nickname integration. We have completely overhauled how the plugin retrieves player names to ensure 100% compatibility with Essentials, alongside major internal stability improvements to eliminate hidden background errors.
✅ Fixed: Essentials Nicknames Not Showing in Death Messages* Addressing user feedback: "Seeking help with CustomDeathMessage plugin. The only feature I want is to replace the normal username with the essentials nickname of all players (victim and killer) in all places. Everything I have tried config wise either doesn't work and uses default. Or uses usernames and not nicknames."* What was wrong: The plugin was relying solely on Minecraft's base API to get names, which only returns raw usernames (e.g.,Critical Bug Fixes
Steve). It wasn't actually "talking" to Essentials to fetch the custom nicknames (e.g.,[Admin] Steve). What we did: We built a dedicated, safe integration system (EssentialsHook) directly into the plugin's core. Now, whenever a death occurs, the plugin securely checks Essentials first. This applies to: - The{victim}placeholder. - The{killer_name}placeholder. - The{killer_displayname}placeholder. - Killers shooting from a distance (e.g., bows, crossbows). - Respawn messages ({player}). ✅ Fixed: "Uses Default" Fallback Loop* Related to the issue above, if the plugin struggled to format a message because of a missing nickname, it would sometimes abort and print the hardcoded default message instead of your custommessages.ymltext. The new hook prevents this fallback loop, ensuring your custom messages always parse correctly.
✅ Added: "Raw Username" Placeholders* Because the plugin now prioritizes Essentials nicknames by default, we added two new placeholders just in case you specifically need the underlying Minecraft username for a specific custom message format: -New Features & Placeholder Updates
{victim_username}→ Shows the raw Minecraft name (e.g.,Notch). -{killer_username}→ Shows the killer's raw Minecraft name.
✅ Improved: Core Engine Stability & Java 8 Compatibility* We performed a deep cleanup of the plugin's internal code to guarantee it runs flawlessly on servers using Java 8. This eliminates several hidden "silent errors" that were occurring in the background, improving overall server performance and ensuring death messages trigger instantly without delay. ✅ Improved: Sound & Biome Detection Accuracy* Fixed how the plugin reads server data for biomes, potion effects, and custom sounds. Values likeSignificant Refinements & Improvements
{biome}will now format perfectly in all supported Minecraft versions without throwing hidden warnings in your console. ✅ Improved: Safe Plugin Loading* If Essentials is not installed on your server, the plugin will now detect this instantly and gracefully fall back to standard Minecraft usernames without throwing any errors or lagging the startup process. ---
No configuration changes required:* YourUpgrade Notes for Server Admins
config.ymlandmessages.ymldo not need to be modified. The{victim}and{killer_name}placeholders will automatically start pulling Essentials nicknames upon updating. Soft Dependency: Make sure Essentials is installed before* CustomDeathMessages if you want to use nicknames. If Essentials is installed later, simply run/cdm reload.1.1CustomDeathMessages 1.1Jan 7, 2026 CHANGELOG - CustomDeathMessages v1.1
⚠️ A Sincere Apology
We sincerely apologize for any instability or missing features in v1.0. This major update introduces a complete architectural redesign to enhance reliability, maintainability, and future extensibility. Thank you for your patience and invaluable feedback.
❌ Removed: In-Game Configuration Editor (`/cdm editor`)* The in-game editor has been completely removed from the plugin. This decision was made to streamline development, improve stability, and focus resources on core features like the new broadcast system. All configuration must now be managed by directly editing theRemoved Features
config.ymlandmessages.ymlfiles.
✅ Added: Advanced Broadcast System* Introduce fine-grained control over who sees death effects (messages, sounds, particles, titles, action bars) with four new broadcast modes: -Major New Features
GLOBAL: All online players on the server -WORLD: All players in the same world -RADIUS: Players within a configurable distance -VICTIM_ONLY: Only the dying player Configurable globally and per-effect type directly inconfig.yml. ✅ Added: Powerful `/cdm broadcast` Command Suite* A new admin command to test and trigger broadcast effects manually: -/cdm broadcast sound <mode> [radius] [sound]-/cdm broadcast particle <mode> [radius] [particle]-/cdm broadcast message <mode> <message>-/cdm broadcast test– Simulates all broadcast modes -/cdm broadcast global <type>– Send an effect to all players instantly. ✅ Added: Full Support for Minecraft 1.21.11* The plugin has been updated and thoroughly tested to be fully compatible with Minecraft 1.21.11, including all new sounds, particles, biome names, and API changes introduced in this version. Configuration defaults and validation now reflect 1.21.11 standards.
✅ Fixed: Inaccurate Killer & Source Identification* The system for determiningCritical Bug Fixes
{killer_name}(the responsible entity) and{killer_source}(the direct damage source, like an arrow or TNT) has been completely rewritten. It now correctly handles: - Projectiles (arrows, fireballs) from players, mobs, and dispensers. - Direct entity attacks (players, zombies, creepers). - Edge cases where the default game API returns incomplete data. ✅ Fixed: Server Startup Crash on Invalid Configuration* In v1.0, certain misconfigurations could cause the plugin to crash during server startup. This has been resolved with a safer, staged initialization process that guarantees all internal systems load in the correct order. ✅ Fixed: Incorrect Placeholder Values* Placeholders like{distance},{biome}, and{victim_effects}now display accurate, properly formatted values (e.g., "nether_wastes" is now shown as "Nether Wastes").
✅ Refined: Configuration & Messages Structure* - `config.yml` now includes new, intuitive settings for the broadcast system (Significant Refinements & Improvements
sound-broadcast-mode,particle-broadcast-mode, and a unifiedeffects-broadcastsection). - `messages.yml` is now on version 1.1 and includes a newbroadcast-systemsection with fully configurable messages for all new/cdm broadcastcommands. ✅ Enhanced: Configuration Validation* The/cdm config validatecommand now checks the new broadcast settings for validity, preventing misconfiguration and providing clearer, more actionable feedback. ✅ Plugin Version Bump* The plugin’s version has been officially updated to 1.1 to reflect this major feature release.1.0.0CustomDeathMessages 1.0.0Oct 30, 2025 CHANGELOG - CustomDeathMessages v1.0.0
⚠️ A Sincere Apology
I deeply apologize for the extended 4-week gap without updates and for not addressing these critical issues sooner. Thank you for your patience and continued support.
✅ Fixed: Broken Killer Tracking & Generic Messages* The plugin consistently failed to identify the correct killer (Critical Bug Fixes
{killer_name}) and damage source ({killer_source}), resulting in generic "Unknown" messages. TheDamageTrackerand message formatter have been overhauled to accurately track and display killer information in all scenarios. ✅ Fixed: In-Game Editor Inventory (80% Non-Functional)* The/cdm editorinventory was largely unresponsive, with most slots failing to register clicks or open sub-menus. This has been resolved; the editor is now stable and functional for basic navigation and message editing.
🛠️ Editor Status: Early Access (≈30% Complete)* While the core functionality of the in-game editor now works, it is not fully implemented. Features like editing global config, world-specific messages, and epic message lists are either limited or not yet functional. The editor is provided as an early-access tool for basic message customization, with full completion planned for a future release.Important Notes
0.0.9CustomDeathMessages 0.0.9Oct 8, 2025
The plugin continues to evolve! Version 0.0.9 introduces a comprehensive command restructuring that unifies all functionality under a single command interface while simplifying permissions and improving the overall user experience. This release focuses on consistency, usability, and maintainability, making the plugin more intuitive for administrators and reducing complexity for end-users.CHANGELOG - CustomDeathMessages v0.0.9
⚠️ UPDATE INSTRUCTIONS
No special migration steps are required for this update. However, please note:
1. The previous separate commands (
/cdmreload,/cdmconfig, etc.) will no longer function as standalone commands2. All functionality is now accessed through the unified
/cdmcommand3. Your existing configuration files will work without modification
4. Permissions have been simplified - if you were using the old permission system, no changes are needed
5. The messages.yml file has been reorganized and translated from Spanish to English - If you want to use the updated structure, you should delete your existing messages.yml file and let the plugin regenerate it with the new format. If you prefer to keep your current configuration, no action is needed as the plugin will maintain compatibility with your existing file.
####New Features Added: Unified Command System* All commands have been consolidated under a single
/cdmcommand structure: */cdm test- Test death messages (replaces/cdm test) */cdm editor- Open configuration editor (replaces/cdm editor) */cdm help- Access help system (replaces/cdmhelp) */cdm config validate- Validate configuration (replaces/cdmconfig) */cdm reload- Reload configuration (replaces/cdmreload) * This simplifies command management and provides a consistent interface Added: Base Permission System* A new base permissioncdm.usehas been introduced: * Grants access to the main/cdmcommand and its subcommands * Default: true (all players can use the command) * Other permissions (cdm.reload,cdm.editor, etc.) now function as sub-permissions within the unified system Added: Enhanced Command Tab Completion* A new unified tab completer provides context-aware suggestions: * Shows only relevant subcommands based on user permissions * Provides contextual suggestions as you type * Improves discoverability of available commands and parameters Added: Streamlined Help System* The help system has been updated to reflect the new command structure: * Now provides clear guidance on the unified command interface * Includes examples of the new command syntax * Maintains all the interactive features from previous versions Added: Reorganized & Translated Messages Configuration* The messages.yml file has been completely restructured and translated to English: * All sections previously in Spanish are now in English * More consistent structure for easier navigation * No functional changes - only language and organization Note: If you want to use the new structure, delete your existing messages.yml and let the plugin generate a new one* ####Bug Fixes Fixed: Command Permission Conflicts* Resolved issues where permission checks failed due to the previous fragmented command system, ensuring consistent permission handling. Fixed: Tab Completion Conflicts* Fixed tab completion issues that occurred when multiple commands with the same name but different permissions were registered. Fixed: Command Execution Flow* Corrected edge cases where command execution would fail when using certain parameter combinations with the previous command structure. ####
Improvements & Optimizations Improved: Code Architecture* Restructured command handling to use a single executor pattern, reducing code duplication and improving maintainability. Improved: Resource Management* Optimized the reinitialization process when reloading configuration, ensuring all dependent components are properly reset. Improved: Error Handling* Enhanced error messages when using invalid subcommands or parameters, providing clearer guidance to users. Optimized: Permission System* Simplified the permission structure with a logical hierarchy that's easier to understand and manage: *
cdm.use(base access) *cdm.reload(advanced permissions) *cdm.editor(specialized access) *cdm.test(testing access) With version 0.0.9, CustomDeathMessages delivers a more cohesive, professional, and user-friendly interface while maintaining all the powerful features from previous versions. The unified command system provides a consistent experience across all plugin functionality, and the improved permission structure makes administration simpler. The reorganization of messages.yml and translation to English ensures better compatibility with international server environments while maintaining full backward compatibility. These changes lay the foundation for future enhancements while delivering immediate improvements to the day-to-day experience of using the plugin.0.0.8CustomDeathMessages 0.0.8Oct 7, 2025
The evolution continues! Version 0.0.8 builds upon the solid foundation of v0.0.7 with two essential new tools: a built-in in-game configuration editor and automatic update notifications. This release focuses on improved administrator experience, transparency, and accessibility, ensuring your custom death message configuration is more manageable than ever.CHANGELOG - CustomDeathMessages v0.0.8
⚠️ UPDATE INSTRUCTIONS
To fully leverage the new features:
1. Back up your current
messages.ymlfile2. Delete the
messages.ymlfile from your server'splugins/CustomDeathMessages/folder3. Restart or reload the server. The plugin will generate new configuration files with all new options
4. Manually transfer your custom messages from your backup to the new
####messages.ymlNew Features Added: In-Game Configuration Editor (`/cdm editor`)* The flagship feature of this version! This interactive system allows administrators to edit configuration directly from the game without needing to access server files: * Intuitive menu navigation with categories for groups, causes, and settings * Real-time message preview with placeholder substitution * Validation of placeholders during editing * Confirmation before saving changes * Supports editing conditional messages and group-specific messages (default, vip, admin) * New permission node
cdm.editorfor access control Added: Update Notification System* The plugin now automatically checks for new versions on startup and notifies administrators when they join the server: * Checks Modrinth for updates on server startup * Notifies players withcdm.adminpermission or OP when they join * Configurable notification messages inmessages.yml* Direct link to the plugin page for easy updating Added: New `/cdm editor` Command* A dedicated entry point to access the in-game configuration editor. Requires thecdm.editorpermission. Added: Support for Minecraft 1.21.9 and 1.21.10* The plugin has been verified to work with the latest Minecraft versions, ensuring compatibility with the newest server features and mechanics. ####Bug Fixes Fixed: Improved Validation System* The configuration validator now provides more detailed error descriptions, especially for conditional messages, making it easier to identify and fix configuration issues. Fixed: Editor Compatibility* Fixed issues that could occur when editing messages while the plugin was reloading, ensuring a more stable editing experience. ####
Improvements & Optimizations Improved: Administrator Experience* The in-game editor eliminates the need for manual file editing, significantly reducing the risk of syntax errors and making configuration changes faster and safer. Improved: Help System* The help system has been optimized to integrate with the new editor, providing contextual information about how to use the new features. Improved: Update Transparency* The update notification system keeps administrators informed about new versions without disrupting regular players. Optimized: Configuration Structure* The new
messages.ymlhas been reorganized with the editor in mind, making it easier to understand and maintain. With v0.0.8, CustomDeathMessages is not only more powerful but also more accessible and transparent. The in-game editor represents a major leap forward in administrator experience, while the update notifications keep you informed about future improvements to the plugin. The addition of Minecraft 1.21.9 and 1.21.10 support ensures you can use the latest Minecraft features while enjoying customized death messages.0.0.7CustomDeathMessages 0.0.7Sep 19, 2025 ---
The evolution never stops! Version 0.0.7 takes the solid foundation of v0.0.6 and elevates it with an essential tool for administrators: a built-in configuration validator. This release focuses on error prevention, ease of use, and stability, ensuring your experience with custom death messages is flawless.CHANGELOG - CustomDeathMessages v0.0.7
⚠️ IMPORTANT UPGRADE NOTE
To fully leverage the new features and ensure compatibility:
1. Make a backup of your current
config.ymlandmessages.ymlfiles.2. Delete the
config.ymlandmessages.ymlfiles from your server'splugins/CustomDeathMessages/folder.3. Restart or reload the server. The plugin will automatically generate new, up-to-date configuration files with all new options, examples, and system messages.
4. You can then manually re-add your custom settings and messages from your backup into the new files.
####New Features Added: Integrated Configuration Validator (`/cdm config validate`)* The flagship feature of this version! This new command allows administrators to validate the correctness of their `config.yml` and `messages.yml` files before reloading. It scans for: * Invalid sounds and particles (global, per-group, and epic). * Syntax errors in conditions (unknown operators, malformed placeholders). * Generates a detailed report in the chat with success (
), error (
), and warning (
) messages, along with a summary of the current configuration. Added: New System Messages for the Validator* A complete section has been added to
messages.ymlundersystem-messageswith translatable messages for the validator, such asconfig-validator-sound-not-found,config-validator-condition-syntax-warning, andconfig-validator-success-all, enabling a fully localizable user experience. Added: New `/cdmconfig` Command* A new entry point for the validator. Administrators can run/cdm config validateto start the validation process. Uses thecdm.reloadpermission. ####Bug Fixes Fixed: Enhanced Atomic Reload* The
/cdmreloadcommand has been improved to be even more robust. It now explicitly validates `messages.yml` before attempting to load `config.yml`. Ifmessages.ymlhas a critical syntax error (e.g., malformed YAML), the reload process stops immediately, notifies the user, and prints the full stack trace to the console, preventing any unstable intermediate state. Fixed: Error Handling in Reload* Improved error handling in/cdmreloadto capture and report unexpected failures more clearly, ensuring the administrator always receives feedback, even in edge cases. ####Improvements & Optimizations Improved: Administrator Experience* The validator provides a proactive way to debug configurations, drastically reducing the risk of runtime errors and saving hours of frustration from misplaced brackets or commas. Improved: Documentation* The
config.ymlandmessages.ymlfiles have been updated with comments referencing the new validation functionality, guiding users on how to keep their configurations error-free. Optimized: Development Workflow* The introduction ofConfigValidatorsets a pattern for future diagnostic and maintenance tools within the plugin, improving the codebase's long-term structure. With v0.0.7, CustomDeathMessages is not only more powerful but also safer and easier to manage. The integrated validator is a giant leap towards a perfect user experience for both players and administrators.0.0.6CustomDeathMessages 0.0.6Sep 16, 2025 ---
The evolution continues! Version 0.0.6 refines the groundbreaking features of v0.0.5 and introduces powerful new capabilities for unparalleled customization, accuracy, and user experience. This update is all about precision, control, and polish.CHANGELOG - CustomDeathMessages v0.0.6
⚠️ IMPORTANT UPGRADE NOTE
To ensure you get all the new configuration options and message placeholders, it is highly recommended that you:
1. Make a backup of your existing
config.ymlandmessages.ymlfiles.2. Delete the old
config.ymlandmessages.ymlfiles from your server'splugins/CustomDeathMessages/folder.3. Restart or reload the server. The plugin will automatically generate fresh, up-to-date configuration files with all the new settings and examples.
4. You can then manually re-add your custom messages and settings from your backup into the new files.
####New Features Added: Advanced Killer Attribution System* The plugin now distinguishes between the Responsible Entity (
{killer_name}) and the Direct Damage Source ({killer_source}). For example, if a skeleton shoots you,{killer_name}will be "Skeleton" and{killer_source}will be "Arrow". This allows for incredibly detailed and context-aware messages. Added: Sophisticated Conditional Logic* Conditional messages now support complex logic withANDandORoperators, plus new comparison operators likeequals,startsWith,endsWith,>,<,>=, and<=. You can now create messages for scenarios like:{distance} > 10 AND {victim_effects} contains 'Poison'. Added: New Placeholder: `{biome}`* Personalize death messages based on the environment! The new{biome}placeholder (e.g., "Plains", "Nether Wastes", "Deep Dark") allows you to create messages like "consumed by the eternal flames of the Nether". Added: Permission-Based Help System* Administrators can now control exactly which help pages (/cdmhelp) different user groups can access. Configure this via the newhelp-permissionssection inconfig.yml(e.g.,vip: [1, 2],default: [1]). Added: Dynamic Help Page Generation* The/cdmhelpcommand now generates its pages dynamically from themessages.ymlfile, making it easier to maintain and translate. The system automatically calculates the total number of pages. Added: Atomic Configuration Reload* The/cdmreloadcommand now uses an atomic reload system. If any part of the new configuration (config or messages) fails to load, the plugin reverts to the previous, working state, preventing server crashes due to bad configs. Added: Enhanced Test Command* The/cdm testcommand now accepts a fourth optional argument to manually specify the{killer_source}(e.g.,/cdm test ENTITY_ATTACK Skeleton Arrow), allowing for comprehensive testing of the new killer attribution system. ####Bug Fixes Fixed: Projectile Attribution* The
DamageTrackerhas been upgraded to correctly trace projectiles (arrows, fireballs, etc.) back to their original shooter, ensuring{killer_name}is always accurate, even for ranged attacks. Fixed: Biome Name Formatting* The new{biome}placeholder now correctly formats biome names (e.g., converting "NETHER_WASTES" to "Nether Wastes") for a clean, user-friendly output. Fixed: Help Command Page Validation* The help command now correctly validates the total number of pages after they are generated, preventing errors when trying to access non-existent pages. Fixed: Epic Effect Caching* Sound and particle effects for epic deaths are now cached during theMessagesManagerinitialization, improving performance and eliminating potential null-pointer errors. ####Improvements & Optimizations Improved: Code Structure and Maintainability* Key classes like
MessageFormatterandMessageSelectorhave been refactored for better readability and easier future expansion. TheDeathContextclass now holds richer data. Improved: Configuration Validation* Added more robust logging for invalid epic sound and particle configurations inmessages.yml, helping server admins debug their setups. Improved: Tab Completion* The/cdm testcommand's tab completer now provides intelligent suggestions for the new{killer_source}argument (e.g., "Arrow", "Creeper", "Lava"). Updated: Documentation* Bothconfig.ymlandmessages.ymlhave been meticulously updated with detailed comments and examples for all new features, including the advanced conditional syntax and the new placeholders. Optimized: Resource Management* The atomic reload system ensures that server resources are not wasted on partially loaded or broken configurations, leading to a more stable server environment.0.0.5CustomDeathMessages 0.0.5Sep 12, 2025 ---
Prepare for the ultimate death experience! Version 0.0.5 is a massive overhaul that transforms the plugin with epic new mechanics, economic integration, and a complete help system. ####CHANGELOG - CustomDeathMessages v0.0.5
New Features Added: Epic Death System* There's now a small, configurable chance (
epic-death-chanceinconfig.yml) for a death to be EPIC! When triggered, it displays a special message, plays a powerful sound, spawns spectacular particles, shows a full-screen title, and... strikes a lightning bolt at the death location! Added: In-Game Help Command (`/cdmhelp`)* Need a quick reference? Use/cdmhelp [page]to access a comprehensive, multi-page guide directly in-game, covering commands, permissions (includingcdm.admin), placeholders, configuration options, and support. Added: Vault Economy Integration* Servers can now charge players a configurable fee (cost-per-death-messageinconfig.yml) to display death messages. Specific permission groups (like "admin") can be exempted from this cost via theexempt-groups-from-costlist. Added: Legacy Color Support* For servers running older versions of Minecraft (pre-1.16), the newlegacy-color-supportoption inconfig.ymlwill automatically strip modern hex color codes (<#rrggbb>) from messages, preventing them from appearing as plain text. Added: Conditional Death Messages* You can now configure messages that only display if a specific condition is met. For example, you can have a unique message if the victim was holding a diamond weapon or was under the effect of poison. Defined inmessages.ymlusing theconditionandmessagesyntax. Added: New Configuration Options* Theconfig.ymlfile has been significantly expanded with new, powerful settings: *epic-death-chance: Probability (0.0 to 1.0) of an epic death occurring. *cost-per-death-message: The amount to charge players (requires Vault). *exempt-groups-from-cost: A list of permission groups (e.g.,- "admin") that do not pay the death message cost. *legacy-color-support: Enables compatibility mode for older Minecraft versions. ####Bug Fixes Fixed: Inaccurate or "Unknown" Killer Names* Implemented a brand new, robust damage-tracking system. The plugin now 100% accurately identifies the killer's name (
{killer}), even in complex scenarios like falling to your death after being pushed by a mob. Fixed: Modern Sound Name Support* The plugin now fully supports the new, lowercase sound names used in modern Minecraft (e.g.,entity.player.deathinstead ofENTITY_PLAYER_DEATH), ensuring perfect compatibility. Fixed: Update Checker Targeting Wrong Plugin* The automatic update checker has been refined to ensure it only checks for updates for CustomDeathMessages. It will no longer incorrectly notify you about updates for other plugins. It correctly notifies server administrators (players with thecdm.adminpermission or OP) when a new version is available, providing a direct download link. ####Improvements & Optimizations Improved: Overall Performance* Implemented an advanced caching system for messages and configurations, drastically reducing file reads and boosting plugin speed. Improved: Asynchronous Message Sending* Sending messages to other players (especially in a radius) is now done in the background, preventing the game from lagging during mass-death events. Updated: Configuration Files* Both
config.ymlandmessages.ymlhave been completely overhauled with new parameters, examples, and a clearer structure to support all the exciting new features.0.0.3CustomDeathMessages 0.0.3Sep 11, 2025 ---
Chat Message Color Codes Fixed: All messages sent to players via commands (Bug Fixes
/cdmreload,/cdm test) now correctly process&color codes. ---0.0.2CustomDeathMessages 0.0.2Sep 11, 2025 ---
--- ####CustomDeathMessages - Changelog v0.0.2
Minor Update with Major Improvements! This version refines the foundation of v0.0.1, adding new community-requested features and improving stability and developer experience. --- ####
New Features Killer Support in `/cdm test`!* The test command now accepts an optional third argument: the killer's name. Example:
/cdm test ENTITY_ATTACK NotchThis allows you to accurately test placeholders like{killer},{killer_displayname}, and{distance}. New Placeholder: `{killer_displayname}`* Displays the killer’s display name, respecting nicknames, prefixes, and colors set by other plugins (like EssentialsX or LuckPerms). New Placeholder: `{distance}`* Shows the distance in blocks between the victim and the killer, formatted to one decimal place (e.g., "5.2"). Random Message Cooldown System* The plugin now remembers the last random message shown to a player and will avoid showing it again until a different message has been displayed. This prevents annoying repetitions. Improved Killer Detection* The plugin can now correctly detect the killer’s name even if it’s an entity (like a Creeper or Zombie) or has a custom name. Entity names are formatted with initial capital letters (e.g., "Zombie Pigman"). Centralized System Messages* All console messages, warnings, and command responses are now loaded frommessages.ymlunder thesystem-messagessection. This allows administrators to fully translate the plugin without modifying the code. PlaceholderAPI Compatibility in `/cdm test`* PlaceholderAPI placeholders are now also expanded when using the test command, providing a more accurate preview. Registered TabCompleter* The/cdmcommand now has a functionalTabCompleterthat suggests "test", damage causes, and names of online players, greatly improving usability. --- ####Bug Fixes * Fixed an error in
MessagesManager.javawhere the character encoding when loading the default file was not specified, which could cause issues with special characters. It now usesStandardCharsets.UTF_8. --- Thank you for using CustomDeathMessages! This update makes the plugin more powerful, flexible, and easier to use than ever before.0.0.1CustomDeathMessages 0.0.1Sep 11, 2025 HELLO MODRINTH!
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.3MSueta
Chunky
Pre-generates chunks, quickly and efficiently
20.8MSueta
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
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta