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

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

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

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

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

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

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#
| Permission | Lets a player | Default |
|---|---|---|
spartan.admin.gui | Run /spartan setup, /spartan reload, /spartan help and /spartan guide. | OP |
spartan.command.ban | Ban players with /ban. | OP |
spartan.command.ipban | IP-ban players with /ipban. | OP |
spartan.command.mute | Mute players with /mute. | OP |
spartan.command.ipmute | IP-mute players with /ipmute. | OP |
spartan.command.voicemute | Voice-mute players with /voicemute. | OP |
spartan.command.warn | Warn players with /warn. | OP |
spartan.command.kick | Kick players with /kick. | OP |
spartan.command.unban | Run /unban. | OP |
spartan.command.unmute | Run /unmute. | OP |
spartan.command.unvoicemute | Run /unvoicemute. | OP |
spartan.command.unwarn | Run /unwarn. | OP |
spartan.command.punish | Open the punish GUI with /punish. | OP |
spartan.command.check | View a player's history with /history. | OP |
spartan.command.banlist | Open the active ban list. | OP |
spartan.command.edit | Edit an active ban or mute with /editban. | OP |
spartan.command.note | Use /note. | OP |
spartan.command.note.add | Add staff notes to a player. | OP |
spartan.command.note.delete | Delete staff notes. | OP |
spartan.preset.<preset> | Use one punishment preset, for example spartan.preset.hacking. Set per preset in presets.yml. | OP |
spartan.command.report | Use /report when report.allow-everyone is false. | OP |
spartan.command.reports | Open the reports GUI. | OP |
spartan.reports.notify | Get notified of new reports. | OP |
spartan.notify.broadcast | See punishment announcements. | OP |
spartan.notify.silent | See punishments issued with -s. | OP |
spartan.notify.evasion | Get ban evasion alerts from alt detection. | OP |
spartan.staff.mode | Use /staffmode, see vanished staff, and use staff chat. | OP |
spartan.staff.chat | Use staff chat without full staff mode. | OP |
spartan.staff.freeze.bypass | Can't be frozen by staff. | OP |
spartan.dupe.log | Open /dupelog. | OP |
spartan.dupe.notification | Get dupe alerts and plugin exploit warnings, and use /plugindupes. | OP |
spartan.dupe.quarantine | Review and restore removed items with /dupequarantine. | OP |
spartan.dupe.additemlog | Open /additemlog. | OP |
spartan.dupe.finditem | Use /finditem. | OP |
spartan.dupe.healtrades | Run /healtrades. | OP |
spartan.dupe.bypass | Skip the anti-dupe scan. | OP |
spartan.economy.alerts | Get economy watch alerts. | OP |
spartan.fingerprint.command | Use /checkforhacks and /fingerprintexempt. | OP |
spartan.fingerprint.alerts | Get client fingerprint alerts. | OP |
spartan.fingerprint.bypass | Join with a blocked client without being punished. | OP |
spartan.sus.view | Open /sus. | OP |
spartan.sus.alerts | Toggle live flag alerts with /sus alerts. | OP |
spartan.sus.clear | Clear a player's flags. | OP |
spartan.sus.admin | Use /sus providers, check, checks and reload. | OP |
spartan.chatlog.view | Open /chatlog. | OP |
spartan.chatlog.private | See private messages in the chat log. | OP |
spartan.chatlog.clear | Clear a player's chat log. | OP |
spartan.chatfilter.view | Check a player's filter strikes. | OP |
spartan.chatfilter.clear | Clear strikes and lift a filter mute. | OP |
spartan.chatfilter.test | Preview how a message would be filtered. | OP |
spartan.chatfilter.reload | Reload the chat filter. | OP |
spartan.chatfilter.bypass | Skip the chat filter. | OP |
spartan.antiexploit.admin | Use /antiexploit patches, status and reload, and toggle patches. | OP |
spartan.antiexploit.alerts | See anti-exploit alerts in chat. | OP |
spartan.antiexploit.bypass | Skip 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.use | Browse and watch replays. | OP |
spartan.replay.save | Keep a player's recent window with /replay <player> start. | OP |
spartan.replay.reload | Reload 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.
| Command | What it does | Permission |
|---|---|---|
/spartan | Lists the Spartan admin commands. | spartan.admin.gui |
/spartan setup | Opens the setup wizard. | spartan.admin.gui |
/spartan reload | Reloads every Spartan config. | spartan.admin.gui |
/spartan help or /spartan guide | Opens 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 |
/banlist | Opens 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 |
/reports | Lists open reports in a GUI. | spartan.command.reports |
/appeal | Opens the appeal form for a muted or frozen player. | None |
/staffmode | Toggles 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 |
/dupelog | Opens 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 alerts | Toggles live flag alerts for yourself. | spartan.sus.alerts |
/sus clear <player> | Clears a player's flags. | spartan.sus.clear |
/sus providers | Lists hooked anticheats. | spartan.sus.admin |
/sus check <name> | Silences or restores one check by name. | spartan.sus.admin |
/sus checks | Lists silenced checks. | spartan.sus.admin |
/sus reload | Reloads 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 reload | Reloads words.yml and the filter config. | spartan.chatfilter.reload |
/antiexploit | Lists 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 status | Shows how many patches are on per check and how often they blocked. | spartan.antiexploit.admin |
/antiexploit reload | Reloads 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 saved | Browses saved replays. | spartan.replay.use |
/replay reload | Reloads 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.
| File | Controls |
|---|---|
config.yml | Which modules load, database, Redis sync, panel link, command claiming, prefix. |
license.yml | Your license key. |
modules/anti-dupe/config.yml | Dupe scan, quarantine, plugin integrations, AI dupe watch, economy watch, item finder. |
modules/punish/config.yml | Reports, warnings, mute command blacklist, alt detection, Discord webhook. |
modules/punish/presets.yml | Punishment presets shown in the GUI. |
modules/staff/staff-mode.yml | Staff mode items, gamemode, vanish and freeze. |
modules/sus/config.yml | Flag log history, alerts, anticheat providers, dupe webhook. |
modules/chatlog/config.yml | Chat log history and private message capture. |
modules/chatfilter/config.yml and words.yml | Filter switch, censor character, strike ladder, word list. |
modules/anti-exploit/config.yml and patches.yml | Limits for each check, and the patches you turned on or off in the menu. |
modules/fingerprint/config.yml | Client detections and the kick and ban tiers. |
modules/replay/config.yml | Recording, playback and saved replays. |
modules/whitelist/config.yml | Join attempt warnings. |
Main config.yml options:
| Key | Default | What it does |
|---|---|---|
modules.<module> | true | Turns a module off entirely. |
database.type | H2 | H2 (a local file) or MYSQL. Use MySQL to share punishments across servers. |
messaging.redis.enabled | false | Syncs punishments across servers through Redis. |
punishment.claim-commands | auto | Who 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.enabled | true | Links 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#
- Put
Spartan-<version>.jarin your server'spluginsfolder. - Install PacketEvents if you want client fingerprinting and replays. Both stay off without it.
- Start the server once. Spartan creates
config.yml,license.ymland themodulesfolder. - Put your license key in
license.ymlunderlicense-key, then restart. Your key is under My Licenses on the BlazeZ portal. - Join as an op and run
/spartan setup. Until setup is finished, every Spartan command except/spartan setupis blocked for players. - 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.

