Régions Folia (threads) visibles sur BlueMap et en jeu (/region) — un seul jar pour Luminol 26.1.2 et Folikaii 26.2 https://map.ekaii.fr
Find a file
Wait4Mi 1749961f0a
Some checks failed
Build EkaiiRegions / build (push) Failing after 30m0s
docs: README complet (joueur, fonctionnement, commandes, config, build, déploiement) + CHANGELOG
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QGf3TaK9XuosCtvLrtA2Fr
2026-09-05 16:44:03 +02:00
.forgejo/workflows feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
gradle/wrapper feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
src/main feat: 0.2.1 — /region dans l'esprit du /tps Folia 2026-09-05 16:24:34 +02:00
.gitattributes feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
.gitignore feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
build.gradle.kts feat: 0.2.1 — /region dans l'esprit du /tps Folia 2026-09-05 16:24:34 +02:00
CHANGELOG.md docs: README complet (joueur, fonctionnement, commandes, config, build, déploiement) + CHANGELOG 2026-09-05 16:44:03 +02:00
gradle.properties feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
gradlew feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
gradlew.bat feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
LICENSE feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00
README.md docs: README complet (joueur, fonctionnement, commandes, config, build, déploiement) + CHANGELOG 2026-09-05 16:44:03 +02:00
settings.gradle.kts feat: EkaiiRegions 0.1.0 — régions Folia et TPS sur BlueMap 2026-09-05 15:06:29 +02:00

EkaiiRegions

Les régions Folia (les threads du serveur) rendues visibles : en contours colorés sur la carte BlueMap, et en jeu avec /region. Pour les serveurs Ekaii sous Luminol 26.1.2 et Folikaii/Lophine 26.2, un seul jar.

Port pour Luminol/Folikaii de PfauMC/bluemap-folia-regions (MIT), étendu : lecture des TPS indépendante de la version, filtrage des régions coquilles, commande en jeu, mode sans BlueMap.

Pour un joueur

Folia découpe le monde en dalles de 256 × 256 blocs. Les dalles occupées qui se touchent forment une région, et chaque région tourne sur son propre thread avec ses propres TPS. Si une région rame, les autres ne le sentent pas. Deux régions qui se rapprochent à moins d'une dalle fusionnent ; une région qui se vide se scinde.

  • Sur map.ekaii.fr : cochez la couche « Régions Folia » dans le panneau latéral. Chaque zone colorée est une région. Vert : ça tourne. Jaune : ça ralentit. Rouge : ça rame, et seuls les joueurs dedans le ressentent. Survolez une zone pour voir ses dalles, chunks, joueurs, entités, TPS et MSPT (5 s et 1 min).

  • En jeu : /region affiche la région où vous êtes, dans l'esprit du /tps de Folia :

    Ta région : world (-377, 71)  #85
      24,3 % util | 12,17 mspt | 19,93 TPS
      Chunks : 1 700  Joueurs : 2  Entités : 2 866  Dalles : 131
      1 min : 11,80 mspt | 19,96 TPS  ·  photo il y a 3 s
    

    La deuxième ligne est l'instantané sur 5 s, colorée selon la santé ; la ligne « 1 min » est la tendance. « util » est la part du tick de 50 ms consommée. La région est nommée par son monde et son chunk central, comme Folia.

