Skip to content

Investigations and tools

The investigation module gathers the tools used to check behaviour before sanctioning. Options: config/investigation.yml.

/examine <player> inventory, armour and info aliases /inspecter, /invsee
/eview <player> ender chest aliases /voirender, /endersee
  • Online: the view is synchronised in real time both ways with the player’s inventory.
  • Offline: the inventory is read from the player’s data and written back on close if you changed it. If the player joins in the meantime, your changes are applied to their real inventory.
  • The last row of the /examine menu shows information about the player: hunger, IP, ping, game mode, record, position, notes, freeze and warn. The order of these slots is set in examine.info (0 = hidden), and the record, freeze and warn buttons run configurable commands.

Permissions: cobaltstaff.inventory.examine.view.online|offline to view, cobaltstaff.inventory.examine.interact.online|offline to edit; cobaltstaff.enderchests.view.online|offline and cobaltstaff.enderchests.interact for the ender chest.

In staff mode, containers (chests, barrels, hoppers, dispensers, shulkers…) open without animation or sound. Editing their content requires cobaltstaff.mode.silent-chest-interaction and a staff mode that allows it.

/players [player] alias /joueurs

Without an argument, /players opens a hub: online players, offline players, staff, miners (players below the players.miners-y layer, 30 by default) and protected players. Each list shows heads with a hover summary (IP, UUID, game mode, hunger, position, playtime, frozen, protected, under investigation, muted…), each field being protected by a cobaltstaff.player-view.detail.<field> permission.

With a name, the player’s detailed profile opens: sanctions, reports, notes and action buttons (freeze, spectate, record, sanction). It can also show what the player owns in game, read through PlaceholderAPI or compatible plugins installed (CMI, LuckPerms, CobaltiaEffets…): currencies, jobs, playtime, rank, clan, statistics, battle pass, cosmetics, pets, homes, warps, crate keys, boosters and quests. A missing source shows “?” without error; homes and warps can be reached in one click.

/note <player> <text> [-private] alias /noter
/pnote <player> <text> private note
/notes [player] [-id=] [-private=] [-target=] [-notedBy=] [-note="..."] [-l]

A public note is visible to all staff with cobaltstaff.player-notes.view (and notified to cobaltstaff.player-notes.notifications if notes.notify-on-create is on). A private note is only visible to its author. /notes opens a filterable menu, or a chat list with -l.

/cps <player> alias /testcps

Counts the player’s clicks for 10 seconds (cps.duration) and alerts staff above 16 clicks per second (cps.threshold).

/trace start <player>
/trace stop [player]

Follows live everything a player does: commands, chat, blocks broken and placed, interactions, damage dealt and taken, pickups, drops, world changes, inventory openings. Output goes to the staff’s chat and/or a log file (trace.output: [CHAT, FILE]). cobaltstaff.trace.bypass protects a player from being traced.

/follow [player] alias /suivre

The staff member rides the player as a passenger. Run the command again (or sneak) to detach.

An investigation groups the follow-up of a suspicious player: evidence, notes and a dedicated staff mode.

  1. /investigate [player] opens an investigation (or resumes yours). A staff member has only one active investigation at a time: resuming another one pauses the current one.

  2. The investigation staff mode is enforced (enforce-staff-mode, Enquete mode by default) and the targeted player is told in chat and in the action bar (notify-target).

  3. Add notes (/investigate note <text>) and link evidence: /investigate preuve <report|warn|mute|ban|kick|ipban> <id> [investigation].

  4. Pause (/investigate pause) or conclude (/investigate conclure). Pausing is automatic when the player logs out or when you leave staff mode.

  5. /investigate gerer [player] lists investigations, all of them or a player’s.

Options: number of open investigations at once on one player (max-concurrent, 1 by default), investigating an offline player (allow-offline), and start, pause, conclude hooks (variables %target%, %investigator%, %issuer%, %id%).

/clearips <player> clear the IP history
/altcheck <player> look for alt accounts
/altwhitelist add|remove <player> <player> whitelist of false positives
/altwhitelist list

CobaltStaff keeps each player’s IP history (first and last use). On each login, it compares the player with other accounts:

Criterion Points
Same IP as another account +1
Name ≥ 90 % similar 4
≥ 70 % 3
≥ 50 % 2
≥ 30 % 1

The score gives a level, from POSITIVE to SAME_IP. The levels listed in alt-detect.alert-levels trigger the alt-detects alert. With same-ip-required: true (default), nothing is reported without a shared IP. cobaltstaff.altdetect.bypass excludes a player from detection.

/tplieu <player> <location> to a predefined location alias /teleporttolocation
/tpjoueur <player> to a player alias /teleporttoplayer
/tpici <player> player to you alias /teleporthere
/tpretour [player] back to before the last staff TP alias /teleportback

Predefined locations (teleport.locations, e.g. spawn, jail) are also used by the -T<location> argument of /freeze. The position before the last staff teleport is kept, even after a restart. cobaltstaff.teleport.bypass protects a player from staff teleports.

Staff locations are landmarks shared by the team (grief area, suspicious machine, farm…):

/lieux creer <name> alias /lieux create
/lieux [-id=] [-name="..."] [-creator=] alias /stafflocations

The menu lets you list, rename, change the icon of (list staff-locations.icons), teleport to and delete them, and attach notes.

/protectplayer <player> alias /proteger
/protectarea create <size> <name> | delete <name> alias /zoneprotegee
  • A protected player takes no damage until they log out or the protection is removed.
  • A protected area is a square around your position (up to 50 blocks on each side by default) where non-staff players cannot break, place, open containers, use buttons, levers and plates, or empty or fill a bucket. Without arguments, /protectarea opens the area menu.
/strip <player> remove armour (stored in the inventory) alias /desequiper
/clear <player> [-D] clear the inventory (a copy is kept) alias /vider
/revive <player> give back what a player lost (death or /clear) alias /restaurer

/revive is for refunding a player: they lost their gear to a bug, lag or an unfair death, or a staff member wiped them by mistake with /clear.

To make this possible, CobaltStaff automatically keeps a copy of a player’s inventory on every death and before every /clear (last 10 per player by default, inventory.revive.max-backups; copies on death can be turned off with inventory.revive.save-on-death: false).

  • In game, /revive <player> opens a menu listing these copies (cause: death or clear, date, item count); one click gives back the chosen one.
  • From the console, the most recent copy is given back directly.
  • The player must be online. If their inventory is empty, every item goes back to its slot; otherwise items are added and anything that does not fit drops at their feet.
  • Every revive is written to the audit log. With -D, clearing an offline player is applied on their next login. cobaltstaff.inventory.clearinv-bypass protects a player from being cleared.