
EasterHolidays
Transform your Minecraft server into an Easter wonderland with egg hunts, special mobs, epic boss battles, and tons of festive features!
🎨 Official EasterHolidays Resource Pack Available!
Enhanced Visuals with EggLauncher Resource Pack
- Download: Modrinth - EggLauncher Pack
- Custom models for all Easter Eggs (6 unique designs)
- Animated Easter Egg Launcher (Osterblaster 3000)
- Fully compatible with v1.2.4+
- Use
/easter packin-game for more info
🎮 Core Features
Easter Egg Hunt
- 3 egg rarities (Normal, Golden, Diamond) with custom loot tables
- Eggs spawn dynamically around players on grass blocks
- Configurable spawn rates and lifetimes
- Resource Pack Ready: Pre-configured for custom egg models!
Special Easter Content
- Rare glowing Easter Bunnies that give rewards when caught
- Easter Boss with 4 unique attack patterns
- Themed mobs: Easter Chicks and Rainbow Sheep
- Carrot Gardens that spawn randomly
- NEW: Easter Egg Launcher with magazine system & infinite ammo mode
Player Progression
- SQLite database for persistent statistics
- Leaderboards for competitive players
- 15+ achievements to unlock
- Daily quests with rewards
- Collectible titles system
- Personal Easter baskets
Fun Activities
- Bunny Hop Challenge (timed jumping game)
- Rainbow Trail effects for players
- Easter Egg Launcher (shoots eggs with custom effects)
- Bunny Hop Pads for super jumps
- Special events: Egg Wave, Bunny Parade, Rainbow Trail
🌍 Multi-World Support (NEW in v1.2.4!)
Configure Easter features for multiple worlds simultaneously:
# Enable for specific worlds
easterWorlds:
- "world"
- "world_nether"
- "creative"
# Or enable for ALL worlds
easterWorlds: "ALL"
⚙️ Technical Details
Compatibility
- Minecraft: 1.21.x
- Platforms: Paper, Folia, Purpur, Spigot, Bukkit
- Java: 21 or newer
- Multi-core: Full Folia support with async scheduling
- FoliaLib: Updated to 0.4.4 (fixes task wrapping issues)
Integrations (all optional)
- PlaceholderAPI: 11 placeholders for scoreboards/chat
- BS CustomJukebox: Automatic Easter music
- WorldGuard/GriefPrevention: Respects protected regions
📦 Quick Start
- Download
EasterHolidays-1.2.4.jar - (Optional) Get the Resource Pack
- Place JAR in your server's
plugins/folder - Restart server
- Use
/easter onto activate - Plugin auto-configures for resource pack compatibility!
🎯 Commands & Permissions
Player Commands (easter.user)
/easter status- View current status/easter stats- Check your statistics/easter leaderboard- See top players/easter trail- Toggle rainbow trail/easter pack- Get resource pack info
Admin Commands (easter.admin)
/easter on/off- Enable/disable Easter mode/easter reload- Reload configuration/easter boss- Spawn Easter Boss/easter event <type>- Start special events/easter launcher [infinite]- Get launcher or toggle infinite ammo/easter spawnegg [type]- Spawn eggs for testing
🎨 Resource Pack Configuration
The plugin comes pre-configured for the EggLauncher Resource Pack:
# Default configuration (works with resource pack)
easterEggs:
itemMaterial: "STICK" # Changed from EGG for pack compatibility
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
📊 Privacy & Performance
- Metrics: Uses bStats #30349 for anonymous statistics (can be disabled)
- Updates: Checks Modrinth for new versions (can be disabled)
- Performance: Optimized with connection pooling and async operations
- Database: SQLite with HikariCP connection pooling
🌍 Languages
Fully translated in English and German (/plugins/EasterHolidays/messages_en.yml)
📜 License
MIT - Free to use and modify!
🆕 What's New in v1.2.4
- 🌍 Full multi-world support
- 🎨 Resource pack integration with EggLauncher Pack
- 🔫
/easter launcher infinitecommand for admins - 🥚
/easter spawneggfor testing custom models - 🐛 Fixed FoliaLib task wrapping exception
- 📦 Changed default item from EGG to STICK for pack compatibility
Perfect for Easter events, family-friendly servers, or adding seasonal content to your world!
Ченджлог
1.3.6Релиз1.21.9, 1.21.10, 1.21.11 · 17 июня 2026 г.
[1.3.6] - 2026-06-17
Bug Fixes
Region / Land Protection
- Block-Changing Features Now Respect Any Protection Plugin (Dominion, Towny, Lands, GriefDefender, ...): Carrot gardens and bunny hop pads modified the world via direct
setType()calls, which fire no Bukkit event — so protection plugins never saw them. Only WorldGuard and GriefPrevention were checked, via plugin-specific reflection, meaning claims from any other protection plugin (e.g. Dominion) were silently ignored (reported case: an Easter Bunny turning protected stone into farmland). Block placement now runs through a new genericRegionIntegration.canPlace(...)check that fires a syntheticBlockPlaceEventand honors its cancellation. Because virtually every land-protection plugin listens to that event, all of them are now respected at once — without adding any of them as a dependency. - Bunny Hop Pads Had No Protection Check At All:
spawnHopPad()placed its block without ever consultingRegionIntegration. It now performs the generic protection check before placing. - Carrot Gardens Check Per Block: Protection is now evaluated for each block of the garden, so a claim covering only part of the spawn area is handled correctly instead of all-or-nothing.
1.3.5Релиз1.21.9, 1.21.10, 1.21.11 · 3 июня 2026 г.
[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 & Rainbow 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.
1.3.4Релиз1.21.9, 1.21.10, 1.21.11 · 10 мая 2026 г.
[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.
1.3.3Релиз1.21.9, 1.21.10, 1.21.11 · 29 апреля 2026 г.
[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.
1.3.2Релиз1.21.9, 1.21.10, 1.21.11 · 22 апреля 2026 г.
[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%
1.3.1Релиз1.21.9, 1.21.10, 1.21.11 · 21 апреля 2026 г.
[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
1.3.0Релиз1.21.9, 1.21.10, 1.21.11 · 6 апреля 2026 г.
[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
1.2.9Релиз1.21.9, 1.21.10, 1.21.11 · 5 апреля 2026 г.
[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)
Комментарии
Загружаем…