Fonctionnement

  • Avec BlueMap (Survie) : toutes les 5 s, sur le thread global Folia, le plugin photographie les régions de chaque monde via le regioniser interne, trace les contours (une boucle par bord, formes en L et trous gérés) et remplace les marqueurs BlueMap. Avec BlueMap ≥ 5.23 les marqueurs sont poussés au navigateur sans recharger la page (SSE). /region lit la dernière photo.
  • Sans BlueMap (Plot, CreaClone) : aucune tâche de fond. La photo est prise au moment du /region, gardée en cache par monde pendant on-demand.cache-seconds (3 s), avec un cooldown par joueur (2 s). Dix joueurs qui spamment = une photo toutes les 3 s au plus.
  • Un seul jar pour 26.1.2 et 26.2 : les classes internes utilisées (regioniser, régions, stats) sont identiques ; la seule classe qui a changé de package entre les deux (TickData, rapports de TPS) est lue par réflexion, par nom de méthode. Vérifié à la compilation contre les deux jars serveur et à l'exécution sur les deux.
  • Les régions coquilles (dalles créées autour d'un chargement de chunks, 0 chunk, pas de TPS) sont ignorées : elles n'existent qu'une ou deux photos avant fusion.
  • Le verrou du regioniser (un StampedLock, non réentrant) n'est jamais repris de façon imbriquée : on liste les régions sous verrou, on lit leurs dalles après.
  • La tâche périodique est sous try/catch : une erreur est loguée la première fois puis toutes les dix minutes.

Commandes et permissions

Commande Permission Défaut Effet
/region ekaiiregions.region tous Fiche de la région du joueur (voir ci-dessus)
/ekaiiregions status ekaiiregions.admin op Par monde : régions, joueurs, entités, TPS mini, âge de la photo, top 8 des régions
/ekaiiregions reload ekaiiregions.admin op Recharge config.yml et replanifie la tâche

Configuration

config.yml, tout est commenté :

Clé Défaut Rôle
update-interval-seconds 5 Intervalle des photos en mode BlueMap
marker-y 80 Hauteur des contours sur la carte 3D
depth-test false Contours visibles derrière le terrain
default-hidden true Couche « Régions Folia » masquée par défaut dans le panneau BlueMap
tps.good / tps.warn 19.5 / 17.0 Seuils vert / jaune / rouge (TPS 5 s)
sections-grid.enabled false Deuxième couche « Dalles Folia » : le quadrillage des dalles
hide-regions-without-players false Vie privée : ne dessiner que les régions où il y a un joueur (une ferme sans joueur révèle sa position sur une carte publique). À passer à true au cas par cas, lors d'un event par exemple
on-demand.cache-seconds 3 Sans BlueMap : durée de vie de la photo par monde
on-demand.player-cooldown-seconds 2 Sans BlueMap : cooldown de /region par joueur
worlds [] Mondes traités, vide = tous

Build

JDK 25, Gradle wrapper fourni. Le plugin compile contre le jar serveur Luminol (classes internes Folia), non versionné dans vendor/ :

mkdir -p vendor
curl -fsSL -o vendor/luminol-server-26.1.2.jar \
  https://forgejo.ekaii.fr/exo/folikaii/releases/download/v26.1.2-ekaii-0.1.0/luminol-server-26.1.2.jar
./gradlew build            # → build/libs/EkaiiRegions-<version>.jar

Autre jar serveur : ./gradlew build -PserverJar=vendor/luminol-server-26.2.jar (asset luminol-server-26.2.jar de la release folikaii v26.2-ekaii-0.2.0).

CI Forgejo (.forgejo/workflows/build.yml) : build sur push main, release avec le jar attaché sur tag v*. L'unité « Actions » doit être activée sur le repo.

Déploiement Ekaii

Serveur Base BlueMap Mode Comment
Survie (mc-ekaii) Luminol 26.1.2 oui périodique + carte plugins/manifest.yml du GitOps exo/ekaii-mc-stack, source: forgejo-release, repo Ekaii/ekaii-regions
Plot (mc-plot) Luminol 26.1.2 non à la demande idem
CreaClone (mc-creaclone) Folikaii/Lophine 26.2 non à la demande géré par Coolify : jar déposé à la main dans plugins/, entrée type: local + sha256, redémarrage manuel (say, save-off, stop)

Un push du manifest redémarre Survie et Plot proprement (préavis 30 s, un seul boot).

Test local

Un serveur Luminol 26.1.2 ou Lophine 26.2 (paperclip de la release folikaii) + BlueMap 5.23 + ce plugin. Sans joueur : forceload add 2000 2000 2100 2100 crée une région ; elle doit apparaître dans http://localhost:8100/maps/world/live/markers.json (jeu ekaii-regions) et dans /ekaiiregions status. Avec deux comptes qui s'éloignent puis se rapprochent : scission puis fusion visibles sur la carte, couche « Régions Folia ».

Historique

Voir CHANGELOG.md.

Licence

MIT, voir LICENSE. Traçage de périmètre et intégration BlueMap d'origine : andreypfau (PfauMC/bluemap-folia-regions).