Invisibilité du personnel (Veritévoiler)

Veritévoiler est l’invisibilité du personnel de Verité. Elle permet à un membre du personnel de devenir invisible aux joueurs ordinaires afin qu’il puisse observer une situation en toute discrétion, puis réapparaître lorsqu’il a terminé. L’invisibilité est plus que cacher un corps : elle fait aussi taire les petits indices qui révéleraient autrement un membre du personnel caché, tels que les pas, les particules, le chat, la présence dans la liste des serveurs, et les messages d’arrivée ou de départ.

Le composant est activé par défaut. Un membre du personnel l’active avec la commande vanish. Pour la commande elle-même et qui peut l’exécuter, voir la Référence des commandes. Pour chaque nœud de permission nommé sur cette page, voir la Référence des permissions. Pour les clés de configuration exactes et leurs valeurs par défaut, voir la section vanish décrite sous Interrupteurs de fonctionnalités.

Activer et désactiver l’invisibilité

Un membre du personnel exécute la commande vanish pour se cacher, et l’exécute de nouveau pour réapparaître. Une personne disposant de la bonne permission peut aussi cacher ou révéler un autre joueur en le nommant. L’état d’invisibilité est mémorisé : un membre du personnel caché qui se déconnecte, ou lorsque le serveur redémarre, revient toujours caché.

Tant qu’il est caché, un membre du personnel est retiré de la vue de chaque joueur qui n’est pas autorisé à le voir. Les joueurs qui sont autorisés à voir le personnel caché continuent de voir le membre du personnel normalement.

Niveaux d’invisibilité

L’invisibilité est à paliers, de sorte que le personnel senior peut se cacher même du personnel junior. Chaque membre du personnel a un palier d’invisibilité, tiré de la permission verite.vanish.level.<n> la plus élevée qu’il détient (par exemple verite.vanish.level.3). Un observateur ne peut voir un membre du personnel caché que lorsqu’il détient la permission verite.vanish.see et que son propre palier est au moins aussi élevé que celui du membre du personnel caché.

Cela signifie qu’un membre du personnel d’un palier supérieur reste invisible pour un membre d’un palier inférieur, tandis que des paliers égaux ou supérieurs peuvent se voir mutuellement. Lorsqu’aucune permission de palier n’est présente, tout le monde partage le palier zéro, de sorte que la permission see seule décide qui peut voir qui.

Les paliers viennent de LuckPerms

La résolution des paliers lit les nœuds verite.vanish.level.<n> via LuckPerms, y compris les nœuds hérités de groupes. LuckPerms est facultatif : lorsqu’il n’est pas installé, chaque membre du personnel partage le palier zéro et seul verite.vanish.see importe.

Ce dont un membre du personnel invisible est caché

Tant qu’un membre du personnel est caché, Verité dissimule les traces qui le révéleraient autrement. Chacune d’elles peut être activée ou désactivée individuellement.

Trace Ce qui est caché
Le joueur lui-même Le corps est retiré de la vue de quiconque ne peut voir le membre du personnel, en utilisant la gestion de visibilité standard.
Chat Tout ce qu’un membre du personnel caché tape n’est transmis qu’au personnel qui peut le voir, plus la console du serveur. Les joueurs ordinaires ne le reçoivent jamais.
Ping de la liste des serveurs Le membre du personnel caché est retiré de l’échantillon de joueurs affiché sur la liste multijoueur, et là où la plateforme le permet, le nombre de joueurs en ligne est abaissé en conséquence.
Messages d’arrivée et de départ Tant qu’il est caché, un membre du personnel qui rejoint ou quitte le serveur n’affiche aucun message d’arrivée ni de départ.
Sons Les pas, la nourriture, la boisson, les éclaboussures et les sons positionnés similaires provenant de l’emplacement du membre du personnel sont abandonnés pour les joueurs qui ne peuvent pas le voir.
Particules Les particules de mouvement et d’action provenant de l’emplacement du membre du personnel sont abandonnées pour les joueurs qui ne peuvent pas le voir.
Ramassages et rejets d’objets Le membre du personnel ne peut ni ramasser ni jeter d’objets, de sorte qu’aucun objet ne se déplace de lui-même.
Interaction avec le monde Le cassage et la pose de blocs, les plaques de pression et les fils-pièges, et le remplissage ou la vidange de seaux sont empêchés.
Progrès Les annonces de progrès d’un membre du personnel caché sont supprimées.
Projectiles Les flèches, boules de neige et autres projectiles ne peuvent pas être tirés, de sorte que rien ne file du néant.
Dégâts et ciblage Le membre du personnel ne subit ni n’inflige de dégâts, et les monstres ne le ciblent pas.
Faim et air La faim ne se vide pas et la barre d’air reste pleine sous l’eau.
Véhicules Si un autre joueur tente de monter dans un véhicule que le membre du personnel chevauche, le membre du personnel est discrètement retiré du siège au préalable.

