Phase 3 : passer sur l’API Lophine (getThreadedRegionizer) au lieu du NMS + réflexion — différé #1

Open
opened 2026-09-12 10:12:28 +00:00 by wait4mi · 0 comments
Owner

Contexte

Phase 3 du plan « carte des régions Folia » (phases 1 et 2 déployées le 2026-09-05, v0.2.1). Pas urgente : au 2026-09-12 le plugin tourne sans erreur sur Survie, Plot et CreaClone après le passage en Folikaii 26.2 build 236, et la couche « Régions Folia » de map.ekaii.fr est vivante. Cette issue consigne la recon pour ne pas la refaire le jour où il faudra s'y mettre. Pas de branche tant que le critère de déclenchement n'est pas atteint : une branche non mergée vieillirait plus vite que main.

Critère de déclenchement

Ouvrir la phase 3 seulement si l'un de ces cas arrive :

  • un bump de Folikaii casse RegionScanner à la compilation (level.regioniser, computeForAllRegions, getOwnedSections, getRegionStats, getRegionSchedulingHandle) ;
  • le warning Impossible de lire les TPS des régions par réflexion apparaît en prod (voir TickReports) ;
  • Folikaii/Luminol expose enfin les sections possédées par une région dans son API publique.

État actuel : ce qui touche au serveur

Fichier Accès Ce qu'il lit
folia/RegionScanner.java NMS direct (ServerLevel.regioniser, ThreadedRegionizer, TickRegions) liste des régions, getOwnedSections() (frontières), getRegionStats() (chunks / entités / joueurs), getCenterChunk(), getRegionSchedulingHandle()
folia/TickReports.java réflexion sur TickData getTickReport5s / getTickReport1m → tpsData(), timePerTickData() (package changé entre 26.1 ca.spottedleaf.moonrise.common.time et 26.2 ca.spottedleaf.common.time)

Tout le reste (PerimeterTracer, RegionSnapshot, RegionMarkers, BlueMapBridge, RegionCommand) ne dépend que de l'API Paper/BlueMap et n'a pas à bouger.

Ce que l'API Lophine offre (recon 2026-09-05)

Luminol patch api 0008 / serveur 0010 : World#getThreadedRegionizer() expose les régions, leur id, leur centre, leurs stats et leurs rapports de tick. Elle n'expose pas les sections/chunks possédés.

Plan quand on s'y met

  1. RegionScanner : lister les régions et lire id / centre / stats / TPS via World#getThreadedRegionizer() ; TickReports disparaît (plus de réflexion).
  2. Les frontières restent en NMS (getOwnedSections()), isolées dans une classe folia/SectionsNms la plus petite possible, avec repli propre : si l'accès NMS casse, on garde /region (stats + TPS) et on désactive seulement le dessin des dalles sur BlueMap, avec un warning explicite au démarrage.
  3. Ajouter un self-check au onEnable qui teste une fois chaque accès (API Lophine, NMS sections) et logge clairement ce qui marche, plutôt que d'attendre le premier scan.
  4. Compiler contre l'asset luminol-server-26.2.jar de la release folikaii courante (vendor/, gitignoré, la CI le fetch), puis tester sur le rig local dev/ekaii/servers/regions-dev-26.2 (forceload add pour forcer une scission) avant Plot puis Survie.

Hors périmètre

  • Particules de frontière en jeu : abandonnées en phase 2 (une frontière fait toujours ≥ 256 blocs, hors distance de rendu).
  • Support 26.3 : à voir avec le port Folikaii, pas dans cette issue.
## Contexte Phase 3 du plan « carte des régions Folia » (phases 1 et 2 déployées le 2026-09-05, v0.2.1). **Pas urgente** : au 2026-09-12 le plugin tourne sans erreur sur Survie, Plot et CreaClone après le passage en Folikaii 26.2 build 236, et la couche « Régions Folia » de map.ekaii.fr est vivante. Cette issue consigne la recon pour ne pas la refaire le jour où il faudra s'y mettre. **Pas de branche tant que le critère de déclenchement n'est pas atteint** : une branche non mergée vieillirait plus vite que `main`. ## Critère de déclenchement Ouvrir la phase 3 seulement si l'un de ces cas arrive : - un bump de Folikaii casse `RegionScanner` à la compilation (`level.regioniser`, `computeForAllRegions`, `getOwnedSections`, `getRegionStats`, `getRegionSchedulingHandle`) ; - le warning `Impossible de lire les TPS des régions par réflexion` apparaît en prod (voir `TickReports`) ; - Folikaii/Luminol expose enfin les sections possédées par une région dans son API publique. ## État actuel : ce qui touche au serveur | Fichier | Accès | Ce qu'il lit | |---|---|---| | `folia/RegionScanner.java` | NMS direct (`ServerLevel.regioniser`, `ThreadedRegionizer`, `TickRegions`) | liste des régions, `getOwnedSections()` (frontières), `getRegionStats()` (chunks / entités / joueurs), `getCenterChunk()`, `getRegionSchedulingHandle()` | | `folia/TickReports.java` | réflexion sur `TickData` | `getTickReport5s` / `getTickReport1m` → `tpsData()`, `timePerTickData()` (package changé entre 26.1 `ca.spottedleaf.moonrise.common.time` et 26.2 `ca.spottedleaf.common.time`) | Tout le reste (`PerimeterTracer`, `RegionSnapshot`, `RegionMarkers`, `BlueMapBridge`, `RegionCommand`) ne dépend que de l'API Paper/BlueMap et n'a pas à bouger. ## Ce que l'API Lophine offre (recon 2026-09-05) Luminol patch api `0008` / serveur `0010` : `World#getThreadedRegionizer()` expose les régions, leur **id**, leur **centre**, leurs **stats** et leurs **rapports de tick**. Elle n'expose **pas** les sections/chunks possédés. ## Plan quand on s'y met 1. `RegionScanner` : lister les régions et lire id / centre / stats / TPS via `World#getThreadedRegionizer()` ; `TickReports` disparaît (plus de réflexion). 2. Les **frontières restent en NMS** (`getOwnedSections()`), isolées dans une classe `folia/SectionsNms` la plus petite possible, avec repli propre : si l'accès NMS casse, on garde `/region` (stats + TPS) et on désactive seulement le dessin des dalles sur BlueMap, avec un warning explicite au démarrage. 3. Ajouter un **self-check au `onEnable`** qui teste une fois chaque accès (API Lophine, NMS sections) et logge clairement ce qui marche, plutôt que d'attendre le premier scan. 4. Compiler contre l'asset `luminol-server-26.2.jar` de la release folikaii courante (`vendor/`, gitignoré, la CI le fetch), puis tester sur le rig local `dev/ekaii/servers/regions-dev-26.2` (`forceload add` pour forcer une scission) avant Plot puis Survie. ## Hors périmètre - Particules de frontière en jeu : abandonnées en phase 2 (une frontière fait toujours ≥ 256 blocs, hors distance de rendu). - Support 26.3 : à voir avec le port Folikaii, pas dans cette issue.
Sign in to join this conversation.
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
Ekaii/ekaii-regions#1
No description provided.