Skip to content
BlazeZDocs

Spartan

Anti-dupe engine and staff toolkit with punishments, staff mode, chat logs, replays and a cross-anticheat flag log.

Version
2.2.5
Runs on
Paper, Purpur, Folia, Velocity, BungeeCord
Minecraft
1.21+
Java
17+
Works with
PacketEvents, PlaceholderAPI, Vault, Floodgate, Simple Voice Chat, Grim, Vulcan, Matrix, AAC, Kratos, Shopkeepers, EconomyShopGUI, PlayerVaultsX
On this page

Spartan gives every item in a player's inventory a hidden tracking id and scans online players every second. When the same id shows up twice, in one inventory or across two players, the extra copy is removed, logged to /dupelog and kept in a quarantine so staff can hand it back if it was a false positive. Other plugins don't see the tracking id, so shops, crates and item comparisons keep working.

Around that engine sit the tools staff use every day: GUI punishments with presets, staff mode with vanish and freeze, a chat log, a chat filter, player replays and /sus, one flag log for every anticheat on the server.

Features#

Anti-dupe engine

Every item carries a hidden tracking id. When the same id shows up twice, the extra copy is removed, logged and quarantined so staff can hand it back. Anti-dupe

Plugin exploit scanner

Your installed plugins are checked against DupeDB for known dupe exploits on start and every 6 hours. Plugin exploit scanner

Spartan setup wizard

Setup wizard

/spartan setup walks through every module in game, one page each. Nothing is saved until you finish. Setup wizard

Spartan punish menu

Punishments with presets

/punish <player> opens a GUI: pick a type and a preset. Repeat offences step to the next duration on their own. Punishments

Spartan history menu

Player history

/history <player> shows every ban, mute, warn and kick with staff notes, and lets you edit them. History

Spartan staff mode

Staff mode

/staffmode vanishes you and swaps your hotbar for staff tools. Your inventory comes back when you leave. Staff mode

Spartan chat log

Chat log

/chatlog <player> shows recent chat and commands, newest first. Private messages only show to staff allowed to read them. Chat log

Spartan sus menu

One flag log for every anticheat

/sus collects flags from Grim, Vulcan, Matrix, AAC, Kratos and Spartan's anti-dupe in one board. Sus flag log

Replays of every dupe

A replay is saved automatically each time a dupe is caught, with 30 seconds of run-up, so staff can see how it was done. Replay

Chat filter

Catches spaced, leetspeak and stretched spellings of filtered words, with a strike ladder from a warning up to a ban. Chat filter

Client fingerprint

Cheat clients and mods are identified on join, with an alert first and a kick or ban on repeat offences. Client fingerprint

Dupe and economy watch

Staff are warned about suspicious piles of crate keys or identical shulkers, and about economy payouts repeating too fast. AI dupe watch and economy watch

Anti-exploit

Blocks the exploits posted publicly on DupeDB: NaN and overflow amounts, command spam, MiniMessage injection, book and chunk bans, bundle dupes, villager shear dupes and force-OP. Anti-exploit

Permissions#

PermissionLets a playerDefault
spartan.admin.guiRun /spartan setup, /spartan reload, /spartan help and /spartan guide.OP
spartan.command.banBan players with /ban.OP
spartan.command.ipbanIP-ban players with /ipban.OP
spartan.command.muteMute players with /mute.OP
spartan.command.ipmuteIP-mute players with /ipmute.OP
spartan.command.voicemuteVoice-mute players with /voicemute.OP
spartan.command.warnWarn players with /warn.OP
spartan.command.kickKick players with /kick.OP
spartan.command.unbanRun /unban.OP
spartan.command.unmuteRun /unmute.OP
spartan.command.unvoicemuteRun /unvoicemute.OP
spartan.command.unwarnRun /unwarn.OP
spartan.command.punishOpen the punish GUI with /punish.OP
spartan.command.checkView a player's history with /history.OP
spartan.command.banlistOpen the active ban list.OP
spartan.command.editEdit an active ban or mute with /editban.OP
spartan.command.noteUse /note.OP
spartan.command.note.addAdd staff notes to a player.OP
spartan.command.note.deleteDelete staff notes.OP
spartan.preset.<preset>Use one punishment preset, for example spartan.preset.hacking. Set per preset in presets.yml.OP
spartan.command.reportUse /report when report.allow-everyone is false.OP
spartan.command.reportsOpen the reports GUI.OP
spartan.reports.notifyGet notified of new reports.OP
spartan.notify.broadcastSee punishment announcements.OP
spartan.notify.silentSee punishments issued with -s.OP
spartan.notify.evasionGet ban evasion alerts from alt detection.OP
spartan.staff.modeUse /staffmode, see vanished staff, and use staff chat.OP
spartan.staff.chatUse staff chat without full staff mode.OP
spartan.staff.freeze.bypassCan't be frozen by staff.OP
spartan.dupe.logOpen /dupelog.OP
spartan.dupe.notificationGet dupe alerts and plugin exploit warnings, and use /plugindupes.OP
spartan.dupe.quarantineReview and restore removed items with /dupequarantine.OP
spartan.dupe.additemlogOpen /additemlog.OP
spartan.dupe.finditemUse /finditem.OP
spartan.dupe.healtradesRun /healtrades.OP
spartan.dupe.bypassSkip the anti-dupe scan.OP
spartan.economy.alertsGet economy watch alerts.OP
spartan.fingerprint.commandUse /checkforhacks and /fingerprintexempt.OP
spartan.fingerprint.alertsGet client fingerprint alerts.OP
spartan.fingerprint.bypassJoin with a blocked client without being punished.OP
spartan.sus.viewOpen /sus.OP
spartan.sus.alertsToggle live flag alerts with /sus alerts.OP
spartan.sus.clearClear a player's flags.OP
spartan.sus.adminUse /sus providers, check, checks and reload.OP
spartan.chatlog.viewOpen /chatlog.OP
spartan.chatlog.privateSee private messages in the chat log.OP
spartan.chatlog.clearClear a player's chat log.OP
spartan.chatfilter.viewCheck a player's filter strikes.OP
spartan.chatfilter.clearClear strikes and lift a filter mute.OP
spartan.chatfilter.testPreview how a message would be filtered.OP
spartan.chatfilter.reloadReload the chat filter.OP
spartan.chatfilter.bypassSkip the chat filter.OP
spartan.antiexploit.adminUse /antiexploit patches, status and reload, and toggle patches.OP
spartan.antiexploit.alertsSee anti-exploit alerts in chat.OP
spartan.antiexploit.bypassSkip every anti-exploit check.Nobody
spartan.antiexploit.bypass.<check>Skip one check, for example spartan.antiexploit.bypass.command-guard.OP for command-guard and minimessage-guard, nobody for the rest
spartan.replay.useBrowse and watch replays.OP
spartan.replay.saveKeep a player's recent window with /replay <player> start.OP
spartan.replay.reloadReload the replay settings.OP

Commands#

-s on a punishment command makes it silent: only staff with spartan.notify.silent see it. Durations use 10m, 1h, 7d or permanent.

CommandWhat it doesPermission
/spartanLists the Spartan admin commands.spartan.admin.gui
/spartan setupOpens the setup wizard.spartan.admin.gui
/spartan reloadReloads every Spartan config.spartan.admin.gui
/spartan help or /spartan guideOpens the command guide GUI.spartan.admin.gui
/punish <player>Opens the punish GUI for a player.spartan.command.punish
/ban <player> <reason|preset> [duration] [-s]Bans a player. With only a name, opens the preset picker.spartan.command.ban
/ipban <player> <reason|preset> [duration] [-s]Bans a player's IP.spartan.command.ipban
/mute <player> <reason|preset> [duration] [-s]Mutes a player.spartan.command.mute
/ipmute <player> <reason|preset> [duration] [-s]Mutes a player's IP.spartan.command.ipmute
/voicemute <player> <reason|preset> [duration] [-s]Mutes a player in Simple Voice Chat.spartan.command.voicemute
/warn <player> <reason|preset> [-s]Warns a player.spartan.command.warn
/kick <player> [reason] [-s]Kicks a player.spartan.command.kick
/unban <player> [-s]Lifts a ban.spartan.command.unban
/unmute <player> [-s]Lifts a mute.spartan.command.unmute
/unvoicemute <player> [-s]Lifts a voice mute.spartan.command.unvoicemute
/unwarn <player> [-s]Removes a warning.spartan.command.unwarn
/history <player>Opens a player's punishment history and prints their client info.spartan.command.check
/banlistOpens the list of active bans.spartan.command.banlist
/editban <player> (alias /editmute)Edits a player's active ban or mute.spartan.command.edit
/note <player> <add|delete> [text|id]Adds or deletes a staff note on a player.spartan.command.note
/report <player>Opens the report GUI for a player.None, see Reports
/reportsLists open reports in a GUI.spartan.command.reports
/appealOpens the appeal form for a muted or frozen player.None
/staffmodeToggles staff mode.spartan.staff.mode
/staffchat [message] (alias /sc)Toggles staff chat, or sends one message to it.spartan.staff.mode or spartan.staff.chat
/dupelogOpens the flag log filtered to anti-dupe hits.spartan.dupe.log
/dupequarantine [list|give <index> [player]|clear] (alias /dupequar)Lists, restores or clears removed items.spartan.dupe.quarantine
/additemlog [clear]Opens or clears the item-give log.spartan.dupe.additemlog
/finditem [exact|type]Lists every place a copy of your held item exists.spartan.dupe.finditem
/plugindupes [list|review <id>|rescan]Shows installed plugins with known dupe exploits.spartan.dupe.notification
/healtrades (aliases /fixtrades, /spartanhealtrades)Repairs Shopkeepers trades. Works from console.spartan.dupe.healtrades
/sus [player] (aliases /flags, /checklog)Opens the flag log, or one player's flags.spartan.sus.view
/sus alertsToggles live flag alerts for yourself.spartan.sus.alerts
/sus clear <player>Clears a player's flags.spartan.sus.clear
/sus providersLists hooked anticheats.spartan.sus.admin
/sus check <name>Silences or restores one check by name.spartan.sus.admin
/sus checksLists silenced checks.spartan.sus.admin
/sus reloadReloads the sus config.spartan.sus.admin
/chatlog <player> (aliases /clog, /chathistory)Opens a player's chat and command log.spartan.chatlog.view
/chatlog clear <player>Clears a player's chat log.spartan.chatlog.clear
/chatfilter (alias /cf)Lists the chat filter commands.None
/chatfilter strikes <player>Shows a player's strike count.spartan.chatfilter.view
/chatfilter clear <player>Clears strikes and lifts a filter mute.spartan.chatfilter.clear
/chatfilter test <message>Previews how a message would be filtered.spartan.chatfilter.test
/chatfilter reloadReloads words.yml and the filter config.spartan.chatfilter.reload
/antiexploitLists the anti-exploit commands.spartan.antiexploit.admin
/antiexploit patches (aliases gui, menu)Opens the patch menu to turn each patch on or off.spartan.antiexploit.admin
/antiexploit statusShows how many patches are on per check and how often they blocked.spartan.antiexploit.admin
/antiexploit reloadReloads the anti-exploit config.spartan.antiexploit.admin
/checkforhacks <player>Runs the client sign probes on a player.spartan.fingerprint.command
/fingerprintexempt <player> [seconds]Pauses fingerprint checks on a player. Without seconds, ends the pause.spartan.fingerprint.command
/replay [player] (aliases /rp, /rewind)Opens the replay picker, or one player's replay setup.spartan.replay.use
/replay <player> start [seconds]Keeps that player's last seconds as a saved replay.spartan.replay.save
/replay savedBrowses saved replays.spartan.replay.use
/replay reloadReloads the replay settings.spartan.replay.reload

Every command also works as /spartan <command>, for example /spartan ban.

Configuration#

Spartan keeps a main config.yml plus one folder per module under plugins/Spartan/modules/. Each module has its own config.yml, messages.yml and GUI files.

FileControls
config.ymlWhich modules load, database, Redis sync, panel link, command claiming, prefix.
license.ymlYour license key.
modules/anti-dupe/config.ymlDupe scan, quarantine, plugin integrations, AI dupe watch, economy watch, item finder.
modules/punish/config.ymlReports, warnings, mute command blacklist, alt detection, Discord webhook.
modules/punish/presets.ymlPunishment presets shown in the GUI.
modules/staff/staff-mode.ymlStaff mode items, gamemode, vanish and freeze.
modules/sus/config.ymlFlag log history, alerts, anticheat providers, dupe webhook.
modules/chatlog/config.ymlChat log history and private message capture.
modules/chatfilter/config.yml and words.ymlFilter switch, censor character, strike ladder, word list.
modules/anti-exploit/config.yml and patches.ymlLimits for each check, and the patches you turned on or off in the menu.
modules/fingerprint/config.ymlClient detections and the kick and ban tiers.
modules/replay/config.ymlRecording, playback and saved replays.
modules/whitelist/config.ymlJoin attempt warnings.

Main config.yml options:

KeyDefaultWhat it does
modules.<module>trueTurns a module off entirely.
database.typeH2H2 (a local file) or MYSQL. Use MySQL to share punishments across servers.
messaging.redis.enabledfalseSyncs punishments across servers through Redis.
punishment.claim-commandsautoWho owns /ban, /mute, /kick and the rest. auto hands them to LiteBans, AdvancedBan, LibertyBans or BanManager when one is installed. always or never force it.
cloud.enabledtrueLinks the server to the Spartan web panel.
messages.prefix&c&l%brand% &8» Chat prefix for every message.

Apply changes with /spartan reload.

Update alerts#

Staff with blazez.updates (OPs by default) get one chat message when they join, listing every installed BlazeZ plugin that has an update waiting. It stays off until you set check-for-updates: true in this plugin's license.yml.

Install#

  1. Put Spartan-<version>.jar in your server's plugins folder.
  2. Install PacketEvents if you want client fingerprinting and replays. Both stay off without it.
  3. Start the server once. Spartan creates config.yml, license.yml and the modules folder.
  4. Put your license key in license.yml under license-key, then restart. Your key is under My Licenses on the BlazeZ portal.
  5. Join as an op and run /spartan setup. Until setup is finished, every Spartan command except /spartan setup is blocked for players.
  6. Walk through the wizard and click finish. Your choices are written to the module configs.

For a network, put the same jar on your Velocity or BungeeCord proxy too. A ban then disconnects the player from the whole network instead of one backend, which matters when a lobby, limbo or AFK server doesn't run Spartan.

Setup wizard#

/spartan setup opens an in-game wizard with one page per enabled module. Nothing is saved until you finish, and you can run it again at any time.

Spartan setup wizard
/spartan setup, one page per module. Next moves to the following page.
PageWhat you choose
FingerprintWhich cheat clients get blocked on join. One toggle per client brand.
ReportsWhether every player can use /report, or only players with spartan.command.report.
WhitelistWhether the server whitelist is on.
Staff ModeWhether the staff mode HUD shows, and whether it's animated.
Anti-DupeAutomatic dupe detection and the plugin exploit scanner.
Chat LogWhether chat and commands are logged, and whether private messages are included.
Chat FilterWhether the chat filter is on.
SusWhether anticheat flags are recorded in /sus, and whether staff get alerted.
Spartan setup fingerprint page
The Fingerprint page of the setup: one toggle per client or mod Spartan should block on join.

Anti-dupe#

