COWMODSКаталог модов
Christmas Season

ВЕРСИИ (13)

release

Christmas Season 2.4.1

2.4.1
12 окт. 2026 г.605Minecraft: 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3folia, paper, purpur
Скачать
Что нового
## [2.4.1] - 2026-10-12 ### Fixed - **Paper/Purpur:** biome conversion now runs nearest chunk first and spread over the ticks, like on Folia. ### Changed - **Faster defaults:** `tickIntervalTicks` 40 → 10, `perTickBudget` 12 → 8 (16 instead of 6 chunks/s); existing configs keep their values.
release

Christmas Season 2.4.0

2.4.0
23 сент. 2026 г.264Minecraft: 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2, 26.3folia, paper, purpur
Скачать
Что нового
## [2.4.0] - 2026-09-22 **Reliability and feature release:** major backup and biome-safety fixes, thread-safe biome tools, restart-safe tracking, a full English language pass, and several long-requested features. ### Added - **Schedule** (`schedule.*`) - the event activates and deactivates itself by date; windows may span New Year (`12-01` → `01-06`); acts on transitions only so a manual `/xmas off` is respected until the next transition - **Advent calendar** - `/advent` opens one door per player and day (`advent.*`): default items, a weighted random pool, per-day overrides, console commands, optional catch-up of missed days; claims in `data/advent.yml`, reset each year; `AdventClaimEvent` - **Multiple snow worlds** - `snowWorlds` list next to the legacy `snowWorld`; all managers, cleanup, adoption and the snowstorm honour every listed world - **Biome exclusion zones** (`biome.exclude.*`) - rectangles, WorldGuard region IDs (`id` or `world:id`) or all GriefPrevention claims are skipped by the biome bubble and by convert-all - **`/xmas biome convert-all [radius] [world] confirm`** - budgeted conversion of every generated chunk around spawn (for maps); `cancel` stops it; progress in `/xmas status` - **Weighted loot entries** - every loot list accepts `{material, amount: "1-3", weight, name, lore, enchantments, glow}` besides `MATERIAL:amount`; chest item counts and rare chances configurable (`gifts.contents.*`) - **Gift opening** - first opener is recorded (`data/stats.yml`), `/xmas stats [player]`, optional `gifts.broadcastOnOpen`, sounds/particles on spawn and open (`gifts.effects.*`), `GiftOpenEvent`; `GiftSpawnEvent` is cancellable - **Runtime feature toggles** - `/xmas feature <biome|snowstorm|decoration|gifts|wichtel|elves|snowmen|advent> on|off` (persisted) - **Per-player spawn caps** - `wichtel/elves/snowmen.maxNearPlayer` within `spawning.nearRadius` (0 = off, world caps unchanged) - **Permissions** - `xmas.advent` (default true), `xmas.bypass.snowmen`; snowmen also ignore spectators - **PlaceholderAPI** expansion `%xmas_...%` (active, snowstorm, days_until_start, days_left, gifts_opened, gifts_opened_total, advent_claimed, advent_today, tracked_mobs, tracked_gifts) - **API events** in `de.boondocksulfur.christmas.api`: `XmasStateChangeEvent`, `GiftSpawnEvent`, `GiftOpenEvent`, `AdventClaimEvent` - **Announcements** on activation/deactivation (`announcements.*`), richer `/xmas status` (worlds, tracked objects, snapshot chunks, restore/conversion progress, schedule, gifts opened) - Snowstorm mode `none` now really leaves the weather alone (was documented but not implemented) - `biome.changeMinY` / `biome.changeMaxY` - the Y range of biome changes is configurable (was fixed to 50-200); the snow/ice clean-up on restore is limited to the same range plus an 8-block margin, so natural altitude snow above it is left alone - `/xmas biome info` - shows current and original biome, snapshot state and exclusion for the spot you stand on - `elves.lifetimeSeconds` / `elves.world` (default to the wichtel values) - Custom or partial language files fall back to the bundled English texts instead of `[Missing: key]` ### Fixed - **CRITICAL: Backups were incomplete.** The snapshot database runs in WAL mode; timestamp backups (`/xmas off`), emergency backups (server stop) and SAFE backups taken while the event was running copied only the main file and silently lost every chunk still in the write-ahead log. All copies now force a WAL checkpoint first, and the emergency backup is written after the database has been closed. - **CRITICAL: Custom biomes restored as PLAINS.** Snapshots stored biome keys without their namespace, so Terralith/data-pack biomes could not be resolved on restore. New snapshots (format 0x3F) store the full key; old snapshots are still read as `minecraft:` biomes. - **CRITICAL: `/xmas biome compare` and `fix-diff` accessed the world from an async thread** (`IllegalStateException: Asynchronous chunk load!` on Paper, region violations on Folia). The backup database is still read asynchronously, but every chunk comparison/restore now runs on the chunk's owning thread with `biome.restore.perTick` chunks in flight. - **`/xmas reload` (and a second `/xmas on`) orphaned gift chests permanently** - lifetime tasks were cancelled and the tracker cleared. Stopping a manager no longer drops its tracking. - **Event objects were lost after a server restart** - mobs, decorations and gift chests had no cap, no lifetime and were not removed by `/xmas off`. They are now recognised by their tags/markers and adopted on startup and on chunk load; `/xmas off` additionally sweeps all loaded chunks. - **Emergency backups piled up** - one full database copy per normal shutdown, never rotated. Only the newest three are kept. - **`ChunkLoadEvent` bypassed the per-tick budget** - every loaded chunk was snapshotted and converted synchronously, including pre-generated chunks far from any player. Chunks are now only queued when a player is within the bubble radius (Folia: handled by the per-player timer). - **Wichtel and elves deleted every dropped item in reach**, including player death drops. They now only collect the plugin's decoration items (`wichtel.stealOnlyDecorations: true`; `false` allows other items but never player drops). Random hops no longer teleport mobs into blocks or off ledges. - Spawn helper no longer falls back to the player's own position; a candidate more than 24 blocks above the player is rejected instead of a fixed `Y > 100` rule (worked badly on high worlds). - Gift chests are never placed next to another chest (no accidental double chests with player storage). - On Folia, region tasks still in flight after `/xmas off` could re-convert chunks the restore had just reset (leftover snow); chunk processing now stops as soon as the event is off or a restore runs - Snow/ice removal on restore checks the surface of every column (WORLD_SURFACE heightmap) instead of every block between Y 50 and 200 - the whole world height is covered at a fraction of the cost; `fix-diff` cleans snow/ice as well - Minecraft blurs biome borders by a few blocks, so snow also fell on the edges of chunks that were never converted and were therefore never cleaned; the restore now cleans a four-block strip of every untouched neighbouring chunk - Snapshots are stored per 4x4 biome cell (format 0x41, 16 entries per layer instead of 256) - 16x less data to compress and write per chunk; all older formats are still read - Snow layers and ice that already existed on the surface when a chunk was snapshotted (natural or player-placed) are recorded per column and kept on restore - Snow layers and ice placed by players while the event is active are recorded in the database (`placed_columns`) and kept on restore - also inside the cleaned border strips - Grass, podzol and mycelium under removed snow layers lost their white `snowy` top only after a block update - the state is reset explicitly now - Folia: chunks around a fast-moving player no longer leave gaps - every chunk seen in the bubble radius stays in a per-player queue (nearest first) until it is converted, and chunks that were not loaded yet are retried instead of being marked as done - `/xmas storm off` is a hard override: it pauses the auto phases and resends clear weather even if the server flag was already off - Region plugins are now declared as `softdepend`, so the WorldGuard/GriefPrevention hook is available on the first start. - `/xmas storm pulse` uses the manager's pulse instead of a duplicated implementation. ### Changed - `api-version` raised to `1.21.3` - servers below the real minimum now refuse the plugin with a clear message instead of crashing later - Biome writes and samples work per 4x4x4 cell (16x fewer `setBiome` calls per chunk) - Chunks set with `/xmas biome set` are protected from the automatic bubble until the next stop/restore - Update checker: `updateChecker.enabled`/`notifyOps` config keys, only Modrinth *release* versions count, notifications with clickable Modrinth/GitHub links - New config keys: `biome.restore.removeSnowLayers`, `biome.restore.removeIce`, `wichtel.stealOnlyDecorations`, `snowmen.lifetimeSeconds` (default 600, 0 = never) - Default `language` is now `en` - All source comments, Javadoc, debug output and hardcoded messages are English; every player/console message goes through the language files (both files reworked, unused keys removed) - Database statistics report MB/KB with matching units ### Removed - Empty `GiftOpenListener`; `OrphanedMobCleanupListener` replaced by `TrackedObjectListener` (adopt or remove)
release

