Skip to content

🐛 Fix 70+ bugs, add DeathMessage module, fix 1.21.11 compatibility#230

Open
WhiteProject1 wants to merge 14 commits intoMaxlego08:mainfrom
WhiteProject1:main
Open

🐛 Fix 70+ bugs, add DeathMessage module, fix 1.21.11 compatibility#230
WhiteProject1 wants to merge 14 commits intoMaxlego08:mainfrom
WhiteProject1:main

Conversation

@WhiteProject1
Copy link
Contributor

@WhiteProject1 WhiteProject1 commented Mar 9, 2026

Summary

  • 70+ bug fixes across commands, modules, and utilities (null checks, wrong enums, missing onlyPlayers(), == vs .equals(), NPE guards)
  • New DeathMessage module with 25+ purple-themed death messages, hover details, click-to-teleport, and per-player toggle
  • NMS V1_21_8-11 build fix for adventure-text-serializer-ansi empty version resolution
  • Hologram NPE crash fix - plugin no longer crashes when NMS hologram class is unavailable
  • Enchantment fixes - LUNGE (1.21.11) support, null-safe registration, deprecated translationKey() fallback

Bug Fixes

Null Safety (Wave 1-4)

  • Add null player checks in 20+ commands (teleport, experience, give, phantoms, social spy, etc.)
  • Fix null getDefaultEconomy() NPE in CommandPay
  • Fix null sanction checks in SanctionModule, ZStorageManager, ButtonSanctions
  • Fix null user checks in autocomplete methods (CommandDelHomeConfirm, CommandHome, CommandCooldownDelete)
  • Fix null user in UserPlaceholders for user_has_discord_linked
  • Fix player.isOnline() checks in delayed tasks (night vision)
  • Fix InvseeListener null/offline target player validation

Logic Fixes

  • Fix == vs .equals() for player object comparisons in toggle commands
  • Fix wrong description enums (CommandEnderChest, CommandEssentialsClearRandomWord)
  • Fix wrong economy reason in CommandEconomySet
  • Fix min/max swap bug in CommandEconomyGiveRandom
  • Fix wrong event check in VoteModule
  • Fix compareTo > 0>= 0 in EconomyModule hasMoney()
  • Add missing onlyPlayers() to CommandScoreboard, CommandTrade, CommandPayToggle

Hologram & 1.21.11 Compatibility

  • HologramLoader/HologramModule: null check prevents plugin crash when NMS class unavailable
  • CommandEnchant: fallback for deprecated translationKey()
  • ZEnchantments: add LUNGE enchantment (1.21.11), null-safe register, use valueOf() for 1.21 enchants
  • NMS V1_21_8-11: resolution strategy for adventure-text-serializer-ansi empty version BOM

New: DeathMessage Module

  • 25+ death cause messages with purple theme
  • Hover details showing death coordinates
  • Click-to-teleport suggestion
  • Per-player toggle via /deathmessage command
  • Configurable modes: DISABLE, DEFAULT, CUSTOM

Test plan

  • Plugin enables without errors on 1.21.11
  • Test /enchant lunge 1 works
  • Test death messages for all death causes
  • Test /deathmessage toggle
  • Test hologram module graceful fallback
  • Test economy commands (pay, baltop, set, give-random)
  • Test teleportation commands (tpa, home, spawn, warp)

Enhanced debug logging and override logic in TeleportationModule for random teleportation, including better handling of void worlds and location validation. Optimized YamlLoader to support direct loading of Map<String, String> fields from configuration sections.
Added checks to ensure both users are online and have valid player objects before proceeding with teleportation in ZTeleportRequest and ZTeleportHereRequest. This prevents errors and improves stability when handling teleport requests.
Eliminated debug log statements throughout the TeleportationModule to improve performance and reduce console clutter. Debug logging can be re-enabled via configuration if needed.
Replaced several HashMap and HashSet usages with ConcurrentHashMap and thread-safe sets for better concurrency in command, storage, and utility classes. Added null checks and error logging in SanctionModule and VaultItemRepository to prevent potential runtime exceptions. Improved command extraction safety in PlayerListener and enhanced logging in TeleportationModule for chunk loading failures.
Teleportation to spawn on first join now waits for the player to be fully loaded in the chunk loader (Folia) by scheduling the teleport 2 ticks later. This ensures the player is online and avoids potential issues with chunk loading.
Added URL and changed seconds to long in VoteSiteConfiguration. Improved vote site configuration loading and reset scheduling in VoteModule, including safer monthly scheduling and async vote updates with error handling. Fixed typo in PlayerListener (cancelGoldEvent to cancelGodEvent), ensured playtime insertion runs asynchronously, and added online check before scheduling flight on login.
Introduces a comprehensive player trading feature, including trade request, accept, and deny commands, trade events, and a configurable trade GUI. Adds TradeManager, TradeModule, inventory handling, event listeners, and configuration for slots, items, and messages. Updates permissions and messages to support trading functionality.
TradeModule now sets custom model data on item meta if the 'custom-model-data' field is present in the configuration section. This allows for more flexible item customization in trades.
ExpiringCache now supports soft expiration: entries are asynchronously refreshed when soft-expired, but the old value is returned until hard expiration. This improves cache responsiveness and reduces blocking on cache misses.
Introduces a SimpleCache for item retrieval to improve performance when no replacements are needed. Refactors item meta handling by separating raw item loading and meta updates, and adds support for custom model data in item configuration.
Introduces cross-server teleportation via Redis and BungeeCord/Velocity, including new API interfaces, message classes, and configuration options. Implements Redis-based server for handling cross-server player transfers and teleport requests, with listener for pending teleports. Optimizes several hot-paths for performance and updates configuration files to support new features.
Bug fixes (Wave 1-4):
- Fix null player checks in 20+ commands (teleport, experience, give, trade, etc.)
- Fix == vs .equals() comparisons for player objects in toggle commands
- Fix wrong description/message enums in multiple commands
- Fix economy NPE (null default economy, min/max swap, wrong reason enum)
- Fix null sanction checks in SanctionModule, ZStorageManager, ButtonSanctions
- Fix null user checks in autocomplete methods and placeholders
- Fix player.isOnline() checks in delayed tasks (night vision)
- Fix hologram module null check when NMS class not found
- Fix InvseeListener null/offline target player
- Add missing onlyPlayers() to CommandScoreboard, CommandTrade, CommandPayToggle
- Add null module checks in commands that require modules

New features:
- DeathMessage module with 25+ purple-themed death cause messages
- Per-player death message toggle (/deathmessage command)
- Hover details showing death coordinates
- Click-to-teleport suggestion on death messages

Build fixes:
- Fix adventure-text-serializer-ansi dependency resolution for NMS V1_21_8-11
- Add resolution strategy in allprojects for empty version BOM deps
- HologramLoader/Module: null check when NMS class unavailable (prevents plugin crash)
- CommandEnchant: fallback for deprecated translationKey()
- ZEnchantments: add LUNGE (1.21.11), null-safe register, use valueOf() for 1.21 enchants
@WhiteProject1 WhiteProject1 changed the title 🐛 Fix 70+ bugs, add DeathMessage module 🐛 Fix 70+ bugs, add DeathMessage module, fix 1.21.11 compatibility Mar 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant