Releases: ALingqing/AntiLitematica
Release list
v6.3.0
Paper API Update
- Updated to Paper API 26.1.2 (Minecraft 1.21.4+, stable release).
Folia Support
- Folia-compatible — Replaced all
Bukkit.getScheduler()calls with Folia-aware scheduling viaSchedulerUtil.- Player operations (kick, sendMessage) use
player.getScheduler().run()(entity region thread). - Global sync tasks use
Bukkit.getGlobalRegionScheduler().run(). - Async timers use
Bukkit.getAsyncScheduler().runAtFixedRate()with millisecond conversion.
- Player operations (kick, sendMessage) use
- New utility —
SchedulerUtil.javaprovides a clean, unified API across Paper and Folia. - plugin.yml — Added
folia-supported: true.
Removed
- LocaleManager — Dead code: per-player locale resolution was never actually called. Message delivery already goes through
Settings.Messagesandlang/messages_*.yml. - AuditLogger — Dead code:
auditLogger.log()was never invoked anywhere. - In-Game GUI — Entire
gui/package removed (~500 lines). Administrators primarily useconfig.ymldirectly. - UpdateChecker — Removed GitHub API version check. Update manually via GitHub Releases.
/al gui//al update//al export//al import//al kickall— Removed rarely-used subcommands and their helper methods.
Simplified
- StatsTracker — Replaced YAML persistence + batched saves + retention cleanup with pure in-memory
AtomicIntegercounters. Zero disk I/O. - config.yml — Removed
stats.record_retention_daysandstats.stats_retention_days(no longer applicable).
Documentation
- README, wiki/, docs/ updated to reflect all removals and simplifications.
Full Changelog: 6.1.0...v6.3.0
v6.1.0
Removed
- Web Dashboard — Removed built-in HTTP server (DashboardServer). Use external monitoring tools instead.
- Auto Build / GitHub Auto-Download — Removed AutoBuildManager. Update manually via GitHub Releases.
- Prometheus Metrics — Removed /api/metrics endpoint (was part of Web Dashboard).
Paper API Update
- Updated to Paper API 1.21.11-R0.1-SNAPSHOT (Minecraft 1.21.11+).
Performance Optimizations
- StatsTracker — Batch write every 30s instead of disk I/O per detection.
- DetectionLogger — Memory queue + batch write every 10s (was sync flush per line).
- AuditLogger — Memory queue + batch write every 10s (was auto-flush per line).
- PlacementGuard — Config caching, staffNotify UUID cache, Location reuse, sliding ratio 80% for consecutive same-type detection, pitch tolerance 0.1°.
- ProtocolLibBridge — Signal config cached at start, EasyPlace consecutive tracking (3 hits / 10s window), NBT query detail extraction (TX ID, block position).
- CommandGuard — StaffNotify UUID cache (replaces Bukkit.getOnlinePlayers() iteration).
- GraduatedPunisher — DiscordWebhook instance cached, staffNotify UUID cache.
- Punisher — God method decomposed into 10+ focused methods.
- TokenBucket — Removed redundant
synchronized(Bukkit main thread is single-threaded). - DynamicThresholdManager — Config values cached on reload, not read per-tick.
Detection Improvements
- ModChannelDetector — Pre-registers known Litematica channels (litematica:main, litematica:hello, litematica:place) for passive monitoring beyond config list. Channel name resolution for readable logs. Detection cooldown (5s per player). Better servux payload depth inspection.
- ProtocolLibBridge — Consecutive EasyPlace hit tracking to reduce false positives. Servux metadata detection for packets without version string. NBT query inspection includes transaction ID and coordinates.
- PlacementGuard — Consecutive same-type uses sliding ratio (80%) instead of requiring all placements to match. NoLookChange pitch tolerance relaxed to 0.1° (yaw remains 0.05°).
Configuration
- Config.yml rewritten with concise Chinese descriptions, reduced from 310 to 130 lines.
Documentation
- README, wiki/, docs/ updated to reflect all changes.
Full Changelog: 6.0.0...6.1.0
v6.0.0
New Features
- World Whitelist -- Skip detection entirely in configured worlds (build/creative servers). Configurable via world_whitelist section.
- Command Allowlist -- Exempt normal commands (/msg, /tell, etc.) from blocking via allowed_commands.
- OneBot 11 (QQ Bot) Support -- Send detection notifications to QQ groups via LLBot/go-cqhttp HTTP API.
- Web Dashboard SSE Real-Time Push -- Server-Sent Events push live updates to dashboard without manual refresh.
- Web Dashboard Quick Settings -- Toggle detection, printer, command guard, graduated punishment, webhook directly from dashboard.
- Violation Ranking API -- Top 20 violators ranking endpoint (/api/ranking), viewable in dashboard.
- Admin Audit Log -- All admin actions logged to audit.log, viewable in Web Dashboard.
- Batch Kick Command -- /al kickall kicks all currently flagged players.
- Detection Statistics -- StatsTracker tracks daily detection/punishment counts and hit rates. Configurable retention.
- Prometheus Metrics Endpoint -- /api/metrics exposes metrics for Grafana monitoring.
- Auto-Detect Player Language -- 50+ Minecraft client locales auto-detected, messages in player's own language.
- Language Files in lang/ Folder -- Clean plugin root, all messages_*.yml in lang/ subfolder.
- JAR Auto-Replace -- Auto replaces running JAR with backup when downloading updates.
- Public API -- AntiLitematicaAPI with DetectionEvent and PunishmentEvent.
Improvements
- Configuration file reorganized into 14 numbered sections.
- Config auto-migration bumped to v3 for all new fields.
- pom.xml added release 21 to eliminate compiler warning.
- Documentation: full wiki/ and docs/ structure, no emoji.
- GitHub Actions CI: auto-build on push, release upload.
Bug Fixes
- Fixed raw ConcurrentHashMap types in PlacementGuard
- Fixed Discord webhook 307 redirect handling
- Fixed Discord webhook hardcoded User-Agent
- Removed outdated src/main/resources/META-INF/
Dependency Changes
- No new dependencies. Vulcan/Matrix use runtime reflection. MySQL requires external Connector/J.
Full Changelog: 5.0.0...6.0.0
v5.0.0
✨ New Features
- Auto Update Checker — Automatically checks GitHub for new releases on startup. Admins are notified on join when an update is available. Manual check via
/al update. - Violation Whitelist — Whitelist trusted players to only log detections without punishment. Three modes supported via
config.yml(whitelistsection). Manage in-game with/al whitelist add|remove|list. - Web Dashboard (Multi-Language) — Built-in web-based monitoring panel using JDK
HttpServer(no extra dependencies). Access athttp://<ip>:25418. Features:- Server overview (TPS, online players, detection/punishment stats)
- Real-time player list with ping, gamemode, violation count
- Violation records viewer with clear action
- Quick settings toggles (detection, anti-printer, webhook)
- Multi-language UI: 简体中文 / English / 繁體中文
🔧 Improvements
- Standard Maven Project Layout — Source files moved from
top/tosrc/main/java/top/, resources moved tosrc/main/resources/, removed custom<sourceDirectory>frompom.xml. - Locale-Aware Messages — Added
localeconfig option (zh_CN/en_US/zh_TW). Plugin loadsmessages_{locale}.ymlwith fallback tomessages.yml. - GitHub Repository — Updated update checker URL to
ALingqing/AntiLitematica.
🐛 Bug Fixes
- Shade Plugin Warning — Excluded
META-INF/MANIFEST.MFfrom bstats shaded JARs to eliminate resource overlap warnings. - README Badge — Fixed version badge to reflect actual version.
📦 Dependency Changes
- No new dependencies added. Web dashboard uses JDK built-in
com.sun.net.httpserver.HttpServer.
4.3.0
Please delete old configuration files before updating, old configs are incompatible with this version AntiLitematica 4.3.0 - AntiLitematica
Fix high false positive rates in PlacementGuard Convert GUI to single-page 54-slot inventory Remove gray glass from rows 1-5, keep only GrimAC Optimize GUI display text for zh_cn and en Fix block disappearance for Bedrock players (Geyser+Floodgate API, multi-threading) GUI reorganization with gray glass fillers Create 12 language files (zh_CN, en, zh_TW, fr, de, ja, ko, ru, es, pt, ar, vi) Redesign GUI according to user's detailed specification (detection settings, punishment, anti-cheat, anti-printer, webhook+dynamic+language, system settings)
4.2.1
4.1.1
Fixed an error caused by graduated punishments directly kicking/banning players in ProtocolLib async packet listening.
Punishment actions are now properly scheduled to run on the main thread, compatible with Paper/Spigot async safety checks.