Les joueurs et le personnel qui sont autorisés à voir le membre du personnel caché, ainsi que le membre du personnel caché lui-même, continuent d’entendre, de voir et de recevoir tout normalement.

Le masquage des sons et particules va jusque dans le serveur

Les sons et les particules sont les seules traces que le serveur envoie directement aux joueurs proches, aucun réglage ordinaire ne peut donc les arrêter. Verité les filtre au niveau de la connexion. Sur une version de serveur que cela ne peut pas lire en toute sécurité, le masquage des sons et particules se désactive de lui-même et le reste de l’invisibilité continue de fonctionner. La correspondance se fait par proximité avec la position récente du membre du personnel, de sorte qu’un son déclenché bien loin du membre du personnel (par exemple un projectile qu’il a tiré, ce qui est empêché séparément) n’est pas couvert ici.

Le faux message de départ

C’est le cœur anti-évitement de l’invisibilité. Lorsqu’un membre du personnel se cache, le serveur peut diffuser un message de départ d’apparence normale afin que tout le monde croie que ce membre du personnel s’est déconnecté, alors qu’en réalité il reste en ligne et observe. Un contrevenant qui ne se tenait bien que parce que le personnel était présent peut alors déraper devant quelqu’un qu’il ne peut pas voir. Lorsque le membre du personnel caché redevient visible, il réapparaît simplement sans message.

Ceci est contrôlé par l’interrupteur fake.message. Lorsqu’il est désactivé, aucun faux message de départ n’est affiché.

Avantages d’observateur (effets)

Au moment où un membre du personnel se cache, il reçoit un ensemble d’avantages de confort qui facilitent l’observation sans le trahir. Les avantages qui s’appliquent dépendent à la fois de l’interrupteur de configuration correspondant et des permissions du membre du personnel.

Avantage Requiert Ce qu’il fait
Transparence de la vue de soi interrupteur self.view Le propre corps du membre du personnel paraît translucide sur son propre écran, un rappel clair qu’il est caché.
Aucune collision Toujours, tant qu’il est caché Les autres joueurs ne se cognent plus au membre du personnel.
Sommeil ignoré Toujours, tant qu’il est caché Le membre du personnel ne retient jamais la nuit ; il n’est pas compté pour le sommeil.
Vol interrupteur fly et verite.vanish.fly Le membre du personnel peut voler tant qu’il est caché.
Invulnérabilité interrupteur invulnerability et verite.vanish.invulnerable Le membre du personnel ne subit aucun dégât.
Vision nocturne interrupteur effects et verite.vanish.effects Le membre du personnel peut voir dans le noir.

La vision nocturne est un véritable effet de potion, car le client lui-même éclaire la vue, de sorte que sa petite icône de statut est le seul marqueur à l’écran inévitable. Elle est appliquée sans particules ni scintillements. Quelle que soit la vision nocturne que le membre du personnel possédait déjà, elle est mémorisée dans un stockage durable avant que l’effet d’invisibilité ne soit appliqué, de sorte qu’elle survit à un redémarrage. Lorsque le membre du personnel redevient visible, son corps redevient solide, la vision nocturne d’invisibilité est retirée, et son effet d’origine est restauré exactement tel qu’il était, ou laissé désactivé s’il n’en avait aucun.