Christmas Season 2.3.0

2.3.0
3 июл. 2026 г.275Minecraft: 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11, 26.1, 26.1.1, 26.1.2, 26.2folia, paper, purpur
Скачать
Что нового
## [2.3.0] - 2026-07-03 **Major Update:** Minecraft 26.x support, full Adventure API migration, and a deep thread-safety/reliability overhaul of the entire 2.2.0 feature set. **Upgrade Priority:** HIGH - contains critical Folia fixes and data-safety hardening ### Added - **Minecraft 26.x support** - one JAR covers 1.21.3-1.21.11 (Java 21) AND the year-based 26.x versions (Java 25); compiled against Paper API `26.1.2.build.72-stable`, `api-version: "1.21"` remains the minimum - **Gift chest protection** - hoppers and explosions can no longer empty/destroy gift chests; gift chests carry a PersistentDataContainer marker so cleanup can never delete player chests (configurable via `gifts.protectChests`) - **Orphaned mob cleanup** - event mobs whose chunks were unloaded during `/xmas off` are removed automatically when their chunks load while the event is inactive - **Config validation on startup/reload** - warns about unknown materials in loot tables and an invalid `biome.target` - Tab completion for `/xmas` now includes biome names from the registry ### Changed - **Full Adventure API migration** - Component-based entity/item/chest names and broadcasts, `RegistryAccess` instead of `Registry.BIOME`, zero deprecated API usage in the build - **Reliable `/xmas off` restore** - completion is tracked per chunk (atomic counters); failed chunks keep their snapshots and are retried on the next run; accurate final statistics; reentrancy guard against double `/xmas off`; `/xmas on` during a running restore can no longer leak the database - **Folia hardening of the 2.2.0 feature line** - all entity-scheduler tasks use retired-callbacks (killed event mobs no longer clog the spawn caps), one shared FoliaLib instance, spawn limits re-checked inside region tasks - JAR size reduced from ~13.6 MB to ~5 MB (excluded unused SQLite natives) - `/xmas reload` restarts ALL managers, so new config values apply immediately - Language files normalized to `&` color codes; literal `&` ("Wichtel & Elfen") no longer mangled; console logs free of raw color codes - Removed ~200 lines of dead code (legacy 2D snapshot format, disabled seed-restore machinery) ### Compatibility - **Paper/Purpur/Folia only** - plain Spigot is no longer supported (Adventure API required) - **Minimum is Minecraft 1.21.3** - on 1.21.1/1.21.2 the plugin fails with `IncompatibleClassChangeError` (Biome changed from enum to interface in 1.21.3) ### Verified - Live function tests on Paper 26.2 (Java 25), Paper 1.21.11 and Folia 1.21.11 with bot-driven end-to-end runs: biome bubble, 180-208-chunk restores without errors, backup commands, kill-wave spawn-cap test - zero exceptions
release

