Skip to content

1.3.1.0

Choose a tag to compare

@SaltyAlpha SaltyAlpha released this 05 Sep 04:13
· 62 commits to master since this release

Imported from GrimAnticheat/GrimAPI release v1.3.1.0. Original publication: 05/14/2026 18:34:10. Original URL: https://github.com/GrimAnticheat/GrimAPI/releases/tag/v1.3.1.0.

GrimSetbackEvent hierarchy

Additive release on top of 1.3.0.0. Fully backward-compatible with 1.3.0.0 subscribers; legacy 1.2.4.0 APIs remain deprecated-but-functional.

New events

Three new observational events covering the "Grim did a setback" semantic — distinct from the packet-level GrimTeleportEvent, which wasn't a good fit for this audience.

  • GrimSetbackEvent — abstract parent. Subscribe once, receive every setback regardless of packet type.
    GrimSetbackEvent.Channel ch = (GrimSetbackEvent.Channel) bus.get(GrimSetbackEvent.class);
    ch.onAnySetback(plugin, (user, timestamp) -> { ... });
  • GrimPlayerSetbackEvent — concrete, fires when Grim sends a player-on-foot setback (the ServerPlayerPositionAndLook branch). Carries teleportId plus destination (x, y, z). The teleport id is identical to the co-firing GrimTeleportEvent at that site, so consumers can correlate by id.
  • GrimVehicleSetbackEvent — concrete, fires when Grim sends a player-in-vehicle setback (the ServerVehicleMove branch). Carries destination (x, y, z). No teleport id — the vehicle-move packet doesn't have one.

Why two families?

GrimTeleportEvent (1.3.0.0) targets sibling anticheats that need to dedupe inbound teleport-confirms when their PacketEvents is shaded and Grim's outbound packets are invisible to them. That audience wants every outbound ServerPlayerPositionAndLook Grim emits — setback, AFK-bot probe, vehicle-replication fixup — correlated by id.

GrimSetbackEvent targets admin/observability consumers who want the semantic "Grim setback a player" signal, including the vehicle-move path that isn't a teleport packet.

A player-setback site fires both events; consumers subscribe to whichever framing fits.

Bridge wiring

GrimSetbackEvent is an AbstractEventChannel. Subscribers at the abstract level automatically receive dispatches from each concrete child via the bridge-listener pattern already used by GrimCheckEvent → FlagEvent/CompletePredictionEvent. Zero-alloc hot path, no reflection.

No breaking changes

  • No existing event class, handler signature, or channel method changed.
  • No deprecations introduced or removed.

Upgrade from 1.3.0.0 is a single-line version bump.