The scan runs every scan.interval-ticks (20) over each player's own inventory, including shulker boxes and bundles inside it. Open containers and plugin GUIs are skipped, because items there legitimately move between viewers. A clash has to show up on scan.confirm-passes (3) passes in a row before anything is removed.

Removed copies go to the quarantine (quarantine.enabled, up to 500 entries). /dupequarantine lists them with an index, and /dupequarantine give <index> [player] hands one back. Every hit also lands in /dupelog and /sus.

KeyDefaultWhat it does
detection.enabledtrueMaster switch for the scan.
scan.shadow-modefalseLogs clashes without removing anything. Use it to test on a live server first.
integrations.hide-stamp-from-pluginstrueHides the tracking id from other plugins so item comparisons still match.
integrations.auto-heal-plugin-givestrueGives items a plugin hands out fresh ids, so a kit or reward handed out twice isn't flagged.
anti-relog.enabledtrueBlocks click floods and bad client settings used to dupe on disconnect.
gui-flood-guard.enabledtrueStops clicks faster than 12 per second in plugin GUIs.

Built-in fixes cover Shopkeepers, EconomyShopGUI, BetterTeams and VariableEnderChests. /healtrades repairs Shopkeepers trades that a tracked item broke, and it also runs on its own every 15 minutes.

Dupe log#

/dupelog opens the flag log filtered to anti-dupe hits. Click a player to see their hits. dupe-log.max-entries (500) caps it. Set dupe-webhook.webhook in modules/sus/config.yml to post each hit to Discord.

Plugin exploit scanner#

On start and every 360 minutes, Spartan checks your installed plugins against DupeDB for known dupe exploits. /plugindupes lists the findings, /plugindupes review <id> marks one as handled, and staff are warned on join while findings are open (warn-on-join).

AI dupe watch and economy watch#

AI dupe watch looks at what players are carrying: large piles of crate keys, several shulker boxes with identical contents, or big stacks of valuable items. Staff get a soft warning asking them to judge whether it's legitimate. Each pile is warned once, and warnings wait for a staff member who isn't AFK.

Economy watch wraps your Vault economy and alerts staff when the same source pays a player 4 times within 10 seconds. List plugins whose payouts are meant to be clicked quickly under economy-watch.ignored-causes.

Item tools#

/finditem lists every place a copy of the item in your hand exists: inventories, ender chests, chests, barrels, shulker boxes, dropped items and PlayerVaultsX vaults. exact matches name, lore and data; type matches the material only. It's off by default (item-finder.enabled).

/additemlog shows which plugin gave which player what item, newest first.

Punishments#

/punish <player> opens a GUI: pick a type, pick a preset, confirm. Running /ban <player> with only a name opens the same preset picker. Punishments are announced to staff with spartan.notify.broadcast, or only to spartan.notify.silent when you add -s.

Spartan punish menu
/punish <player>: pick the punishment, then a preset for the length and reason.

Presets live in presets.yml. Each has a type, a reason, a permission, an icon, and one or more duration values. With several durations, each repeat offence steps to the next one, for example 14d, then 60d, then permanent. A preset's optional command runs from console when it's applied, which lets you bridge to another plugin.

KeyDefaultWhat it does
settings.silent_by_defaultfalseMakes every punishment silent unless changed.
warnings.expire_after30dHow long a warning counts.
warnings.actions3 warnings: 1 day ban, 5: banCommands run when a player reaches a warning count.
mutes.command_blacklist/msg, /tell, /r and othersCommands a muted player can't use.
alt-detection.actionNOTIFYWhat happens when a player shares an IP with a banned account: NOTIFY, KICK or BAN.
voice-chat.mute-with-mutefalseA normal mute also mutes the player in Simple Voice Chat.
proxy.network-kickfalseKicks also disconnect from the whole network.
discord.webhookemptyPosts punishments to Discord.

History#

