Skip to content

Grim anti-cheat

How ReplayCore records GrimAC flags as replay timeline markers, including setup, severity and troubleshooting.

6 min read

What the adapter does

ReplayCore ships a bundled Grim adapter. It is included on Free; Free is a permanent plan and includes every module except white-label branding. Place the ReplayCore JAR in plugins/ alongside Grim. ReplayCore looks for a plugin named GrimAC or Grim, version-gates it, and stays dormant when that plugin is missing, disabled, or older than the minimum below. Recording continues either way.

The adapter is read-only. It does not change Grim's checks, punishments, alerts or configuration.

Supported Grim versions

ReplayCore activates the adapter when the installed plugin reports version 2.0 or newer. That is the only Grim version floor stated in the recorder. There is no published upper bound and no separate Grim edition matrix in this product.

On current Grim builds that expose GrimAPI 1.3+, flags are taken from Grim's own EventBus FlagEvent. Older Grim 2.x builds that still fire a Bukkit FlagEvent are used only as a fallback when that EventBus subscription is not available. ReplayCore does not claim support for Grim 1.x, and it does not claim that every Grim 2.x build on the market has been certified here.

Which Grim events become timeline markers

ReplayCore subscribes to Grim flag events only. It does not subscribe to other Grim event types such as punishments, setbacks or alert broadcasts. A flag that Grim has already cancelled is ignored.

ReplayCore does not keep a catalogue of Grim check categories (combat, movement, and so on) and does not drop or regroup flags by Grim's internal grouping. The check name written onto the replay is the name Grim supplies on that flag, stored in lowercase. If Grim does not supply a usable name, the recording stores unknown. Examples in other ReplayCore material such as reach are only illustrations of a check-name field, not a supported-check list.

Each accepted flag is written as a typed anti-cheat flag on the recording, with source grim, the check name, Grim's raw violation level, and a normalised severity. On Paper, Purpur and Folia, the shipped Anti-cheat rules also add a timeline bookmark at that tick (bookmark every flag, clip nothing). Changing a rule to none still stores the typed flag but does not add a bookmark. A clip rule needs clips configured; without that setup the flag is still recorded and the clip is skipped.

On the Spigot 1.8.8 recording lane the Grim adapter still records each flag. Configuration Studio Anti-cheat rules now apply on that lane too: hide a noisy check with the Grim check chips (or a Hidden rule) and the typed flag is still stored. Staff review stacks a short burst of the same check into one row with a dropdown of each hit.

Severity mapping

The raw violation level is stored exactly as Grim reported it (never negative). Owner rules that use a minimum violation level compare against that raw value, not the normalised severity.

On Paper, Purpur and Folia the adapter maps the raw level onto a 0 to 255 severity using Grim's small per-check scale: a raw level of 20 is treated as maximum. The mapping is linear and then clamped, so a raw level of 10 becomes 127 and anything at or above 20 becomes 255. Timeline bookmark colour then uses that 0 to 255 value: below 85 is informational, 85 to 169 is a warning, and 170 and above is a red alert.

On the Spigot 1.8.8 lane the stored severity is the raw level multiplied by 12, capped at 255, and the bookmark is always red. Do not mix the two mappings when you compare recordings from different server types.

Setup

Install official GrimAC or Grim 2.0 or newer in the same plugins folder as ReplayCore, then restart so both plugins load. ReplayCore lists GrimAC and Grim as soft dependencies, so Grim can load first. There is no extra Grim-side ReplayCore setting and no ReplayCore command that turns Grim flags on.

On Paper, Purpur and Folia, open Configuration Studio, choose the workspace, category or server scope, and open Anti-cheat. Anti-cheat timeline events defaults to on. Anti-cheat rules default to one scope over every world with one rule: bookmark every flag. Both fields are restart-required: publish the configuration and restart the affected recorder after delivery. Turning Anti-cheat timeline events off stops the Grim adapter from subscribing.

Vanished players (when Recording > Vanished players is Exclude) and players with the replaycore.exempt permission never produce a Grim flag record, matching other per-player capture. See the Vanish plugins article for vanish setup.

Confirm it is working

This check needs a replay that contains real Grim flags. ReplayCore cannot invent a flag, and a recording with no Grim flags is not proof that the adapter failed. Live verification against a flagged replay has not been completed for this article.

Confirm Recording is ENABLED and /replaycore status shows recording is active. On start, the console should log ReplayCore grim anticheat adapter activated (native 0x5E flag capture). If Grim is absent, too old, or has no supported flag API, the console logs ReplayCore grim anticheat integration inactive with the reason.

Record while Grim actually flags an online, non-vanished, non-exempt player. Let the replay seal and upload in the usual way (see Getting started: a session seals after the recorded-play window, a restart, or your rotation settings). Open that replay from the signed-in dashboard viewer, which is the supported place to inspect markers. Around the flag tick you should see a grim marker labelled with the check name Grim reported, the raw violation level, and, with the shipped bookmark rule, a bookmark on the scrub bar. An on-screen overlay can also show grim, the check name and VL for a short window after the flag.

If that replay has no flags, do not treat the adapter as proven. Repeat only with a recording that Grim itself flagged.

Troubleshooting when no markers appear

If the console never reports the grim adapter as activated, Grim is missing, disabled, older than 2.0, or present without a supported FlagEvent API. Install a 2.0+ GrimAC or Grim build that still exposes flag events, then restart ReplayCore.

If Anti-cheat timeline events is off in Configuration Studio, the adapters are not started. Turn it on, publish, and restart the recorder. A change that is still waiting for restart will not subscribe.

If the adapter is active but a replay has no markers, Grim may not have flagged anyone during that recording, recording may have been idle, or the flagged player may have been vanished, exempt, or already offline when ReplayCore delivered the flag. Cancelled Grim flags are not recorded. Rules are first-match from top to bottom: a none action above a bookmark rule stores the typed flag without a bookmark. Open the signed-in dashboard replay after upload; a public share link is not the surface this article uses to confirm markers.

ReplayCore does not ship a command that injects a successful Grim flag into a replay. Do not expect a clean, unflagged session to show markers.