Sanctions
Le module sanctions remplace un plugin de bannissement classique : il gère les bans, bans IP, mutes, kicks et warns, tient un casier par joueur et applique automatiquement des paliers selon le score de warns. Ses options sont dans config/sanctions.yml, ses commandes dans commands/sanctions.yml.
Arguments communs
Section intitulée « Arguments communs »Plusieurs commandes acceptent des arguments globaux, placés n’importe où dans la ligne :
| Argument | Effet | Commandes |
|---|---|---|
-silent |
Pas d’annonce publique (seul le staff est prévenu) | ban, tempban, unban, ipban, iptempban, ipunban, mute, tempmute, kick, warn |
-template=<nom> |
Choisit le modèle d’écran de ban (bans/<nom>.txt) |
ban, tempban, ipban |
-soft / -hard |
Force un mute doux ou strict | mute, tempmute |
-D |
Mute différé : il commence à la prochaine connexion du joueur | mute, tempmute |
-silent sur un ban demande cobaltstaff.bans.silent (cobaltstaff.ipban.silent pour un ban IP), -template demande cobaltstaff.bans.template-overwrite (ou cobaltstaff.ipban.template-overwrite), -soft/-hard demande cobaltstaff.mutes.override-softhard.
Les durées acceptent 30s, 10m, 2h, 7d, 2w, 1M, 1y, la forme 7 DAY et les mélanges comme 1d12h. perm, permanent ou -1 signifient « définitif ». Elles s’affichent sous une forme lisible, par exemple « 2 j 3 h ».
Un warn a une gravité qui rapporte des points. La somme des points des warns actifs forme le score du joueur ; chaque palier atteint déclenche des actions.
/warn [gravité] <joueur> [raison] [-silent]Sans gravité, un menu de choix s’ouvre. Gravités par défaut :
| Gravité | Points | Expire après |
|---|---|---|
LEGER |
1 | 2 semaines |
MOYEN |
2 | 1 mois |
GRAVE |
4 | 3 mois |
CRITIQUE |
6 | jamais |
Chaque gravité peut avoir une raison par défaut (warn sans raison), autoriser ou non le remplacement de cette raison, et définir l’item affiché dans le menu.
Paliers par défaut :
| Score | Action | Annulation si le warn est retiré |
|---|---|---|
| 3 | mute 1 h | unmute |
| 5 | ban 1 jour | unban |
| 8 | ban 7 jours | unban |
| 12 | ban définitif | unban |
Chaque palier est une liste d’actions (format hooks) avec une rollback-command, lancée si le warn est supprimé ou si son appel est accepté. Le label du palier est montré au joueur (« 4/5 points, prochain : ban 1 jour »).
Le mode de déclenchement se choisit avec warnings.threshold-mode :
Chaque warn relance tous les paliers atteints par le score actuel.
Seul le plus haut palier atteint est lancé.
Seuls les paliers franchis par ce warn (entre l’ancien et le nouveau score) sont lancés.
D’autres actions peuvent être liées à chaque warn (warnings.actions, filtrables par gravité). Le joueur est prévenu à la connexion de ses warns non lus (ou à chaque connexion avec always-notify: true).
Gérer les warns
Section intitulée « Gérer les warns »/warns get <joueur>et/warns gerer <joueur>: liste et gestion (expirer, supprimer)./meswarns: le joueur consulte ses propres warns et peut faire appel./warns appels: appels en attente.
| Commande | Usage |
|---|---|
/ban |
<joueur> <raison> [-silent] [-template=<modèle>] |
/tempban |
<joueur> <durée> <raison> [-silent] [-template=<modèle>] |
/ban prolonger, /ban reduire |
<joueur> <durée> |
/unban |
<joueur> <raison> [-silent] |
/bans gerer |
Bans en cours (menu) |
- Raisons fixes (
bans.fixed-reasons) : dès qu’une raison est définie, la raison libre est remplacée par un choix (/ban <joueur> <raison>), et un menu s’ouvre sans raison. Chaque raison fixe précise le type (PERM_BANouTEMP_BAN), la durée, le modèle d’écran, l’item et sa description. - Alerte de connexion : quand un joueur banni tente de se connecter, le staff ayant
cobaltstaff.bans.notificationsest prévenu (au plus une fois par minute et par joueur par défaut). - Plafonds : la durée d’un tempban est limitée par les permissions
cobaltstaff.bans.tempban.limit.<durée>, celle d’une prolongation parcobaltstaff.bans.extendban.limit.<durée>(voir Permissions).
Modèles d’écran
Section intitulée « Modèles d’écran »Les écrans de déconnexion sont des fichiers texte MiniMessage dans bans/. Quatre modèles sont fournis : permanent, temporaire, ip-permanent, ip-temporaire. Ajoutez les vôtres (bans/<nom>.txt) et choisissez-les avec -template=<nom> ou dans les raisons fixes.
| Variable | Contenu |
|---|---|
%target% |
Joueur banni |
%issuer% |
Staff à l’origine |
%reason% |
Raison |
%duration% |
Durée totale |
%remaining% |
Temps restant |
%expiration% |
Date de fin (« jamais » si définitif) |
%date% |
Date de la sanction |
%id% |
Numéro de la sanction |
%ip% |
IP visée (bans IP) |
/ipban <joueur|ip|plage> <raison> [-silent] [-template=<modèle>]/iptempban <joueur|ip|plage> <durée> <raison> [-silent]/ipunban <joueur|ip|plage> [raison] [-silent]/checkip <joueur>/ipbans [-players]Un ban IP vise une adresse, la dernière adresse connue d’un joueur ou une plage CIDR (IPv4 et IPv6). Avant d’appliquer le ban, CobaltStaff montre la liste des joueurs touchés (d’après leur dernière IP connue) et demande une confirmation, au chat ou dans un menu (ipbans.confirmation: CHAT | GUI | DISABLED).
/mute <joueur> <raison> [-soft|-hard] [-D] [-silent]/tempmute <joueur> <durée> <raison> [-soft|-hard] [-D] [-silent]/mute prolonger <joueur> <durée> /mute reduire <joueur> <durée>/unmute <joueur> [raison]- Mute strict : le joueur est prévenu et ses messages sont refusés.
- Mute doux : le joueur ne sait pas qu’il est muet ; il voit ses messages, mais personne d’autre ne les reçoit. Le comportement par défaut se règle avec
mutes.default-soft-mutes. - Mute différé (
-D) : si le joueur est hors ligne, le mute ne commence qu’à sa prochaine connexion, pour qu’il purge toute sa durée. - Commandes bloquées : pendant un mute, les messages privés et commandes de discussion listés dans
mutes.blocked-commandssont refusés (commandes de plusieurs mots acceptées, par exemplecmi msg). /mutes gerer,/mesmutes,/mutes appels: menus de gestion, mutes personnels et appels.
/kick <joueur> [raison] [-silent]Des raisons prédéfinies (kicks.reasons) ouvrent un menu de choix quand aucune raison n’est tapée ; une seule raison est appliquée directement. kicks.fixed-reason: true interdit la raison libre.
Menu de sanction unifié
Section intitulée « Menu de sanction unifié »/sanction <joueur>Ce menu propose des motifs prêts à l’emploi. Chaque motif enchaîne une ou plusieurs étapes (WARN avec une gravité, MUTE ou BAN avec une durée, KICK). Motifs fournis :
| Motif | Étapes |
|---|---|
| Insultes | warn MOYEN |
| Spam / flood | warn LEGER |
| Pub | mute 1 jour + warn MOYEN |
| Arnaque | warn GRAVE |
| Grief | warn GRAVE |
| Cheat | ban définitif |
| Menaces | warn CRITIQUE |
La raison par défaut d’un motif peut être modifiée dans le menu (sanction-menu.reason-editable). Le menu est aussi accessible depuis la gestion d’un report et depuis la fiche joueur.
/infractions <joueur> alias /casier, /history/infractions top [ban|mute|warn|kick|all]Le casier rassemble toutes les sanctions d’un joueur, de la plus récente à la plus ancienne, avec leur statut (en cours, expirée, levée, appel accepté…). Les autres modules y ajoutent leurs lignes (reports reçus, enquêtes). Les types affichés et leurs icônes se règlent dans infractions.types ; /infractions top affiche les joueurs les plus sanctionnés (28 par défaut).
Les warns, mutes et bans peuvent faire l’objet d’un appel, depuis les menus :
-
Le joueur ouvre ses sanctions (
/meswarns,/mesmutes) et dépose un appel avec une raison — permissioncobaltstaff.<type>.appeals.create. Un staff peut déposer un appel pour un autre joueur (…appeals.create.other), utile pour un joueur banni. -
Le staff ayant
cobaltstaff.<type>.appeals.notificationsest prévenu. -
Un staff accepte (
…appeals.approve) ou refuse (…appeals.reject) l’appel, avec une raison siresolve-reason-enabledest actif. -
Si l’appel est accepté : le warn est annulé (et les paliers déclenchés sont annulés), le mute ou le ban est levé (
unmute-on-approve,unban-on-approve). Des commandes supplémentaires peuvent être lancées (on-approved-commands,on-rejected-commands).
<type> vaut warnings, mutes ou bans. La raison d’appel peut être imposée parmi une liste (fixed-reason, reasons).
Annonces publiques
Section intitulée « Annonces publiques »Avec announce: true, chaque ban, mute, kick et warn est annoncé à tous les joueurs, sauf avec -silent. Le staff reçoit toujours une notification (permissions cobaltstaff.<type>.notifications).
Import et migration
Section intitulée « Import et migration »| Commande | Effet |
|---|---|
/cobaltstaff import litebans [gravité] |
Importe bans, mutes, kicks, warns et l’historique des pseudos et IP depuis LiteBans. Ré-exécutable sans doublon. |
/bans migrer |
Importe les bans du serveur vanilla. |
/ipbans migrer |
Importe les bans IP du serveur vanilla. |
L’import LiteBans demande cobaltstaff.bans.migrate. LiteBans n’ayant pas de gravité, les warns importés reçoivent la gravité passée en argument, ou import.litebans.warn-severity (par défaut LEGER).
Contournements
Section intitulée « Contournements »| Permission | Effet |
|---|---|
cobaltstaff.bans.bypass |
Ne peut pas être banni |
cobaltstaff.mutes.bypass |
Ne peut pas être rendu muet |
cobaltstaff.kicks.bypass |
Ne peut pas être kické |
cobaltstaff.warnings.bypass |
Ne peut pas être warn |