diff --git a/src/main/java/fr/luc/gamingcore/command/GuildCommands.java b/src/main/java/fr/luc/gamingcore/command/GuildCommands.java index 28d5955..b9fbc44 100644 --- a/src/main/java/fr/luc/gamingcore/command/GuildCommands.java +++ b/src/main/java/fr/luc/gamingcore/command/GuildCommands.java @@ -781,13 +781,14 @@ public class GuildCommands { ) // ------------------------------------------------------------- - // Sous-commande : /guild color <#hex> + // Sous-commande : /guild color <#hex1> [hex2] // ------------------------------------------------------------- .subcommand(BetterMcCommands.subBuilder("color") - .description("Changer la couleur hexadécimale de votre guilde") - .aliases("couleur") + .description("Changer la couleur ou le dégradé de votre guilde") + .aliases("couleur", "setcolor") .playerOnly() - .argument(Arguments.string("hex").description("Code couleur hexadécimal (ex: #FF5555)")) + .argument(Arguments.string("hex").description("Code couleur hexadécimal (ex: #00C9FF ou #00C9FF:#92FE9D)")) + .argument(Arguments.string("hex2").optional().description("Code secondaire pour dégradé (ex: #92FE9D)")) .validate(context -> { if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) { return ValidationResult.invalid(msg.get("guild.not_in_guild")); @@ -796,8 +797,11 @@ public class GuildCommands { if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.MANAGE_GUILD)) { return ValidationResult.invalid("Votre rang ne vous autorise pas à modifier les informations de la guilde."); } - if (!context.getString("hex").matches("^#[0-9a-fA-F]{6}$")) { - return ValidationResult.invalid("Format de couleur invalide ! Utilisez un code hexadécimal à 6 caractères (ex: #00FFAA ou #FF5555)."); + String hex = context.getString("hex"); + Optional hex2Opt = context.getOptional("hex2", String.class); + String full = (hex2Opt.isPresent() && !hex2Opt.get().isEmpty()) ? hex + ":" + hex2Opt.get() : hex; + if (!full.matches("^#[0-9a-fA-F]{6}(:#[0-9a-fA-F]{6})*$")) { + return ValidationResult.invalid("Format de couleur invalide ! Utilisez un code hexadécimal (ex: #00FFAA) ou un dégradé (ex: #00C9FF #92FE9D ou #00C9FF:#92FE9D)."); } return ValidationResult.valid(); }) @@ -805,8 +809,10 @@ public class GuildCommands { Player player = context.getPlayer(); Guild guild = guildManager.getGuildByPlayer(player.getUniqueId()); String hex = context.getString("hex"); + Optional hex2Opt = context.getOptional("hex2", String.class); + String full = (hex2Opt.isPresent() && !hex2Opt.get().isEmpty()) ? hex + ":" + hex2Opt.get() : hex; - GuildResult result = guildManager.setGuildColor(player, guild, hex); + GuildResult result = guildManager.setGuildColor(player, guild, full); if (result.isSuccess()) { context.replySuccess(result.getMessage()); } else { diff --git a/src/main/java/fr/luc/gamingcore/hook/GamingCorePlaceholderExpansion.java b/src/main/java/fr/luc/gamingcore/hook/GamingCorePlaceholderExpansion.java index 0432158..b2623bb 100644 --- a/src/main/java/fr/luc/gamingcore/hook/GamingCorePlaceholderExpansion.java +++ b/src/main/java/fr/luc/gamingcore/hook/GamingCorePlaceholderExpansion.java @@ -111,12 +111,14 @@ public class GamingCorePlaceholderExpansion extends PlaceholderExpansion { case "guild_formatted_tag": case "formatted_tag": - // Format HEX compatible TAB et EssentialsChat (ex: �C9FF[VAL]&r ) - return "&" + guild.getColor() + "[" + guild.getTag() + "]&r "; - case "guild_chat_tag": case "chat_tag": - return "&" + guild.getColor() + "[" + guild.getTag() + "]&r "; + String hex = guild.getColor(); + if (hex.contains(":")) { + String[] parts = hex.split(":"); + return "{" + parts[0] + ">}[" + guild.getTag() + "]{" + parts[parts.length - 1] + "<}&r "; + } + return "&" + hex + "[" + guild.getTag() + "]&r "; case "guild_rank": case "rank": diff --git a/src/main/java/fr/luc/gamingcore/manager/GuildManager.java b/src/main/java/fr/luc/gamingcore/manager/GuildManager.java index c8fe09d..6f3d89b 100644 --- a/src/main/java/fr/luc/gamingcore/manager/GuildManager.java +++ b/src/main/java/fr/luc/gamingcore/manager/GuildManager.java @@ -589,8 +589,8 @@ public class GuildManager { return GuildResult.failure("Votre rang ne vous autorise pas à modifier les paramètres de la guilde."); } - if (!hexColor.matches("^#[0-9a-fA-F]{6}$")) { - return GuildResult.failure("Format de couleur invalide. Utilisez un code hexadécimal valide à 6 caractères (ex: #00FFAA ou #FF5555)."); + if (!hexColor.matches("^#[0-9a-fA-F]{6}(:#[0-9a-fA-F]{6})*$")) { + return GuildResult.failure("Format de couleur invalide. Utilisez un code hexadécimal valide (ex: #00FFAA) ou un dégradé (ex: #00C9FF:#92FE9D)."); } guild.setColor(hexColor); @@ -601,7 +601,8 @@ public class GuildManager { nametagManager.updateGuild(guild); } - return GuildResult.success("La couleur de la guilde a été changée pour " + hexColor + " !"); + String displayTag = guild.getFormattedTag(); + return GuildResult.success("La couleur de la guilde a été mise à jour : " + displayTag + " !"); } public GuildResult setGuildTag(Player actor, Guild guild, String newTag) { diff --git a/src/main/java/fr/luc/gamingcore/model/Guild.java b/src/main/java/fr/luc/gamingcore/model/Guild.java index 6c1960e..7b56b05 100644 --- a/src/main/java/fr/luc/gamingcore/model/Guild.java +++ b/src/main/java/fr/luc/gamingcore/model/Guild.java @@ -137,22 +137,30 @@ public class Guild { } /** - * Obtient le tag formaté avec la couleur hexadécimale de la guilde (MiniMessage). + * Obtient le tag formaté avec la couleur ou le dégradé hexadécimal de la guilde (MiniMessage). * - * @return Le tag stylisé (ex: "[IMP]"). + * @return Le tag stylisé (ex: "[IMP]" ou "[IMP]"). */ public String getFormattedTag() { if (tag == null || tag.isEmpty()) return ""; - return "[" + tag + "]"; + String c = getColor(); + if (c.contains(":")) { + return "[" + tag + "]"; + } + return "[" + tag + "]"; } /** - * Obtient le nom formaté en gras avec la couleur hexadécimale de la guilde. + * Obtient le nom formaté en gras avec la couleur ou le dégradé hexadécimal de la guilde. * * @return Le nom stylisé. */ public String getFormattedName() { - return "" + name + ""; + String c = getColor(); + if (c.contains(":")) { + return "" + name + ""; + } + return "" + name + ""; } /**