
SentinelCore - AntyCheat
An adaptive, confidence-based anti-cheat foundation for Paper. SentinelCore uses historical evidence and behavioral baselines for reliable, high-performance detection without NMS injections.
Оцените первым
89
1
Список изменений
SentinelCore - Changelog
🐛 Critical Fix
- Fixed a
NullPointerExceptionspamming the console on nearly everyPlayerMoveEvent.FlightCheck's motion-curve vector returnednullinstead of a "no evidence" result in three of its clean-movement branches (active upward impulse, deviation within tolerance, not enough mismatch samples yet). Thatnullwas passed straight up throughevaluate()intoAbstractEvidenceCheck.handle(), which unconditionally calls.evidence()on it - throwing on effectively every ordinary movement tick where nothing suspicious was happening. This was a pre-existing bug, unrelated to any other recent change; it now correctly returns a pass result instead.
✨ New Features / Calibration Changes
- Active calibration duration is now config-driven. Previously the 1-hour
session length was hardcoded (
MAX_CALIBRATION_TICKS = 72_000inActiveCalibrationManager) and completely ignoredconfig.yml. Added a new key,active-calibration.session-duration-ticks(default72000), which now actually controls how long a player's active calibration session runs.- Note: this is distinct from
calibration.interval-ticks, which only governs the background population-baseline recalibration cycle and was never meant to control per-player session length - that distinction is now also clarified in the config comments.
- Note: this is distinct from
- Full Survival gameplay during calibration. Players being actively calibrated
are no longer locked into a restricted
ADVENTURE-mode, no-PvP, peaceful-difficulty sandbox:- Calibration subjects are now placed in
GameMode.SURVIVALinstead ofADVENTURE. - Removed the quarantine rules blocking item drops and environmental damage (fall, fire, drowning, etc.) - combat damage was never blocked to begin with.
- The calibration world itself now runs with normal difficulty, PvP enabled, and the day/weather cycle and mob spawning turned on, instead of being frozen and peaceful.
- The plugin still collects heuristic data silently in the background throughout - none of the sampling/telemetry pipeline was touched, only the restrictions placed on the player.
- Calibration subjects are now placed in
⚙️ Configuration Changes
- Added
active-calibration.session-duration-ticks(default72000= 1 hour). - Added
settings.language(default"en") - global default language for console messages and any player who hasn't picked their own via/ac language <code>. - Raised default noise-reduction thresholds to cut false positives:
general.action-confidence:0.86→0.95general.action-violations:8.0→15.0checks.movement.alert-confidence:0.96→0.98checks.flight.alert-confidence:0.86→0.95
active-calibration.database.enabledandactive-calibration.ai.enablednow default totrue(both still safely no-op without valid credentials configured).- Added
messages.calibration-resetand new language-bundle keys (commands.language-usage,{available}placeholder inerrors.unsupported-language) — every player-facing string in these flows is config/language-file driven now, no hardcoded text left in the command handler.
🌐 Language System
- New
/ac language <code>command lets a player switch their own message language on the fly (e.g./ac language pl) — no restart or/ac reloadrequired. - Both short ISO codes (
en,pl,de,es,fr,pt,ru,it,tr,zh,ja,ko,ar) and full locale codes (en_US,pl_PL, ...) are accepted. - Fixed
/ac language <code>silently failing for two-letter codes — the validator previously only accepted the fullxx_XXform. - Console and any player who hasn't chosen a language now correctly follow the
configured
settings.languagedefault instead of always falling back to English internally.
🛠 Other Fixes & Stability
sentinel_calibration_worldcreation, chunk loading, and slot assignment are guaranteed to run on the main thread — eliminates async-Bukkit-API crashes during calibration.- Player calibration baselines default safely to a neutral multiplier when no
history exists, instead of risking a
NullPointerException. - Database connection loss no longer spams stack traces to console: a single warning is logged on disconnect, data queues into local JSON automatically, and the plugin quietly retries the connection in the background every 15s until it recovers.
- Added exponential backoff (2s → 4s → 8s → capped at 16s) for AI API requests on rate-limiting (HTTP 429) or transient errors, so calibration data is never lost due to a temporary outage.
📋 Notes
- All new subsystems (AI scoring, SQL storage) remain opt-in and safe to leave
disabled; this update flips the packaged config defaults to
enabled: true— reviewactive-calibration.*in yourconfig.ymlafter updating if you want to keep them off. - No breaking changes to existing check behavior; only default confidence thresholds were raised (see above), plus the flight-check crash fix.
Compatible with Paper 1.21.1+ (tested against 1.21.11).
Файлы
SentinelCore-1.2.3.jar(1.20 MiB)
ОсновнойМетаданные
Канал релиза
Release
Номер версии
1.2.3
Загрузчики
BukkitPaperPurpurSpigot
Версии игры
1.17–1.21.11
Загрузок
68
Дата публикации
25.07.2026