La résistance au feu et la respiration aquatique ne sont délibérément pas accordées comme effets, puisqu’un membre du personnel caché ne subit déjà aucun dégât de feu, de lave ou de noyade et garde une barre d’air pleine, de sorte que ces effets ne seraient qu’un encombrement pur à l’écran. Lorsque le membre du personnel réapparaît, le vol n’est conservé que s’il détient verite.vanish.fly.keep, ou s’il est en mode créatif ou spectateur.

Outils d’observateur

Au-delà des avantages ci-dessus, un membre du personnel caché dispose de plusieurs outils pour inspecter une situation. Chacun a son propre interrupteur de configuration.

  • Bascule spectateur par double accroupissement (gamemode) : tant qu’il est caché, appuyer deux fois rapidement sur accroupissement fait passer le membre du personnel en mode spectateur pour flotter à travers les murs et observer, et un nouveau double accroupissement le ramène à son mode précédent. Les deux pressions doivent survenir dans une courte fenêtre.
  • Ouverture silencieuse de conteneur (silent.container) : faire un clic droit sur un coffre, un tonneau, un shulker ou un autre conteneur l’ouvre sans animation de couvercle, sans son ni décompte d’ouverture qui prévendrait les joueurs proches. Faire un clic droit sur un coffre de l’Ender ouvre le propre coffre de l’Ender du membre du personnel.
  • Inspection de l’inventaire d’un joueur (inventory.inspect) : s’accroupir et faire un clic droit sur un autre joueur ouvre une vue en direct de ce qu’il transporte. Le joueur inspecté ne voit jamais l’interaction.
  • Vue fantôme (ghost) : pour un observateur autorisé à voir un pair caché, le membre du personnel caché est montré comme une figure translucide de style spectateur plutôt que d’être entièrement invisible. C’est un simple recouvrement visuel par observateur ; il ne change jamais le véritable mode de jeu du membre du personnel. Sur une version de serveur que cela ne peut pas résoudre, l’observateur voit simplement le membre du personnel entièrement caché à la place.

L’inspection d’inventaire n’est pas en lecture seule

La vue d’inventaire en direct ouverte par l’inspection d’inventaire n’est pas verrouillée en consultation seule au niveau des objets, puisque le personnel est de confiance.

Rappel dans la barre d’action

Tant qu’il est caché, un petit message persistant indiquant que le membre du personnel est invisible est affiché juste au-dessus de sa barre d’accès rapide et maintenu à jour. Cela prévient l’erreur courante d’un membre du personnel qui oublie qu’il est invisible et agit comme si les autres joueurs pouvaient le voir. Seuls les joueurs cachés voient ce rappel. Il est contrôlé par l’interrupteur actionbar.

Interrupteurs de fonctionnalités

Chaque partie de l’invisibilité ci-dessus peut être activée ou désactivée individuellement sans désactiver le composant entier. Les interrupteurs résident sous vanish.features dans config.yml, et chacun est activé par défaut. Réglez vanish.enabled sur false pour désactiver entièrement le composant.

vanish:
  enabled: true
  features:
    fake.message: true
    actionbar: true
    self.view: true
    fly: true
    invulnerability: true
    effects: true
    gamemode: true
    ride.entity: true
    silent.container: true
    inventory.inspect: true
    server.ping: true
    ghost: true
    prevent.chat: true
    prevent.pickup: true
    prevent.drop: true
    prevent.interact: true
    prevent.block.break: true
    prevent.block.place: true
    prevent.target: true
    prevent.damage: true
    prevent.food: true
    prevent.buckets: true
    prevent.advancement: true
    prevent.projectiles: true
    muffle.sounds: true
    muffle.particles: true