Christmas Season 2.2.0

2.2.0
25 апр. 2026 г.120Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
## [2.2.0] - 2026-04-25 **Major Update:** Region protection, backup system, update checker, bug fixes, data safety, tab completion, and bStats. **Upgrade Priority:** HIGH - Critical thread-safety and data integrity fixes ### Added - **WorldGuard & GriefPrevention** - No spawns in protected regions/claims (soft dependency, configurable) - **Automatic Backup System** - SAFE/Timestamp/Emergency backups in `world/christmas_backups/` - **Update Checker** - Modrinth + GitHub fallback, OP notifications on join - **Biome Compare & Fix** - `/xmas biome compare` and `/xmas biome fix-diff` for recovery - **Full Tab Completion** - Context-aware suggestions for all commands - **bStats Metrics** (Plugin ID: 30930) - **Startup Safety Checks** - DB integrity check, crash detection, missing-DB warnings - **Data Loss Protection** - `clearsnap` blocked when active, backup failure warnings, smart rotation - Entity spawn fixes: No more spawns on roofs, in trees, or in water ### Fixed (17 Bugs) - **CRITICAL:** Backup system non-functional (wrong DB filename) - **CRITICAL:** Folia crash on start/join (`Bukkit.getScheduler()` → `FoliaSchedulerHelper`) - **HIGH:** 6 thread-safety issues (restore counters, restore guard, HashSets, SQLite, LanguageManager) - **HIGH:** Restore permanently blocked after empty snapshot or null DB - **MEDIUM:** Cave biomes overwritten during seed-restore (Y=64 only → per Y-level) - **MEDIUM:** NPE in `stopFeatures()` on failed startup - **MEDIUM:** SnowstormManager orphaned tasks after `stop()` - **LOW:** DB header EOF check, version parse fix, SnowmanDamageListener cleanup ### Changed - `softdepend: [WorldGuard, GriefPrevention]` in plugin.yml - New `regionIntegration` config section - Intelligent backup rotation (largest backup never deleted)
release

Christmas Season 2.1.0

