Kratos 2 is the ground-up rewrite of Kratos. It reads packets through its own network layer, so it needs no PacketEvents or ProtocolLib, and one jar runs on 1.21.x and 26.x servers. It is sold on the Kratos BuiltByBit page.
It checks movement, combat, aim, elytra, vehicles, timer, placing, breaking, inventory, automation, protocol, exploits and chat. Staff get clickable alerts, a flag log, freezes, replays of what a player did, and a client scan that finds cheat mods through sign probes. Bedrock players who join through Geyser are judged by a separate engine.
Permissions#
| Permission | Lets a player | Default |
|---|---|---|
kratos.* | Use every staff permission below. | OP |
kratos.alerts | Receive flag alerts, toggle them with /kratos alerts and watch flags with /kratos replay. | OP |
kratos.alerts.enable-on-join | Have alerts switched on automatically on join. | OP |
kratos.violations | Run /kratos violations and open /kratos profile. | OP |
kratos.reset | Run /kratos reset. | OP |
kratos.reload | Run /kratos reload, /kratos webhook and /kratos breaker. | OP |
kratos.check | Run /check and /kratos signcheck. | OP |
kratos.freeze | Run /kratos freeze, /kratos unfreeze and /kratos animation. | OP |
kratos.sus | Open the flag log with /sus and see who is frozen. | OP |
kratos.license | Run /kratos license. | OP |
kratos.update | Run /kratos update. | OP |
kratos.settings | Open /kratos settings. | OP |
kratos.replays | Watch saved replays with /kratos replays. | OP |
kratos.replays.delete | Delete saved replays. | OP |
kratos.setup | Run /kratos setup. | OP |
kratos.disguise | Run /disguise and /undisguise. | OP |
kratos.flight-notice | See and toggle the bar that says movement checks pause while flying. | OP |
kratos.record | Run /kratos record. | OP |
kratos.record.self | Opt your own session into packet recording. | Nobody |
kratos.exempt | Skip every check. | Nobody |
Commands#
/kratos has the alias /kr. Running it with no arguments lists only the subcommands you may use.
| Command | What it does | Permission |
|---|---|---|
/kratos alerts | Turns your staff alerts on or off. | kratos.alerts |
/kratos flightbar | Shows or hides the flight notice bar. | kratos.flight-notice |
/kratos replay <player> [flag] | Plays a player's flag back in the world. | kratos.alerts |
/kratos violations <player> | Shows a player's violation levels. | kratos.violations |
/kratos profile <player> | Opens a player's profile menu. | kratos.violations |
/kratos reset <player|all> | Resets the violations of one player or everyone. | kratos.reset |
/kratos freeze <player> [seconds] | Freezes a player. | kratos.freeze |
/kratos unfreeze <player> | Releases a frozen player. | kratos.freeze |
/kratos animation <player> | Previews the removal animation. | kratos.freeze |
/kratos signcheck <player> | Checks a player's client for cheat mods. | kratos.check |
/kratos settings | Opens the settings menu. | kratos.settings |
/kratos replays | Opens the saved replays. | kratos.replays |
/kratos setup [gamemode] [strictness] [reaction] | Applies a gamemode preset. | kratos.setup |
/kratos license | Shows the license or sets a new key. | kratos.license |
/kratos update | Applies a signed update without a restart. | kratos.update |
/kratos webhook test [event] | Sends a test message to Discord. | kratos.reload |
/kratos breaker [reset <check|all>] | Shows or resets checks the circuit breaker made alert-only. | kratos.reload |
/kratos reload | Reloads the configuration. | kratos.reload |
/kratos language | Picks the language Kratos speaks to you. | None |
/kratos version | Shows the running version. | None |
/kratos record <start|stop|mark|status|replay|corpus> | Records and inspects a player's packet session. | kratos.record |
/check <player> <test> | Runs a manual cheat test. Alias /kcheck. | kratos.check |
/sus | Opens the flag log. | kratos.sus |
/disguise <player> and /undisguise | Shows you as another player, or drops the disguise. | kratos.disguise |
Manual tests for /check are killaura, autototem, autoarmor, velocity, reach, triggerbot, autocrystal, cps, nofall, cheststealer, invmove and timer. Some do not run on Bedrock players, and Kratos tells you when that is the case.
Configuration#
| File | Controls |
|---|---|
config.yml | Alerts, freeze, evidence, replay, Discord, sign check, panel link, updates, language, branding and messages. |
checks.yml | Every check: on or off, alert threshold, decay, punish commands and per-check options. |
menus.yml | Text and layout of every menu. |
mods.yml | The cheat mod catalog used by the client scan. |
lang/*.yml | Message files. Kratos ships 26 languages, and language.per-player lets each player pick theirs. |
Checks#
checks.yml starts with a defaults block that every check inherits.
| Option | Default | Meaning |
|---|---|---|
enabled | true | Runs the check. |
alert-after | 1 | Violations before staff are alerted. |
decay-per-minute | 2.0 | Violations removed per minute. |
punish-after | 0 | Violations before the punish commands run. 0 disables punishing. |
punish-commands | empty | Console commands run on punishment. |
block | true | Cancels or sets back the action while the check flags. |
mode | enforce | alert reports without blocking. |
Change a check by adding the same keys under its name in the checks: block. /kratos settings edits the same values in game.
Freeze#
| Option | Default | Meaning |
|---|---|---|
freeze.enabled | true | Freezes players who pile up violations. |
freeze.violations | 8 | Violations of one check that trigger a freeze. |
freeze.total-violations | 12 | Total violations that trigger a freeze. |
freeze.seconds | 30 | How long the freeze lasts. |
freeze.ignored-checks | empty | Checks that never freeze. |
freeze.block-commands | true | Blocks commands while frozen. freeze.allowed-commands lists the exceptions (msg, tell, r). |
freeze.logout-commands | empty | Console commands run when a frozen player logs out. |
Alerts and join notice#
| Option | Default | Meaning |
|---|---|---|
alerts.console | true | Also prints alerts to the console. |
alerts.cooldown-seconds | 5 | Minimum time between alerts for one player and check. |
join-notify.enabled | true | Tells staff about a player's client when they join. |
threat-bar.enabled | true | Shows a coloured threat bar above players with violations. |
flight-notice.enabled | true | Shows the bar that says movement checks pause while flying. |
boss-grace.enabled | true | Pauses movement, elytra, timer, vehicle and knockback checks briefly around boss fights. |
Evidence and replay#
| Option | Default | Meaning |
|---|---|---|
evidence.enabled | true | Keeps a recording of the moments before a flag. |
evidence.seconds | 20 | Length of that recording. |
replay.seconds-before | 25 | Seconds of replay kept before a flag. |
replay.seconds-after | 5 | Seconds kept after it. |
replay.radius | 24 | Blocks around the player that are recorded. |
replay.max-total | 300 | Replays kept on the server. |
Sign check#
sign-check finds cheat mods by placing a client-side sign that shows translated key names. A player whose client answers with a cheat mod's text is flagged. The list of probes sits under sign-check.probes, and mods marked cheat: false are reported as information only.
Discord#
Set discord.enabled to true and put a webhook in discord.webhook-url. The detection, freeze, punishment, manual-check, sign-check and license events can each use their own webhook, mention and message text.
Setup presets#
/kratos setup applies one of ten gamemode presets: survival, lifesteal, crystal, pvp, minigames, factions, skyblock, prison, hub or creative. Strictness is relaxed, balanced or strict. Reaction is freeze, alert or kick.
Install#
- Stop the server and put the jar in
plugins/. - Start the server once, then run
/kratos licenseand paste your license key. - Run
/kratos setupand pick the preset for your gamemode. - Give staff
kratos.alertsso they see flags.
Installing ViaVersion, ViaBackwards and ViaRewind lets players on older clients join and still be judged correctly. Geyser and Floodgate enable the Bedrock engine.
Checks#
Checks are grouped into categories. Each category decides how the action is blocked.
| Category | Blocked by |
|---|---|
| Combat | Cancelling the hit |
| Aim | Alert only |
| Movement | Setting the player back |
| Elytra | Stopping the glide |
| Vehicle | Alert only |
| Timer | Setting the player back |
| Placement and Breaking | Denying the block |
| Inventory, Protocol, Exploit and Chat | Cancelling the action |
| Automation, AI and Bedrock | Alert only |
checks.yml lists every check by name, such as fly, speed, reach, kill-aura, scaffold, no-slow, timer, anti-knockback, auto-crystal, anchor-macro, shield-breaker and triggerbot. Open /kratos settings to browse them by category.
Bedrock players#
Players who join through Geyser are judged by a separate engine, never by the Java checks. The bedrock-* checks cover reach, speed, fly, timer, ground spoof, no fall, nuker, rotation and prediction. bedrock.engine-violations and bedrock.engine-window-seconds set how many violations inside which window raise an alert.
Panel and updates#
The web panel at kratos.blazez.lol receives flags and replays when cloud.enabled is true. Replays upload when cloud.upload-replays is true.
Kratos checks for signed updates every updates.check-minutes minutes. With updates.auto-apply on it installs them without a restart, and /kratos update applies one by hand.
Placeholders#
With PlaceholderAPI installed, these work as %kratos_<name>%.
| Name | Value |
|---|---|
version | Running Kratos version. |
license | License state. |
checks | Number of loaded checks. |
suspects | Number of suspected players. |
frozen_count | Players currently frozen. |
flags, violations | The player's flags and violations. |
top_check, top_violations | The check with the most violations and its count. |
threat | The player's threat level. |
frozen, frozen_seconds | Whether the player is frozen and for how long. |
ping, cps | The player's ping and clicks per second. |
client, client_version, platform, bedrock | The player's client, version, platform and Bedrock status. |
alerts, exempt, language | The player's alert, exempt and language state. |
protecting | Number of players Kratos protects. |
Troubleshooting#
Nothing is checked after install. Run /kratos license and confirm the key is set.
A check flags legitimate players. Set that check's mode to alert in checks.yml, run /kratos reload and report it with the flag replay.
Staff see no alerts. They need kratos.alerts and alerts switched on with /kratos alerts.
A check is alert-only that you did not set. The circuit breaker made it so. Run /kratos breaker to see which, and /kratos breaker reset all to restore them.