Tags
Creators
Details
2.0.0
Compatibility
Changes
[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 lifetimesGiftManager: Location scheduler for chest placement/removalSnowstormManager: Global scheduler for weather controlWichtelManager: Entity scheduler for mob managementSnowmanManager: Entity scheduler for snowman behaviorXmasCommand: Global scheduler for delayed operations
-
New Scheduler Helper
- Created
FoliaSchedulerHelperutility class - Platform-agnostic API for scheduling tasks
- Automatic platform detection (isFolia() method)
- Supports all scheduler types: Global, Region, Entity, Location, Async
- Created
-
Task Types Updated
- Replaced
BukkitTaskwithWrappedTask(FoliaLib wrapper) - Replaced
BukkitRunnablewith lambda expressions - All scheduler calls now go through FoliaSchedulerHelper
- Replaced
-
Performance Improvements
perTickBudgetincreased from 6 โ 12 (2x faster biome updates)- Cache management optimized (processedChunks, knownSnapshotChunks)
- Chunk queue prevents processing duplicates
Fixed
-
CRITICAL: Multi-Platform Teleport Incompatibility
- Fixed
NoSuchMethodErroron Spigot (teleportAsync doesn't exist) - Fixed
UnsupportedOperationExceptionon Folia (must use teleportAsync) - Platform-dependent teleport:
teleportAsync()on Folia,teleport()on Spigot/Paper/Purpur - Wichtel can now teleport correctly on all platforms
- Fixed
-
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-apitopaper-api(1.21.3-R0.1-SNAPSHOT) - Added
FoliaLib0.4.3 (com.tcoded:FoliaLib) - Added tcoded-releases repository (https://repo.tcoded.com/releases)
- FoliaLib is shaded and relocated to avoid conflicts
- Updated from
-
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: trueflag 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+
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:Xwi3c4Ew:gNhZ4KLF"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:Xwi3c4Ew:gNhZ4KLF"
}

