> For the complete documentation index, see [llms.txt](https://wiki.novadev.ovh/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://wiki.novadev.ovh/novashard/11.-changelog.md).

# 11. changelog

Toutes les modifications notables de NovaShard sont documentées ici.

{% updates format="full" %}
{% update date="2026-05-13" %}

## 2026.05.13 (1.0.1 #3)

#### Ajouts

* **Pagination de `/novashard configure`** : la liste des paramètres configurables est désormais affichée par pages de 8 entrées
  * `/novashard configure` → page 1
  * `/novashard configure 2` → page 2
  * Navigation avec indication `← page précédente` / `page suivante →` en bas de chaque page
  * Le comportement de lecture/écriture (`/novashard configure <clé> [valeur]`) est inchangé
    {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.1 #2)

#### Ajouts

* **Tab completion `/novashard`** : les suggestions incluent désormais toutes les commandes du plugin (`afk`, `quitafk`, `transfer`, `store`, `leaderboard`, `setafk`, `afkremove`) en plus des sous-commandes de `/novashard`
  {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.1 #1)

#### Ajouts

* **`/shards set <joueur> <montant> [-s]`** : nouvelle sous-commande admin pour redéfinir le solde exact d'un joueur
  * Différent de `give`/`remove` qui ajoutent ou retirent - ici le solde est forcé à la valeur indiquée
  * Option `-s` (silent) : le joueur ciblé ne reçoit pas de message de notification
* **`/novashard configure [page|clé] [valeur]`** : nouvelle sous-commande admin pour modifier la configuration en jeu sans éditer de fichier
  * 19 paramètres configurables (gains, transferts, boutique, classement, grades, régions...)
  * Sauvegarde immédiate dans `config.yml`
* **Tab completion `/shards`** : suggestions intelligentes au fur et à mesure de la saisie
  * Arg 1 : sous-commandes (`balance`, `give`, `remove`, `set`) + toutes les commandes du plugin en rappel visuel
  * Arg 2 : joueurs en ligne (pour `give`, `remove`, `set`)
  * Arg 3 : montants suggérés (`1`, `10`, `50`, `100`, `500`, `1000`)
  * Arg 4 : `-s` (pour `set`)
* **Tab completion `/novashard`** : suggestions pour `reload`, `configure`, `about`, `help`
  * Sur `configure` : liste des clés configurables, puis `true`/`false` pour les booléens et valeur actuelle pour les nombres
* **Tab completion `/store`** : déjà présente, désormais documentée

#### Modifications

* **Message about** : refonte visuelle
  * Suppression des séparateurs `====`
  * Arguments obligatoires `<arg>` en jaune (`&e`), arguments facultatifs `[arg]` en gris (`&7`)
  * Couleurs générales harmonisées : jaune (`&e`), bleu (`&b`), vert (`&a`)
  * Nouvelle entrée `set` et `configure` dans la section admin
* **Sous-commandes** : ajout de `set` dans `subcommands.shards` et `configure` dans `subcommands.novashard` dans `config.yml`
  {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #9)

#### Corrections

* **Optimisation du plugin**
  {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #8)

#### Ajouts

* **Strip des classes serveur post-ProGuard** : ajout d'un step `maven-antrun` entre ProGuard et la signature JAR qui supprime automatiquement toutes les classes injectées par ProGuard (`org/bukkit/**`, `org/spigotmc/**`, `net/bstats/**`, `net/kyori/**`) - réduit la taille du JAR de \~18 Mo à \~2 Mo

#### Corrections

* **Classes `org.bukkit` dans le JAR final** : ProGuard 7.6.1 injecte les jars de librairies dans l'output malgré `-libraryjars` lorsque `-dontshrink` est actif - corrigé via le step antrun de strip
* **`SecurityException` sur Paper 1.21.x** : Paper transforme les `.class` au chargement, ce qui invalide la vérification SHA des entries signées
  * Ajout d'une vérification en deux étapes : présence des fichiers `.SF`/`.RSA`/`.DSA` sans vérification des bytes (étape 1), puis extraction du certificat avec `JarFile(verify=true)` et rattrapage de la `SecurityException` via fallback PKCS7 (étape 2)
    {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #7)

#### Corrections

* **PlaceholderAPI absent - niveau de log** : le message indiquant que PlaceholderAPI est introuvable était loggé en `WARNING` alors qu'il s'agit d'une dépendance optionnelle - passé en `INFO`
  {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #6)

#### Corrections

* **EnumMap NPE au démarrage** : ProGuard supprimait les méthodes `values()` et `valueOf()` des enums, provoquant un `NullPointerException` dans `EnumMap.<init>()` - ajout de la règle `-keepclassmembers enum *`
* **Driver SQLite obfusqué** : le package `org.sqlite.*` n'était pas couvert par la relocation `org.xerial → com.novashard.libs.sqlite` et se retrouvait obfusqué par ProGuard - ajout de `-keep class org.sqlite.** { *; }`
  {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #5)

#### Corrections

* **Vérification de signature JAR** : correction d'une erreur `SHA-384 digest error` au démarrage sur Paper 1.20.5+
  * Paper recopie le JAR dans un sous-dossier avant de le charger (ex. `.paper-remapped/`) - l'ancienne détection était trop fragile
  * Le plugin résout désormais toujours le JAR original directement depuis le dossier `plugins/`, quelle que soit la version de Paper
    {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #4)

#### Ajouts

* **Noms de sous-commandes configurables** : toutes les sous-commandes peuvent être renommées depuis `config.yml` (section `subcommands`), sans toucher au code - nécessite un redémarrage
  * `/shards` : `balance`, `give`, `remove`
  * `/novashard` : `reload`
  * `/store` : `add`, `remove`, `edit`, `editname`, `editlore`
* Les sous-commandes `about` et `help` restent fixes (non configurables par conception)
  {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #3)

#### Ajouts

* **`/shards balance`** : nouvelle sous-commande pour afficher son solde
* **Noms de commandes configurables** : toutes les commandes peuvent être renommées depuis `config.yml` (section `commands`), sans toucher au code - nécessite un redémarrage

#### Modifications

* Les commandes sont désormais enregistrées dynamiquement via le CommandMap de Bukkit - la section `commands` de `plugin.yml` a été retirée
  {% endupdate %}

{% update date="2026-05-13" %}

## 2026.05.13 (1.0.0 #2)

#### Corrections

* **Erreur SLF4J** : suppression de `slf4j-api` du JAR shadé pour éliminer les avertissements `StaticLoggerBinder` au démarrage
* **Log backend** : le message `Connecté au backend SQLITE` a été retiré de la console au démarrage
  {% endupdate %}

{% update date="2026-05-12" %}

## 2026.05.12 (1.0.0 #1)

#### Version initiale

* Système de monnaie virtuelle (shards) avec stockage SQLite et MySQL
* Gains automatiques : temps de jeu, kills PvP, mode AFK
* Gains par région WorldGuard *(optionnel)*
* Gains par grade basés sur les permissions *(optionnel)*
* Récompenses quotidiennes avec système de série et multiplicateur
* Boutique GUI configurable en jeu
* Transferts de shards entre joueurs avec interface de confirmation
* Classement paginé
* Intégration PlaceholderAPI
* Tous les messages configurables via `messages.yml`
* Configuration entièrement en français
  {% endupdate %}
  {% endupdates %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://wiki.novadev.ovh/novashard/11.-changelog.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
