From fe32bf031d0d4e09586454cfaf56ddfc7344e8b3 Mon Sep 17 00:00:00 2001 From: gab4000 Date: Sat, 1 Nov 2025 18:02:58 +0100 Subject: [PATCH 1/9] feat: add methods to manage all permissions for city ranks --- .../city/sub/rank/CityRankCommands.java | 56 +++++++++++++++++++ .../sub/rank/menus/CityRankDetailsMenu.java | 7 +-- .../sub/rank/menus/CityRankPermsMenu.java | 40 ++++++++++--- 3 files changed, 90 insertions(+), 13 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java index 6107c0532..28624147f 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java @@ -93,6 +93,62 @@ public static void swapPermission(Player player, DBCityRank rank, CityPermission rank.swapPermission(permission); } + /** + * Add all permissions to a rank. + * + * @param player The player who is adding the permissions. + * @param rank The rank to add the permissions to. + */ + public static void addAllPermissions(Player player, DBCityRank rank) { + City city = CityManager.getPlayerCity(player.getUniqueId()); + if (city == null) { + MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { + MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + if (rank == null) { + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + + for (CityPermission permission : CityPermission.values()) { + if (permission != CityPermission.OWNER) return; + if (rank.getPermissionsSet().contains(permission)) continue; + rank.getPermissionsSet().add(permission); + } + } + + /** + * Remove all permissions from a rank. + * + * @param player The player who is removing the permissions. + * @param rank The rank to remove the permissions from. + */ + public static void removeAllPermissions(Player player, DBCityRank rank) { + City city = CityManager.getPlayerCity(player.getUniqueId()); + if (city == null) { + MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { + MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + if (rank == null) { + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + + for (CityPermission permission : CityPermission.values()) { + if (permission != CityPermission.OWNER) continue; + if (!rank.getPermissionsSet().contains(permission)) continue; + rank.getPermissionsSet().remove(permission); + } + } + @Subcommand("assign") @CommandPermission("omc.commands.city.rank.assign") public void assign(Player player, @Optional @Named("rank") @SuggestWith(CityRanksAutoComplete.class) String rankName, @Optional @Named("player") @SuggestWith(CityMembersAutoComplete.class) OfflinePlayer target) { diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java index 78fb66970..226e3cd57 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java @@ -241,11 +241,8 @@ private Map createRank() { itemMeta.displayName(Component.text("§bLes permissions du grade")); itemMeta.lore(lorePerm); }).setOnClick(inventoryClickEvent -> { - if (!canManageRanks) { - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions"), Prefix.CITY, MessageType.ERROR, false); - return; - } - new CityRankPermsMenu(getOwner(), oldRank, newRank, true, 0).open(); + if (!canManageRanks) new CityRankPermsMenu(getOwner(), oldRank, newRank, false, 0).open(); + else new CityRankPermsMenu(getOwner(), oldRank, newRank, true, 0).open(); })); map.put(18, new ItemBuilder(this, CustomItemRegistry.getByName("omc_menus:refuse_btn").getBest(), itemMeta -> { diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java index 9267c815c..93eef3860 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java @@ -59,12 +59,6 @@ public CityRankPermsMenu(Player owner, DBCityRank oldRank, DBCityRank newRank, b public List getItems() { List items = new ArrayList<>(); - if (!this.canEdit) { - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions"), Prefix.CITY, MessageType.ERROR, false); - getOwner().closeInventory(); - return null; - } - for (CityPermission permission : CityPermission.values()) { if (permission == CityPermission.OWNER) continue; @@ -78,8 +72,12 @@ public List getItems() { ); itemMeta.lore(lore); }).setOnClick(inventoryClickEvent -> { - CityRankCommands.swapPermission(getOwner(), newRank, permission); - new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); + if (!canEdit) + MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier ce grade"), Prefix.CITY, MessageType.ERROR, true); + else { + CityRankCommands.swapPermission(getOwner(), newRank, permission); + new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); + } }).hide(ItemUtils.getDataComponentType()); items.add(itemBuilder); @@ -110,6 +108,32 @@ public Map getButtons() { }).setOnClick(inventoryClickEvent -> new CityRankPermsMenu(getOwner(), oldRank, newRank, canEdit, page + 1).open())); } + if (canEdit) { + map.put(52, new ItemBuilder(this, Material.RED_DYE, itemMeta -> { + itemMeta.displayName(Component.text("§cTout retirer")); + itemMeta.lore(List.of(Component.text("§7Cliquez pour retirer toutes les permissions du membre"))); + }).setOnClick(inventoryClickEvent -> { + if (!canEdit) + MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des grades"), Prefix.CITY, MessageType.ERROR, true); + else { + CityRankCommands.removeAllPermissions(getOwner(), newRank); + new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); + } + })); + + map.put(53, new ItemBuilder(this, Material.GREEN_DYE, itemMeta -> { + itemMeta.displayName(Component.text("§aTout ajouter")); + itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre"))); + }).setOnClick(inventoryClickEvent -> { + if (!canEdit) + MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des grades"), Prefix.CITY, MessageType.ERROR, true); + else { + CityRankCommands.addAllPermissions(getOwner(), newRank); + new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); + } + })); + } + return map; } From 18ef46c05604ec60cdaf5691b98ddf7e067e9942 Mon Sep 17 00:00:00 2001 From: gab4000 Date: Sat, 1 Nov 2025 18:03:07 +0100 Subject: [PATCH 2/9] feat: add commands to add and remove all permissions for city members --- .../city/commands/CityPermsCommands.java | 48 +++++++++++++++++++ .../features/city/menu/CityPermsMenu.java | 39 +++++++++++++-- 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java b/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java index 97029ecd4..3309f2699 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java @@ -118,4 +118,52 @@ void get(Player sender, @SuggestWith(CityMembersAutoComplete.class) OfflinePlaye if (!CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return; new CityPermsMenu(sender, player.getUniqueId(), false).open(); } + + @Subcommand("removeall") + @CommandPermission("omc.commands.city.perm.removeall") + @Description("Retirer toutes les permissions d'un membre") + public static void removeAll(Player sender, @SuggestWith(CityMembersAutoComplete.class) OfflinePlayer player) { + if (!CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return; + if (!CityPermsConditions.canModifyPerms(sender, null)) return; + + City city = CityManager.getPlayerCity(sender.getUniqueId()); + + if (city == null) { + MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + + if (!city.getMembers().contains(player.getUniqueId())) { + MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + return; + } + + for (CityPermission permission : CityPermission.values()) { + if (permission == CityPermission.OWNER) continue; + city.removePermission(player.getUniqueId(), permission); + } + } + + @Subcommand("addall") + @CommandPermission("omc.commands.city.perm.addall") + @Description("Ajouter toutes les permissions à un membre") + public static void addAll(Player sender, @SuggestWith(CityMembersAutoComplete.class) OfflinePlayer player) { + if (! CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return; + if (! CityPermsConditions.canModifyPerms(sender, null)) return; + + City city = CityManager.getPlayerCity(sender.getUniqueId()); + if (city == null) { + MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } + if (! city.getMembers().contains(player.getUniqueId())) { + MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + return; + } + + for (CityPermission permission : CityPermission.values()) { + if (permission == CityPermission.OWNER) continue; + city.addPermission(player.getUniqueId(), permission); + } + } } diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java index 869c8fb15..c104ace51 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java @@ -11,6 +11,9 @@ import fr.openmc.core.features.city.commands.CityPermsCommands; import fr.openmc.core.items.CustomItemRegistry; import fr.openmc.core.utils.cache.CacheOfflinePlayer; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.MessagesManager; +import fr.openmc.core.utils.messages.Prefix; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Material; @@ -79,10 +82,12 @@ public List getItems() { ); itemMeta.lore(edit ? lore : List.of()); }).setOnClick(inventoryClickEvent -> { - if (!edit) return; - CityPermsCommands.swap(player, CacheOfflinePlayer.getOfflinePlayer(memberUUID), permission); - player.closeInventory(); - this.open(); + if (!edit) + MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true); + else { + CityPermsCommands.swap(player, CacheOfflinePlayer.getOfflinePlayer(memberUUID), permission); + new CityPermsMenu(player, memberUUID, true).open(); + } }).hide(ItemUtils.getDataComponentType()); items.add(itemBuilder); @@ -110,6 +115,32 @@ public Map getButtons() { itemMeta.lore(List.of(Component.text("§7Cliquez pour aller à la page suivante"))); }).setNextPageButton()); + if (edit) { + map.put(52, new ItemBuilder(this, Material.RED_DYE, itemMeta -> { + itemMeta.displayName(Component.text("§cTout retirer")); + itemMeta.lore(List.of(Component.text("§7Cliquez pour retirer toutes les permissions du membre"))); + }).setOnClick(inventoryClickEvent -> { + if (!edit) + MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true); + else { + CityPermsCommands.removeAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); + new CityPermsMenu(getOwner(), memberUUID, true).open(); + } + })); + + map.put(53, new ItemBuilder(this, Material.GREEN_DYE, itemMeta -> { + itemMeta.displayName(Component.text("§aTout ajouter")); + itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre"))); + }).setOnClick(inventoryClickEvent -> { + if (!edit) + MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true); + else { + CityPermsCommands.addAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); + new CityPermsMenu(getOwner(), memberUUID, true).open(); + } + })); + } + return map; } From 66b131dd230a1b1e9c8543b94455ff27baedf0bc Mon Sep 17 00:00:00 2001 From: gab4000 Date: Sat, 1 Nov 2025 18:10:24 +0100 Subject: [PATCH 3/9] =?UTF-8?q?les=20=E2=9C=A8=20points=20d'exclamation=20?= =?UTF-8?q?=E2=9C=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/features/city/commands/CityPermsCommands.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java b/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java index 3309f2699..19445c10c 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java @@ -148,15 +148,15 @@ public static void removeAll(Player sender, @SuggestWith(CityMembersAutoComplete @CommandPermission("omc.commands.city.perm.addall") @Description("Ajouter toutes les permissions à un membre") public static void addAll(Player sender, @SuggestWith(CityMembersAutoComplete.class) OfflinePlayer player) { - if (! CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return; - if (! CityPermsConditions.canModifyPerms(sender, null)) return; + if (!CityPermsConditions.canSeePerms(sender, player.getUniqueId())) return; + if (!CityPermsConditions.canModifyPerms(sender, null)) return; City city = CityManager.getPlayerCity(sender.getUniqueId()); if (city == null) { MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } - if (! city.getMembers().contains(player.getUniqueId())) { + if (!city.getMembers().contains(player.getUniqueId())) { MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); return; } From f2cac058eaf12fdaa9f264abd799897b309a652d Mon Sep 17 00:00:00 2001 From: gab4000 Date: Sat, 1 Nov 2025 19:03:39 +0100 Subject: [PATCH 4/9] feat: implement rank permission checks and improve rank management functionality --- .../fr/openmc/core/features/city/City.java | 3 ++- .../city/conditions/CityKickCondition.java | 5 ++++ .../features/city/menu/CityPermsMenu.java | 2 +- .../core/features/city/models/DBCityRank.java | 18 +++++++++++++ .../city/sub/rank/CityRankAction.java | 3 +++ .../city/sub/rank/CityRankCommands.java | 25 ++++++++----------- .../city/sub/rank/CityRankCondition.java | 14 +++++++++++ .../sub/rank/menus/CityRankDetailsMenu.java | 10 +++++++- .../sub/rank/menus/CityRankMemberMenu.java | 12 ++++++++- .../sub/rank/menus/CityRankPermsMenu.java | 2 +- .../city/sub/rank/menus/CityRanksMenu.java | 3 ++- .../core/utils/messages/MessagesManager.java | 1 + 12 files changed, 78 insertions(+), 20 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/City.java b/src/main/java/fr/openmc/core/features/city/City.java index 18163ddfd..08570b9bb 100644 --- a/src/main/java/fr/openmc/core/features/city/City.java +++ b/src/main/java/fr/openmc/core/features/city/City.java @@ -33,6 +33,7 @@ import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import java.util.*; import java.util.stream.Collectors; @@ -736,7 +737,7 @@ public void updateRank(DBCityRank oldRank, DBCityRank newRank) { * @param member The UUID of the member to check. * @return The CityRank object representing the member's rank, or null if not found. */ - public DBCityRank getRankOfMember(UUID member) { + public @Nullable DBCityRank getRankOfMember(UUID member) { for (DBCityRank rank : cityRanks) { if (rank.getMembersSet().contains(member)) { return rank; diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java b/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java index 544190f50..29eeb72f9 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java @@ -43,6 +43,11 @@ public static boolean canCityKickPlayer(City city, Player player, OfflinePlayer MessagesManager.sendMessage(player, Component.text("Tu ne peux pas exclure le propriétaire de la ville"), Prefix.CITY, MessageType.ERROR, false); return false; } + + if (city.getRankOfMember(player.getUniqueId()).getPriority() <= city.getRankOfMember(playerToKick.getUniqueId()).getPriority()) { + MessagesManager.sendMessage(player, Component.text("Tu ne peux pas exclure un membre ayant un grade supérieur ou égal au tien"), Prefix.CITY, MessageType.ERROR, false); + return false; + } return true; } } diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java index c104ace51..1ddb7898f 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java @@ -128,7 +128,7 @@ public Map getButtons() { } })); - map.put(53, new ItemBuilder(this, Material.GREEN_DYE, itemMeta -> { + map.put(53, new ItemBuilder(this, Material.LIME_DYE, itemMeta -> { itemMeta.displayName(Component.text("§aTout ajouter")); itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre"))); }).setOnClick(inventoryClickEvent -> { diff --git a/src/main/java/fr/openmc/core/features/city/models/DBCityRank.java b/src/main/java/fr/openmc/core/features/city/models/DBCityRank.java index 225ef42d0..a77ecca71 100644 --- a/src/main/java/fr/openmc/core/features/city/models/DBCityRank.java +++ b/src/main/java/fr/openmc/core/features/city/models/DBCityRank.java @@ -156,6 +156,24 @@ public void swapPermission(CityPermission permission) { } } + /** + * Clears all permissions from this rank. + */ + public void clearPermissions() { + permissionsSet.clear(); + } + + /** + * Adds all available permissions to this rank, except OWNER. + */ + public void addAllPermissions() { + for (CityPermission permission : CityPermission.values()) { + if (permission != CityPermission.OWNER) { + permissionsSet.add(permission); + } + } + } + /** * Adds a member to this rank. * diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java index 858c440c1..de8fda260 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java @@ -189,6 +189,9 @@ public static void assignRank(Player player, String rankName, OfflinePlayer memb MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } + if (!CityRankCondition.canModifyRankPermissions(city, player, rank.getPriority())) { + return; + } city.changeRank(player, member.getUniqueId(), rank); } diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java index 28624147f..f905c8838 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java @@ -56,10 +56,6 @@ public void edit( MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } - if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_RANKS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); - return; - } DBCityRank rank = city.getRankByName(rankName); if (rank == null) { MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); @@ -89,6 +85,9 @@ public static void swapPermission(Player player, DBCityRank rank, CityPermission MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } + if (!CityRankCondition.canModifyRankPermissions(city, player, rank.getPriority())) { + return; + } rank.swapPermission(permission); } @@ -113,12 +112,11 @@ public static void addAllPermissions(Player player, DBCityRank rank) { MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } - - for (CityPermission permission : CityPermission.values()) { - if (permission != CityPermission.OWNER) return; - if (rank.getPermissionsSet().contains(permission)) continue; - rank.getPermissionsSet().add(permission); + if (!CityRankCondition.canModifyRankPermissions(city, player, rank.getPriority())) { + return; } + + rank.addAllPermissions(); } /** @@ -141,12 +139,11 @@ public static void removeAllPermissions(Player player, DBCityRank rank) { MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } - - for (CityPermission permission : CityPermission.values()) { - if (permission != CityPermission.OWNER) continue; - if (!rank.getPermissionsSet().contains(permission)) continue; - rank.getPermissionsSet().remove(permission); + if (!CityRankCondition.canModifyRankPermissions(city, player, rank.getPriority())) { + return; } + + rank.clearPermissions(); } @Subcommand("assign") diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java index a267edc57..8dc52a3de 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java @@ -74,6 +74,9 @@ public static boolean canRenameRank(City city, Player player, String oldRankName MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } + if (!canModifyRankPermissions(city, player, rank.getPriority())) { + return false; + } if (city.getRanks().size() >= RankLimitRewards.getRankLimit(city.getLevel())) { MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_MAX.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; @@ -98,6 +101,7 @@ public static boolean canDeleteRank(City city, Player player, String rankName) { MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } + DBCityRank rank = city.getRankByName(rankName); if (rank == null) { MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_NOT_EXIST.getMessage(), Prefix.CITY, MessageType.ERROR, false); @@ -109,6 +113,16 @@ public static boolean canDeleteRank(City city, Player player, String rankName) { return false; } + return canModifyRankPermissions(city, player, rank.getPriority()); + } + + public static boolean canModifyRankPermissions(City city, Player player, int rankPriority) { + if (city.getRankOfMember(player.getUniqueId()) == null) return true; + + if (city.getRankOfMember(player.getUniqueId()).getPriority() >= rankPriority) { + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_RANKS_CANNOT_MODIFY_HIGHER.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return false; + } return true; } } diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java index 226e3cd57..7fa3d9eb3 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankDetailsMenu.java @@ -8,6 +8,7 @@ import fr.openmc.core.features.city.models.DBCityRank; import fr.openmc.core.features.city.sub.milestone.rewards.RankLimitRewards; import fr.openmc.core.features.city.sub.rank.CityRankAction; +import fr.openmc.core.features.city.sub.rank.CityRankCondition; import fr.openmc.core.features.city.sub.rank.CityRankManager; import fr.openmc.core.items.CustomItemRegistry; import fr.openmc.core.utils.ItemUtils; @@ -100,6 +101,12 @@ private Map createRank() { Component.text("§7Priorité actuelle : §d" + this.newRank.getPriority()) )); }).setOnClick(inventoryClickEvent -> { + if (!canManageRanks) return; + + if (!CityRankCondition.canModifyRankPermissions(city, getOwner(), newRank.getPriority())) { + return; + } + if (inventoryClickEvent.isLeftClick()) { new CityRankDetailsMenu(getOwner(), city, newRank.withPriority((newRank.getPriority() + 1) % 18)).open(); } else if (inventoryClickEvent.isRightClick()) { @@ -165,7 +172,8 @@ private Map createRank() { Map map = new HashMap<>(); Player player = getOwner(); - boolean canManageRanks = city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_RANKS); + boolean canManageRanks = city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_RANKS) + && CityRankCondition.canModifyRankPermissions(city, player, oldRank.getPriority()); List lorePriority = new ArrayList<>(List.of(Component.text("§7Priorité actuelle : §d" + this.newRank.getPriority()))); if (canManageRanks) { diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java index 298933471..5c2b000de 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java @@ -7,6 +7,7 @@ import fr.openmc.api.menulib.utils.ItemUtils; import fr.openmc.core.features.city.City; import fr.openmc.core.features.city.CityPermission; +import fr.openmc.core.features.city.sub.rank.CityRankCondition; import fr.openmc.core.utils.cache.CacheOfflinePlayer; import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; @@ -65,13 +66,22 @@ public List getItems() { itemMeta.displayName(Component.text(player.getName() != null ? player.getName() : "§c§oJoueur inconnu").decoration(TextDecoration.ITALIC, false)); itemMeta.lore(lore); }).setOnClick(event -> { - if (city.hasPermission(player.getUniqueId(), CityPermission.OWNER)) return; + if (city.hasPermission(player.getUniqueId(), CityPermission.OWNER)) { + MessagesManager.sendMessage(getOwner(), MessagesManager.Message.PLAYER_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } if (!city.hasPermission(getOwner().getUniqueId(), CityPermission.ASSIGN_RANKS)) { MessagesManager.sendMessage(getOwner(), MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); getOwner().closeInventory(); return; } + + if (city.getRankOfMember(player.getUniqueId()) != null) { + if (!CityRankCondition.canModifyRankPermissions(city, getOwner(), city.getRankOfMember(player.getUniqueId()).getPriority())) { + return; + } + } new CityRankAssignMenu(getOwner(), uuid, city).open(); })); diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java index 93eef3860..4b2f108ea 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java @@ -121,7 +121,7 @@ public Map getButtons() { } })); - map.put(53, new ItemBuilder(this, Material.GREEN_DYE, itemMeta -> { + map.put(53, new ItemBuilder(this, Material.LIME_DYE, itemMeta -> { itemMeta.displayName(Component.text("§aTout ajouter")); itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre"))); }).setOnClick(inventoryClickEvent -> { diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRanksMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRanksMenu.java index deb7743cb..bc29546b6 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRanksMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRanksMenu.java @@ -8,6 +8,7 @@ import fr.openmc.core.features.city.menu.main.CityMenu; import fr.openmc.core.features.city.models.DBCityRank; import fr.openmc.core.features.city.sub.rank.CityRankAction; +import fr.openmc.core.features.city.sub.rank.CityRankCondition; import fr.openmc.core.items.CustomItemRegistry; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.TextDecoration; @@ -71,7 +72,7 @@ public void onClose(InventoryCloseEvent event) { Component.text("§7Priorité : §d" + priority).decoration(TextDecoration.ITALIC, false), Component.text("§7Permissions : §b" + rank.getPermissionsSet().size()).decoration(TextDecoration.ITALIC, false), Component.empty(), - Component.text(canManageRanks ? "§e§lCLIQUEZ POUR MODIFIER LE ROLE" : "§e§lCLIQUEZ POUR S'Y INFORMER") + Component.text(canManageRanks && CityRankCondition.canModifyRankPermissions(city, getOwner(), priority) ? "§e§lCLIQUEZ POUR MODIFIER LE ROLE" : "§e§lCLIQUEZ POUR S'Y INFORMER") )); } ).setOnClick(inventoryClickEvent -> new CityRankDetailsMenu(player, city, rank).open()) diff --git a/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java b/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java index e21cd2035..1880f8c8b 100644 --- a/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java +++ b/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java @@ -138,6 +138,7 @@ public enum Message { CITY_RANKS_MAX(Component.text("Le nombre maximum de grades a été atteint, tu ne peux pas en ajouter d'autres.")), CITY_RANKS_ALREADY_EXIST(Component.text("Ce grade existe déjà.")), CITY_RANKS_CANNOT_DELETE(Component.text("Tu ne peux pas supprimer le grade de propriétaire.")), + CITY_RANKS_CANNOT_MODIFY_HIGHER(Component.text("Tu ne peux pas modifier un grade supérieur ou égal au tien.")), CITY_NOT_FOUND(Component.text("La ville n'existe pas")), From 5022bc7c96e9906fd25f44b7f50ba4f8cb26690e Mon Sep 17 00:00:00 2001 From: gab4000 Date: Wed, 21 Jan 2026 17:27:48 +0100 Subject: [PATCH 5/9] Combine remove/add all perms in 1 button --- .../features/city/menu/CityPermsMenu.java | 31 ++++++------------- .../sub/rank/menus/CityRankPermsMenu.java | 31 ++++++------------- 2 files changed, 20 insertions(+), 42 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java index 1ddb7898f..0b216db37 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java @@ -116,28 +116,17 @@ public Map getButtons() { }).setNextPageButton()); if (edit) { - map.put(52, new ItemBuilder(this, Material.RED_DYE, itemMeta -> { - itemMeta.displayName(Component.text("§cTout retirer")); - itemMeta.lore(List.of(Component.text("§7Cliquez pour retirer toutes les permissions du membre"))); + map.put(53, new ItemBuilder(this, Material.GOLD_BLOCK, itemMeta -> { + itemMeta.displayName(Component.text("Gérer toutes les permissions du membre")); + itemMeta.lore(List.of( + Component.text("§cClique-gauche pour tout retirer"), + Component.text("§aClique-droit pour tout ajouter") + )); }).setOnClick(inventoryClickEvent -> { - if (!edit) - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true); - else { - CityPermsCommands.removeAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); - new CityPermsMenu(getOwner(), memberUUID, true).open(); - } - })); - - map.put(53, new ItemBuilder(this, Material.LIME_DYE, itemMeta -> { - itemMeta.displayName(Component.text("§aTout ajouter")); - itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre"))); - }).setOnClick(inventoryClickEvent -> { - if (!edit) - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true); - else { - CityPermsCommands.addAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); - new CityPermsMenu(getOwner(), memberUUID, true).open(); - } + if (inventoryClickEvent.isLeftClick()) CityPermsCommands.removeAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); + else CityPermsCommands.addAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); + + new CityPermsMenu(getOwner(), memberUUID, true).open(); })); } diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java index 4b2f108ea..6314e3451 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java @@ -109,28 +109,17 @@ public Map getButtons() { } if (canEdit) { - map.put(52, new ItemBuilder(this, Material.RED_DYE, itemMeta -> { - itemMeta.displayName(Component.text("§cTout retirer")); - itemMeta.lore(List.of(Component.text("§7Cliquez pour retirer toutes les permissions du membre"))); + map.put(53, new ItemBuilder(this, Material.GOLD_BLOCK, itemMeta -> { + itemMeta.displayName(Component.text("§6Gérer toutes les permissions du grade")); + itemMeta.lore(List.of( + Component.text("§cClique-gauche pour tout retirer"), + Component.text("§aClique-droit pour tout ajouter") + )); }).setOnClick(inventoryClickEvent -> { - if (!canEdit) - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des grades"), Prefix.CITY, MessageType.ERROR, true); - else { - CityRankCommands.removeAllPermissions(getOwner(), newRank); - new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); - } - })); - - map.put(53, new ItemBuilder(this, Material.LIME_DYE, itemMeta -> { - itemMeta.displayName(Component.text("§aTout ajouter")); - itemMeta.lore(List.of(Component.text("§7Cliquez pour ajouter toutes les permissions au membre"))); - }).setOnClick(inventoryClickEvent -> { - if (!canEdit) - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des grades"), Prefix.CITY, MessageType.ERROR, true); - else { - CityRankCommands.addAllPermissions(getOwner(), newRank); - new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); - } + if (inventoryClickEvent.isLeftClick()) CityRankCommands.removeAllPermissions(getOwner(), newRank); + else CityRankCommands.addAllPermissions(getOwner(), newRank); + + new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); })); } From 5ead129a39464176ee6ada97c46d93a929f01257 Mon Sep 17 00:00:00 2001 From: gab4000 Date: Wed, 21 Jan 2026 21:58:58 +0100 Subject: [PATCH 6/9] Right click verification --- .../java/fr/openmc/core/features/city/menu/CityPermsMenu.java | 2 +- .../core/features/city/sub/rank/menus/CityRankPermsMenu.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java index 0b216db37..be5b2b192 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java @@ -124,7 +124,7 @@ public Map getButtons() { )); }).setOnClick(inventoryClickEvent -> { if (inventoryClickEvent.isLeftClick()) CityPermsCommands.removeAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); - else CityPermsCommands.addAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); + else if (inventoryClickEvent.isRightClick()) CityPermsCommands.addAll(getOwner(), CacheOfflinePlayer.getOfflinePlayer(memberUUID)); new CityPermsMenu(getOwner(), memberUUID, true).open(); })); diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java index 6314e3451..26c37aa1b 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java @@ -117,7 +117,7 @@ public Map getButtons() { )); }).setOnClick(inventoryClickEvent -> { if (inventoryClickEvent.isLeftClick()) CityRankCommands.removeAllPermissions(getOwner(), newRank); - else CityRankCommands.addAllPermissions(getOwner(), newRank); + else if (inventoryClickEvent.isRightClick()) CityRankCommands.addAllPermissions(getOwner(), newRank); new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); })); From cc4f747403fdaaf87ecbb0284f5b745042faaee5 Mon Sep 17 00:00:00 2001 From: gab4000 Date: Thu, 22 Jan 2026 13:48:16 +0100 Subject: [PATCH 7/9] Migrate messages to MessagesManager --- .../city/commands/CityPermsCommands.java | 10 +++---- .../city/conditions/CityPermsConditions.java | 10 +++---- .../features/city/menu/CityPermsMenu.java | 2 +- .../sub/rank/menus/CityRankAssignMenu.java | 8 +++++- .../sub/rank/menus/CityRankPermsMenu.java | 2 +- .../core/utils/messages/MessagesManager.java | 27 ++++++++++--------- 6 files changed, 34 insertions(+), 25 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java b/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java index 19445c10c..b8ce4d376 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/CityPermsCommands.java @@ -33,7 +33,7 @@ public static void swap(Player sender, @SuggestWith(CityMembersAutoComplete.clas } if (!city.getMembers().contains(player.getUniqueId())) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_IN_OTHER_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } @@ -65,7 +65,7 @@ void add( } if (!city.getMembers().contains(player.getUniqueId())) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_IN_OTHER_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } @@ -97,7 +97,7 @@ void remove( } if (!city.getMembers().contains(player.getUniqueId())) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_IN_OTHER_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } @@ -134,7 +134,7 @@ public static void removeAll(Player sender, @SuggestWith(CityMembersAutoComplete } if (!city.getMembers().contains(player.getUniqueId())) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_IN_OTHER_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } @@ -157,7 +157,7 @@ public static void addAll(Player sender, @SuggestWith(CityMembersAutoComplete.cl return; } if (!city.getMembers().contains(player.getUniqueId())) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_IN_OTHER_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java index 0beabb067..c45a956b1 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java @@ -18,7 +18,7 @@ public static boolean canSeePerms(Player sender, UUID playerUUID) { City senderCity = CityManager.getPlayerCity(sender.getUniqueId()); if (senderCity == null) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'habite aucune ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_NO_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -28,17 +28,17 @@ public static boolean canSeePerms(Player sender, UUID playerUUID) { } if (!Objects.equals(senderCity.getUniqueId(), city.getUniqueId())) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'habite pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_IN_OTHER_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (!city.getMembers().contains(playerUUID)) { - MessagesManager.sendMessage(sender, Component.text("Ce joueur n'est pas dans ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.TARGET_IN_OTHER_CITY.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.hasPermission(playerUUID, CityPermission.OWNER)) { - MessagesManager.sendMessage(sender, Component.text("Le propriétaire a les pleins pouvoirs"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -54,7 +54,7 @@ public static boolean canModifyPerms(Player sender, CityPermission permission) { } if (!(city.hasPermission(sender.getUniqueId(), CityPermission.PERMS))) { - MessagesManager.sendMessage(sender, Component.text("Tu n'as pas la permission de gérer les permissions"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java index be5b2b192..d70a00f0d 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java @@ -83,7 +83,7 @@ public List getItems() { itemMeta.lore(edit ? lore : List.of()); }).setOnClick(inventoryClickEvent -> { if (!edit) - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier les permissions des membres"), Prefix.CITY, MessageType.ERROR, true); + MessagesManager.sendMessage(getOwner(), MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, true); else { CityPermsCommands.swap(player, CacheOfflinePlayer.getOfflinePlayer(memberUUID), permission); new CityPermsMenu(player, memberUUID, true).open(); diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankAssignMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankAssignMenu.java index 64e7b4587..02dbc6439 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankAssignMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankAssignMenu.java @@ -8,6 +8,9 @@ import fr.openmc.core.features.city.models.DBCityRank; import fr.openmc.core.features.city.sub.rank.CityRankAction; import fr.openmc.core.utils.cache.CacheOfflinePlayer; +import fr.openmc.core.utils.messages.MessageType; +import fr.openmc.core.utils.messages.MessagesManager; +import fr.openmc.core.utils.messages.Prefix; import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; @@ -63,7 +66,10 @@ public void onClose(InventoryCloseEvent event) { Component.text("§7Permissions : " + (rank.getPermissionsSet().isEmpty() ? "§cAucune" : "§a" + rank.getPermissionsSet().size() + " permission(s)")) )); }).setOnClick(event -> { - if (!city.hasPermission(getOwner().getUniqueId(), CityPermission.ASSIGN_RANKS)) return; + if (!city.hasPermission(getOwner().getUniqueId(), CityPermission.ASSIGN_RANKS)) { + MessagesManager.sendMessage(getOwner(), MessagesManager.Message.CITY_RANKS_CANNOT_ASSIGN.getMessage(), Prefix.CITY, MessageType.ERROR, false); + return; + } CityRankAction.assignRank(getOwner(), rank.getName(), CacheOfflinePlayer.getOfflinePlayer(playerUUID)); getOwner().closeInventory(); diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java index 26c37aa1b..28532fda4 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankPermsMenu.java @@ -73,7 +73,7 @@ public List getItems() { itemMeta.lore(lore); }).setOnClick(inventoryClickEvent -> { if (!canEdit) - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas la permission de modifier ce grade"), Prefix.CITY, MessageType.ERROR, true); + MessagesManager.sendMessage(getOwner(), MessagesManager.Message.CITY_RANKS_CANNOT_MODIFY_HIGHER.getMessage(), Prefix.CITY, MessageType.ERROR, true); else { CityRankCommands.swapPermission(getOwner(), newRank, permission); new CityRankPermsMenu(getOwner(), oldRank, newRank, true, page).open(); diff --git a/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java b/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java index b5c7f7c5b..fe2fc8640 100644 --- a/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java +++ b/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java @@ -133,26 +133,28 @@ public static String textToSmall(String text) { public enum Message { // Command messages NO_PERMISSION(Component.text("§cVous n'avez pas la permission d'exécuter cette commande.")), - NO_PERMISSION_2(Component.text("§cVous n'avez pas le droit de faire ceci")), + NO_PERMISSION_2(Component.text("§cVous n'avez pas le droit de faire ceci.")), MISSING_ARGUMENT(Component.text("§cVous devez spécifier un argument.")), // Player messages PLAYER_NOT_FOUND(Component.text("§cLe joueur n'a pas été trouvé.")), // General messages - PLAYER_MISSING_MONEY(Component.text("Tu n'as pas assez d'argent")), + PLAYER_MISSING_MONEY(Component.text("Tu n'as pas assez d'argent.")), // City messages - PLAYER_NO_CITY(Component.text("Tu n'es pas dans une ville")), - PLAYER_IN_CITY(Component.text("Tu es déjà dans une ville")), - CITY_NO_FREE_CLAIM(Component.text("Cette ville n'a pas de claims gratuits")), - - PLAYER_NO_ACCESS_PERMS(Component.text("Tu n'as pas la permission d'accéder aux permissions ou grades de cette ville")), - PLAYER_NO_CLAIM(Component.text("Tu n'as pas la permission d'agrandir ta ville")), - PLAYER_NO_OWNER(Component.text("Tu n'as pas la permission car tu n'es pas maire")), - PLAYER_NO_RENAME(Component.text("Tu n'as pas la permission de renommer ta ville")), - PLAYER_NO_MONEY_GIVE(Component.text("Tu n'as pas la permission de donner de l'argent à ta ville")), - PLAYER_NO_MONEY_TAKE(Component.text("Tu n'as pas la permission de prendre de l'argent à ta ville")), + PLAYER_NO_CITY(Component.text("Tu n'es pas dans une ville.")), + PLAYER_IN_CITY(Component.text("Tu es déjà dans une ville.")), + CITY_NO_FREE_CLAIM(Component.text("Cette ville n'a pas de claims gratuits.")), + TARGET_IN_OTHER_CITY(Component.text("Ce joueur n'est pas dans ta ville.")), + TARGET_NO_CITY(Component.text("Ce joueur n'est pas dans une ville.")), + + PLAYER_NO_ACCESS_PERMS(Component.text("Tu n'as pas la permission d'accéder aux permissions de cette ville.")), + PLAYER_NO_CLAIM(Component.text("Tu n'as pas la permission d'agrandir ta ville.")), + PLAYER_NO_OWNER(Component.text("Tu n'as pas la permission car tu n'es pas maire.")), + PLAYER_NO_RENAME(Component.text("Tu n'as pas la permission de renommer ta ville.")), + PLAYER_NO_MONEY_GIVE(Component.text("Tu n'as pas la permission de donner de l'argent à ta ville.")), + PLAYER_NO_MONEY_TAKE(Component.text("Tu n'as pas la permission de prendre de l'argent à ta ville.")), PLAYER_IS_OWNER(Component.text("Le propriétaire a tous les pouvoirs.")), CITY_RANKS_NOT_EXIST(Component.text("Ce grade n'existe pas.")), @@ -160,6 +162,7 @@ public enum Message { CITY_RANKS_ALREADY_EXIST(Component.text("Ce grade existe déjà.")), CITY_RANKS_CANNOT_DELETE(Component.text("Tu ne peux pas supprimer le grade de propriétaire.")), CITY_RANKS_CANNOT_MODIFY_HIGHER(Component.text("Tu ne peux pas modifier un grade supérieur ou égal au tien.")), + CITY_RANKS_CANNOT_ASSIGN(Component.text("Tu n'as pas la permission d'assigner des grades.")), CITY_NOT_FOUND(Component.text("La ville n'existe pas")), From d0f42397138b1f5a989c79565cebe4e832c614ec Mon Sep 17 00:00:00 2001 From: gab4000 Date: Thu, 22 Jan 2026 20:26:47 +0100 Subject: [PATCH 8/9] Update Messages --- .../fr/openmc/core/features/city/City.java | 2 +- .../city/conditions/CityKickCondition.java | 9 ++++---- .../city/conditions/CityPermsConditions.java | 7 +++---- .../features/city/menu/CityChunkMenu.java | 4 ++-- .../features/city/menu/CityPermsMenu.java | 2 +- .../features/city/menu/CityTransferMenu.java | 2 +- .../city/sub/rank/CityRankAction.java | 4 ++-- .../city/sub/rank/CityRankCommands.java | 8 +++---- .../city/sub/rank/CityRankCondition.java | 10 ++++----- .../sub/rank/menus/CityRankMemberMenu.java | 4 ++-- .../core/utils/messages/MessagesManager.java | 21 +++++++++++-------- 11 files changed, 37 insertions(+), 36 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/City.java b/src/main/java/fr/openmc/core/features/city/City.java index 8b26b2e68..0f53af7e2 100644 --- a/src/main/java/fr/openmc/core/features/city/City.java +++ b/src/main/java/fr/openmc/core/features/city/City.java @@ -787,7 +787,7 @@ public void changeRank(Player sender, UUID playerUUID, DBCityRank newRank) { } if (hasPermission(playerUUID, CityPermission.OWNER)) { - MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.CITY_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java b/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java index 29eeb72f9..636816823 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityKickCondition.java @@ -5,7 +5,6 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; -import net.kyori.adventure.text.Component; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -30,22 +29,22 @@ public static boolean canCityKickPlayer(City city, Player player, OfflinePlayer } if (player.getUniqueId().equals(playerToKick.getUniqueId())) { - MessagesManager.sendMessage(player, Component.text("Tu ne peux pas t'exclure toi même de la ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_KICK_HIMSELF.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (!(city.hasPermission(player.getUniqueId(), CityPermission.KICK))) { - MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission d'exclure un membre"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_KICK.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.hasPermission(playerToKick.getUniqueId(), CityPermission.OWNER)) { - MessagesManager.sendMessage(player, Component.text("Tu ne peux pas exclure le propriétaire de la ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_KICK.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getRankOfMember(player.getUniqueId()).getPriority() <= city.getRankOfMember(playerToKick.getUniqueId()).getPriority()) { - MessagesManager.sendMessage(player, Component.text("Tu ne peux pas exclure un membre ayant un grade supérieur ou égal au tien"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_KICK.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } return true; diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java index c45a956b1..fb4929c21 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityPermsConditions.java @@ -6,7 +6,6 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; -import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; import java.util.Objects; @@ -38,7 +37,7 @@ public static boolean canSeePerms(Player sender, UUID playerUUID) { } if (city.hasPermission(playerUUID, CityPermission.OWNER)) { - MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.CITY_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -54,12 +53,12 @@ public static boolean canModifyPerms(Player sender, CityPermission permission) { } if (!(city.hasPermission(sender.getUniqueId(), CityPermission.PERMS))) { - MessagesManager.sendMessage(sender, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (!city.hasPermission(sender.getUniqueId(), permission) && permission == CityPermission.PERMS) { - MessagesManager.sendMessage(sender, Component.text("Seul le propriétaire peut modifier cette permission"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, MessagesManager.Message.CITY_ONLY_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityChunkMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityChunkMenu.java index b95b07de6..553bf95fa 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityChunkMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityChunkMenu.java @@ -327,7 +327,7 @@ private void handleChunkClaimClick(Player player, int chunkX, int chunkZ, boolea } if (!hasPermissionClaim) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_CLAIM.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_CLAIM.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } @@ -363,7 +363,7 @@ private void handleChunkUnclaimClick(Player player, int chunkX, int chunkZ, bool } if (!hasPermissionClaim) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_CLAIM.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_CLAIM.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java index d70a00f0d..6f2123b4e 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityPermsMenu.java @@ -83,7 +83,7 @@ public List getItems() { itemMeta.lore(edit ? lore : List.of()); }).setOnClick(inventoryClickEvent -> { if (!edit) - MessagesManager.sendMessage(getOwner(), MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, true); + MessagesManager.sendMessage(getOwner(), MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, true); else { CityPermsCommands.swap(player, CacheOfflinePlayer.getOfflinePlayer(memberUUID), permission); new CityPermsMenu(player, memberUUID, true).open(); diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityTransferMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityTransferMenu.java index 3a8615626..0f80cebfc 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityTransferMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityTransferMenu.java @@ -70,7 +70,7 @@ public List getItems() { )); }).setOnClick(inventoryClickEvent -> { if (!hasPermissionOwner) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_ISNT_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java index de8fda260..b6c680f28 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankAction.java @@ -170,12 +170,12 @@ public static void assignRank(Player player, String rankName, OfflinePlayer memb } if (!FeaturesRewards.hasUnlockFeature(city, FeaturesRewards.Feature.RANK)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette Feature ! Veuillez Améliorer votre Ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.RANK) + "!"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette feature ! Veuillez améliorer votre ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.RANK) + " !"), Prefix.CITY, MessageType.ERROR, false); return; } if (!city.hasPermission(player.getUniqueId(), CityPermission.ASSIGN_RANKS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } DBCityRank rank = city.getRankByName(rankName); diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java index f905c8838..38a35b724 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCommands.java @@ -32,7 +32,7 @@ public void rank(Player player) { } if (!FeaturesRewards.hasUnlockFeature(city, FeaturesRewards.Feature.RANK)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette Feature ! Veuillez Améliorer votre Ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.RANK) + "!"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette feature ! Veuillez améliorer votre ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.RANK) + " !"), Prefix.CITY, MessageType.ERROR, false); return; } @@ -78,7 +78,7 @@ public static void swapPermission(Player player, DBCityRank rank, CityPermission return; } if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } if (rank == null) { @@ -105,7 +105,7 @@ public static void addAllPermissions(Player player, DBCityRank rank) { return; } if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } if (rank == null) { @@ -132,7 +132,7 @@ public static void removeAllPermissions(Player player, DBCityRank rank) { return; } if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } if (rank == null) { diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java index 8dc52a3de..aec3f00e1 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/CityRankCondition.java @@ -36,7 +36,7 @@ public static boolean canCreateRank(City city, Player player) { } if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_RANKS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getRanks().size() >= RankLimitRewards.getRankLimit(city.getLevel())) { @@ -71,7 +71,7 @@ public static boolean canRenameRank(City city, Player player, String oldRankName } if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_RANKS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } if (!canModifyRankPermissions(city, player, rank.getPriority())) { @@ -93,12 +93,12 @@ public static boolean canRenameRank(City city, Player player, String oldRankName */ public static boolean canDeleteRank(City city, Player player, String rankName) { if (!FeaturesRewards.hasUnlockFeature(city, FeaturesRewards.Feature.RANK)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette Feature ! Veuillez Améliorer votre Ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.RANK) + "!"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette feature ! Veuillez améliorer votre ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.RANK) + " !"), Prefix.CITY, MessageType.ERROR, false); return false; } if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -109,7 +109,7 @@ public static boolean canDeleteRank(City city, Player player, String rankName) { } if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_RANKS)) { - MessagesManager.sendMessage(player, MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java index 3b27a6659..8d270ffa8 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java @@ -67,12 +67,12 @@ public List getItems() { itemMeta.lore(lore); }).setOnClick(event -> { if (city.hasPermission(player.getUniqueId(), CityPermission.OWNER)) { - MessagesManager.sendMessage(getOwner(), MessagesManager.Message.PLAYER_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(getOwner(), MessagesManager.Message.CITY_IS_OWNER.getMessage(), Prefix.CITY, MessageType.ERROR, false); return; } if (!city.hasPermission(getOwner().getUniqueId(), CityPermission.ASSIGN_RANKS)) { - MessagesManager.sendMessage(getOwner(), MessagesManager.Message.PLAYER_NO_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(getOwner(), MessagesManager.Message.CITY_CANNOT_ACCESS_PERMS.getMessage(), Prefix.CITY, MessageType.ERROR, false); getOwner().closeInventory(); return; } diff --git a/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java b/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java index fe2fc8640..b97fbda99 100644 --- a/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java +++ b/src/main/java/fr/openmc/core/utils/messages/MessagesManager.java @@ -145,17 +145,20 @@ public enum Message { // City messages PLAYER_NO_CITY(Component.text("Tu n'es pas dans une ville.")), PLAYER_IN_CITY(Component.text("Tu es déjà dans une ville.")), - CITY_NO_FREE_CLAIM(Component.text("Cette ville n'a pas de claims gratuits.")), TARGET_IN_OTHER_CITY(Component.text("Ce joueur n'est pas dans ta ville.")), TARGET_NO_CITY(Component.text("Ce joueur n'est pas dans une ville.")), - - PLAYER_NO_ACCESS_PERMS(Component.text("Tu n'as pas la permission d'accéder aux permissions de cette ville.")), - PLAYER_NO_CLAIM(Component.text("Tu n'as pas la permission d'agrandir ta ville.")), - PLAYER_NO_OWNER(Component.text("Tu n'as pas la permission car tu n'es pas maire.")), - PLAYER_NO_RENAME(Component.text("Tu n'as pas la permission de renommer ta ville.")), - PLAYER_NO_MONEY_GIVE(Component.text("Tu n'as pas la permission de donner de l'argent à ta ville.")), - PLAYER_NO_MONEY_TAKE(Component.text("Tu n'as pas la permission de prendre de l'argent à ta ville.")), - PLAYER_IS_OWNER(Component.text("Le propriétaire a tous les pouvoirs.")), + + CITY_NO_FREE_CLAIM(Component.text("Cette ville n'a pas de claims gratuits.")), + CITY_CANNOT_ACCESS_PERMS(Component.text("Tu n'as pas la permission d'accéder aux permissions de cette ville.")), + CITY_CANNOT_CLAIM(Component.text("Tu n'as pas la permission d'agrandir ta ville.")), + CITY_ISNT_OWNER(Component.text("Tu n'as pas la permission car tu n'es pas maire.")), + CITY_CANNOT_RENAME(Component.text("Tu n'as pas la permission de renommer ta ville.")), + CITY_CANNOT_DEPOSIT(Component.text("Tu n'as pas la permission de donner de l'argent à ta ville.")), + CITY_CANNOT_WITHDRAW(Component.text("Tu n'as pas la permission de prendre de l'argent à ta ville.")), + CITY_IS_OWNER(Component.text("Le propriétaire a tous les pouvoirs.")), + CITY_CANNOT_KICK(Component.text("Tu n'as pas la permission d'exclure ce membre.")), + CITY_CANNOT_KICK_HIMSELF(Component.text("Tu ne peux pas t'exclure toi même de la ville.")), + CITY_ONLY_OWNER(Component.text("Seul le propriétaire peut faire cela.")), CITY_RANKS_NOT_EXIST(Component.text("Ce grade n'existe pas.")), CITY_RANKS_MAX(Component.text("Le nombre maximum de grades a été atteint, tu ne peux pas en ajouter d'autres.")), From fb42e70bd398955872b23b425c8e8f6efe16973e Mon Sep 17 00:00:00 2001 From: gab4000 Date: Sat, 24 Jan 2026 21:11:52 +0100 Subject: [PATCH 9/9] Remove hasPlayedBefore verif to show to member in assign menu --- .../core/features/city/sub/rank/menus/CityRankMemberMenu.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java index 8d270ffa8..6fcfb127b 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/rank/menus/CityRankMemberMenu.java @@ -50,7 +50,7 @@ public List getItems() { Set members = city.getMembers(); for (UUID uuid : members) { OfflinePlayer player = CacheOfflinePlayer.getOfflinePlayer(uuid); - if (player == null || !player.hasPlayedBefore()) { + if (player == null) { continue; }