| Page | What you choose |
|---|---|
| Fingerprint | Which cheat clients get blocked on join. One toggle per client brand. |
| Reports | Whether every player can use /report, or only players with spartan.command.report. |
| Whitelist | Whether the server whitelist is on. |
| Staff Mode | Whether the staff mode HUD shows, and whether it's animated. |
| Anti-Dupe | Automatic dupe detection and the plugin exploit scanner. |
| Chat Log | Whether chat and commands are logged, and whether private messages are included. |
| Chat Filter | Whether the chat filter is on. |
| Sus | Whether anticheat flags are recorded in /sus, and whether staff get alerted. |

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.
| Key | Default | What it does |
|---|---|---|
detection.enabled | true | Master switch for the scan. |
scan.shadow-mode | false | Logs clashes without removing anything. Use it to test on a live server first. |
integrations.hide-stamp-from-plugins | true | Hides the tracking id from other plugins so item comparisons still match. |
integrations.auto-heal-plugin-gives | true | Gives items a plugin hands out fresh ids, so a kit or reward handed out twice isn't flagged. |
anti-relog.enabled | true | Blocks click floods and bad client settings used to dupe on disconnect. |
gui-flood-guard.enabled | true | Stops 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.

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.
| Key | Default | What it does |
|---|---|---|
settings.silent_by_default | false | Makes every punishment silent unless changed. |
warnings.expire_after | 30d | How long a warning counts. |
warnings.actions | 3 warnings: 1 day ban, 5: ban | Commands run when a player reaches a warning count. |
mutes.command_blacklist | /msg, /tell, /r and others | Commands a muted player can't use. |
alt-detection.action | NOTIFY | What happens when a player shares an IP with a banned account: NOTIFY, KICK or BAN. |
voice-chat.mute-with-mute | false | A normal mute also mutes the player in Simple Voice Chat. |
proxy.network-kick | false | Kicks also disconnect from the whole network. |
discord.webhook | empty | Posts 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.

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.

| Item | What it does |
|---|---|
| Vanish | Toggles invisibility. Other staff with spartan.staff.mode still see you. |
| Staff Chat | Routes your chat to staff only. |
| No-Clip | Walks through blocks. Your hotbar is locked while it's on. |
| Player Browser | Lists online players to spectate. |
| Dupe Tracer | Shows a player's inventory, ender chest and the chests they've used, read-only. |
| Teleport Nearest | Teleports you to the closest player. |
| Freeze | Freezes the player you click. |
| Inspect | Shows 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).

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#
| Check | What it stops |
|---|---|
number-guard | NaN, 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-guard | More 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-guard | Click, 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-guard | Book 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-guard | Per-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-guard | The 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-guard | The 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.

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#
| Placeholder | Returns |
|---|---|
%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.