Documentation

Configurer le plugin (config.yml)

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

  1. Installez le plugin (fichier .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.
  2. Renseignez 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).
  3. Générez un 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.
  4. Redémarrez le serveur. Ce plugin ne recharge pas sa configuration à chaud (pas de sous-commande reload) — une modification de config.yml demande toujours un redémarrage.
  5. 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.

ExempleEffet
""Défaut du plugin : diamant + débris antiques.
all,-coalTout sauf le charbon.
diamond:1,emerald:3Seuil propre à chaque minerai.
all,coal:0Seuil 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 (défaut : opérateurs uniquement).

CommandeRôle
/tunnelvision statusTê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 menuInterface 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.