2.1.0
25 дек. 2025 г.549Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10, 1.21.11folia, paper, purpur, spigot
Скачать
Что нового
## [2.1.0] - 2025-12-25 **Minor Update:** Critical Folia compatibility fixes and complete internationalization overhaul. This release fixes multiple critical thread-safety violations on Folia servers and completes the internationalization system. The biome restore mechanism has been completely rewritten to work correctly with Folia's regionalized threading model. **Upgrade Priority:** HIGH - Recommended for all Folia servers experiencing crashes during `/xmas off` ### Fixed - **CRITICAL: Folia performance issue - TPS drops to 16 during biome changes** - Fixed `ensureAroundPlayerFolia()` scheduling all chunks around player simultaneously - **Root cause**: With radius=2, all 25 chunks were scheduled in parallel every tick (no budget limit) - **Result**: Massive TPS spike when processing 25 chunks × 9,728 biomes each = 240k+ biome changes - **Solution**: Added `perTickBudget` respect - only schedules max 12 chunks per player tick - Chunks now distributed across multiple ticks (e.g., 25 chunks over 3 ticks instead of instant) - Performance now matches Paper/Spigot budget-based system - **Client-side biome caching after `/xmas off`** - Fixed default value for `biome.playerBubble.refreshClient` from `false` to `true` - Clients now correctly see restored biomes without needing to move away and return - Chunk refresh packets now sent by default (can be disabled in config for performance) - **CRITICAL: Biome snapshot bug in `/xmas biome set` command** - Fixed chunks not being restored correctly after manual biome changes - **Root cause**: `setBiomeAroundPlayer()` added chunks to `knownSnapshotChunks` cache BEFORE calling `snapshotIfAbsent()` - **Result**: No snapshot was created for manually changed chunks → wrong biome restored on `/xmas off` - **Solution**: Removed premature cache addition, let `snapshotIfAbsent()` manage the cache correctly - Fixes issue where chunks changed with `/xmas biome set` were not restored to original biomes - **CRITICAL: Chunks not loaded during `/xmas on` were never processed** - Implemented automatic retry mechanism for chunks that fail to load - Chunks are now retried up to 3 times before being skipped - Prevents "missing chunks" issue where distant/unloaded chunks stay unchanged - Added `chunkRetryCount` tracking map with automatic cleanup to prevent memory leaks - Debug logging for chunks that are skipped after max retries - **CRITICAL: Complete internationalization of all console logs** - Fixed English language module not being loaded correctly from JAR - Replaced ALL 68 hardcoded German strings with LanguageManager calls: - **BiomeSnapshotDatabase.java**: 34 strings replaced - **BiomeSnowManager.java**: 33 strings replaced - **SnowmanManager.java**: 1 string replaced - All console log messages now properly respect the `language` setting in config.yml - Verified: Zero hardcoded German strings remaining in user-facing logs - **CRITICAL: Folia thread safety violations in biome restore** - Fixed `IllegalStateException` crash during `/xmas off` biome restoration on Folia servers - **Root cause**: Batch processing accessed chunks from different regions in single Location Scheduler task - **Error**: "Thread failed main thread check: Async chunk retrieval" - **Solution**: Each chunk now processed on its own Location Scheduler task (prevents cross-region access) - Removed batch optimization that violated Folia's region threading model - Improved chunk loading: Now uses blocking load (`generate=true`) for higher success rate - Added double-check verification to ensure chunks are actually loaded before restore - Fixed error counting to accurately track failed chunk restores - **CRITICAL: Folia thread safety violations in cleanup methods** - Fixed `IllegalStateException` crash when running `/xmas off` on Folia servers - **Root cause**: Using `world.getEntitiesByClass()` and direct `entity.remove()` calls access entities from other regions, violating Folia's thread ownership model - **DecorationManager.java**: Replaced unsafe entity iteration with UUID tracking - Added `trackedDecorations` ConcurrentHashMap for thread-safe entity tracking - Track decorations when spawned, untrack when lifetime expires - cleanup() now uses `Bukkit.getEntity(uuid)` + `scheduler.runForEntity()` pattern - **SnowmanManager.java**: Replaced unsafe entity iteration and counting - Added `trackedSnowmen` ConcurrentHashMap for thread-safe entity tracking - Replaced `getEntitiesByClass()` loop with `trackedSnowmen.size()` for counting - cleanup() now schedules removal on each entity's owning region thread - Properly cancels attack tasks before entity removal - **WichtelManager.java**: Fixed direct entity.remove() calls in cleanup() - cleanup() now schedules Wichtel/Elfen removal on each entity's owning region thread - Properly cancels steal tasks before entity removal - Uses same UUID tracking + entity scheduler pattern - All entity removals now scheduled on correct region threads (Folia-safe) - **GiftManager**: Already Folia-safe (uses Location Scheduler for block operations) ### Changed - **Enhanced Language Files** - Added 70+ new translation keys to `messages_de.yml`: - `log.biome.*` - 35+ keys for biome restore operations, errors, and status - `log.database.*` - 35+ keys for database operations, compression, errors - `log.cleanup.snowman-world-not-found` - Snowman cleanup error - Added matching English translations to `messages_en.yml` - All formatting codes (§6, §7, §a, §c, §f, etc.) preserved in translations - **Improved Translation Coverage** - Database operations (open, close, clear, compression, decompression) - Biome restore operations (start, progress, completion, errors) - Error messages and warnings with detailed context - Statistics and progress information - Chunk loading/restoration errors with coordinates - **Improved Language Loading Diagnostics** - `LanguageManager` now logs: - Current language being loaded - Absolute file path of language file - File existence status and size in bytes - Source of language data (disk vs JAR) - Number of keys loaded successfully - Better error messages when resources are missing from JAR - Added resource enumeration in severe error cases for debugging - **Build Configuration** - Added explicit Maven resources configuration in `pom.xml` - Ensures all `.yml` and `.yaml` files are properly packaged in JAR - Language files (`messages_de.yml`, `messages_en.yml`) now correctly included ### Technical - All log messages now use `plugin.getLanguageManager().getMessage()` or `.get()` - Proper placeholder support with {0}, {1}, {2} format for dynamic values - Technical/internal logs (resource loading, language manager) intentionally kept in English - Updated `pom.xml` with explicit `<resources>` section - Added better exception handling in `ChristmasSeason.saveResourceIfAbsent()` - Enhanced logging shows resource extraction status with file sizes - Maintains backward compatibility with existing configurations
release

