> For the complete documentation index, see [llms.txt](https://docs.chrisgraph.fr/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.chrisgraph.fr/plugins/hideseek/configuration.md).

# Configuration

HideSeek génère sa configuration dans :

```
plugins/HideSeek/
```

### Fichiers

| Fichier               | Rôle                                                                   | Généré automatiquement |
| --------------------- | ---------------------------------------------------------------------- | :--------------------: |
| `config.yml`          | Configuration globale, gameplay, messages, bossbar, scoreboard, arènes |           Oui          |
| `maps.yml`            | Cartes HideSeek, spawns, zones et options par carte                    |           Oui          |
| `languages/fr_FR.yml` | Surcharges de messages en français                                     |           Oui          |
| `languages/en_US.yml` | Surcharges de messages en anglais                                      |           Oui          |

{% hint style="warning" %}
Le plugin actuel ne génère pas de base de données de statistiques. Aucun `stats.db` n'est utilisé.
{% endhint %}

### `config.yml`

#### Options principales

| Section          | Rôle                                                                                        |
| ---------------- | ------------------------------------------------------------------------------------------- |
| `language`       | Fichier de langue chargé depuis `languages/<langue>.yml`.                                   |
| `server-mode`    | Mode serveur dédié, désactivé par défaut.                                                   |
| `lobby`          | Minimum/maximum de joueurs et comptes à rebours.                                            |
| `game`           | Nombre de chercheurs, durée de cachette, durée de manche, comportement des joueurs trouvés. |
| `hider-sound`    | Son périodique joué à la position des cacheurs pendant la manche.                           |
| `alerts`         | Sons et titres des moments importants.                                                      |
| `hider-taunt`    | Objet de provocation donné aux cacheurs.                                                    |
| `motd`           | MOTD dynamique du serveur.                                                                  |
| `bossbar`        | Bossbar de partie.                                                                          |
| `scoreboard`     | Scoreboard de partie.                                                                       |
| `messages`       | Messages MiniMessage utilisés par le plugin.                                                |
| `titles`         | Titres de rôle au lancement.                                                                |
| `chat`           | Préfixes de chat selon le rôle.                                                             |
| `block-disguise` | Déguisement en bloc, verrouillage et règles de blocs autorisés.                             |
| `hunters`        | Erreurs du chercheur, vitesse et boussole.                                                  |
| `rewards`        | Commandes console exécutées selon les gagnants/perdants.                                    |
| `arenas`         | Liens arène -> carte.                                                                       |

Les textes utilisent le format MiniMessage :

```yaml
messages:
  prefix: "<gold>HideSeek</gold> <dark_gray>|</dark_gray> "
```

#### Lobby

```yaml
lobby:
  min-players: 2
  max-players: 20
  countdown-seconds: 30
  full-countdown-seconds: 5
  cancel-countdown-when-below-minimum: true
```

| Option                                | Effet                                                                                  |
| ------------------------------------- | -------------------------------------------------------------------------------------- |
| `min-players`                         | Nombre minimum de joueurs non spectateurs pour lancer le compte à rebours automatique. |
| `max-players`                         | Limite de joueurs non spectateurs dans une arène.                                      |
| `countdown-seconds`                   | Durée du compte à rebours normal.                                                      |
| `full-countdown-seconds`              | Durée forcée si l'arène atteint le nombre maximum de joueurs.                          |
| `cancel-countdown-when-below-minimum` | Annule le compte à rebours si le nombre de joueurs repasse sous le minimum.            |

#### Game

```yaml
game:
  hunters: 1
  hiding-seconds: 45
  round-seconds: 360
  reset-delay-seconds: 10
  end-reveal-seconds: 30
  capture-mode: SPECTATOR
  invincible-players: true
  lock-hunger: true
```

| Option                | Effet                                                                                                  |
| --------------------- | ------------------------------------------------------------------------------------------------------ |
| `hunters`             | Nombre de chercheurs utilisé lors de la sauvegarde d'une carte.                                        |
| `hiding-seconds`      | Temps donné aux cacheurs avant la libération des chercheurs.                                           |
| `round-seconds`       | Durée de manche utilisée lors de la sauvegarde d'une carte.                                            |
| `reset-delay-seconds` | Présent dans le fichier par défaut, mais aucune lecture effective n'a été trouvée dans le code actuel. |
| `end-reveal-seconds`  | Durée d'affichage des blocs révélés en fin de partie.                                                  |
| `capture-mode`        | Comportement d'un cacheur trouvé : `HUNTER`, `SPECTATOR` ou `VANISH`.                                  |
| `invincible-players`  | Annule les dégâts des joueurs.                                                                         |
| `lock-hunger`         | Bloque la perte de nourriture.                                                                         |

{% hint style="info" %}
En mode serveur dédié (`server-mode.enabled: true`), les cacheurs trouvés passent en spectateur, même si `capture-mode` contient une autre valeur.
{% endhint %}

#### Déguisement en bloc

```yaml
block-disguise:
  enabled: true
  action: RIGHT_CLICK_BLOCK
  max-distance: 6.0
  cooldown: 2s
  update-ticks: 1
  player-scale: 0.55
  center-on-sneak: true
  invalid-lock-warning-seconds: 5
  relock-cooldown: 1s
```

| Option                         | Effet                                                                                             |
| ------------------------------ | ------------------------------------------------------------------------------------------------- |
| `enabled`                      | Active ou désactive le déguisement.                                                               |
| `action`                       | Action utilisée pour choisir un bloc. Par défaut : clic droit sur un bloc.                        |
| `max-distance`                 | Distance maximale entre le joueur et le bloc choisi.                                              |
| `cooldown`                     | Délai entre deux changements de bloc. Formats acceptés : `ms`, `t`, `s` ou secondes sans suffixe. |
| `update-ticks`                 | Fréquence de mise à jour du BlockDisplay.                                                         |
| `player-scale`                 | Taille appliquée au joueur caché.                                                                 |
| `center-on-sneak`              | Centre le joueur en `X.5` et `Z.5` quand il s'accroupit.                                          |
| `invalid-lock-warning-seconds` | Délai avant signalement si le joueur tente de se verrouiller dans une position invalide.          |
| `relock-cooldown`              | Délai minimal avant de pouvoir se reverrouiller après déverrouillage.                             |

Quand un cacheur est déguisé :

* le joueur est invisible ;
* le joueur est non-collidable ;
* un `BlockDisplay` représente son bloc ;
* s'il s'accroupit et que l'emplacement est libre, un vrai bloc est placé temporairement ;
* le joueur passe en mode spectateur pendant ce verrouillage ;
* le vrai bloc est retiré quand il se déplace.

#### Blocs autorisés

Le plugin refuse :

* les blocs invisibles ou techniques ;
* les blocs dans `block-disguise.blacklist` ;
* les blocs sans collision utilisable ;
* les décorations traversables listées dans les règles internes.

Les bougies sont explicitement acceptées par les règles actuelles, même si ce sont de petits blocs.

#### Objet d'état du bloc

```yaml
block-disguise:
  state-item:
    material: CARROT_ON_A_STICK
    slot: 4
```

Si le bloc choisi possède des états modifiables, le joueur reçoit un objet permettant de faire défiler ces états.

États pris en charge par le code :

* allumé/éteint ;
* ouvert/fermé ;
* powered ;
* waterlogged ;
* direction ;
* rotation ;
* axe ;
* face attachée ;
* moitié haute/basse ;
* âge ;
* niveau ;
* puissance analogique.

#### Erreurs des chercheurs

```yaml
hunters:
  mistakes:
    enabled: true
    chances: 20
    penalty-hearts: 1.0
```

| Option           | Effet                                                     |
| ---------------- | --------------------------------------------------------- |
| `enabled`        | Active le compteur d'erreurs via la vie du chercheur.     |
| `chances`        | Nombre de coeurs maximum du chercheur pendant la chasse.  |
| `penalty-hearts` | Coeurs retirés quand le chercheur frappe un mauvais bloc. |

Si le chercheur se trompe alors qu'il ne lui reste plus assez de vie, la partie se termine avec une victoire des cacheurs. Le joueur ne meurt pas.

#### Scoreboard

Le scoreboard utilise `scoreboard.lines` avant le lancement réel de la partie.

Pendant les phases `HIDING`, `RUNNING` et `ENDING`, le code affiche une version spéciale avec :

* la carte ;
* le temps ;
* le ou les chercheurs ;
* les cacheurs en vert s'ils sont encore en jeu ;
* les cacheurs en rouge s'ils ont été trouvés.

#### MOTD

```yaml
motd:
  enabled: false
  max-players-from-lobby: true
```

Le MOTD dynamique est désactivé par défaut. S'il est activé, il utilise la première session chargée et les sections :

```
motd.waiting
motd.starting
motd.preparing
motd.hiding
motd.running
motd.ending
motd.resetting
```

Placeholders disponibles dans le MOTD :

```
{state}
{players}
{online}
{min_players}
{max_players}
{remaining_players}
{map}
{hiders}
{hunters}
{time}
```

#### Mode serveur dédié

```yaml
server-mode:
  enabled: false
  session-id: main
  relaunch-delay-seconds: 30
  global-lobby: {}
```

Le mode dédié est désactivé par défaut.

Dans le code actuel, ce mode :

* utilise une session dédiée ;
* sélectionne une carte jouable aléatoire ;
* peut remettre les joueurs en file après une fin de partie dédiée ;
* utilise `server-mode.global-lobby` si configuré.

`server-mode.relaunch-delay-seconds` est présent dans la configuration par défaut et dans la migration, mais aucune lecture effective n'a été trouvée dans la logique de relance actuelle.

{% hint style="warning" %}
Le listener de connexion actuel ne lance pas d'auto-join au moment où un joueur rejoint le serveur. Les joueurs rejoignent les arènes via commandes/menu dans le fonctionnement standard.
{% endhint %}

### `maps.yml`

`maps.yml` contient les cartes HideSeek.

Structure :

```yaml
maps:
  village:
    name: village
    enabled: true
    icon: GRASS_BLOCK
    description: []
    spawns:
      lobby:
        world: world
        x: 0.5
        y: 80.0
        z: 0.5
        yaw: 0.0
        pitch: 0.0
      hunter:
        world: world
        x: 10.5
        y: 80.0
        z: 10.5
        yaw: 0.0
        pitch: 0.0
      spectator:
        world: world
        x: 0.5
        y: 90.0
        z: 0.5
        yaw: 0.0
        pitch: 0.0
      hiders:
        0:
          world: world
          x: 5.5
          y: 80.0
          z: 5.5
          yaw: 0.0
          pitch: 0.0
    bounds:
      pos1:
        world: world
        x: -50.0
        y: 60.0
        z: -50.0
        yaw: 0.0
        pitch: 0.0
      pos2:
        world: world
        x: 50.0
        y: 120.0
        z: 50.0
        yaw: 0.0
        pitch: 0.0
    time: 360
    hunters: 1
```

Une carte est jouable si :

* `enabled` vaut `true` ;
* le lobby existe ;
* le spawn chercheur existe ;
* au moins un spawn cacheur existe ;
* `bounds.pos1` et `bounds.pos2` existent ;
* les mondes référencés sont chargés.

### `languages/*.yml`

Le fichier choisi par `language` est chargé depuis :

```
languages/<language>.yml
```

Exemple :

```yaml
language: fr_FR
```

Le gestionnaire de langue cherche d'abord une clé dans le fichier de langue, puis retombe sur `config.yml` si la clé n'existe pas.

{% hint style="info" %}
Les fichiers de langue actuels ne contiennent qu'une partie des messages. C'est normal : les autres messages viennent de `config.yml`.
{% endhint %}

### Rechargement

Pour recharger la configuration :

```
/hs admin reload
```

Cette commande recharge :

* `config.yml` ;
* les fichiers de langue ;
* `maps.yml` ;
* les arènes ;
* les sessions ;
* les paramètres de déguisement.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.chrisgraph.fr/plugins/hideseek/configuration.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
