feat(messages): add messages.yml, MessageManager, validation rules and double-confirmation for guild creation & disband

This commit is contained in:
2026-08-20 18:03:17 +02:00
parent 1f0d469dd3
commit 62b239b9cd
5 changed files with 451 additions and 124 deletions
+89
View File
@@ -0,0 +1,89 @@
# ==========================================================
# GAMINGCORE - FICHIER DE MESSAGES
# Format : Kyori Adventure MiniMessage (Gradients, Hex, etc.)
# ==========================================================
prefix: "<gradient:#00C9FF:#92FE9D>[Guilde]</gradient> <dark_gray>»</dark_gray> <gray>"
general:
only_players: "<red>Cette commande est réservée aux joueurs en jeu.</red>"
no_permission: "<red>Vous n'avez pas la permission requise.</red>"
player_not_found: "<red>Joueur introuvable ou hors ligne.</red>"
reloaded: "<green>La configuration et les messages ont été rechargés avec succès !</green>"
guild:
already_in_guild: "<red>Vous appartenez déjà à une guilde.</red>"
not_in_guild: "<red>Vous n'appartenez à aucune guilde.</red>"
not_member: "<red>Ce joueur n'est pas membre de votre guilde.</red>"
guild_not_found: "<red>La guilde <yellow>{guild}</yellow> est introuvable.</red>"
invalid_name: "<red>Le nom de guilde doit comporter entre 3 et 16 caractères alphanumériques.</red>"
name_taken: "<red>Une guilde portant le nom <yellow>{guild}</yellow> existe déjà.</red>"
creation:
insufficient_funds: "<red>Fonds insuffisants pour créer une guilde. Requis : <yellow>{cost}</yellow>.</red>"
chunk_already_claimed: "<red>Le chunk où vous vous trouvez est déjà revendiqué par une guilde.</red>"
confirm_prompt: "<gradient:#00C9FF:#92FE9D>[Guilde]</gradient> <yellow>Création de la guilde</yellow> <white><bold>{guild}</bold></white> <dark_gray>[{tag}]</dark_gray> :\n<gray>• Coût : <yellow>{cost}</yellow>\n• Territoire initial : <aqua>{world} ({chunk_x}, {chunk_z})</aqua>\n<gold>⚠ Exécutez à nouveau la commande pour confirmer la création !</gold>"
success: "<green>Félicitations ! La guilde <white><bold>{guild}</bold></white> <dark_gray>[{tag}]</dark_gray> a été fondée !</green>\n<gray>• Coût prélevé : <yellow>{cost}</yellow>\n• Chunk initial revendiqué : <aqua>{world} [{chunk_x}, {chunk_z}]</aqua>\n• Point de ralliement (Home) défini à votre position.</gray>"
disband:
not_leader: "<red>Seul le Chef de la guilde peut dissoudre la guilde.</red>"
confirm_prompt: "<red><bold>⚠ ATTENTION :</bold> Vous allez dissoudre définitivement la guilde <white>{guild}</white> et libérer tous ses territoires.\n<gold>Exécutez à nouveau <yellow>/guild disband</yellow> pour confirmer.</gold></red>"
success: "<yellow>La guilde <white><bold>{guild}</bold></white> a été dissoute avec succès.</yellow>"
leave:
leader_cannot_leave: "<red>En tant que Chef, vous ne pouvez pas quitter la guilde. Transférez le lead ou dissolvez la guilde.</red>"
success: "<yellow>Vous avez quitté la guilde <white>{guild}</white>.</yellow>"
kick:
cannot_kick_self: "<red>Vous ne pouvez pas vous expulser vous-même. Utilisez <yellow>/guild leave</yellow>.</red>"
insufficient_rank: "<red>Vous ne pouvez pas expulser un membre ayant un rang supérieur ou égal au vôtre.</red>"
no_permission: "<red>Votre rang ne vous autorise pas à expulser des membres.</red>"
success: "<yellow><white>{player}</white> a été expulsé de la guilde.</yellow>"
target_notify: "<red>Vous avez été expulsé de la guilde <yellow>{guild}</yellow>.</red>"
invite:
no_permission: "<red>Votre rang ne vous autorise pas à envoyer des invitations.</red>"
cannot_invite_self: "<red>Vous ne pouvez pas vous inviter vous-même.</red>"
target_already_in_guild: "<red><white>{player}</white> appartient déjà à une guilde.</red>"
sent: "<green>Invitation envoyée à <white>{player}</white> (Expire dans <yellow>{seconds}s</yellow>).</green>"
received: "<gradient:#00C9FF:#92FE9D>[Guilde]</gradient> Vous avez été invité à rejoindre la guilde <white><bold>{guild}</bold></white> par <yellow>{sender}</yellow> !\n<gray>Tapez <yellow>/guild join {guild}</yellow> pour accepter.</gray>"
no_pending_invite: "<red>Vous n'avez aucune invitation valide en attente pour la guilde <yellow>{guild}</yellow>.</red>"
accepted: "<green>Le joueur <white>{player}</white> a rejoint la guilde !</green>"
claim:
no_permission: "<red>Votre rang ne vous autorise pas à revendiquer des territoires.</red>"
already_claimed: "<red>Ce chunk est déjà revendiqué.</red>"
insufficient_bank: "<red>La banque de guilde n'a pas assez d'argent (Requis : <yellow>{cost}</yellow>, Solde : <green>{balance}</green>).</red>"
success: "<green>Chunk revendiqué avec succès pour <yellow>{cost}</yellow> ! (Total : <aqua>{count}</aqua> chunks)</green>"
unclaim_no_permission: "<red>Votre rang ne vous autorise pas à abandonner des territoires.</red>"
unclaim_not_owned: "<red>Ce chunk n'appartient pas à votre guilde.</red>"
unclaim_last_chunk: "<red>Vous ne pouvez pas abandonner le dernier territoire de votre guilde.</red>"
unclaim_success: "<yellow>Le chunk a été libéré.</yellow>"
bank:
deposit_no_permission: "<red>Votre rang ne vous autorise pas à déposer dans la banque.</red>"
deposit_insufficient_player: "<red>Vous n'avez pas assez d'argent sur votre compte personnel.</red>"
deposit_success: "<green>Vous avez déposé <yellow>{amount}</yellow> dans la banque de guilde ! (Nouveau solde : <green>{balance}</green>)</green>"
withdraw_no_permission: "<red>Votre rang ne vous autorise pas à retirer de l'argent de la banque.</red>"
withdraw_insufficient_bank: "<red>Le solde de la banque de guilde est insuffisant (Solde actuel : <yellow>{balance}</yellow>).</red>"
withdraw_success: "<green>Vous avez retiré <yellow>{amount}</yellow> de la banque de guilde.</green>"
home:
set_no_permission: "<red>Votre rang ne vous autorise pas à modifier le home de guilde.</red>"
set_must_be_in_claim: "<red>Le point de ralliement doit obligatoirement être situé sur un chunk de la guilde !</red>"
set_success: "<green>Le point de ralliement (Home) a été mis à jour avec succès !</green>"
teleport_no_permission: "<red>Votre rang ne vous autorise pas à vous téléporter au home de guilde.</red>"
not_set: "<red>Aucun home n'est défini pour votre guilde.</red>"
teleport_success: "<green>Téléportation au point de ralliement de guilde réussie !</green>"
protection:
territory_enter_own: "<gray>Territoire de guilde : </gray><green><bold>{guild}</bold></green> <dark_gray>[{tag}]</dark_gray>"
territory_enter_other: "<gray>Territoire étranger : </gray><yellow><bold>{guild}</bold></yellow> <dark_gray>[{tag}]</dark_gray>"
territory_leave: "<gray>Vous entrez en <green>Zone Libre</green> (Wilderness).</gray>"
cannot_break: "<red>⛔ Ce territoire appartient à la guilde <yellow>{guild}</yellow> !</red>"
rank_cannot_break: "<red>Votre rang de guilde ne vous autorise pas à casser des blocs ici.</red>"
cannot_build: "<red>⛔ Ce territoire appartient à la guilde <yellow>{guild}</yellow> !</red>"
rank_cannot_build: "<red>Votre rang de guilde ne vous autorise pas à poser des blocs ici.</red>"
cannot_interact: "<red>⛔ Ce territoire appartient à la guilde <yellow>{guild}</yellow> !</red>"
rank_cannot_container: "<red>Votre rang ne vous autorise pas à ouvrir les conteneurs de guilde.</red>"
rank_cannot_interact: "<red>Votre rang ne vous autorise pas à utiliser ces mécanismes.</red>"