Christmas Season 2.0.0

2.0.0
19 дек. 2025 г.276Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10folia, paper, purpur, spigot
Скачать
Что нового
## [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+
release

Christmas Season 1.4.1

1.4.1
12 дек. 2025 г.438Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, purpur, spigot
Скачать
Что нового
## [1.4.1] - 2025-12-12 ### Fixed - **CRITICAL: Fixed database corruption during biome snapshot save/load** - Fixed stream misalignment causing garbled biome names (e.g., "MEADOWMEADOWMEADOW", "SNOWY_SLOPESFROZEN_PEAKS") - Fixed MEADOW biomes being incorrectly restored as PLAINS - Root cause: `InputStream.read()` can return fewer bytes than requested (partial reads) - Solution: Read in loop until all bytes are received to maintain stream alignment - Added validation for biome name length (max 50 bytes) to detect corruption early - **Fixed "Unerwartetes Ende in 3D Biome-Daten!" errors** - Stream now properly handles partial reads without losing alignment - One corrupted biome no longer corrupts all following biomes (no more domino effect) ### Changed - Improved error messages for database corruption - Clear instructions: `/xmas biome clearsnap` to delete corrupted database - Detection of stream misalignment with detailed logging
release

Christmas Season 1.4.0

1.4.0
12 дек. 2025 г.20Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, purpur, spigot
Скачать
Что нового
## [1.4.0] - 2025-12-12 ### Fixed - **CRITICAL: Fixed biome restoration corruption** - Biomes are now correctly restored after `/xmas off` - Changed biome serialization from ordinal-based (unstable) to name-based (stable) - Fixes issue where biomes were completely scrambled (e.g., JUNGLE became BIRCH_FOREST, OCEAN became FROZEN_PEAKS) - Old snapshots using ordinal format are still supported for backwards compatibility - **Database format updated:** New snapshots use magic byte `0x3E` (name-based), old format `0x3D` (ordinal-based) still readable - **Fixed Y-level misalignment in biome restoration** - Restore now uses the correct `yStep` value from the snapshot instead of config - Prevents biomes from being restored at wrong vertical positions ### Added - Extensive debug logging for biome snapshot/restore operations - Shows which biomes are stored in snapshots - Shows which biomes are restored from snapshots - Helps diagnose biome-related issues ### Technical Details - Biome storage format changed from `ordinal()` (2 bytes) to `name()` (length-prefixed UTF-8 string) - Rationale: `Biome.values()` order is not guaranteed to be stable across server restarts/reloads - New format ensures biome names like "JUNGLE", "OCEAN" are stored exactly as they are - Database automatically migrates old snapshots when loading
release

Christmas Season 1.3.0

