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 + "";
}
/**