Clé Contrôle
fake.message Le faux message de départ lorsqu’un membre du personnel se cache, et les messages d’arrivée ou de départ cachés.
actionbar Le rappel d’invisibilité à l’écran au-dessus de la barre d’accès rapide.
self.view L’apparence translucide du propre corps du membre du personnel sur son propre écran.
fly Le vol tant qu’il est caché, lorsque le membre du personnel détient aussi verite.vanish.fly.
invulnerability L’immunité aux dégâts tant qu’il est caché, lorsque le membre du personnel détient aussi verite.vanish.invulnerable.
effects L’effet de vision nocturne, lorsque le membre du personnel détient aussi verite.vanish.effects.
gamemode La bascule spectateur par double accroupissement.
ride.entity Le retrait d’un membre du personnel caché d’un véhicule qu’un autre joueur tente de monter.
silent.container L’ouverture des conteneurs sans animation, son ni décompte d’ouverture.
inventory.inspect L’accroupissement et clic droit pour consulter l’inventaire d’un autre joueur.
server.ping Le masquage du personnel invisible du ping de la liste des serveurs.
ghost Le recouvrement spectateur translucide pour les observateurs qui peuvent voir le membre du personnel.
prevent.chat Le maintien du chat d’un membre du personnel caché visible uniquement pour le personnel qui peut le voir.
prevent.pickup Le blocage des ramassages d’objets.
prevent.drop Le blocage des rejets d’objets.
prevent.interact Le blocage des plaques de pression et des fils-pièges.
prevent.block.break Le blocage du cassage de blocs.
prevent.block.place Le blocage de la pose de blocs.
prevent.target L’arrêt du ciblage du membre du personnel par les monstres.
prevent.damage L’arrêt de la prise ou de l’infliction de dégâts par le membre du personnel.
prevent.food Le maintien de la faim intacte et de la barre d’air pleine.
prevent.buckets Le blocage du remplissage et de la vidange de seaux.
prevent.advancement La suppression des annonces de progrès.
prevent.projectiles Le blocage des lancers de projectiles.
muffle.sounds L’abandon des sons positionnés provenant de l’emplacement du membre du personnel pour les joueurs qui ne peuvent pas le voir.
muffle.particles L’abandon des particules provenant de l’emplacement du membre du personnel pour les joueurs qui ne peuvent pas le voir.

La faim et l’air partagent un seul interrupteur

Le vidage de la faim et la barre d’air sous l’eau sont tous deux tenus par le seul interrupteur prevent.food.

Placeholders PlaceholderAPI

Lorsque PlaceholderAPI est installé, l’état d’invisibilité peut être lu depuis les listes d’onglets, les tableaux de score et les configurations de chat sans code, sous l’identifiant verite.

Placeholder Valeur
%verite_vanished% true ou false, selon que le joueur interrogé est actuellement invisible.
%verite_vanish_count% Le nombre de joueurs actuellement invisibles.

Lorsque PlaceholderAPI n’est pas installé, ces placeholders n’existent tout simplement pas et rien d’autre n’est affecté.

Intégration à la tab de TAB

Dans la tab vanilla, un membre du staff caché est déjà retiré de la liste pour quiconque ne peut pas le voir, car Verité le cache via la gestion de visibilité standard. Le populaire plugin TAB reconstruit toutefois la tab lui-même et rajouterait sinon le membre du staff caché. Lorsque TAB est installé, Verité s’enregistre auprès de la propre intégration d’invisibilité de TAB, de sorte que TAB sait quels joueurs sont cachés et quels observateurs peuvent les voir, et TAB tient sa tab à jour avec l’invisibilité. Aucune configuration n’est nécessaire ; l’intégration est enregistrée automatiquement lorsque TAB est présent et ne fait rien lorsqu’il est absent. Les anciennes versions de TAB qui n’exposent pas cette intégration sont ignorées, auquel cas TAB peut afficher le staff invisible sur sa tab jusqu’à sa mise à jour.

Pour les développeurs

L’invisibilité expose deux moyens pour un autre plugin de réagir aux changements d’état d’invisibilité :

  • Un événement annulable déclenché avant qu’un changement d’état d’invisibilité d’un joueur ne survienne, de sorte qu’un plugin peut opposer un veto à une invisibilité ou à un retour à la visibilité (par exemple, refuser l’invisibilité dans un monde spécifique).
  • Un rappel léger qui se déclenche immédiatement après un changement d’état d’invisibilité, pour les plugins qui ont seulement besoin d’être avertis lorsqu’il se produit.

Pour la surface publique destinée aux développeurs, voir l’API développeur.