/history <player> opens every ban, mute, warn and kick on record, with staff notes. From there you can open a punishment to see its details or edit it. When the player is online, their client brand and fingerprint strikes print in chat too.

Spartan history menu
/history <player>: punishments, notes and client info for one player.

Reports and appeals#

/report <player> opens a GUI where the player picks a reason. Staff with spartan.reports.notify are told, and /reports lists open reports. report.cooldown-seconds (120) limits how often a player can report. Set report.enabled to false to turn reports off.

/appeal is for a muted or frozen player. It opens a form, and the appeal goes to the Spartan web panel, where staff approve or deny it. It needs cloud.enabled.

Staff mode#

/staffmode puts you in creative, vanishes you and swaps your hotbar for staff tools. Your own inventory comes back when you leave. An action bar shows your vanish and staff chat state and the nearest player.

Spartan staff mode
Staff mode: vanish, staff chat state and the nearest player in the action bar, with the staff tools on the hotbar.
ItemWhat it does
VanishToggles invisibility. Other staff with spartan.staff.mode still see you.
Staff ChatRoutes your chat to staff only.
No-ClipWalks through blocks. Your hotbar is locked while it's on.
Player BrowserLists online players to spectate.
Dupe TracerShows a player's inventory, ender chest and the chests they've used, read-only.
Teleport NearestTeleports you to the closest player.
FreezeFreezes the player you click.
InspectShows a player's inventory and stats without telling them.

Change slots, materials and names under items in staff-mode.yml. A frozen player can only run the commands in freeze.allowed-commands (helpop, report, appeal).

Chat log#

/chatlog <player> opens a player's recent chat and commands, newest first. Private messages (/msg, /tell, /r and the rest in tell-commands and reply-commands) only show to staff with spartan.chatlog.private. It keeps 120 lines per player (history.max-per-player).

Spartan chat log entry
/chatlog <player>: each message with its type, world and time. Filtered words show censored, as the other players saw them.

Chat filter#

The filter censors words from words.yml in public chat with censor-character (*). Matching ignores case, spacing, punctuation, common leetspeak and stretched letters, so one plain word in the list also catches s.t.u.p.i.d or ST4P1D. Quote a phrase to match several words.

Each filtered message is a strike. Strikes reset after 30 minutes without one. The default ladder is a warning at 3 strikes, a 10 minute mute at 5, a 1 hour mute at 8, a kick at 10, a 3 day ban at 15 and a ban at 20. Edit it under strikes.punishments. Use /chatfilter test <message> to try a word before adding it.

Anti-exploit#

Anti-exploit stops the mechanisms behind the dupes and crashes posted on DupeDB, so one patch covers every plugin that has the same flaw. enabled in modules/anti-exploit/config.yml turns the whole module on or off. A blocked action tells the player, logs to console and alerts staff with spartan.antiexploit.alerts. With mirror-to-sus: true it is also added to /sus. Bedrock players are skipped while skip-bedrock is true.

Patch menu#

/antiexploit patches lists all 40 patches with what each one stops, what it is useful for and what it needs. Click a patch to turn it on or off, shift-click to put it back on automatic. Your choices are saved in patches.yml.

