Le plugin génère plugins/TunnelVision/config.yml à son premier démarrage. Cette page détaille chaque clé, dans l'ordre où elles apparaissent dans le fichier. Aucun calcul ne tourne dans le plugin lui-même : toutes les commandes interrogent le service d'analyse (analysis-api.url) — la passerelle (gateway.*) ne sert qu'à alimenter ce service, pas à faire fonctionner les commandes.
En bref
Deux blocs comptent vraiment pour démarrer : analysis-api.url + analysis-api.api-key (fournis à la création de votre accès) pour que les commandes marchent, et gateway.token pour que votre historique CoreProtect remonte au service. Le reste a des valeurs par défaut qui conviennent à la plupart des serveurs.
1Premier démarrage
- Installez le plugin (fichier
.jar) dansplugins/, avec CoreProtect déjà présent et actif. Démarrez le serveur une fois :config.ymlest généré avec ses valeurs par défaut. - Renseignez
analysis-api.urletanalysis-api.api-keyavec l'URL de votre service et la clé fournie à la création de votre accès (bêta : via Discord/e-mail — voir authentification API). - Générez un
gateway.tokenaléatoire (remplacezCHANGE_ME) et transmettez-le à l'équipe TunnelVision avec l'adresse d'accès à votre serveur, pour que le service central puisse synchroniser votre historique — les modalités de connexion sécurisée (tunnel SSH ou VPN, jamais un port ouvert directement) sont précisées lors de l'onboarding. - Redémarrez le serveur. Ce plugin ne recharge pas sa configuration à chaud (pas de sous-commande
reload) — une modification deconfig.ymldemande toujours un redémarrage. - Vérifiez avec
/tunnelvision status(en jeu) : il doit renvoyer la tête de votre historique CoreProtect sans erreur.
Le jeton de passerelle transite en clair sur le réseau si vous ne le protégez pas : ne l'exposez jamais directement sur Internet (gateway.bind: 0.0.0.0 sans pare-feu). Un tunnel SSH ou un VPN entre votre serveur et le service central est la seule voie recommandée.
2Base CoreProtect
À laisser tel quel sauf schéma personnalisé. La base n'est jamais ouverte qu'en lecture seule stricte — le plugin ne crée, ne modifie ni ne supprime rien dedans.
# Chemin vers la base CoreProtect, relatif au dossier du serveur. coreprotect-db-path: "plugins/CoreProtect/database.db" # Noms des tables CoreProtect — à adapter seulement si votre schéma diffère. table: block: "co_block" user: "co_user" material-map: "co_material_map" world: "co_world"
3Passerelle locale (gateway)
Un petit serveur HTTP en lecture seule, local à votre machine, qui sert des tranches de votre historique CoreProtect au service central pour qu'il tienne son miroir à jour. Il n'intervient dans aucune commande (score, suspects, render, menu) : celles-ci parlent uniquement à analysis-api.url. Sans jeton valide, le plugin démarre quand même — il désactive juste la passerelle et la synchro quotidienne, et le signale dans les logs.
gateway: bind: "127.0.0.1" # accès local uniquement — recommandé port: 8787 backlog: 0 threads: 4 # requêtes servies en parallèle token: "CHANGE_ME" # obligatoire pour activer la passerelle max-page-size: 50000
4Service d'analyse (analysis-api / sync)
Obligatoire : rien n'est calculé dans le plugin, toutes les commandes interrogent cette URL. Le plugin se désactive au démarrage si elle est vide.
analysis-api: url: "http://127.0.0.1:8000" # URL de votre service (voir doc API) api-key: "" # clé de tenant, fournie une seule fois # Synchronisation quotidienne automatique vers le service central (JVM pure, # aucune dépendance externe) : réutilise gateway.token + analysis-api ci-dessus, # rattrape au prochain démarrage si le serveur était éteint à l'heure prévue. sync: enabled: true
5Filtres (scoring)
Le périmètre par défaut de /tunnelvision score, suspects et render — quelles sessions sont assez pertinentes pour être analysées, pas comment elles sont notées.
scoring: default-ore: "diamond" # minerai cible si --ore n'est pas précisé min-ore-blocks: -1 # -1 = défaut interne (1) · 0 = filtre désactivé ore-families: "" # "" = diamond,ancient_debris · voir ci-dessous
ore-families : familles comptées par min-ore-blocks, séparées par des virgules — additives (une session est gardée dès qu'une seule famille atteint son seuil). Grammaire : all (les dix familles), -famille (en retire une), famille:N (seuil propre). Le charbon est hors périmètre par défaut — c'est le minerai qu'on ne vérifie jamais.
| Exemple | Effet |
|---|---|
"" | Défaut du plugin : diamant + débris antiques. |
all,-coal | Tout sauf le charbon. |
diamond:1,emerald:3 | Seuil propre à chaque minerai. |
all,coal:0 | Seuil nul = famille retirée (équivalent à -coal). |
6Rapports (report)
Réglages de /tunnelvision render et du menu graphique — délégués à analysis-api.url, réutilisent les filtres scoring.* ci-dessus pour décider quelles sessions apparaissent.
report: output-subdir: "" # sous-dossier de plugins/TunnelVision/figures/ max-page-size-mb: 0 # 0 = l'API applique son propre défaut identify-by-default: true # pseudos/coordonnées réels par défaut
identify-by-default: true signifie que /tunnelvision render produit des rendus identifiés sauf si vous passez --anonymize à la commande ; mettez-le à false pour inverser ce comportement (--identify reste disponible au cas par cas).
7Commandes et permission
Une seule permission contrôle tout : tunnelvision.admin. Les opérateurs et la console l'ont par défaut ; accordez-la à vos modérateurs en l'ajoutant à leur groupe dans votre plugin de permissions. Qui doit l'avoir, comment l'accorder et dépannage : voir la page permissions.
| Commande | Rôle |
|---|---|
/tunnelvision status | Tête de votre historique CoreProtect (vérifie que tout est branché). |
/tunnelvision score <joueur> [fenêtre] [--ore famille] | Score de suspicion d'un joueur sur une période. |
/tunnelvision suspects [fenêtre] [--min-score N] [--ore famille] | Liste triée des sessions les plus suspectes. |
/tunnelvision render <début> <fin> [--identify|--anonymize] [--annotate|--no-annotate] | Génère la reconstruction 3D HTML. |
/tunnelvision menu | Interface graphique en jeu (voir la démo du menu). |
Besoin d'aide
Une question sur un réglage précis, ou un comportement qui ne correspond pas à cette page : Discord · contact@tunnelvision.fr.