Skip to content

Releases: ALingqing/AntiLitematica

v6.3.0

Choose a tag to compare

@ALingqing ALingqing released this 06 Jun 11:42

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 via SchedulerUtil.
    • 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.
  • New utilitySchedulerUtil.java provides 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.Messages and lang/messages_*.yml.
  • AuditLogger — Dead code: auditLogger.log() was never invoked anywhere.
  • In-Game GUI — Entire gui/ package removed (~500 lines). Administrators primarily use config.yml directly.
  • 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 AtomicInteger counters. Zero disk I/O.
  • config.yml — Removed stats.record_retention_days and stats.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

Choose a tag to compare

@ALingqing ALingqing released this 29 May 12:40

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

Choose a tag to compare

@ALingqing ALingqing released this 22 May 11:11

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

Choose a tag to compare

@ALingqing ALingqing released this 22 May 05:30

✨ 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 (whitelist section). 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 at http://<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/ to src/main/java/top/, resources moved to src/main/resources/, removed custom <sourceDirectory> from pom.xml.
  • Locale-Aware Messages — Added locale config option (zh_CN / en_US / zh_TW). Plugin loads messages_{locale}.yml with fallback to messages.yml.
  • GitHub Repository — Updated update checker URL to ALingqing/AntiLitematica.

🐛 Bug Fixes

  • Shade Plugin Warning — Excluded META-INF/MANIFEST.MF from 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

Choose a tag to compare

@ALingqing ALingqing released this 02 May 10:32
3d40c05

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

Choose a tag to compare

@ALingqing ALingqing released this 01 May 10:13
3d40c05

Reduced false positives by relaxing printer detection thresholds, made single placement warnings non-blocking, improved command burst tolerance, and kept repeated suspicious behavior detectable for real offenders.

4.1.1

Choose a tag to compare

@ALingqing ALingqing released this 01 May 05:56
4e2ce8e

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.