- Java 100%
|
Some checks failed
Build EkaiiRegions / build (push) Failing after 30m0s
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QGf3TaK9XuosCtvLrtA2Fr |
||
|---|---|---|
| .forgejo/workflows | ||
| gradle/wrapper | ||
| src/main | ||
| .gitattributes | ||
| .gitignore | ||
| build.gradle.kts | ||
| CHANGELOG.md | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
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 :
/regionaffiche la région où vous êtes, dans l'esprit du/tpsde 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 sLa 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).
/regionlit 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 pendanton-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).