chore: downgrade compile target to Java 11
Uses <release>11</release> in maven-compiler-plugin (recommended over source/target to guarantee bytecode and API surface match Java 11). Code changes to drop Java 12-16 features: - records (TeamRanking, PlayerRanking, internal tuples in SqliteTeamRepository) become hand-written immutable classes; same accessor names (rank()/team()/score()/...) so call sites are unchanged. - instanceof X x pattern matching becomes classic instanceof + cast in CommandContext.requirePlayer and Database.normalize. - switch expressions with -> arrows become classic switch + break, or if/else chains, in BaseCommand.handleResult, ArgumentTypes.BOOLEAN and TeamScoreSubCommand.execute. docs/setup.md, features.md and decisions.md updated to reflect Java 11. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -323,6 +323,30 @@ Format léger : une décision = un titre + contexte + choix + raison.
|
||||
même fichier SQLite (par défaut `<dataFolder>/crcore.db`) ; le préfixe
|
||||
isole proprement.
|
||||
|
||||
## 2026-06-09 — Bascule Java 16 → Java 11 (révision)
|
||||
|
||||
- **Révision** de la décision "Java 16" du 2026-06-08.
|
||||
- **Choix** : `maven.compiler.source/target = 11`. Le code se compile et
|
||||
s'exécute sur tout JDK 11+.
|
||||
- **Raison** : Java 11 reste très répandu côté serveurs Bukkit/Paper 1.16.5,
|
||||
et le coût de revenir en arrière est faible. On garde une cible plus
|
||||
conservatrice pour maximiser la compatibilité d'exécution.
|
||||
- **Conséquences sur le code** :
|
||||
- Les `record` (Java 16) → classes immutables manuelles, avec mêmes noms
|
||||
d'accesseurs (`rank()`, `team()`, etc.) pour ne pas casser l'API
|
||||
publique. Concerné : `TeamRanking`, `PlayerRanking`, plus deux tuples
|
||||
internes (`TeamRow`, `MemberRow`) dans `SqliteTeamRepository`.
|
||||
- Le **pattern matching `instanceof X x`** (Java 16) → classique
|
||||
`instanceof X` + cast explicite. Concerné : `CommandContext.requirePlayer`,
|
||||
`Database.normalize`.
|
||||
- Les **switch expressions à flèche** (`case X -> ...`, Java 14) →
|
||||
`switch (...) { case X: ...; break; }` classique, ou chaînes if/else.
|
||||
Concerné : `BaseCommand.handleResult`, `ArgumentTypes.BOOLEAN.parse`,
|
||||
`TeamScoreSubCommand.execute`.
|
||||
- **Ce qui reste utilisé de Java 11** : `var` (Java 10+), `List.of()` /
|
||||
`Map.of()` (Java 9+), interfaces avec méthodes `default`, lambdas, method
|
||||
references.
|
||||
|
||||
## 2026-06-09 — Enregistrement dynamique de la commande (plugin.yml optionnel)
|
||||
|
||||
- **Choix** : `CRCore.registerCommand()` tente d'abord
|
||||
|
||||
+2
-2
@@ -111,7 +111,7 @@ Le service expose deux types de classements :
|
||||
| `getTopRankingByScore(name, n)` | Top N par score. |
|
||||
| `getTopGlobalRanking(n)` | Top N global. |
|
||||
|
||||
Le résultat est une `List<TeamRanking>` (record Java 16) avec `rank` (1-based),
|
||||
Le résultat est une `List<TeamRanking>` (classe immutable, accesseurs `rank()`/`team()`/`score()`) avec `rank` (1-based),
|
||||
`team` et `score`. Tiebreaker : ordre alphabétique sur le nom de l'équipe
|
||||
(insensible à la casse).
|
||||
|
||||
@@ -228,7 +228,7 @@ les méthodes de scoring (`getScore`, `addScore`, `setScore`, `resetScore`,
|
||||
|
||||
### `PlayerRanking`
|
||||
|
||||
Record Java 16 : `record PlayerRanking(int rank, PlayerProfile profile, int score)`.
|
||||
Classe immutable : `PlayerRanking(int rank, PlayerProfile profile, int score)` avec accesseurs `rank()`/`profile()`/`score()`.
|
||||
Mêmes règles que `TeamRanking` (rank 1-based, tri descendant, tiebreaker par
|
||||
UUID pour rester déterministe).
|
||||
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
|
||||
- **Type** : librairie Java (`jar`) — pas un plugin Bukkit
|
||||
- **artifactId Maven** : `CR-Core`
|
||||
- **Build** : Maven, Java 16
|
||||
- **Build** : Maven, Java 11
|
||||
- **API serveur (provided)** : Paper 1.16.5
|
||||
- **SQLite (compile)** : `org.xerial:sqlite-jdbc:3.45.3.0`
|
||||
- **Package racine** : `fr.luc.crcore`
|
||||
|
||||
Reference in New Issue
Block a user