# BG Lands Client — Fabric 26.2

Mod **client uniquement**. Le serveur reste Paper : aucun Fabric Loader ni jar du
mod ne doit être installé côté serveur.

## Contrat réseau

- Canal Bukkit unique : `bglands:ui`.
- JSON UTF-8 brut, sans préfixe de longueur applicatif, maximum 30 KiB.
- Le client envoie `hello` avec `screen-v1` et `form-v1` après la connexion si
  le serveur annonce le canal.
- Il renvoie `hello` à chaque `probe` reçu après un changement de backend
  Velocity.
- L'écran n'est ouvert qu'après un `hello_ack` de major compatible avec
  `accepted:true`; `reason` est journalisé si le serveur impose son fallback.
- Chaque clic renvoie l'`instanceId`, le `controlId`, le `token` fourni par le
  serveur et un nouveau `requestId` UUID.
- Si un contrôle fournit `x`, `y`, `width` et `height`, ces quatre valeurs du
  canvas Studio 400×300 sont reproduites exactement puis mises à l'échelle. Un
  contrôle incomplet utilise automatiquement la grille responsive.
- `open_form` ouvre une saisie native (jusqu'à 8 champs). `submit` renvoie une
  table `values`, un `submitToken` opaque et un nouveau `requestId`; le serveur
  reste seul responsable de valider longueur, permissions et contenu.
- Si le canal ou le protocole est absent/incompatible, le mod ne bloque rien :
  Paper peut afficher son Dialog de secours.

## Intégration au build racine

Dans `settings.gradle.kts`, ajouter le dépôt de plugins Fabric puis les modules :

```kotlin
pluginManagement {
    repositories {
        maven("https://maven.fabricmc.net/")
        gradlePluginPortal()
        mavenCentral()
    }
}

include("java-client-common", "java-client-fabric")
```

Versions verrouillées pour Minecraft 26.2 : Loom `1.17.20`, Gradle 9.5.1 ou
plus récent, Fabric Loader 0.19.3, Fabric API `0.158.0+26.2`, JDK 25.

Le jar distribuable est produit dans `java-client-fabric/build/libs/`. Le
launcher doit installer ce jar avec Fabric Loader et Fabric API, tous trois dans
des versions verrouillées par le manifeste du modpack.
