Trois nouveaux ecrans GUI navigables depuis /votemenu :
- Menu principal : tete du joueur + progression VoteParty, boutons vers
le menu de vote, la reclamation et (ops) l'administration.
- Menu de reclamation : equivalent visuel de /claim, affiche le nombre
de votes en attente (resolu en async) et permet de les reclamer d'un clic.
- Menu d'administration (permission votenetwork.admin) : bascule le mode
maintenance sans passer par la commande texte.
Extraction de la logique de reclamation dans ClaimAction, partagee entre
/claim et le menu visuel.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Nouvelle commande /votegui : affiche la progression du VoteParty et un
item par site de vote configure. Un clic ferme le GUI et envoie un
message chat cliquable vers l'URL du site (Bukkit ne permet pas
d'ouvrir un navigateur directement depuis un clic d'inventaire).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
14 tests couvrant VoteConfig (Spigot + Velocity) et YamlPendingVoteStore
(Spigot + Velocity) : valeurs par defaut, portee per-server/global,
merge de config sans ecraser l'existant, incrementation/reset des
votes en attente, colorisation des messages.
Mockito pour VoteConfig/YamlPendingVoteStore cote Spigot (mock de
VoteNetworkSpigot, pas besoin de serveur Bukkit reel). Cote Velocity,
tests directs sans framework (classes deja decouplees de Velocity-API).
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
L'ancien merge lisait les defauts via Properties.load(), qui jette
tous les commentaires : les nouvelles cles ajoutees automatiquement
(ex: pending-votes.scope) arrivaient nues, sans explication, sous un
header generique confus.
Le merge copie desormais le bloc texte entier (commentaires inclus)
du config.properties par defaut, verbatim, pour chaque cle manquante.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
pending-votes.scope (config.properties Velocity) = global (defaut,
comportement historique) ou per-server. En per-server, un vote hors
ligne incremente le compteur de chaque serveur de direct-vote.servers
independamment (nouvelle table nb_votes_attente_serveur) ; /claim sur
un serveur ne remet a 0 que ce serveur-la. Necessite server-name
(config.yml) et storage.pending-votes-scope assortis cote Spigot.
Ajoute LICENSE (MIT) et credit Sar_Tron (plugin.yml, @Plugin Velocity,
pom parent, README) en vue de la publication publique.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Une mise a jour du plugin qui ajoute des cles de config n'obligeait
pas a editer config.yml/config.properties a la main : les valeurs
par defaut restaient invisibles pour l'admin. Desormais, au demarrage,
les cles manquantes sont ajoutees dans le fichier existant sans
toucher aux valeurs deja personnalisees.
Spigot : merge via YamlConfiguration (perd les commentaires au
prochain rewrite, limitation Bukkit). Velocity : simple ajout de
lignes en fin de fichier, commentaires existants preserves.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Velocity envoyait le paquet direct des qu'un joueur etait en ligne,
sans verifier que le serveur courant (ex: un lobby) avait bien
VoteNetwork-Spigot installe. Message silencieusement perdu dans ce cas.
Ajoute direct-vote.servers (config.properties) : liste blanche des
serveurs equipes du plugin. Hors de cette liste, le vote est traite
comme "joueur hors ligne" et stocke en base au lieu d'etre envoye en
direct.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Projet destine a etre open source, plus aucune reference a "NorthBlue"
dans le code, les artifactId Maven ou les config par defaut.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reception directe en jeu (plugin messaging) ou stockage des votes en
attente (MySQL ou YAML configurable), /claim, VoteParty local par
serveur, mode maintenance, API publique pour scoreboard/GUI.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>