1.3.0
2 дек. 2025 г.415Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, purpur, spigot
Скачать
Что нового
### Version 1.3.0 (2025-12-02) **🚀 Massive Performance Update!** - Fixed critical performance issues + SQLite database system for unlimited chunks! #### ⚡ Performance Optimizations **Chunk Processing Optimized (99% less re-processing)** - ✅ **Chunk Processing Cache**: Chunks are now processed only **once**, not repeatedly every tick - ✅ **Smart Sample Check**: 4-point sampling skips already correct chunks (~95% faster) - ✅ **Removed Double Processing**: `tick()` method no longer processes player bubbles twice - 📊 **Effect**: From 24,576 API calls per chunk → 4-100 calls (-99%) **Event Listeners Throttled (-90% Events)** - ✅ **PlayerMove Cooldown**: 3-second cooldown per player instead of every chunk change - ✅ **ChunkLoad Caching**: Already processed chunks are skipped - 📊 **Effect**: ~90% fewer event triggers for moving players **Entity Optimizations** - ✅ **SnowmanManager**: Uses `getEntitiesByClass()` instead of `w.getEntities()` (~10x faster) - ✅ **DecorationManager Cleanup**: Iterates only over items instead of all entities - ✅ **GiftManager Tracking**: New location tracking instead of chunk iteration (~100x faster) - ✅ **Wichtel/Elf Lifetime**: Automatic removal after 240 seconds (configurable) - 📊 **Effect**: Cleanup reduced from seconds to milliseconds **Scheduler Optimizations** - ✅ **SnowstormManager Auto-Mode**: Changed from runTaskTimer (every tick) to runTaskLater - 📊 **Effect**: From 20 TPS overhead to 0 TPS (only runs every 45-150 seconds) **Chunk Reload Removed** - ✅ **refreshChunkSafe()**: Removed expensive chunk unload/reload - 📊 **Effect**: ~50% less CPU load during biome changes #### 🗄️ SQLite Database System (BREAKING: replaces YAML) **Completely New Snapshot System** - ✅ **SQLite instead of YAML**: Biome snapshots stored in `biome-snapshot.db` - ✅ **GZIP Compression**: Biome data is compressed - ✅ **Unlimited Chunks**: No more 2,000-chunk limit! - ✅ **Minimal Storage**: 10,000 chunks = ~5-10 MB (instead of 156 MB with YAML) - ✅ **Millisecond Performance**: Load/save in <10ms per chunk - ✅ **No Memory Overhead**: Data not held in RAM - ✅ **WAL Mode**: Write-Ahead Logging for better concurrent performance - 📊 **Effect**: -94% storage space, unlimited scaling **YAML to SQLite Migration** - ✅ **Automatic Migration**: `/xmas biome migrate` migrates old YAML snapshots - ✅ **Backup Creation**: Old YAML saved as `.backup-<timestamp>` - ✅ **Backwards Compatible**: Old configs continue to work - 📊 **Effect**: Seamless upgrade from v1.2.x to v1.3.0 **Biome Restore Completely Reworked** - 🔴 **Critical Bug Fixed**: Database was closed BEFORE restore, restore found no data - ✅ **New Timing Logic**: DB stays open during `/xmas off` until restore finishes - ✅ **Detailed Logging**: Progress every 50 chunks, error tracking - ✅ **Intelligent Block Removal**: Only removes snow/ice in non-winter biomes - ✅ **Chunk Loading**: Chunks loaded on-demand for restore - ✅ **Auto-Cleanup**: DB cleared and closed after successful restore - 📊 **Effect**: Restore now works reliably! **Debug Mode Added** - ✅ **`/xmas debug` Command**: Enables verbose debug logs - ✅ **Snapshot Tracking**: See which chunks are being snapshotted - ✅ **Restore Details**: Shows biome data and block removal statistics - ✅ **DB Status**: Shows database open/close and chunk counts - ✅ **Performance Info**: Time measurements and chunk processing - 📊 **Effect**: Easier debugging and troubleshooting #### 📊 Compatibility **Server Software** - ✅ **Spigot 1.21+**: Fully compatible - ✅ **Paper 1.21+**: Fully compatible (recommended for best performance) - ✅ **Purpur 1.21+**: Fully compatible - ⚠️ **Folia**: Partially compatible (possible threading issues) **Dependencies** - ✅ **SQLite JDBC 3.45.0.0**: Automatically included in JAR (Maven Shade) - ✅ **No Other Dependencies**: Plug & Play #### 🎯 New Commands - `/xmas debug` - Enable/disable debug mode - `/xmas biome migrate` - Migrate YAML snapshots to SQLite - `/xmas biome status` - Now shows DB statistics (chunks, size) #### 📊 Performance Improvements (Measurements) | Metric | Before (v1.2.5) | After (v1.3.0) | Improvement | |--------|-----------------|----------------|-------------| | **CPU Load at 1000 Chunks** | ~80% | ~10-15% | **-85%** | | **RAM Usage (Snapshot)** | 156 MB (YAML) | 5-10 MB (SQLite) | **-94%** | | **Non-Heap Usage** | 432/456 MB (95%) | ~200/456 MB (44%) | **-54%** | | **Chunk Limit** | 2,000 (YAML) | Unlimited (SQLite) | **∞** | | **Chunk Processing Calls** | 24,576/chunk | 4-100/chunk | **-99%** | | **PlayerMove Events** | Every chunk change | Every 3 seconds | **-90%** | | **Entity Cleanup Time** | 5-10 seconds | <100ms | **-98%** | | **TPS During Long Runtime** | 10-15 TPS | 19-20 TPS | **Stable!** | | **Startup Time (with Snapshot)** | 30-60 seconds (YAML) | <1 second (SQLite) | **-98%** | | **Snapshot Load/Save** | Seconds | Milliseconds | **1000x faster** | #### 🐛 Fixed Bugs - 🔴 **Critical: Biome Restore Didn't Work**: DB was closed BEFORE restore started - 🔴 **Critical: YAML System Didn't Scale**: 10,000+ chunks = 156+ MB, server crashes - 🔴 **Critical: Chunk Limit Too Low**: 2,000 chunks reached quickly on large servers - 🔴 **Chunk Re-Processing Loop**: Chunks were processed repeatedly instead of once - 🔴 **Double Player-Bubble Processing**: tick() and playerBubbleTask did the same work - 🔴 **PlayerMove Event Spam**: Hundreds of events per second when moving fast - 🔴 **SnowstormManager Auto-Mode**: Ran every tick (20x/second) instead of only on toggle - 🔴 **Inefficient Entity Iteration**: w.getEntities() instead of getEntitiesByClass() - 🔴 **Wichtel/Elves Never Despawn**: setRemoveWhenFarAway(false) without lifetime enforcement - 🔴 **YAML Startup Time**: Loading large snapshot files took 30-60 seconds #### ⚙️ Technical Details **Chunk Processing Cache:** - New `processedChunks` Set with max 5,000 entries - Chunks are only processed if not in cache - Cache size is automatically limited (oldest 20% removed) **SQLite Database Schema:** ```sql CREATE TABLE chunks ( world TEXT NOT NULL, x INTEGER NOT NULL, z INTEGER NOT NULL, biomes BLOB NOT NULL, -- GZIP-compressed biome data (256 bytes → ~50-100 bytes) timestamp INTEGER NOT NULL, PRIMARY KEY (world, x, z) ); CREATE INDEX idx_timestamp ON chunks(timestamp); ``` **GZIP Compression:** - Original: 256 biomes as enum ordinals (1 byte per biome) - Compressed: ~50-100 bytes (compression rate 50-60%) - Effect: 10,000 chunks = ~5-10 MB instead of 156 MB (YAML) **SQLite Optimizations:** - WAL mode (Write-Ahead Logging): Better concurrent performance - PRAGMA synchronous = NORMAL: Faster writes - PRAGMA cache_size = 10000: 10 MB cache - PRAGMA temp_store = MEMORY: Temp data in RAM **PlayerMove Event Throttling:** - HashMap with LastUpdate timestamps per player - 3-second cooldown between updates - Prevents spam during fast chunk changes **Biome Restore Timing Fix:** - `stopFeatures(false)`: DB stays open for restore - `restoreALLAsync()`: Iterates through DB, restores chunks - At the end: DB is cleared and closed - Progress logging every 50 chunks #### 🎓 Migration Guide (v1.2.x → v1.3.0) **Upgrade Steps:** 1. **Stop Server** ```bash stop ``` 2. **Replace Plugin JAR** - Delete old `ChristmasSeason-1.2.x.jar` - Copy new `ChristmasSeason-1.3.0.jar` to `plugins/` 3. **Start Server** ```bash # Plugin automatically creates biome-snapshot.db ``` 4. **Optional: Migrate Old YAML Snapshots** ```bash /xmas biome migrate ``` - Migrates `biome-snapshot.yml` → `biome-snapshot.db` - Creates backup: `biome-snapshot.yml.backup-<timestamp>` - Deletes old YAML file after successful migration 5. **Done!** - SQLite system runs automatically - Unlimited chunks possible - Better performance **Config Changes (optional):** ```yaml biome: # Old config options can be removed: # restoreOnEvict: true ← DEPRECATED, no longer needed! # enableSnapshot remains the same: enableSnapshot: true # true = SQLite DB, false = no restore ``` #### ⚠️ Breaking Changes **Minimal Breaking Changes:** - ✅ **YAML Format**: Old `biome-snapshot.yml` is no longer automatically loaded - Solution: Use `/xmas biome migrate` - ✅ **Config Option**: `restoreOnEvict` is ignored (no longer needed) - No adjustment needed - simply ignored - ✅ **All Other Configs**: 100% compatible! ---
release

