[NEW] Added ConsistencyCheck, a deterministic rotation check
[NEW] Added damage-reduction: once a player has flagged enough times, the damage they deal is quietly cut
[NEW] Added placeholders: %aet_client_version%, %aet_total_flags% and %aet_bps%
[NEW] Database integration added for now: SQLite and MySQL
[FIX] Rockets can now be placed normally inside vault and other plugin GUI menus while off-hand rocket blocking stays active in your own inventory
[CHANGE] Reworked lag/false-positive protection.
[REMOVED] Removed ShootCheck
[REMOVED] Removed the hit-block feature in favor of the new damage-reduction option
[CHANGE] The PacketEvents dependency is no longer shaded; it now works with the packet events plugin on the server.
And some config changes.
[FIX] Removed periodic license heartbeat
No more 15–31 min license checks while running. Verify once at startup only.
[NEW] License grace period on first install
On first install you get one minute to paste your license key into config.yml.
[IMPROVEMENT] License verification
Verify runs async so a down license server does not hang the main thread.
[IMPROVEMENT] High-ping false positive guards
ShootCheck and FWInputCheck hold flags when client ticks are unreliable.
[FIXED] Fixed Canvas/Folia compatibility for elytra block-target checks.
[IMPROVEMENT] Removed HELD_ITEM_CHANGE packet handler warnings on region-threaded servers.
[FALSE POSITIVE FIX - HotbarOrderCheck] False positives that occurred in version 1.21.1 and earlier due to version incompatibility have been fixed
[NEW CHECK - FWInputCheck] Detects slot misalignments when the player fires a rocket (This check is in beta. If you think it's generating false positives, you can disable it in the checks.yml file.)
[REMOVED] ConsistencyCheck check has been removed.
[IMPROVEMENT] We updated the settings in the ShootCheck code and reduced the false positive rate from 5% to 1%
[IMPROVEMENT] A new tick system has been developed to prevent false positives when players experience lag
[NEW CHECK - DETERMıNISTIC] ConsistencyCheck, When a player fires a rocket, inconsistencies in the player's rotation become apparent, and this check detects them
[NEW CHECK - HEURISTIC] ElytraPatternCheck, It detects irregularities in the player's rocket shots and determines whether the player is cheating by performing specific calculations
[REMOVE] ElytraA Check removed.
[RENAMING] ElytraB → HotbarOrderCheck. ElytraC → ShootCheck. ElytraD → CombatCheck. ElytraE → ElytraPatternCheck.
[NEW] checks.yml moves every per-check setting out of config.yml into a dedicated file. Deterministic checks live underchecks:, heuristic checks underheuristic-checks:
[NEW] punishments.yml replaces the global warnings ladder. Per-profile violation tracking with %player%, %check_name%, %description%, %vl% placeholders and [alert] / [webhook] / [proxy] actions. Threshold/interval format: N or "N:M".
[FIX] Fixed false flag on ElytraD (CombatCheck) in
[NEW] Punishment placeholder%ms%(player ping in milliseconds at the moment the punishment fires) is available inpunishments.ymlconsole commands,[ALERT], and[WEBHOOK]payloads.
[CHANGE] Language files bumped to v1.0.7. Thealert-message,ban-alert-message, andalert-hoverentries are rebuilt from the bundled template on first load for every operator coming from 1.0.1 – 1.0.6, so the new%vl%x [%ms%ms]format and the click-to-teleport wrapper land everywhere. Custom edits to other keys (prefix, help text, etc.) are still preserved.
[NEW] Alert messages now teleport the staff member to the flagged player on click.
[CHANGE] Discord webhook Embed settings have been expanded, offering 99.9% customization
[IMPROVEMENT] Discord webhook system expanded with full Discord embed API support and moved out of config.yml entirely. The wholediscord:block (and any other future webhook integrations —[WEBHOOK],[prefixed action tags, etc.) now lives in a dedicatedwebhook.yml. Existingdiscord:settings inside config.yml are auto-migrated to webhook.yml on first startup with the new build; nothing is lost.
[CHANGE]detection.commands,detection.warnings, anddetection.warnings.delayed-punishmentblocks are gone from config.yml. Operators migrate their commands into punishments.yml profiles.
[MAJOR] Updated packetevents version.
And much more...
[STRUCTURE] Single-module layout with a leaner load path; server-side layers that did not add value were dropped.
[RECODED] Check stack: abstract check base, typed IDs, annotation-driven metadata, and a central registry replace the older enum-style wiring.
[RECODED] Packet path: one dispatcher and typed router subscriptions instead of ad-hoc listeners scattered across checks.
[RECODED] Bootstrap: immutable plugin context and ordered service registry for enable/disable lifecycle.
[RECODED] Configuration and language load through dedicated services; per-domain settings records instead of one monolithic config class.
[RECODED] Staff-facing paths (alerts, Discord webhook, main command routing) rebuilt on the same public commands and permissions.
[REMOVED] The old client-side fake-target approach is gone; detection is grounded in real player traffic.
[REMOVED] Two legacy-named modules were retired in favor of unified packet-order coverage and glide-specific modules.
[RENAME] The hotbar-order toggle now lives underhotbar-order-check; older keys in an existing file are still honored when migrating.
[CHECK — A] Relates propulsion use during contact-related context while gliding; distance behaviour is assessed statistically. Bands are not fixed in release notes and may shift with build.
[CHECK — B] Looks at how selected hotbar slot changes line up with other actions in the same tick window; scope is broader than elytra-only “silent hand” cases.
[CHECK — C] Glide-phase timing between swing-style signals and propulsion use; evaluation follows a combined flow rather than a single packet type.
[CHECK — D] Propulsion density shortly after hits versus tracked engagement; uses rolling windows, spatial caps, and per-player accounting.
[OPS] Warnings, delayed punishment, lag protection, Discord hooks, and staff alerts keep the same operator-facing behaviour; internal implementation detail is intentionally omitted here.
[FIX] Offhand rocket bypass via number key while inventory is open is now blocked; pressing a hotbar key (1–9) with the offhand slot selected no longer transfers a firework rocket to the offhand slot.
[FIX] Offhand rocket bypass via swap-offhand click type with a rocket on the cursor is now blocked; previously only the slot item was checked, not the held cursor stack.