On automatic, a patch made for one plugin (WorldEdit //calc, TheNewEconomy, QuickShop-Hikari, GSit, AxVaults, coinflip, lottery and RynekSK command crashes) is only on while that plugin is installed. Bundle patches need Minecraft 1.21.2+, the villager shear patch needs 1.21.6+, and packet, sign and anvil patches need PacketEvents. A patch that is off for one of these reasons shows why in the menu, and clicking it forces it on. Force-OP is off until you turn it on.

Checks#

CheckWhat it stops
number-guardNaN, Infinity and 1e400 amounts in any command, and in chat, sign and anvil input used as price prompts. Negative, hex and oversized amounts (over max-amount) in the commands under economy-commands. Commands under text-commands and online player names are skipped.
command-guardMore than max-commands (6) commands per window-ms (1000), commands under blocked, and per-command cooldowns in seconds under cooldowns (/baltop and /rtp default to 3).
minimessage-guardClick, hover, insert, selector, NBT and other tags under tags in chat, commands, signs, anvil names and books, including nested payloads like <<click:...>click:...>. action: strip removes the tags, action: block refuses the message.
item-size-guardBook bot books (over max-book-pages, max-page-chars or max-book-bytes), copying oversized books, and moving, dropping, framing or placing items over max-item-bytes. Containers stop accepting items past max-container-bytes and bundles past max-bundle-bytes, which stops book bans, chunk bans and nested shulker crashes.
packet-guardPer-packet limits per second under limits (window clicks, tab complete, bundle selects, book edits, signs, anvil names and more), tab completes over max-tab-complete-length, and invalid bundle indexes. A player over max-packets-per-second (1500) is kicked. Needs PacketEvents.
dupe-guardThe villager-shear-dupe patch. Using shears on a villager while it holds up a trade item (saddle, horse armor, carpet) is cancelled, which stops mods like VillagerDupe from shearing free copies of the item. The player gets no message, staff still get the alert.
operator-guardThe force-op patch, off by default. When on, anyone who is OP but not in allowed (names or UUIDs) is de-opped on join, after any /op, and every check-interval-seconds.

Run /antiexploit status to see how many patches are on per check and how many actions each one blocked since the last restart.

Sus flag log#

/sus collects flags from every anticheat on the server in one log: Grim, Vulcan, Matrix, AAC, Kratos and Spartan's own anti-dupe. It opens on a board of flagged players. Click one, or run /sus <player>, to see their flags.

Spartan sus menu
/sus with Kratos installed: one entry per flagged player, with total flags, how many anticheats flagged them and which one flagged most.

Live alerts are off by default (alerts.enabled). Staff with spartan.sus.alerts turn them on for themselves with /sus alerts. /sus check <name> silences one noisy check, such as a single Grim check, without turning off the anticheat. history.max-per-player (80) caps stored flags per player.

Client fingerprint#

Fingerprint identifies cheat clients when a player joins, from the client brand, plugin channels, mod loaders and a sign translation probe. It needs PacketEvents. Bedrock players are skipped (skip-bedrock).

Each detection in modules/fingerprint/config.yml has an action. ALERT tells staff with spartan.fingerprint.alerts. PUNISH also runs enforcement.first-strike (a kick by default) and then enforcement.repeat-strike (a ban by default) on the next offence. Freecam behavior and fast rotation detections are on by default, radar (minimap mods) is off.

/fingerprintexempt <player> [seconds] pauses every fingerprint check on a player, for example during a minigame that sends odd packets.

Replay#

Spartan records every player so staff can watch what happened. /replay opens a picker. Choose a player to set the rewind window and speed, then watch a body only you can see, controlled from a hotbar. Nearby players, block edits, chat, commands and combat play back with it. It needs PacketEvents.

A replay is saved automatically every time a dupe is caught (dupe-capture.enabled, 30 seconds of run-up). /replay <player> start [seconds] saves one by hand. /replay saved lists both. The recording goes back 900 seconds (recording.max-history-seconds), and saved replays past 200 delete the oldest.

Whitelist#

When the server whitelist is on, a non-whitelisted player's join attempt is announced in chat with attempt-join-message. Turn it off with whitelist-warning.enabled.

Placeholders#

PlaceholderReturns
%spartan_is_banned%Yes or No.
%spartan_is_muted%Yes or No.
%spartan_active_bans%Number of active bans on the server.

Troubleshooting#

/ban and /mute run another plugin's command. With punishment.claim-commands: auto, Spartan steps aside when LiteBans, AdvancedBan, LibertyBans, BanManager or a similar plugin is installed. Set it to always to claim them.

Players can't run any Spartan command. Setup isn't finished. Run /spartan setup as an op and click through to the end.

Fingerprint or replay do nothing. Install PacketEvents and restart. The console prints a warning when it's missing.