Documentation
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.
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.
.jar) dans plugins/, avec CoreProtect déjà présent et actif. Démarrez le serveur une fois : config.yml est généré avec ses valeurs par défaut.analysis-api.url et analysis-api.api-key avec 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).gateway.token aléatoire (remplacez CHANGE_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.reload) — une modification de config.yml demande toujours un redémarrage./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.
À 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"
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
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
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). |
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).
Une seule permission contrôle tout : tunnelvision.admin (défaut : opérateurs uniquement).
| 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). |
Une question sur un réglage précis, ou un comportement qui ne correspond pas à cette page : Discord · contact@tunnelvision.fr.