Système de classement compétitif (Elo + leaderboard public) ajouté par-dessus le datapack Flytre Bingo pour Minecraft Fabric 1.21.x.
Note : ce projet a été développé avec l'assistance de Claude (IA Anthropic). Le code a été relu et validé manuellement.
Le datapack Flytre Bingo original Lien : https://www.flytre.net/bingo annonce un gagnant dans le chat puis reset — sans aucune persistance. Ce projet ajoute :
- Un Elo par mode de jeu (normal, speed, nether, lockout, manhunt, blackout)
- Un leaderboard public trié par victoires (toutes modes) ou par Elo (par mode)
- Une page de profil par joueur avec historique des parties et évolution Elo
- Un système de compte pour lier son pseudo Minecraft à un profil web
- Un affichage du delta Elo en chat à la fin de chaque partie
Trois composants qui fonctionnent ensemble :
ranked_system/
├── backend/ Node.js + Express + SQLite (better-sqlite3)
│ Authentification Argon2id, JWT, HMAC-SHA256 pour le mod
├── mod/ Mod Fabric (Java 21)
│ Commandes /link et /rankedreport, communication HMAC avec le backend
└── datapack/ ranked_hooks — datapack companion appelé par le bingo pack
Déclenche rankedreport start/end au bon moment
index.html Frontend vanilla HTML/CSS/JS (GitHub Pages)
js/
css/
| Composant | Technologie |
|---|---|
| Backend | Node.js, Express, better-sqlite3, Argon2id, JWT |
| Mod | Java 21, Fabric API, Loom |
| Frontend | HTML/CSS/JS vanilla, pas de framework |
| Hébergement | Hetzner CX33 (backend + MC), GitHub Pages (frontend) |
| Mode | Hook datapack |
|---|---|
| Normal | ranked:on_start_normal |
| Speed | ranked:on_start_speed |
| Nether | ranked:on_start_nether |
| Lockout | ranked:on_start_lockout |
| Manhunt | ranked:on_start_manhunt |
| Blackout | ranked:on_start_blackout |
- Les requêtes mod → backend sont signées HMAC-SHA256 (
{timestamp}.{nonce}.{body}) - Les mots de passe sont hashés avec Argon2id (paramètres OWASP)
- Les tokens JWT (1h) et refresh tokens (30j, stockés hashés en DB) sont rotés à chaque usage
- Le frontend ne fait jamais
innerHTMLsur des données utilisateur
Ce projet est partagé librement.
- ✅ Copie, modification et usage personnel autorisés
- ✅ Partage avec attribution autorisé
- ❌ Usage commercial interdit sans accord explicite de l'auteur
Partiellement généré avec l'assistance de Claude (Anthropic). Utilisation soumise aux mêmes conditions.