File Details
christmas-season-2.0.0.jar
- R
- Dec 19, 2025
- 13.00 MB
- 114
- 1.21.11+11
File Name
christmas-season-2.0.0.jar
Supported Versions
- 1.21.11
- 1.21.10
- 1.21.9
- 1.21.8
- 1.21.7
- 1.21.6
- 1.21.5
- 1.21.4
- 1.21.3
- 1.21.2
- 1.21.1
- 1.21
## [2.0.0] - 2025-12-19
### Added
- **🎄 Multi-Platform Support** - Plugin now runs on Spigot, Paper, Purpur AND Folia!
- Automatic platform detection at runtime
- Single JAR works on all server types (no separate builds needed)
- Zero configuration required - works out of the box
- **Smart Scheduler Strategy:**
- **Paper/Spigot/Purpur:** Global timer (preserves v1.4.1 architecture & performance)
- **Folia:** Player-based Entity Scheduler (regionalized threading)
- **FoliaLib Integration**
- Added FoliaLib 0.4.3 dependency (shaded & relocated)
- Seamless multi-platform scheduler abstraction
- Automatic fallback to Bukkit scheduler on non-Folia servers
- **Folia-Specific Optimizations**
- Region-based scheduling for biome processing (uses Global/Region Scheduler)
- Entity-based scheduling for mobs (Wichtel, Elfen, Schneemänner)
- Location-based scheduling for blocks (Gifts, Decorations)
- Full support for Folia's regionalized multithreading
- **Chunk Queue System** (NEW!)
- Budget-based chunk processing prevents TPS spikes
- Config option: `perTickBudget` (default: 12 chunks/tick)
- Prevents lag when players move quickly into new areas
- Queue distributes chunk updates across multiple ticks
- **Manual Biome Correction Command**
- `/xmas biome set <biome> [radius]` - Manually fix biome issues
- Only works when ChristmasSeason is active (prevents permanent changes)
- Includes automatic snapshot creation
- Protection against global timer conflicts
### Changed
- **Complete Scheduler Migration**
- All managers migrated from Bukkit scheduler to FoliaLib
- `BiomeSnowManager`: Multi-platform scheduler strategy (Global on Paper, Entity on Folia)
- `DecorationManager`: Entity scheduler for item lifetimes
- `GiftManager`: Location scheduler for chest placement/removal
- `SnowstormManager`: Global scheduler for weather control
- `WichtelManager`: Entity scheduler for mob management
- `SnowmanManager`: Entity scheduler for snowman behavior
- `XmasCommand`: Global scheduler for delayed operations
- **New Scheduler Helper**
- Created `FoliaSchedulerHelper` utility class
- Platform-agnostic API for scheduling tasks
- Automatic platform detection (isFolia() method)
- Supports all scheduler types: Global, Region, Entity, Location, Async
- **Task Types Updated**
- Replaced `BukkitTask` with `WrappedTask` (FoliaLib wrapper)
- Replaced `BukkitRunnable` with lambda expressions
- All scheduler calls now go through FoliaSchedulerHelper
- **Performance Improvements**
- `perTickBudget` increased from 6 → 12 (2x faster biome updates)
- Cache management optimized (processedChunks, knownSnapshotChunks)
- Chunk queue prevents processing duplicates
### Fixed
- **CRITICAL: Multi-Platform Teleport Incompatibility**
- Fixed `NoSuchMethodError` on Spigot (teleportAsync doesn't exist)
- Fixed `UnsupportedOperationException` on Folia (must use teleportAsync)
- Platform-dependent teleport: `teleportAsync()` on Folia, `teleport()` on Spigot/Paper/Purpur
- Wichtel can now teleport correctly on all platforms
- **CRITICAL: Race Condition in `/xmas biome set`**
- Fixed global timer overwriting manual biome changes
- Chunks are now marked as processed BEFORE async tasks start
- Manual changes are now persistent until `/xmas off`
- **CRITICAL: Chunk Stripes Not Restored**
- Fixed chunks being deleted from database even when restore failed
- Chunks now only deleted after successful restoration
- Failed chunks remain in DB for retry on next `/xmas off`
- Added logging for failed chunk loads
- **Database Management**
- Improved cache clearing before/after restore operations
- Better error handling for chunk loading failures
- Success-only database cleanup prevents data loss
### Technical
- **Dependencies**
- Updated from `spigot-api` to `paper-api` (1.21.3-R0.1-SNAPSHOT)
- Added `FoliaLib` 0.4.3 (com.tcoded:FoliaLib)
- Added tcoded-releases repository (https://repo.tcoded.com/releases)
- FoliaLib is shaded and relocated to avoid conflicts
- **Build Configuration**
- Updated Maven Shade plugin to include FoliaLib
- Relocation: `com.tcoded.folialib` → `de.boondocksulfur.christmas.libs.folialib`
- SQLite JDBC driver still bundled (3.45.0.0)
- **Version Bump**
- Major version bump to 2.0.0 (breaking changes in internal APIs)
- Updated version in pom.xml, plugin.yml, and READMEs
- Platform description updated to "Spigot/Paper/Purpur/Folia"
- Added `folia-supported: true` flag to plugin.yml (required for Folia)
### Migration Notes
- **No action required for server admins** - plugin auto-detects platform
- **For developers**: Internal scheduler API changed (use FoliaSchedulerHelper)
- **Compatible with existing configs** - no configuration changes needed
- **Works on Folia 1.20+** and all Paper/Spigot versions supporting 1.21+