Les commandes voteparty.commands s'executaient une seule fois cote
console sans substitution de %player%, ce qui envoyait le placeholder
brut aux plugins de recompense (ex. "excellentcrates key give %player%
epic 5" -> "Joueur introuvable"). Les commandes contenant %player% sont
maintenant executees une fois par joueur en ligne ; les commandes sans
placeholder (deja globales, ex. "goldencrates broadcast_give ...")
gardent leur comportement precedent.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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>
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>
Le scoreboard du joueur affichait %current%/%required% en clair car
seule une API Java existait, pas de placeholders texte. Enregistre
automatiquement si PlaceholderAPI est present (softdepend) :
voteparty_current, voteparty_required, voteparty_remaining,
maintenance, pending (rafraichi en arriere-plan, async).
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>
Optionnel (rewards.broadcast, desactive par defaut), declenche sur
vote direct et sur /claim, avec %player% et %amount%.
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>