Christmas Season 1.2.5

1.2.5
28 нояб. 2025 г.139Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, spigot
Скачать
Что нового
### Version 1.2.5 (2025-11-29) Critical bugfix for ice reset when deactivating the event. #### 🐛 Fixed Bugs **Ice reset did not work correctly** - 🔴 **Problem**: Frozen lakes remained frozen after `/xmas off`, even though they should turn to water - 🔍 **Cause**: Missing `continue` statement in the loop after converting ice to water - ✅ **Solution**: Loop now explicitly searches from top to bottom through the entire block column - 🌊 **Effect**: All ice layers in a lake are now correctly converted to water (not just the top layer) **Technical Details:** - The loop now converts **all** ice blocks in a column (multiple layers) - Stops only at the first solid block (Stone, Dirt, Sand, etc.) - Natural ice biomes (FROZEN_OCEAN, SNOWY_PLAINS, etc.) remain protected ✅
release

Christmas Season 1.2.4

1.2.4
28 нояб. 2025 г.36Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, spigot
Скачать
Что нового
### Version 1.2.4 (2025-11-28) Language system update with full multi-language support and important stability improvements. #### 🌍 New Features **Complete Multi-Language System** - 🎯 **LanguageManager**: New system for managing translations - 🇩🇪 **German (de)**: Full German localization (default) - 🇬🇧 **English (en)**: Full English translation - 📝 **All texts translated**: Commands, messages, entity names, broadcasts, error messages, console logs - 🎭 **Translated entity names**: Wichtel, Elves, Snowmen, Gifts, Decorations - all names are now multilingual - 🔧 **Config option**: `language: en` (or `de`) in config.yml - 🔄 **Live reload**: Language switching with `/xmas reload` without server restart - 📦 **Language files**: `messages_de.yml` and `messages_en.yml` in plugin folder - 💾 **Performance cache**: Loaded translations are cached - 🎨 **Placeholder support**: Dynamic values in messages (e.g., chunk count, biome names, coordinates) **Documentation** - 📖 **README_EN.md**: Complete English documentation added - 🔗 **Language links**: Both READMEs link to each other - ✨ **Enhanced changelog structure**: Detailed descriptions of all changes #### 🔧 Technical Improvements **Language System** - **Modular design**: LanguageManager as standalone utility class - **Fallback system**: Missing translations are logged and displayed - **YAML-based**: Easy customization and extension through YAML format - **Color code support**: Automatic conversion from `&` to `§` - **Config cleanup**: Removed `decoration.name` from config.yml (now handled by language system) **Stability & Performance** - 🛑 **`/xmas biome restore` disabled**: Command has been disabled as it synchronously loads reference world chunks, causing server freezes (30+ seconds) - ✅ **Alternative usage**: Use `/xmas off` for safe, asynchronous biome reset - 🔒 **YAML Boolean fix**: Keys like `on`, `off` are now quoted (`"on":`, `"off":`) to prevent YAML boolean interpretation #### 🐛 Fixed Bugs - 🔴 **Translation keys not found**: YAML was interpreting `on`/`off` as booleans (`true`/`false`) - fixed by quoting - 🔴 **Server freeze on biome restore**: `/xmas biome restore` blocked main thread - command disabled with warning - ⚪ **Hardcoded entity names**: All managers now use LanguageManager instead of hardcoded strings
release

Christmas Season 1.2.3

1.2.3
28 нояб. 2025 г.29Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, spigot
Скачать
Что нового
Version 1.2.3 (2025-11-28) A comprehensive update for a complete, intelligent event reset without damaging natural terrain. 🎁 New Features Full Entity & Loot Cleanup When resetting the event (`/xmas off`), all spawned event entities and items are now removed automatically: - 🎨 Decoration items (items with custom display name) - 🎁 Gift chests (chests named "Weihnachts-Geschenk") - 👤 Elves & helpers (tracked via the internal tracker system) - ⛄ Snowmen (tracked via `ScoreboardTags`) Details: - Cleanup now runs **before** `stopFeatures()`, so all trackers are still populated - Console log shows exactly how many entities/items were removed ⚡ Improvements Smarter Biome-Specific Reset Snow removal: - Snow is only removed in biomes that naturally **do not** have snow (e.g. `PLAINS`, `FOREST`, `DESERT`) - In natural snow biomes (`SNOWY_PLAINS`, `SNOWY_TAIGA`, `GROVE`, etc.) snow is preserved ✅ - Improved logic: snow above water is now detected and removed as well (fixed break condition on fluids) Ice handling: - Ice is only turned back into water in biomes that naturally **don’t** have ice (e.g. `PLAINS`, `FOREST`) - In icy/cold biomes, ice is preserved ✅ - Supported examples: `FROZEN_OCEAN`, `FROZEN_RIVER`, `ICE_SPIKES`, `SNOWY_PLAINS`, `SNOWY_TAIGA`, `GROVE`, `JAGGED_PEAKS`, etc. Technical improvements: - 🔧 Chunks are automatically loaded if they aren’t loaded during reset - 📊 Detailed debug output for easier troubleshooting - 🎯 Optimized order: **Cleanup → StopFeatures → BiomeReset** 🐛 Bug Fixes Critical fixes: - 🔴 Elves & helpers were not removed reliably → fixed by running cleanup before `stopFeatures()` - 🔴 Ice in `SNOWY_PLAINS` was removed → `isNaturallyIcyBiome()` extended to include all relevant snowy biomes - 🔴 Snow above water stayed behind → loop logic corrected, break now only on solid blocks Additional fixes: - Ice is no longer left behind in non-icy biomes (e.g. `PLAINS`, `FOREST`) - Natural snow in snow biomes is now correctly preserved - Event entities and items are removed completely during reset - Biome reset now works correctly even with previously unloaded chunks ### Known issues - ⚠️ Currently, even manually placed regular ice (not packed or blue ice) in non-icy biomes will also be turned back into water during the reset. I’ll try to improve this behavior in a future update, but the logic to reliably distinguish natural from player-placed ice is quite complex.
release

Christmas Season 1.2.2

1.2.2
23 нояб. 2025 г.94Minecraft: 1.21, 1.21.1, 1.21.2, 1.21.3, 1.21.4, 1.21.5, 1.21.6, 1.21.7, 1.21.8, 1.21.9, 1.21.10paper, spigot
Скачать