fix(commands): fix /guild info and /guild members fallback for players without guilds

This commit is contained in:
2026-08-20 18:38:38 +02:00
parent ff810608b3
commit fdb5e7b484
@@ -12,7 +12,6 @@ import fr.luc.gamingcore.util.MessageManager;
import fr.luc.gamingcore.util.TextUtil;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.World;
import org.bukkit.entity.Player;
import java.time.Duration;
@@ -123,14 +122,14 @@ public class GuildCommands {
return ValidationResult.valid();
})
// Confirmation préalable avec rappel
.requireConfirmation(Duration.ofSeconds(20))
.executes(context -> {
Player player = context.getPlayer();
String name = context.getString("nom");
Optional<String> tagOpt = context.getOptional("tag", String.class);
String tag = tagOpt.orElse(name.length() <= 4 ? name.toUpperCase() : name.substring(0, 4).toUpperCase());
String tag = tagOpt.filter(s -> !s.trim().isEmpty())
.orElse(name.length() <= 4 ? name.toUpperCase() : name.substring(0, 4).toUpperCase());
Location loc = player.getLocation();
Chunk chunk = loc.getChunk();
@@ -159,15 +158,19 @@ public class GuildCommands {
.description("Dissoudre définitivement votre guilde")
.aliases("delete", "supprimer")
.playerOnly()
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
if (g == null) return false;
if (g == null) return ValidationResult.invalid(msg.get("guild.not_in_guild"));
GuildRank leaderRank = g.getLeaderRank();
GuildMember member = g.getMember(context.getPlayer().getUniqueId());
return member != null && leaderRank != null && member.getRankId().equalsIgnoreCase(leaderRank.getId());
}, msg.get("guild.disband.not_leader"))
if (member == null || leaderRank == null || !member.getRankId().equalsIgnoreCase(leaderRank.getId())) {
return ValidationResult.invalid(msg.get("guild.disband.not_leader"));
}
return ValidationResult.valid();
})
.requireConfirmation(Duration.ofSeconds(15))
.executes(context -> {
Player player = context.getPlayer();
@@ -191,16 +194,23 @@ public class GuildCommands {
.description("Inviter un joueur connecté à rejoindre votre guilde")
.playerOnly()
.argument(Arguments.player("joueur").description("Joueur cible"))
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
return g != null && g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.INVITE);
}, msg.get("guild.invite.no_permission"))
.validate(context -> !context.getTargetPlayer("joueur").getUniqueId().equals(context.getPlayer().getUniqueId()),
msg.get("guild.invite.cannot_invite_self"))
.validate(context -> !guildManager.isInGuild(context.getTargetPlayer("joueur").getUniqueId()),
msg.get("guild.invite.target_already_in_guild", "{player}", ""))
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.INVITE)) {
return ValidationResult.invalid(msg.get("guild.invite.no_permission"));
}
Player target = context.getTargetPlayer("joueur");
if (target.getUniqueId().equals(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.invite.cannot_invite_self"));
}
if (guildManager.isInGuild(target.getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.invite.target_already_in_guild", "{player}", target.getName()));
}
return ValidationResult.valid();
})
.executes(context -> {
Player sender = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(sender.getUniqueId());
@@ -227,8 +237,12 @@ public class GuildCommands {
.aliases("accept", "rejoindre")
.playerOnly()
.argument(Arguments.string("guilde").description("Nom de la guilde"))
.validate(context -> !guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.already_in_guild"))
.validate(context -> {
if (guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.already_in_guild"));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
String guildName = context.getString("guilde");
@@ -262,8 +276,20 @@ public class GuildCommands {
.description("Quitter votre guilde actuelle")
.aliases("quitter")
.playerOnly()
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
if (g != null) {
GuildRank leaderRank = g.getLeaderRank();
GuildMember member = g.getMember(context.getPlayer().getUniqueId());
if (leaderRank != null && member != null && member.getRankId().equalsIgnoreCase(leaderRank.getId())) {
return ValidationResult.invalid(msg.get("guild.leave.leader_cannot_leave"));
}
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -286,8 +312,28 @@ public class GuildCommands {
.description("Expulser un membre de votre guilde")
.playerOnly()
.argument(Arguments.player("joueur").description("Joueur à expulser"))
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.KICK)) {
return ValidationResult.invalid(msg.get("guild.kick.no_permission"));
}
Player target = context.getTargetPlayer("joueur");
if (target.getUniqueId().equals(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.kick.cannot_kick_self"));
}
if (!g.isMember(target.getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_member"));
}
GuildRank actorRank = g.getMemberRank(context.getPlayer().getUniqueId());
GuildRank targetRank = g.getMemberRank(target.getUniqueId());
if (actorRank != null && targetRank != null && targetRank.getPriority() >= actorRank.getPriority()) {
return ValidationResult.invalid(msg.get("guild.kick.insufficient_rank"));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -310,16 +356,27 @@ public class GuildCommands {
.subcommand(BetterMcCommands.subBuilder("claim")
.description("Revendiquer le chunk actuel pour votre guilde")
.playerOnly()
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
return g != null && g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.CLAIM);
}, msg.get("guild.claim.no_permission"))
.validate(context -> {
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.CLAIM)) {
return ValidationResult.invalid(msg.get("guild.claim.no_permission"));
}
Chunk chunk = context.getPlayer().getLocation().getChunk();
return !guildManager.isChunkClaimed(chunk.getWorld().getName(), chunk.getX(), chunk.getZ());
}, msg.get("guild.claim.already_claimed"))
if (guildManager.isChunkClaimed(chunk.getWorld().getName(), chunk.getX(), chunk.getZ())) {
return ValidationResult.invalid(msg.get("guild.claim.already_claimed"));
}
double price = guildManager.getPriceCalculator().calculateNextChunkPrice(g);
if (!g.hasBalance(price)) {
return ValidationResult.invalid(msg.get("guild.claim.insufficient_bank",
"{cost}", guildManager.getEconomyManager().format(price),
"{balance}", guildManager.getEconomyManager().format(g.getBalance())
));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -346,12 +403,23 @@ public class GuildCommands {
.subcommand(BetterMcCommands.subBuilder("unclaim")
.description("Libérer le chunk actuel")
.playerOnly()
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
return g != null && g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.UNCLAIM);
}, msg.get("guild.claim.unclaim_no_permission"))
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.UNCLAIM)) {
return ValidationResult.invalid(msg.get("guild.claim.unclaim_no_permission"));
}
Chunk chunk = context.getPlayer().getLocation().getChunk();
if (!g.isClaimed(chunk.getWorld().getName(), chunk.getX(), chunk.getZ())) {
return ValidationResult.invalid(msg.get("guild.claim.unclaim_not_owned"));
}
if (g.getClaimCount() <= 1) {
return ValidationResult.invalid(msg.get("guild.claim.unclaim_last_chunk"));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -375,8 +443,20 @@ public class GuildCommands {
.aliases("deposer", "don")
.playerOnly()
.argument(Arguments.decimal("montant", 1.0, 1000000000.0).description("Somme à déposer"))
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.BANK_DEPOSIT)) {
return ValidationResult.invalid(msg.get("guild.bank.deposit_no_permission"));
}
double amount = context.getDouble("montant");
if (!guildManager.getEconomyManager().has(context.getPlayer(), amount)) {
return ValidationResult.invalid(msg.get("guild.bank.deposit_insufficient_player"));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -402,8 +482,22 @@ public class GuildCommands {
.aliases("retirer")
.playerOnly()
.argument(Arguments.decimal("montant", 1.0, 1000000000.0).description("Somme à retirer"))
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.BANK_WITHDRAW)) {
return ValidationResult.invalid(msg.get("guild.bank.withdraw_no_permission"));
}
double amount = context.getDouble("montant");
if (!g.hasBalance(amount)) {
return ValidationResult.invalid(msg.get("guild.bank.withdraw_insufficient_bank",
"{balance}", guildManager.getEconomyManager().format(g.getBalance())
));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -426,22 +520,24 @@ public class GuildCommands {
.subcommand(BetterMcCommands.subBuilder("sethome")
.description("Définir le home de guilde à votre position")
.playerOnly()
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
return g != null && g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.SET_HOME);
}, msg.get("guild.home.set_no_permission"))
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.SET_HOME)) {
return ValidationResult.invalid(msg.get("guild.home.set_no_permission"));
}
Location loc = context.getPlayer().getLocation();
if (!g.isClaimed(loc.getWorld().getName(), loc.getBlockX() >> 4, loc.getBlockZ() >> 4)) {
return ValidationResult.invalid(msg.get("guild.home.set_must_be_in_claim"));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
Location loc = player.getLocation();
Chunk chunk = loc.getChunk();
if (!guild.isClaimed(loc.getWorld().getName(), chunk.getX(), chunk.getZ())) {
context.reply(msg.get("guild.home.set_must_be_in_claim"));
return;
}
guild.setHome(loc);
plugin.getGuildRepository().saveGuildAsync(guild);
@@ -455,22 +551,24 @@ public class GuildCommands {
.subcommand(BetterMcCommands.subBuilder("home")
.description("Se téléporter au point de ralliement de la guilde")
.playerOnly()
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
return g != null && g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.HOME);
}, msg.get("guild.home.teleport_no_permission"))
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.HOME)) {
return ValidationResult.invalid(msg.get("guild.home.teleport_no_permission"));
}
if (g.getHomeLocation() == null) {
return ValidationResult.invalid(msg.get("guild.home.not_set"));
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
Location homeLoc = guild.getHomeLocation();
if (homeLoc == null) {
context.reply(msg.get("guild.home.not_set"));
return;
}
player.teleportAsync(homeLoc).thenAccept(success -> {
if (success) {
msg.sendActionBar(player, "guild.home.teleport_success");
@@ -479,43 +577,6 @@ public class GuildCommands {
})
)
// -------------------------------------------------------------
// Sous-commande : /guild info [guilde]
// -------------------------------------------------------------
.subcommand(BetterMcCommands.subBuilder("info")
.description("Afficher les informations d'une guilde")
.argument(Arguments.string("guilde").optional().description("Nom de la guilde"))
.executes(context -> {
Guild targetGuild;
Optional<String> nameOpt = context.getOptional("guilde", String.class);
if (nameOpt.isPresent()) {
targetGuild = guildManager.getGuildByName(nameOpt.get());
} else if (context.isPlayer()) {
targetGuild = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
} else {
context.replyError("Veuillez préciser le nom de la guilde.");
return;
}
if (targetGuild == null) {
context.reply(msg.get("guild.guild_not_found", "{guild}", nameOpt.orElse("")));
return;
}
double nextPrice = guildManager.getPriceCalculator().calculateNextChunkPrice(targetGuild);
GuildMember leader = targetGuild.getLeaderMember();
String leaderName = leader != null && leader.getOfflinePlayer() != null ? leader.getOfflinePlayer().getName() : "Inconnu";
context.reply("<gradient:#00C9FF:#92FE9D><bold>=== INFORMATIONS DE GUILDE ===</bold></gradient>");
context.reply("<gray>Nom :</gray> " + targetGuild.getFormattedName() + " " + targetGuild.getFormattedTag());
context.reply("<gray>Couleur :</gray> <color:" + targetGuild.getColor() + ">" + targetGuild.getColor() + " ■</color>");
context.reply("<gray>Chef :</gray> <gold>" + leaderName + "</gold>");
context.reply("<gray>Membres :</gray> <yellow>" + targetGuild.getMemberCount() + "</yellow>");
context.reply("<gray>Banque :</gray> <green>" + guildManager.getEconomyManager().format(targetGuild.getBalance()) + "</green>");
context.reply("<gray>Territoires :</gray> <aqua>" + targetGuild.getClaimCount() + " chunks</aqua> <dark_gray>(Prochain: " + guildManager.getEconomyManager().format(nextPrice) + ")</dark_gray>");
})
)
// -------------------------------------------------------------
// Sous-commande : /guild color <#hex>
// -------------------------------------------------------------
@@ -524,14 +585,19 @@ public class GuildCommands {
.aliases("couleur")
.playerOnly()
.argument(Arguments.string("hex").description("Code couleur hexadécimal (ex: #FF5555)"))
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
return g != null && g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.MANAGE_GUILD);
}, "<red>Votre rang ne vous autorise pas à modifier les informations de la guilde.</red>")
.validate(context -> context.getString("hex").matches("^#[0-9a-fA-F]{6}$"),
"<red>Format de couleur invalide ! Utilisez un code hexadécimal à 6 caractères (ex: <yellow>#00FFAA</yellow> ou <yellow>#FF5555</yellow>).</red>")
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.MANAGE_GUILD)) {
return ValidationResult.invalid("<red>Votre rang ne vous autorise pas à modifier les informations de la guilde.</red>");
}
if (!context.getString("hex").matches("^#[0-9a-fA-F]{6}$")) {
return ValidationResult.invalid("<red>Format de couleur invalide ! Utilisez un code hexadécimal à 6 caractères (ex: <yellow>#00FFAA</yellow> ou <yellow>#FF5555</yellow>).</red>");
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -553,14 +619,19 @@ public class GuildCommands {
.description("Changer le tag court de votre guilde")
.playerOnly()
.argument(Arguments.string("tag").description("Nouveau tag (2-6 car)"))
.validate(context -> guildManager.isInGuild(context.getPlayer().getUniqueId()),
msg.get("guild.not_in_guild"))
.validate(context -> {
if (!guildManager.isInGuild(context.getPlayer().getUniqueId())) {
return ValidationResult.invalid(msg.get("guild.not_in_guild"));
}
Guild g = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
return g != null && g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.MANAGE_GUILD);
}, "<red>Votre rang ne vous autorise pas à modifier les informations de la guilde.</red>")
.validate(context -> context.getString("tag").matches("^[a-zA-Z0-9_]{2,6}$"),
"<red>Le tag doit comporter entre 2 et 6 caractères alphanumériques.</red>")
if (g == null || !g.hasPermission(context.getPlayer().getUniqueId(), GuildPermission.MANAGE_GUILD)) {
return ValidationResult.invalid("<red>Votre rang ne vous autorise pas à modifier les informations de la guilde.</red>");
}
if (!context.getString("tag").matches("^[a-zA-Z0-9_]{2,6}$")) {
return ValidationResult.invalid("<red>Le tag doit comporter entre 2 et 6 caractères alphanumériques.</red>");
}
return ValidationResult.valid();
})
.executes(context -> {
Player player = context.getPlayer();
Guild guild = guildManager.getGuildByPlayer(player.getUniqueId());
@@ -575,6 +646,48 @@ public class GuildCommands {
})
)
// -------------------------------------------------------------
// Sous-commande : /guild info [guilde]
// -------------------------------------------------------------
.subcommand(BetterMcCommands.subBuilder("info")
.description("Afficher les informations d'une guilde")
.argument(Arguments.string("guilde").optional().description("Nom de la guilde"))
.executes(context -> {
Guild targetGuild;
Optional<String> nameOpt = context.getOptional("guilde", String.class);
String inputName = nameOpt.orElse(null);
if (inputName != null && !inputName.trim().isEmpty()) {
targetGuild = guildManager.getGuildByName(inputName.trim());
if (targetGuild == null) {
context.reply(msg.get("guild.guild_not_found", "{guild}", inputName.trim()));
return;
}
} else if (context.isPlayer()) {
targetGuild = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
if (targetGuild == null) {
context.reply(msg.get("guild.not_in_guild"));
return;
}
} else {
context.replyError("Veuillez préciser le nom de la guilde : /guild info <guilde>");
return;
}
double nextPrice = guildManager.getPriceCalculator().calculateNextChunkPrice(targetGuild);
GuildMember leader = targetGuild.getLeaderMember();
String leaderName = leader != null && leader.getOfflinePlayer() != null ? leader.getOfflinePlayer().getName() : "Inconnu";
context.reply("<gradient:#00C9FF:#92FE9D><bold>=== INFORMATIONS DE GUILDE ===</bold></gradient>");
context.reply("<gray>Nom :</gray> " + targetGuild.getFormattedName() + " " + targetGuild.getFormattedTag());
context.reply("<gray>Couleur :</gray> <color:" + targetGuild.getColor() + ">" + targetGuild.getColor() + " ■</color>");
context.reply("<gray>Chef :</gray> <gold>" + leaderName + "</gold>");
context.reply("<gray>Membres :</gray> <yellow>" + targetGuild.getMemberCount() + "</yellow>");
context.reply("<gray>Banque :</gray> <green>" + guildManager.getEconomyManager().format(targetGuild.getBalance()) + "</green>");
context.reply("<gray>Territoires :</gray> <aqua>" + targetGuild.getClaimCount() + " chunks</aqua> <dark_gray>(Prochain: " + guildManager.getEconomyManager().format(nextPrice) + ")</dark_gray>");
})
)
// -------------------------------------------------------------
// Sous-commande : /guild members [guilde]
// -------------------------------------------------------------
@@ -584,17 +697,22 @@ public class GuildCommands {
.executes(context -> {
Guild targetGuild;
Optional<String> nameOpt = context.getOptional("guilde", String.class);
if (nameOpt.isPresent()) {
targetGuild = guildManager.getGuildByName(nameOpt.get());
} else if (context.isPlayer()) {
targetGuild = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
} else {
context.replyError("Veuillez préciser le nom de la guilde.");
String inputName = nameOpt.orElse(null);
if (inputName != null && !inputName.trim().isEmpty()) {
targetGuild = guildManager.getGuildByName(inputName.trim());
if (targetGuild == null) {
context.reply(msg.get("guild.guild_not_found", "{guild}", inputName.trim()));
return;
}
} else if (context.isPlayer()) {
targetGuild = guildManager.getGuildByPlayer(context.getPlayer().getUniqueId());
if (targetGuild == null) {
context.reply(msg.get("guild.guild_not_found", "{guild}", nameOpt.orElse("")));
context.reply(msg.get("guild.not_in_guild"));
return;
}
} else {
context.replyError("Veuillez préciser le nom de la guilde : /guild members <guilde>");
return;
}