
AntiSeedCracker
Protekts your server’s real seed by providing fake seeds to clients and blocking seed-discovery commands. Fully optimized for Folia.
Список изменений
AntiSeedCracker 3.3.1 — Concurrency, Security & Performance Fixes Follow-up to 3.3.0's critical world-generation fix. This release comes from a full audit pass of the codebase looking specifically for bugs, not new features.
Fixed Thread-visibility bug: pluginConfig and databaseManager were reassigned by /asc reload on the main thread but read from PacketEvents' Netty I/O threads and the async scheduler with no volatile — no guaranteed visibility of a live config reload to those threads on a busy server. Both are now volatile. Security-relevant bug: extra_blocked_commands entries were never lowercased at load, while the matching logic always compares against a lowercased command name. Any admin who typed a mixed-case command in config.yml had it silently fail to block. Fixed by normalizing the list once at load. Performance regression introduced in 3.3.0: StructureReconMonitor called chunk.getStructures() on every chunk-boundary crossing for every player with no caching — the same class of large-server cost problem this whole release line exists to fix, just in new code. Now backed by a shared per-world chunk cache, so each chunk's structure lookup happens once total instead of once per player-visit. Also added ANCIENT_CITY to the tracked structure set. I/O inefficiency: the audit logger opened and closed a fresh file handle for every single logged event. It now keeps one writer open per day, flushed per write, rotated only on date change. Dead code removal: leftover fields/methods from the 3.3.0 removal of WorldSeedInterceptor (SeedManager.worldSeeds, assignWorldFakeSeed, getWorldFakeSeed, forgetWorld, purgeOfflinePlayers) had zero remaining callers and were deleted.
