
Easter Holidays
Transform your server into an Easter event with egg hunts, rare bunnies, stats, bosses, quests, and more.
362
4
[1.3.5] - 2026-06-03
Bug Fixes
Daily Quests
- Fixed Quest Progress Not Persisting (Reward Duplication): Daily quest progress was kept only in memory and lost on restart. The empty shutdown block has been replaced with real persistence to
dailyquests.yml. On load, only entries dated today are restored, which prevents re-claiming rewards after a restart and stops the in-memory map from growing unbounded over time. - Fixed Quests Not Reloading:
/easter reloadnow reloads quest definitions from config (DailyQuestManager.reload()was never called).
Themed Mobs
- Fixed Particle Timer Leak (Easter Chick & ✨ Sheep): The repeating particle/color timers were never cancelled when the entity died. On Paper/Spigot (where entity tasks are not auto-retired) this leaked a repeating task per spawned mob. Timers now cancel themselves on death, and
cleanup()cancels any remaining sheep timers.
Update Checker
- Added Server-Compatibility Filter: The checker no longer reports updates that are incompatible with the running server. The Modrinth query now filters by the server's Minecraft version (
game_versions) and a Bukkit-family loader (loaders). - Pick Highest Version Instead of Newest-Published: Selects the highest
version_numberacross all compatible versions instead of just the first array element. - Fixed Resource Leak:
BufferedReaderis now closed via try-with-resources and theHttpURLConnectionis disconnected in afinallyblock.
Shutdown & Thread-Safety
- Removed Blocking Sleep on Main Thread:
AchievementManager.close()no longer callsThread.sleep(1000); the existing latch already guarantees all async saves complete. - Fixed Non-Thread-Safe Map:
TimedEventManager.activeEventsis now aConcurrentHashMap(accessed from both scheduler and main thread).
Misc
- Cleanup Log Accuracy:
EasterEggLauncherManager.cleanup()reported the count after clearing (always "0"); it now reports the actual number.
Improvements
- Language Files Are Now Merged, Not Overwritten:
messages_de.yml/messages_en.ymlpreviously overwrote admin customizations on every start. They are now merged: existing values are kept and only missing keys are added from the JAR defaults. - Removed Dead Code & Stray File: Removed the unused
saveResourceIfAbsent()helper and a stray Windows reserved-namenulfile from the repository root.
- Fixed Quest Progress Not Persisting (Reward Duplication): Daily quest progress was kept only in memory and lost on restart. The empty shutdown block has been replaced with real persistence to
[1.3.4] - 2026-05-10
Bug Fixes
Folia Compatibility
- Fixed Folia Cleanup Thread-Safety: All cleanup methods (
/easter cleanup,/easter off, plugin shutdown) now usescheduler.runForEntity()/scheduler.runAtLocation()instead of accessing entities directly from the command thread. FixesIllegalStateExceptionon Folia servers.EasterEggManager,EasterBunnyManager,ThemedMobManager- Entity access via entity schedulerEasterBossManager- ChangedrunAtLocationtorunForEntityfor entity removalCarrotGardenManager,BunnyHopPadManager- Block operations via location schedulerBunnyHopChallengeManager- Player potion effects via entity scheduler
- Fixed Folia Scoreboard Crash:
initializeDamageScoreboard()inEasterBossManagerthrewUnsupportedOperationExceptionon Folia. Scoreboard API is now wrapped in try-catch and gracefully disabled on Folia servers. - Fixed Folia Scoreboard Reset Crash:
handleBossDeath()andspawnBoss()scoreboard operations now wrapped for Folia compatibility.
Easter Boss
- Fixed BossBar NPE & Duplicate Update: Removed duplicate
setProgress()call without null-check instartBossAI()that caused NPE when BossBar was disabled. - Fixed BossBar Cleanup NPE: Added null-check before
bossBar.removeAll()in cleanup. - Fixed Damage Sidebar Persisting After
/easter killbossand/easter off:cleanup()did not reset player scoreboards - onlyhandleBossDeath()(natural death) did. Sidebar now properly removed on all cleanup paths. - Added Missing BossBar Config: Added
easterBoss.bossBarsection (enabled, color, style, range) to default config - values were used in code but never exposed in config.yml.
Easter Egg Cleanup
- Fixed Eggs Not Being Removed on
/easter off: Cleanup checkeditem.getCustomName()(entity name) but Easter Eggs only have a display name on the ItemStack, not on the entity. Now correctly checksitem.getItemStack().getItemMeta().getDisplayName(). - Fixed Language-Dependent Cleanup: Cleanup only matched English name "Easter Egg" but not German "Osterei". Now checks both languages plus the active language file dynamically.
Bunny Hop Pads
- Fixed Placement: Hop pad now spawns on top of the block the player is looking at (target block + 1) instead of replacing a block or spawning at the player's feet. Checks for free space above target block.
- Fixed Invalid Block Type: Changed default
blockTypefromLIGHT_BLUE_SLAB(does not exist) toLIGHT_BLUE_CONCRETE. - Fixed Extreme Boost Power: Changed default
boostPowerfrom50.0to3.0(reasonable value).
Commands & Events
- Fixed Event "parade" Not Recognized: Added
"parade"as alias for"bunny-parade"in command handler and tab-completion.
Improvements
Easter Title GUI
- Improved Locked Title Display: Locked titles now show the title name (grayed out), the unlock requirement, and a visual progress bar instead of just "??? Locked".
- Added Progress Tracking: Each locked title shows current progress (e.g.,
|||||||||| 12/25) based on the player's egg/bunny stats.
- Fixed Folia Cleanup Thread-Safety: All cleanup methods (
[1.3.3] - 2026-04-29
Bug Fixes
- Fixed Folia Scheduler Crash:
EasterBasketManagerused the Bukkit Scheduler (runTaskTimerAsynchronously,runTaskAsynchronously) which throwsUnsupportedOperationExceptionon Folia. Replaced withFoliaSchedulerHelperfor full Folia compatibility.
- Fixed Folia Scheduler Crash:
[1.3.2] - 2026-04-22
New Features
In-Game Loot Table Management
- New Admin Command:
/easter drops- Manage loot tables and egg type chances without editing config files- Supports tiers:
common,rare,legendary,boss(Easter Boss loot) /easter drops list <tier>- View all items in a loot table/easter drops add <tier> <MATERIAL:amount>- Add items to a loot table/easter drops remove <tier> <index>- Remove items by index number/easter drops chance- View current egg type spawn chances/easter drops chance <type> <percent>- Set spawn chance for normal/golden/diamond/ eggs- Permission:
easter.admin.drops - Changes are saved to config.yml immediately (no restart required)
- Full tab-completion for all sub-commands and arguments
- Supports tiers:
Configurable Egg Type Chances
- Egg type spawn chances are now configurable via config.yml instead of hardcoded
easterEggs.typeChances.normal(default: 94%)easterEggs.typeChances.golden(default: 5%)easterEggs.typeChances.diamond(default: 1%)- Warning when total doesn't add up to 100%
- New Admin Command:
[1.3.1] - 2026-04-21
New Features
Give Loot Command
- New Admin Command:
/easter giveloot <player> <tier>- Give loot rewards to players via command- Supports tiers:
common,rare,legendary,boss - Uses the configured loot tables from config.yml
- Gives a random item from the selected tier
- Alias:
/easter loot - Permission:
easter.admin.giveloot - Full tab-completion for player names and tiers
- Multi-language support (EN/DE)
- Supports tiers:
Bug Fixes
Easter Boss & Region Protection
- Fixed Boss Invincibility Exploit in GriefPrevention Claims: Players could claim the land where the Easter Boss spawned, making it invincible to anyone except the claim owner
- Added
HIGHESTpriority event handler that bypasses region protection for Easter Boss damage - All players can now damage the Easter Boss regardless of claim ownership
- Prevents the exploit where players claim land under the boss to grief other players
- Added
Title System
- Fixed Race Condition on Player Load: Title data is now initialized synchronously before async database load, preventing data loss when players interact with the title GUI immediately after joining
- Fixed Single Title Unlock Bug:
updateTitle()now unlocks ALL titles a player qualifies for, not just the highest one. Previously, a player with 500 eggs would only get "Epic Egg Hunter" but not the lower-tier titles - Fixed Thread Safety Issues:
TitleData.selectedTitleis nowvolatile, andunlockedTitlesuses a thread-safeConcurrentHashMap.newKeySet()instead of a regularHashSet - Fixed Potential NullPointerExceptions: Added null checks for
ItemMetain title GUI creation (both title items and clear button) - Fixed Fragile GUI Lock Detection: Title GUI now checks
Material.GRAY_DYEinstead of checking display name for "Locked" text, which failed with non-English languages - Fixed Shutdown Data Loss Risk: Replaced
Thread.sleep(2000)withCompletableFuture.allOf().get(5s)to properly wait for all async save operations to complete
Command System
- Added
/easter title select noneand/easter title select clear: Players can now remove their title via command instead of only through the GUI
Database Repair
- Added
titles.dbto/easter dbrepair: Title database is now included in all repair operations (check, fix, backup) alongside statistics and baskets
Improvements
- Invalid Title Logging:
parseTitles()now logs a warning when encountering unknown title entries in the database instead of silently skipping them
- New Admin Command:
[1.3.0] - 2026-04-06
🐛 Bug Fixes
Command System
- Tab-Completion: Added missing commands to auto-complete
- Added aliases:
lb,topfor leaderboard - Added aliases:
repairdbfor dbrepair - Added aliases:
jukeboxfor music - Added resource pack commands:
pack,resourcepack,texturepack - All commands now properly appear in tab-completion
- Added aliases:
Leaderboard System
- Fixed "Unknown User" Bug: Players in leaderboard now show correct names
- Automatically resolves player names using Bukkit OfflinePlayer API
- Updates database with resolved names to prevent future issues
- Handles old database entries with missing or invalid names
- Improved name resolution for offline players
Easter Basket System
- Fixed Item Loss Bug: Items no longer disappear from baskets
- Added backup mechanism during save operations
- Improved transaction handling with proper rollback on errors
- Added auto-save every 5 minutes for modified baskets
- Asynchronous saving to prevent main thread blocking
- Better error handling and recovery
- Fixed race conditions during inventory close events
🔧 Improvements
- Database Operations: More robust error handling and logging
- Performance: Asynchronous basket saving reduces server lag
📖 Documentation
- Updated plugin.yml: Complete command documentation with all aliases
- Improved help text: Added all command variations and options
- Tab-Completion: Added missing commands to auto-complete
[1.2.9] - 2026-04-05
✨ New Features
Boss Damage Tracking System
- Live Damage Scoreboard: Shows top 5 damage dealers during boss fights
- Real-time updates with damage values and percentages
- Automatically displayed to players within 50-block radius
- Clean, color-coded display on the sidebar
- "Waiting for combat..." message before first damage
- Configurable via
easterBoss.damageTracking.scoreboard
- Post-Battle Damage Report: Detailed chat report when boss is defeated
- Complete damage breakdown for all participants
- Percentage-based damage distribution
- Top 10 damage dealers displayed with rankings (configurable)
- Medal system (⭐ Gold/Silver/Bronze) for top 3 players
- MVP System: Special recognition for the highest damage dealer
- MVP announcement broadcast to all players
- Special title animation and sound effects for MVP
- Unique rewards for top damage dealer
- Fully configurable (broadcast, animation, sounds)
- Multi-Language Support: Full EN/DE translations for all damage tracking features
Boss Sound Configuration
- Customizable Sound Settings: All boss sounds are now configurable
- Spawn sound (volume, pitch, enable/disable)
- Death sound (volume, pitch, enable/disable)
- Attack sounds (volume, pitch, enable/disable)
- Volume Control: Set volume from 0.0 to 2.0 for each sound type
- New config section:
easterBoss.soundssounds: spawn: enabled: true volume: 2.0 # 0.0-2.0 pitch: 0.5 # 0.0-2.0
🔧 Improvements
Configuration System
- Enhanced ConfigMigrator: Now correctly compares full version numbers (1.2.8 vs 1.2.9)
- Automatic Config Updates: New settings are added without losing existing configuration
- Better Migration Detection: Explicitly checks for all new config sections
- Improved Logging: Shows exactly which config options were added during migration
Damage Tracking Accuracy
- Overkill Protection: Damage is correctly capped at boss's remaining health
- Environmental Damage Tracking: Fire, fall damage, etc. now properly tracked
- TNT Damage Attribution: TNT damage is now credited to the player who placed it
- Event Priority Fix: Uses MONITOR priority for accurate final damage values
Scoreboard Display
- Immediate Display: Scoreboard shows instantly when boss spawns
- Better Player Detection: Improved range detection for showing/hiding scoreboard
- Consistent Updates: Fixed timing issues with scoreboard updates
- Automatic Cleanup: Scoreboard properly removed when players leave range
🐛 Bug Fixes
- Fixed ConfigMigrator not detecting version changes properly
📝 Technical Changes
- Added value clamping for all sound volumes (0.0-2.0 range)
- Improved debug logging for sound settings and damage tracking
- Better thread safety for damage tracking maps
- Optimized scoreboard update frequency (configurable)
- Live Damage Scoreboard: Shows top 5 damage dealers during boss fights
[1.2.8] - 2026-04-05
✨ New Features
Configurable Permission System
- Flexible Feature Permissions: Server admins can now control which features require permissions
- Per-Feature Configuration: Each feature (hoppad, launcher, trail, etc.) can be made public or restricted
- Added new
permissionssection in config.yml:permissions: requirePermissionFor: hoppad: false # Everyone can use hop pads! launcher: true # Requires permission - Live Reload: Permission changes take effect with
/easter reload- no restart needed - Backwards Compatible: All existing permissions continue to work as before
- Added comprehensive permission documentation in
PERMISSIONS_GUIDE.md
Automatic Configuration Migration
- No More Config Deletion! Updates automatically add new config options without losing existing settings
- Smart Migration: Only missing options are added, existing values are preserved
- Automatic Backups: Creates backup before any migration (
config.yml.backup) - Backup Rotation: Maintains only 2 backups to keep plugin folder clean:
config.yml.backup- Latest backupconfig.yml.backup.old- Previous backup
- Version Tracking: Config version tracked at file end with prominent warning
- Detailed Logging: Shows exactly which options were added during migration
- Old timestamped backups are automatically cleaned up
🔧 Improvements
Configuration
- Config Version Location: Moved to end of file with clear warning message:
# ============================================================================ # WARNING: DO NOT MODIFY THE CONFIG VERSION! # This is used for automatic configuration updates. # ============================================================================ config-version: "1.2.8" - Better Organization: Permission settings grouped logically in config
- Cleaner Updates: Future plugin updates won't require config deletion
📚 Documentation
- Added
PERMISSIONS_GUIDE.md- Complete guide for the new permission system - Added
CONFIG_MIGRATION.md- Technical details about automatic config updates - Updated examples showing how to configure permissions for different server types
🛠️ Technical
- Added
PermissionManagerclass for centralized permission handling - Added
ConfigMigratorclass for automatic configuration updates - Improved config file I/O operations for reliable migration
- Migration runs automatically on plugin startup when needed
[1.2.7] - 2026-04-03
🔒 Security & Bug Fixes
Fixed
-
Critical: Easter Basket Item Duplication Bug
- Fixed a critical exploit allowing players to duplicate items from Easter Baskets
- Added
EasterBasketGUIListenerto properly handle inventory interactions - Players can no longer remove items from the basket GUI (view-only mode)
- Exchange button functionality preserved and working correctly
- Prevents all forms of item extraction including click and drag events
- Fixed issue where player's own inventory became unusable in basket GUI
-
Boss Spawn & Boss Bar Issues
- Fixed boss repeatedly attempting to spawn in protected regions
- Added region protection checks to
findSafeSpawnLocation()method - Fixed orphaned boss bars appearing without actual boss
- Added cleanup routine for dead bosses and their boss bars
- Boss spawn timer now resets when spawn fails due to region protection
- Fixed Purpur compatibility: Boss now spawns on correct regional thread
- Fixed boss spawn warning timer running repeatedly instead of once (changed runGlobalTimer to runGlobalTaskLater)
-
Easter Basket Improvements
- Items are now individually removable from basket while preventing duplication
- Basket contents sync on inventory close to prevent item loss
- Exchange button (slot 26) remains protected
- Full item management support: take, place, and organize items freely
-
Boss Entity Removal on Folia/Purpur
- Fixed
/easter killbosscommand not removing boss entities on Folia/Purpur servers - Boss entity removal now runs on the correct regional thread
/easter offcommand now properly cleans up all boss entities- Boss removal is now thread-safe across all server platforms
- Fixed
Compatibility
- Server Platform Support:
- Fixed thread-safety issue preventing boss spawns on Purpur servers
- Boss entity spawning now uses proper regional thread execution
- Fixed Folia chunk access error: findSafeSpawnLocation now runs on regional thread
- Full compatibility with Paper, Spigot, Purpur, and Folia
Known Issues (Non-Critical)
- FoliaLib 0-tick Warning: Harmless informational warning about 0-tick delays being auto-corrected to 1 tick
- Does not affect functionality - FoliaLib handles this automatically
- Can be suppressed via config if desired
- JOML Unsafe Deprecation Warning: Server startup warning about sun.misc.Unsafe::objectFieldOffset
- NOT caused by EasterHolidays - comes from Minecraft's JOML library
- Does not affect plugin functionality
- Will be resolved by Mojang/JOML maintainers in future releases
Security
- Inventory Protection:
- Easter Basket GUI is now fully protected against manipulation
- All inventory click and drag events are properly cancelled
- Ensures basket contents remain synchronized with database
- Player inventory remains fully functional while viewing basket
-
[1.2.6] - 2026-04-02
🐰 Boss Improvements & Combat System
Added
-
Boss Fall Damage Protection:
- Easter Boss is now immune to fall damage
- Prevents boss from dying to environmental damage during jump attacks
-
Group Loot System:
- All players who dealt damage to the boss receive rewards
- Damage tracking system for fair loot distribution
- Rewards include Golden Carrots, Enchanted Golden Apple, Diamonds, and Emeralds
- Special effects (Regeneration, Strength, Speed, Jump Boost, Luck) for all participants
Fixed
-
Boss Respawn Timer:
- Fixed immediate boss respawn after death
- Properly enforces 60-minute minimum interval between spawns
- Added multiple safeguards against timer bypass
lastBossSpawncorrectly initialized and maintained
-
Boss Health Configuration:
- Fixed health value exceeding Minecraft's 1024 limit
- Server config properly set to 1000 health
- Default config set to 500 for safety
-
Boss Bar Management:
- Boss bar properly removed on boss death
- Fixed potential memory leaks from lingering boss bars
-
Complete Region Protection Integration:
- All Easter features (Eggs, Bunnies, Carrot Gardens, Boss) now respect WorldGuard and GriefPrevention protected areas
- Configurable via
regionIntegrationsettings withallowInClaims: false
Changed
- Boss Death Rewards:
- Changed from killer-only to all damage dealers
- More cooperative gameplay experience
- Encourages teamwork in boss fights
-
[1.2.5] - 2026-03-29
🔧 Critical Folia Fix & Title System Improvements
Added
-
PlaceholderAPI Support for Titles:
%easter_title%- Returns player's selected title with color codes%easter_title_raw%- Returns title without color codes- Can be used in scoreboards, holograms, and other plugins
- Note: Direct chat integration removed due to Minecraft 1.19+ signed chat limitations
-
Resource Pack Tips Configuration:
- Added
resourcePackTips.enabledandresourcePackTips.showOnStartupoptions - Tips are now enabled by default as requested
- Added
Changed
- Title System:
- Titles are now earned through achievements (collecting eggs/catching bunnies)
- 11 different titles from "Ei-Finder" to "LEGENDÄRER Eier-Meister"
- GUI selection via
/easter title guiwith German translations - Automatic title unlocking based on statistics
- Chat integration removed - Minecraft's signed chat system (1.19+) blocks message modifications
Fixed
- Critical Folia Threading Bug: Fixed
IllegalStateException: Recursive updateon player quit- Removed recursive
statsCache.put()calls insidecomputeIfAbsentin StatisticsManager - Changed player data saving to async operations in PlayerQuitListener
- Prevents ConcurrentHashMap violations in Folia's strict threading model
- Affects Folia 1.21.11+ and potentially Paper under high load
- Removed recursive
Changed
- PlayerQuitListener: Now saves statistics and titles asynchronously for better performance
- StatisticsManager: Fixed loadPlayerStats to not modify cache during computeIfAbsent
-
[1.2.4] - 2026-03-27
🌍 Multi-World Support & Critical Fixes
Added
- Full Multi-World Support: Easter features can now run in multiple worlds simultaneously
- Configure via
easterWorldslist in config.yml - Support for "ALL" to enable in every world
- Legacy
easterWorldconfig still supported for backwards compatibility
- Configure via
- Helper Methods: New
isEasterWorld()andgetEasterWorlds()methods in main class - Status Command Update:
/easter statusnow shows all configured Easter worlds - Debug Mode:
/easter debugcommand shows detailed world configuration and player tracking status - Resource Pack Tip: OPs receive a one-time notification about the EggLauncher resource pack on first login after server start
Changed
- EasterEggManager: Now spawns eggs in all configured worlds
- EasterBunnyManager: Spawns bunnies across all configured worlds with per-world limits
- CarrotGardenManager: Manages gardens per-world with individual world limits
- ThemedMobManager: Spawns Easter Chicks and ✨ Sheep in all configured worlds
- Per-world limits for both mob types
- ✨ Sheep counting now per-world instead of global
Fixed
- FoliaLib Update: Updated from 0.4.3 to 0.4.4 to fix task wrapping exception
- Fixes:
IllegalArgumentException: The nativeTask provided must be a BukkitTask - Improves compatibility with Paper/Spigot servers
- Fixes:
- Multi-World Support: Fixed issue where only the first world in
easterWorldslist was working- PlayerJoinListener now checks if player's world is an Easter world before starting features
- Added PlayerWorldChangeListener to handle players moving between worlds
- Easter features now properly start/stop when players enter/leave Easter worlds
- Prevents unnecessary task scheduling in non-Easter worlds
- Cleanup Command: Fixed
/easter offnot cleaning up entities in unloaded worlds- All cleanup methods now iterate through configured Easter worlds only
- Entities in unloaded worlds are skipped with debug messages
- Cleanup now works correctly across all configured worlds regardless of player location
- Mob Cleanup: Fixed themed mobs not being removed after server restart
- Changed from exact name matching to substring matching for emoji compatibility
- Properly handles custom names with special characters
Dependencies
- FoliaLib: 0.4.3 → 0.4.4 (Critical bug fixes for task wrapping)
Resource Pack Integration
- Changed default item from
EGGtoSTICKfor resource pack compatibility - Added
/easter packcommand for resource pack information - Integrated with EggLauncher Resource Pack (/resourcepacks/egglauchner)
- Pre-configured CustomModelData values for the pack
Configuration Example
# Multi-world support easterWorlds: - "world" - "world_nether" - "creative" # OR easterWorlds: "ALL" # Resource pack ready config easterEggs: itemMaterial: "STICK" customModelData: common: "4-5" # egg1, egg2 models rare: "2-3" # egg3, egg4 models legendary: "6-7" # egg5, egg6 models easterEggLauncher: itemMaterial: "STICK" customModelData: 1 # osterblaster_3000 model- Full Multi-World Support: Easter features can now run in multiple worlds simultaneously
[1.2.3] - 2026-03-22
🎮 Testing & Admin Features
Added
-
New Admin Command:
/easter spawnegg [type]- Manually spawn eggs for testing- Supports types: normal, golden, diamond, random
- Alias:
/easter egg [type] - Permission:
easter.admin.spawnegg - Eggs spawn 2 blocks in front of player with 1 second pickup delay
- Perfect for testing Custom Model Data and resource packs
-
New Launcher Command:
/easter launcher infinite- Toggle infinite ammo for admins- Permission:
easter.admin.launcher.infinite - Must be explicitly enabled per player (not active by default)
- Shows status message when toggled on/off
- Only works if player has permission AND has it enabled
- Permission:
Fixed
- Plugin Persistence: Fixed plugin turning off after server restart
- Config Persistence: Only saves default config if none exists
- CustomModelData Parsing: Fixed range parsing issues with invalid ranges
- Egg Pickup: Added pickup delay to prevent instant collection when spawning eggs
- Debug Output: Enhanced debug messages for CustomModelData configuration
-
[1.2.2] - 2026-03-21
🔧 Maintenance Update
Changed
- Updated SQLite JDBC: Upgraded from 3.45.0.0 to 3.51.3.0 for better performance and security
- Fixed bStats Plugin ID: Changed from placeholder to actual ID
- Code Cleanup: Removed unused hardcoded CustomModelData values from EggType enum
Added
- Resource Pack Template: Complete template with English documentation for community resource pack creators
[1.2.1] - 2026-03-08
🐛 Bug Fixes - Critical Stability Improvements
Database & Performance
- Fixed NullPointerException in StatisticsManager:
getStats()now automatically loads player stats if not in cache - Replaced Thread.sleep() in AchievementManager: Now uses
CountDownLatchwith 5-second timeout for proper async shutdown - Migrated to HikariCP Connection Pooling: All database managers now use connection pooling for better concurrency
EasterBasketManager: Migrated from single connection to HikariCPEasterTitleManager: Migrated from single connection to HikariCP- Prevents SQLite lock issues and improves multi-threaded performance
Null Safety
- Added null-checks in PlayerJoinListener: Prevents NPE when managers fail to initialize
- Added null-checks in PlayerQuitListener: Safe cleanup even if managers are unavailable
Performance Optimizations
- Optimized distance calculations in EasterEggManager: Changed from
distance()todistanceSquared()to avoid expensive sqrt operations - Improved config parsing error handling:
- Added validation for CustomModelData ranges
- Added proper error logging for invalid configuration values
- Prevents silent failures in config parsing
🔧 Technical Improvements
- All database managers now consistently use HikariCP for connection pooling
- Improved error logging across all managers
- Better resource cleanup during plugin shutdown
- Thread-safe shutdown procedures with proper timeout handling
- Fixed NullPointerException in StatisticsManager:
Initial Modrinth release (v1.2.0)
- Egg hunt system with multiple egg types and loot tiers
- Rare Easter bunnies with rewards and broadcasts
- SQLite stats + leaderboards
- Achievements and event system
- Carrot gardens, challenges, themed mobs, and an Easter boss fight
- Time-limited events, region integration, baskets, daily quests, titles, hop pads, and egg launcher
- Multi-platform scheduling with Folia support
Ссылки
Авторы
Сведения
Лицензия:
Опубликован:5 месяцев назад
Обновлён:1 неделю назад
ID проекта:

