# 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.
- Reload order was corrected so dependent caches are rebuilt after their source configuration is refreshed.
- Fixed listeners potentially being registered with outdated formatting components.
- Improved reload safety for:
- group sounds,
- epic effects,
- message caches,
- placeholder formatting,
- broadcast settings,
- permission-based messages.
- Fixed reload validation behavior so failed validation no longer risks contaminating live runtime state.
- Reload attempts now isolate temporary validation work from the active configuration until the reload is confirmed safe.
- Reduced the need for server restarts after configuration changes.
- Made reload behavior more predictable for administrators.
- Improved consistency between validation and live runtime configuration.
- Reduced rare cases where one reload appeared to succeed but left partially old data active.
---
## Test Command Determinism
- Fixed the test command producing inconsistent results because epic status was rolled multiple times independently.
- The epic state is now calculated once per test execution and shared across:
- message selection,
- test summary,
- sound playback,
- particle playback,
- global test flags.
- Prevented situations where the summary said the test was normal while epic effects played, or vice versa.
- Improved the test command as a reliable diagnostic tool.
- Fixed test sound playback using an incorrect permission-group resolution path.
- Test sounds now respect the victim’s effective permission group according to the server’s permission-based messaging setting.
- Fixed global test flags ignoring epic state.
- Global sound and global particle tests now use epic resources when the test rolls as epic.
- Improved consistency between displayed test information and actual in-game effects.
---
## Test Command Permissions and Scope
- Fixed missing permission validation when testing death messages on other players.
- Players without the appropriate permission can no longer test on other players.
- Improved permission enforcement for:
- self-testing,
- other-player testing,
- broadcast testing,
- global effect testing.
- Fixed test broadcast ignoring configured message targeting.
- Test broadcasts now respect radius, world, and victim-only settings.
- Reduced accidental server-wide spam from test commands.
- Improved safety for shared or public test environments.
- Made test command behavior closer to real death event behavior.
- Improved handling of test requests targeting offline players by producing clearer feedback instead of silently falling back in confusing ways.
---
## Killer and Direct Damage Source Resolution
- Fixed loss of the direct damage source in many deaths.
- Projectile-based deaths now preserve both:
- the responsible killer,
- the direct source of damage.
- Improved handling of deaths involving:
- arrows,
- tridents,
- fireballs,
- thrown potions,
- TNT,
- dispenser-shot projectiles,
- other indirect entity damage.
- Added safer resolution for projectiles fired by block-based sources, improving accuracy for dispenser and similar indirect damage scenarios.
- Reduced cases where a player kill by projectile incorrectly displayed the source as a player.
- Improved accuracy of killer source placeholders.
- Made death messages more descriptive and technically correct.
- Reduced confusion caused by oversimplified killer resolution.
- Improved compatibility with complex death scenarios.
---
## Killer Resolution Priority
- Fixed excessive priority given to the basic player killer lookup.
- More precise damage information is now considered before falling back to simple killer resolution.
- Improved handling of deaths where the direct source differs from the responsible entity.
- Reduced incorrect source values in mixed player/environment deaths.
- Improved reliability of damage tracking during rapid or multi-source deaths.
- Made environmental deaths less likely to incorrectly inherit a player killer.
- Improved consistency between real deaths and test simulations.
- Reduced placeholder contradictions in death messages.
---
## Distance Placeholder Accuracy
- Fixed distance calculation only working when the killer was a player.
- Distance now works for non-player killers and tracked responsible entities.
- Improved reliability of distance-based conditional messages.
- Conditions using distance now work more consistently for:
- mobs,
- projectiles,
- indirect damage sources,
- player killers.
- Reduced false results where distance appeared as zero despite a valid killer entity.
- Improved sniper-style messages and range-based death conditions.
- Made distance placeholders more useful for custom message design.
- Increased accuracy of death context data.
---
## Killer Username and Display Name Separation
- Fixed the killer username placeholder returning a nickname instead of a real username.
- Added clearer separation between:
- display-oriented killer name,
- real killer username,
- killer display name,
- direct damage source.
- Improved consistency with nickname integrations.
- Reduced confusion when placeholders promised one value but returned another.
- Made username-based conditions and formatting more reliable.
- Improved compatibility with servers using nicknames, prefixes, or display name modifications.
- Reduced accidental leakage of formatted display names into username-only contexts.
- Improved overall placeholder semantic accuracy.
---
## PlaceholderAPI Expansion Order
- Fixed PlaceholderAPI values being expanded after color translation.
- External placeholders can now return color codes that are correctly processed.
- Improved rendering of:
- prefixes,
- suffixes,
- group names,
- ranked tags,
- custom placeholder values.
- Reduced literal ampersand color codes appearing in chat.
- Improved compatibility with placeholder-driven formatting.
- Made death messages more visually consistent with other plugin-produced text.
- Reduced unexpected raw formatting sequences in final output.
- Improved reliability of hybrid placeholder systems.
- Extended the same safer expansion behavior to visual death effects where applicable.
---
## Modern Sound Resolution
- Updated sound handling to work correctly with modern registry-based sound access.
- Improved support for multiple sound identifier styles.
- Sounds can now be configured using:
- dotted namespaced identifiers,
- custom namespaced identifiers,
- constant-style uppercase names.
- Fixed invalid sound values causing unhandled exceptions during startup or reload.
- Improved fallback behavior when a sound cannot be resolved.
- Added safer warnings instead of hard failures.
- Improved compatibility with datapack sounds and custom sound entries.
- Reduced crash risk from malformed sound configuration.
- Made sound configuration more flexible and forgiving.
---
## Safe Particle Resolution
- Added safer particle parsing and fallback handling.
- Invalid particle names now produce clearer warnings instead of silent failures.
- Improved consistency between:
- runtime particle loading,
- configuration validation,
- test commands,
- broadcast commands.
- Fixed invalid particle input in broadcast commands being silently replaced without feedback.
- Improved administrator experience when testing particle effects.
- Reduced confusion from typo-based particle configuration.
- Made particle configuration safer and more predictable.
- Improved overall effect reliability.
---
## Build and Runtime Compatibility
- Corrected dependency setup so required integrations are available at compile time.
- Removed or corrected invalid or unresolved platform dependency declarations.
- Aligned Java/API targeting with the modern runtime baseline required by the plugin and its target server software.
- Reduced risk of generating artifacts incompatible with supported server environments.
- Improved plugin metadata compatibility with modern server software.
- Removed an unused bundled JSON dependency that increased artifact size and conflict risk without providing runtime benefit.
- Removed unused networking-related dependency weight where it was no longer necessary.
- Fixed internal text formatting issues that could affect compilation or output readability.
- Improved overall build reliability and deployment safety.
- Reduced the chance of missing-class errors on servers with different library availability.
---
# Bug Fixes
## Permissions and Group Priority
- Fixed admin group priority being lower than VIP group priority.
- Players with both VIP and admin permissions now resolve to the higher-priority admin group.
- Improved consistency of permission-based message selection.
- Reduced unexpected group fallback behavior.
- Made permission hierarchy more intuitive.
- Improved reliability of group-specific death messages.
- Reduced confusion for administrators assigning overlapping permissions.
- Improved consistency between group messages, group sounds, and cost exemptions.
---
## Undocumented Permission Handling
- Added missing permission declarations for plugin features that were already used internally.
- Improved visibility of permissions for server administrators.
- Reduced confusion when configuring permission plugins.
- Made command and feature permissions easier to audit.
- Improved consistency between runtime permission checks and declared permissions.
- Reduced accidental permission gaps.
- Improved documentation accuracy inside plugin metadata.
- Made permission management more reliable.
---
## Bypass Behavior Cleanup
- Fixed bypassing players not clearing their tracked damage information.
- Improved memory hygiene for players who bypass death messages.
- Reduced stale damage source retention.
- Made bypass behavior cleaner and more predictable.
- Improved consistency between bypassed and normal death flows.
- Reduced rare carryover issues after bypassed deaths.
- Improved overall tracker reliability.
- Reduced unnecessary data retention.
---
## Damage Tracking Lifecycle
- Fixed damage tracking data remaining after a player disconnects without dying.
- Added cleanup when players leave the server.
- Added cleanup when players respawn.
- Reduced stale entity references.
- Improved memory hygiene.
- Reduced risk of invalid entity access after reconnects.
- Improved reliability of damage tracking across sessions.
- Made tracker behavior safer under frequent death/respawn cycles.
---
## Death Flow Exception Safety
- Improved death handling so tracked damage information is cleaned up even if an unexpected error occurs during message formatting or effect playback.
- Reduced the chance of stale damage state surviving a partially failed death event.
- Made the death flow more resilient under abnormal configuration or runtime conditions.
- Improved production safety for complex death scenarios.
---
## Console Logging Control
- Added configurable control over death message console logging.
- Fixed unconditional console spam for every death.
- Improved privacy by allowing administrators to disable sensitive death message logging.
- Reduced log noise on busy servers.
- Made logging behavior intentional instead of hardcoded.
- Improved operational comfort for large servers.
- Reduced accidental exposure of placeholder-derived data in logs.
- Improved production readiness.
---
## Help Command Consistency
- Fixed general help not showing all available commands consistently.
- Broadcast functionality is now represented more clearly in help output.
- Reduced confusion between bare command help and detailed help.
- Improved discoverability of available features.
- Made help text more aligned with actual command availability.
- Improved administrator onboarding.
- Reduced surprise from missing command entries.
- Improved overall command usability.
---
## Tab Completion Corrections
- Fixed incorrect tab completion suggestions for broadcast subcommands.
- Global broadcast completion now suggests the correct follow-up values.
- Improved completion consistency for broadcast modes.
- Reduced invalid suggestions that could fail when executed.
- Improved completion for test-related arguments.
- Added permission-aware filtering for test-related command suggestions.
- Made command discovery smoother.
- Reduced trial-and-error when using broadcast tools.
- Improved overall command ergonomics.
---
## Command Metadata Cleanup
- Removed or corrected risky command aliases that could conflict with other plugins or vanilla behavior.
- Fixed usage text advertising unsupported features.
- Improved accuracy of command descriptions.
- Reduced confusion from misleading usage strings.
- Made command metadata more trustworthy.
- Improved compatibility with server command listings.
- Reduced accidental command collisions.
- Improved polish of the command layer.
---
## Configuration Validation Accuracy
- Fixed validation checking configuration areas that were not actually used by runtime.
- Improved alignment between validation results and real behavior.
- Reduced false positives and false negatives during configuration checks.
- Improved validation of epic effect settings.
- Improved validation of sound and particle values.
- Improved validation coverage for broadcast modes and their effective resolution.
- Made validation summaries reflect actual message targeting priority.
- Improved reliability of startup validation.
- Reduced confusion when diagnosing configuration problems.
---
## Message Cause Key Matching
- Fixed cause-based message lookup being overly sensitive to capitalization.
- Cause keys are now normalized more safely during cache construction.
- Improved tolerance for common configuration casing mistakes.
- Reduced silent fallback to default messages caused by lowercase or mixed-case cause keys.
- Made cause-specific messages more reliable.
- Improved consistency between validation and runtime lookup.
- Reduced frustrating configuration mismatches.
- Improved admin quality of life.
---
## Conditional Message Cause Matching
- Fixed conditional message lookup being unnecessarily sensitive to cause-key capitalization.
- Conditional sections now tolerate common casing variations more safely.
- Reduced silent skips of valid conditional messages due to formatting inconsistencies.
- Improved reliability of advanced conditional death message design.
---
## Conditional Logic Operator Handling
- Fixed logical operators in conditional messages requiring strict uppercase formatting.
- Conditional expressions now accept more natural casing for logical operators.
- Improved usability of complex conditions.
- Reduced silent condition failures caused by lowercase operators.
- Made condition writing less brittle.
- Improved compatibility with human-friendly configuration styles.
- Reduced confusion when combining multiple conditions.
- Improved reliability of conditional message selection.
---
## Screen Darkening Effect Behavior
- Fixed the screen darkening effect using a stale captured location.
- The effect now follows the player’s current location during its duration.
- Added safer cancellation when the player is no longer online.
- Added safer handling when the player’s world context becomes unavailable during the effect.
- Reduced visual artifacts after movement, world changes, or rapid respawns.
- Improved reliability of particle-based screen effects.
- Made the darken effect feel more responsive.
- Reduced odd particle placement near dead or moved players.
- Improved visual polish.
---
## Epic Particle Count Handling
- Fixed epic particle count not being read from the intended configuration area.
- Epic particle density now respects configured values.
- Improved consistency between epic configuration and runtime particle output.
- Reduced mismatch between normal and epic particle behavior.
- Made epic effects more customizable.
- Improved validation alignment for epic particle settings.
- Reduced surprise from hardcoded or default-only epic particle amounts.
- Improved overall epic death presentation.
---
## Nickname Integration Availability
- Fixed nickname integration becoming permanently unavailable if the supporting plugin loaded later than expected.
- Improved recovery behavior for optional integrations.
- Reduced load-order sensitivity.
- Made nickname resolution more reliable across different server startup conditions.
- Improved graceful fallback when nickname integration is unavailable.
- Reduced inconsistent name display between victims and killers.
- Improved compatibility with modular server setups.
- Made optional hooks safer.
- Improved behavior when the supporting integration is disabled or removed during runtime.
---
## Update Checker Safety
- Reduced risk of the update checker acting after the plugin is disabled.
- Improved safety around asynchronous update checks.
- Moved update checking onto a lifecycle-aware asynchronous path instead of an unmanaged background task.
- Reduced chance of errors during server shutdown.
- Improved connection cleanup behavior during update checks.
- Improved handling of unexpected remote responses.
- Prevented update-check logic from depending on mutable configuration state in unsafe asynchronous contexts.
- Made latest version selection more reliable.
- Reduced false update notifications.
- Improved robustness of version parsing.
- Made background update checking safer in production.
---
## Broadcast Sound Input Handling
- Fixed unsafe sound parsing in broadcast test commands.
- Invalid sound input now produces clearer feedback.
- Improved fallback behavior for malformed sound names.
- Reduced command exceptions from bad input.
- Made broadcast sound testing more beginner-friendly.
- Improved consistency with modern sound resolution.
- Reduced silent failures.
- Improved command reliability.
---
## Broadcast Particle Feedback
- Fixed invalid particle input being silently replaced with a default value.
- Users now receive feedback when a particle name is invalid.
- Improved discoverability of particle typos.
- Made broadcast particle testing more transparent.
- Reduced confusion during effect tuning.
- Improved alignment with validation behavior.
- Made command feedback more helpful.
- Improved overall testing experience.
---
## Broadcast Test Output Readability
- Fixed malformed line handling in broadcast test output.
- Broadcast mode test results now print as clearer, more readable lines.
- Reduced risk of broken or compressed output.
- Improved usability of diagnostic broadcast tests.
- Made mode comparison easier to read.
- Improved polish of administrative test commands.
- Reduced confusion from poorly formatted results.
- Improved command output consistency.
---
## Broadcast Command Resource Consistency
- Fixed some broadcast test paths using hardcoded default effect values instead of the server’s configured defaults.
- Broadcast tests now better reflect the actual configured sound, particle, volume, pitch, count, and offset values.
- Improved reliability of manual effect testing.
- Reduced divergence between what administrators configure and what test commands demonstrate.
---
## Death Context Reuse
- Improved reuse of a single death context across related systems.
- Reduced duplicated context creation during death handling.
- Improved consistency between:
- chat message,
- title,
- subtitle,
- action bar,
- placeholders,
- conditions,
- effects.
- Reduced mismatched placeholder values between different parts of the same death event.
- Improved reliability of complex death presentations.
- Made death handling more coherent.
- Reduced subtle inconsistencies during epic deaths.
- Improved maintainability of death event logic.
---
## Title, Subtitle, and Action Bar Placeholder Support
- Improved placeholder resolution for visual death effects.
- Titles, subtitles, and action bar messages can now use death-related placeholders more reliably.
- Reduced cases where visual effects showed unresolved or generic values.
- Improved consistency between chat death messages and screen effects.
- Made custom visual death feedback more expressive.
- Improved compatibility with conditional and epic setups.
- Reduced confusing placeholder output on death screens.
- Improved overall presentation quality.
---
## Economy Messaging Consistency
- Improved consistency between economy success, economy failure, and exemption messaging.
- Reduced silent economy behavior where players received no explanation.
- Made cost feedback clearer.
- Improved alignment between configured economy messages and actual charge outcomes.
- Reduced confusion around paid death messages.
- Made economy integration feel complete rather than partial.
- Improved admin configurability.
- Improved player-facing clarity.
---
## Reload Validation Reliability
- Improved the relationship between validation and reload outcomes.
- Reduced cases where validation and live configuration could drift apart.
- Made reload feedback more trustworthy.
- Improved handling of invalid configuration during reload attempts.
- Reduced surprise when reload appeared successful but behavior remained old.
- Improved consistency between startup validation and manual validation.
- Made configuration iteration safer.
- Improved operational confidence.
---
## Internal Message History Hygiene
- Improved cleanup of internal message history data associated with players.
- Reduced long-term retention of per-player message selection memory.
- Added cleanup when players disconnect.
- Added cleanup when players respawn.
- Improved behavior on large servers with many unique players.
- Reduced minor memory growth over time.
- Made random/non-repeating message selection cleaner across sessions.
- Improved long-running server stability.
- Reduced stale per-player state.
- Improved internal housekeeping.
---
## Respawn Message Flexibility
- Improved respawn message handling to support broader placeholder use.
- Reduced limitation to only a single basic player placeholder.
- Made respawn messages more consistent with the rest of the plugin’s formatting system.
- Improved compatibility with nickname and display-name integrations.
- Added safer color formatting behavior for respawn feedback.
- Reduced visual inconsistency between death and respawn messaging.
- Made respawn feedback more customizable.
- Improved polish of the player lifecycle experience.
- Expanded creative options for server owners.
---
## Time Formatting Safety
- Fixed unsafe time formatting behavior when an invalid time format was configured.
- Invalid time formats now fall back safely instead of disrupting death processing.
- Improved resilience of time-based placeholders.
- Reduced the chance of configuration mistakes causing runtime errors.
- Made time formatting more production-safe.
---
## External Placeholder Resilience
- Fixed external placeholder expansion becoming permanently disabled after a single transient failure.
- Improved resilience when optional placeholder integrations return temporary errors.
- Reduced unnecessary loss of placeholder functionality due to isolated exceptions.
- Made hybrid placeholder pipelines safer and more predictable.
---
## Misleading Configuration Expectations
- Reduced confusion caused by configuration options that did not affect runtime behavior.
- Improved alignment between available settings and actual feature support.
- Removed or neutralized misleading configuration guidance where the corresponding behavior was not implemented.
- Made configuration files less deceptive.
- Reduced frustration from changing options with no effect.
- Improved trust in plugin configuration.
- Made administrative tuning more predictable.
- Improved documentation clarity.
- Reduced support burden caused by misunderstood options.
---
# Behavior Changes
## Message Radius Priority
- Message radius now has clear priority over world-wide messaging when configured.
- Servers that previously had both world messaging and radius configured may notice narrower message delivery after updating.
- This change aligns runtime behavior with the intended documented behavior.
---
## Epic Effects Configuration Location
- Epic effect settings are now treated as a dedicated epic configuration area.
- Runtime no longer depends on mismatched system-message locations for epic effects.
- Existing custom epic setups should be reviewed to ensure values are placed in the intended epic section.
---
## Victim Broadcast Alias
- The shorter victim broadcast mode name is now accepted as a compatibility alias.
- This makes commands, help, tab completion, and configuration handling more consistent with user expectations.
---
## Effective Broadcast Resolution
- Broadcast settings are now resolved through a single effective path.
- Legacy and unified broadcast-related settings are handled more predictably.
- Administrators should expect validation output and runtime behavior to agree more closely.
---
## Economy Abort Behavior
- When a death message cost is enabled and the player cannot pay, the custom death message flow can now be aborted.
- This makes paid death messages function as an actual gate rather than a cosmetic charge attempt.
---
## Economy Exemption Group Behavior
- Cost exemption now evaluates the player’s real permission group more directly.
- Exempt groups can remain exempt even when message-selection grouping is configured differently.
- This makes economy exemptions more intuitive and less dependent on unrelated message settings.
---
## Reload Refresh Order
- Reload now refreshes dependent configuration layers in a safer order.
- This reduces stale cache issues after changing sounds, messages, epic effects, or group settings.
---
## Visual Effect Placeholder Handling
- Titles, subtitles, and action bar messages now participate more fully in placeholder resolution.
- This may cause previously static-looking visual effects to display dynamic death information.
---
## Sound Configuration Flexibility
- Sound values now accept multiple valid formatting styles.
- Administrators can use dotted identifiers, custom namespaces, or constant-style names where supported.
---
## Modern API Baseline
- The plugin now targets a more modern API baseline consistent with registry-based sound handling and supported server software.
- Older server environments that cannot support the required runtime level may no longer be suitable targets.
---
## Test Command Offline Player Handling
- Testing against a named player who is not online now produces clearer failure behavior instead of silently falling back in potentially confusing ways.
- This makes the test command more predictable in administrative workflows.
---
# Changes
- Updated plugin version metadata to 1.5.
- Improved plugin description and command metadata clarity.
- Updated default configuration guidance for message targeting.
- Added configurable death message console logging.
- Improved epic death configuration structure.
- Improved group sound cache reliability.
- Improved message cache construction.
- Improved conditional message evaluation.
- Improved killer/source resolution architecture.
- Improved damage tracking structure.
- Improved death context richness.
- Improved placeholder registry semantics.
- Improved message formatter pipeline.
- Improved broadcast manager behavior.
- Improved particle manager behavior.
- Improved sound manager behavior.
- Improved test command flow.
- Improved test summary accuracy.
- Improved broadcast command input handling.
- Improved help command completeness.
- Improved tab completion correctness.
- Improved reload manager sequencing.
- Improved dependency initialization ordering.
- Improved configuration validator coverage.
- Improved optional integration resilience.
- Improved update checker safety.
- Improved build dependency coherence.
- Improved runtime compatibility posture.
- Removed unused or misleading internal components.
- Removed unused bundled dependency weight where it provided no runtime benefit.
- Reduced duplicated unsafe parsing logic.
- Improved consistency between validation and runtime.
- Improved consistency between commands and configuration.
- Improved consistency between real deaths and test deaths.
- Improved consistency between chat effects and visual effects.
- Improved cleanup discipline for per-player state.
- Improved exception safety in death handling.
- Improved safety of asynchronous background tasks.
- Improved overall code hygiene.
- Improved production readiness.
---
# Additions
## New Sound Parsing Layer
- Added a centralized sound resolution system.
- Supports safer parsing of modern sound identifiers.
- Supports fallback behavior for invalid values.
- Adds clearer warning output.
- Improves compatibility with custom and datapack sounds.
- Reduces crash risk from malformed configuration.
- Makes sound handling consistent across the plugin.
---
## New Particle Parsing Layer
- Added a centralized particle resolution system.
- Supports safer parsing of particle names.
- Adds fallback behavior for invalid values.
- Improves feedback for administrators.
- Reduces silent particle failures.
- Makes particle handling consistent across runtime, validation, and commands.
- Improves overall effect reliability.
---
## Centralized Broadcast Mode Resolution
- Added a unified effective broadcast-mode resolution path.
- Supports compatibility aliases such as the shorter victim mode name.
- Aligns commands, validation, help output, and runtime behavior.
- Reduces divergence between legacy and newer broadcast-related settings.
- Makes broadcast configuration easier to reason about.
---
## Structured Damage Information
- Added richer damage tracking that separates:
- responsible entity,
- direct damage source.
- Added safer representation for block-based projectile sources where applicable.
- Improves accuracy for projectile and indirect deaths.
- Enables better placeholder output.
- Improves conditional message reliability.
- Reduces loss of context during complex deaths.
- Makes death resolution more precise.
- Improves future extensibility.
---
## Richer Death Context
- Added more complete death context data for use across formatting and effects.
- Supports better placeholder resolution.
- Improves consistency between chat, titles, subtitles, action bars, and conditions.
- Reduces repeated context construction.
- Improves reliability of epic death presentation.
- Makes custom message design easier.
- Improves internal coherence.
---
## New Configurable Logging Option
- Added a configuration option to control death message console logging.
- Allows administrators to reduce log spam.
- Helps protect sensitive placeholder-derived information.
- Makes production logging more flexible.
- Improves operational comfort.
- Aligns logging behavior with server policy needs.
- Adds a quality-of-life control for large servers.
---
## New or Clarified Placeholders
- Clarified separation between:
- killer display name,
- killer username,
- killer source.
- Improved reliability of:
- distance,
- killer source,
- victim identity,
- cost.
- Made placeholder semantics more trustworthy.
- Improved compatibility with conditional messages.
- Expanded expressive options for death message design.
- Reduced ambiguous placeholder behavior.
- Improved documentation alignment.
---
## New Permission Declarations
- Added missing permission declarations for existing plugin behavior.
- Improves discoverability for administrators.
- Reduces confusion when using permission management tools.
- Makes permission auditing easier.
- Improves alignment between code and metadata.
- Reduces accidental permission gaps.
- Improves overall plugin polish.
---
## Message History Cleanup Lifecycle
- Added explicit cleanup for internal per-player message selection history.
- Reduces long-term retention of transient player state.
- Improves behavior on large servers with many unique players.
- Makes non-repeating message selection cleaner across sessions.
---
## Safe Time Formatting Fallback
- Added safer fallback handling for time-format placeholders.
- Prevents invalid time formatting from disrupting death processing.
- Improves resilience of configuration-driven placeholder output.
---
## Cross-World Global Particle Fallback
- Added safer delivery behavior for global particle effects involving players in different worlds.
- Improves the practical visibility of globally configured particle effects.
- Reduces complete miss scenarios for remote players.
---
# Improvements
## Architecture and Maintainability
- Centralized unsafe parsing logic.
- Reduced duplicated sound and particle resolution code.
- Centralized broadcast-mode interpretation.
- Improved separation of responsibilities between systems.
- Made configuration alignment easier to maintain.
- Reduced fragile assumptions about key names and paths.
- Improved consistency between validation and runtime.
- Made future feature work safer.
- Improved internal clarity.
- Reduced long-term maintenance risk.
---
## Death Event Reliability
- Death events now share more consistent contextual data.
- Improved agreement between:
- message selection,
- placeholder output,
- visual effects,
- audio effects,
- conditional logic.
- Reduced mismatched death presentation.
- Improved behavior during complex or multi-source deaths.
- Made epic deaths more coherent.
- Improved reliability under rapid damage sequences.
- Reduced odd placeholder fallbacks.
- Improved overall death realism.
---
## Test Command Reliability
- The test command is now much more trustworthy.
- One execution produces one consistent epic outcome.
- Test output better matches actual playback.
- Permissions are enforced more correctly.
- Permission-group resolution is more consistent with real death behavior.
- Broadcast scope is respected.
- Global flags behave more predictably.
- Offline-player test handling is clearer.
- Improved usefulness for configuration debugging.
- Reduced confusion during testing.
- Made the command suitable for real admin workflow.
---
## Administrator Experience
- Invalid sounds and particles now produce clearer feedback.
- Configuration validation better reflects actual runtime behavior.
- Broadcast mode reporting is more coherent.
- Help and tab completion are more consistent.
- Reload behavior is less surprising.
- Economy settings now have real effect.
- Economy exemptions behave more intuitively.
- Radius settings now behave as documented.
- Improved confidence when editing configuration.
- Reduced trial-and-error.
- Improved overall usability for server owners.
---
## Player Experience
- Death messages are more accurate.
- Projectile kills can display the correct source.
- Mob kills can report meaningful distance values.
- Nicknames and usernames are handled more predictably.
- Epic deaths are more consistent across all effect channels.
- Global particle effects are more reliable when configured as global.
- Visual effects can use richer placeholder data.
- Respawn feedback is more polished and consistent.
- Reduced confusing or contradictory death feedback.
- Improved immersion and polish.
---
## Stability and Safety
- Reduced crash risk from malformed sound configuration.
- Reduced crash risk from malformed particle configuration.
- Reduced crash risk from invalid time formatting.
- Reduced stale cache risk after reload.
- Reduced stale listener risk after reload.
- Reduced memory retention from damage tracking.
- Reduced memory retention from per-player message history.
- Reduced async update checker risk during shutdown.
- Reduced dependency conflict risk through safer dependency handling.
- Reduced build failure risk through corrected dependencies.
- Improved exception safety during death processing.
- Improved resilience in production environments.
---
## Compatibility
- Improved compatibility with modern server APIs.
- Improved handling of registry-based sounds.
- Improved optional integration behavior.
- Improved tolerance for load-order differences.
- Improved support for custom sound sources.
- Improved placeholder integration behavior.
- Reduced friction with nickname and economy plugins.
- Improved deployment flexibility.
- Made the plugin safer across varied server setups.
---
## Performance and Hygiene
- Reduced redundant object creation in some death flows.
- Improved cache rebuild discipline.
- Reduced unnecessary retained state.
- Improved cleanup on disconnect and respawn.
- Reduced long-term memory growth from per-player tracking.
- Improved efficiency of message and effect resolution.
- Reduced wasted work during reload.
- Improved overall runtime cleanliness.
- Made long-running server behavior more stable.
---
# Summary of Major 1.5 Outcomes
- Economy cost now actually works.
- Economy exemptions now behave more intuitively and independently from message-group settings.
- Radius messaging now overrides world messaging as intended.
- Victim broadcast mode now works through commands and configuration.
- Broadcast modes are now resolved more consistently across runtime, validation, and commands.
- Global particles are now delivered more reliably, including safer cross-world fallback behavior.
- Epic effects now read the correct configuration area.
- Reload no longer leaves obvious stale caches.
- Reload validation is safer and less likely to contaminate live state.
- The test command is now internally consistent.
- The test command now respects permission-based messaging more accurately.
- Projectile and indirect kills preserve the real damage source.
- Block-based projectile sources are handled more accurately.
- Distance works for mobs and projectiles.
- Killer username returns a real username.
- PlaceholderAPI colors are now processed correctly.
- Visual effects now participate more fully in the placeholder and color pipeline.
- Sound parsing supports modern registry-based sounds safely.
- Particle parsing is safer and more transparent.
- Permissions, help, tab completion, and validation are more coherent.
- Memory and lifecycle handling are cleaner.
- Update checking is safer.
- Optional integrations recover more gracefully.
- Build and runtime compatibility are more reliable.
- The plugin is substantially harder to break with invalid configuration.
- Death messages are more accurate, expressive, and trustworthy.
- The overall experience for administrators and players is significantly improved.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }