From 2ef53764778e50157987e13f8397dfa1198cffcd Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Fri, 20 Mar 2026 20:50:53 +0100 Subject: [PATCH 1/5] translate city.actions package --- .../city/actions/CityChangeAction.java | 43 ++++++----- .../city/actions/CityChestAction.java | 5 +- .../city/actions/CityClaimAction.java | 21 ++++-- .../city/actions/CityCreateAction.java | 31 ++++---- .../city/actions/CityDeleteAction.java | 12 ++-- .../features/city/actions/CityKickAction.java | 23 +++++- .../city/actions/CityLeaveAction.java | 19 ++++- .../city/actions/CityTransferAction.java | 27 +++++-- .../city/actions/CityUnclaimAction.java | 10 +-- .../resources/translations/lang.properties | 72 ++++++++++++++++++- 10 files changed, 206 insertions(+), 57 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityChangeAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityChangeAction.java index 8576473ab..c79019290 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityChangeAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityChangeAction.java @@ -16,6 +16,7 @@ import fr.openmc.core.utils.messages.Prefix; import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.NamespacedKey; import org.bukkit.attribute.Attribute; import org.bukkit.attribute.AttributeModifier; @@ -35,24 +36,26 @@ public static void beginChangeCity(Player player, CityType typeChange) { if (!CityTypeConditions.canCityChangeType(city, player, typeChange)) return; if (typeChange.equals(CityType.WAR) && !FeaturesRewards.hasUnlockFeature(city, FeaturesRewards.Feature.TYPE_WAR)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette feature ! Veuillez améliorer votre ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.TYPE_WAR) + "!"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.havent_unlocked_feature", + Component.text(FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.TYPE_WAR))), + Prefix.CITY, MessageType.ERROR, false); return; } - String cityTypeActuel; - String cityTypeAfter; - cityTypeActuel = city.getType() == CityType.WAR ? "§cen guerre§7" : "§aen paix§7"; - cityTypeAfter = city.getType() == CityType.WAR ? "§aen paix§7" : "§cen guerre§7"; + Component inPeace = TranslationManager.translation("feature.city.type.in_peace").color(NamedTextColor.GREEN); + Component inWar = TranslationManager.translation("feature.city.type.in_war").color(NamedTextColor.RED); + Component cityTypeActuel = city.getType() == CityType.WAR ? inWar : inPeace; + Component cityTypeAfter = city.getType() == CityType.WAR ? inPeace : inWar; List confirmLore = new ArrayList<>(); - confirmLore.add(Component.text("§cEs-tu sûr de vouloir changer le type de ta §dville §7?")); - confirmLore.add(Component.text("§7Vous allez passez d'une §dville " + cityTypeActuel + " à une §dville " + cityTypeAfter)); + confirmLore.add(TranslationManager.translation("feature.city.type.confirm_change")); + confirmLore.add(TranslationManager.translation("feature.city.type.change_type_to_type", cityTypeActuel, cityTypeAfter)); if (typeChange == CityType.WAR) { confirmLore.add(Component.empty()); - confirmLore.add(Component.text("§c⚠ Vous pourrez être exposé à des guerres contre d'autres villes à tout moment !")); + confirmLore.add(TranslationManager.translation("feature.city.type.warning_war")); } confirmLore.add(Component.empty()); - confirmLore.add(Component.text("§c⚠ Ta mascotte §4§lperdera 1 niveau !")); + confirmLore.add(TranslationManager.translation("feature.city.type.mascot_losing_level")); ConfirmMenu menu = new ConfirmMenu( player, @@ -63,7 +66,7 @@ public static void beginChangeCity(Player player, CityType typeChange) { player::closeInventory, confirmLore, List.of( - Component.text("§7Ne pas changer le §dtype de ville") + TranslationManager.translation("feature.city.type.not_change_type") ) ); menu.open(); @@ -82,17 +85,21 @@ public static void finishChange(Player sender) { Mascot mascot = city.getMascot(); if (mascot == null) { - MessagesManager.sendMessage(sender, Component.text("Vous n'avez pas de mascotte pour changer le type de votre ville (contactez le staff)"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.type.mascot_not_exist_change_type"), + Prefix.CITY, MessageType.ERROR, false); return; } if (!mascot.isAlive()) { - MessagesManager.sendMessage(sender, Component.text("Votre mascotte doit être en vie pour changer le type de ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.type.mascot_must_by_alive_change_type"), + Prefix.CITY, MessageType.ERROR, false); return; } if (!DynamicCooldownManager.isReady(city.getUniqueId(), "city:type")) { - MessagesManager.sendMessage(sender, Component.text("Vous devez attendre " + DateUtils.convertMillisToTime(DynamicCooldownManager.getRemaining(city.getUniqueId(), "city:type")) + " avant de changer de type de ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.type.must_wait_before_change_type", + Component.text(DateUtils.convertMillisToTime(DynamicCooldownManager.getRemaining(city.getUniqueId(), "city:type")))), + Prefix.CITY, MessageType.ERROR, false); return; } @@ -128,9 +135,13 @@ public static void finishChange(Player sender) { throw new RuntimeException(e); } - String cityTypeActuel = city.getType() == CityType.WAR ? "§aen paix§7" : "§cen guerre§7"; - String cityTypeAfter = city.getType() == CityType.WAR ? "§cen guerre§7" : "§aen paix§7"; + Component inPeace = TranslationManager.translation("feature.city.type.in_peace").color(NamedTextColor.GREEN); + Component inWar = TranslationManager.translation("feature.city.type.in_war").color(NamedTextColor.RED); + Component cityTypeActuel = city.getType() == CityType.WAR ? inWar : inPeace; + Component cityTypeAfter = city.getType() == CityType.WAR ? inPeace : inWar; - MessagesManager.sendMessage(sender, Component.text("Vous avez changé le type de votre ville de " + cityTypeActuel + " à " + cityTypeAfter), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.type.change_type_success", + cityTypeActuel, cityTypeAfter), + Prefix.CITY, MessageType.SUCCESS, false); } } \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityChestAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityChestAction.java index 5a9067a7a..5e2f8a076 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityChestAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityChestAction.java @@ -6,7 +6,7 @@ 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 fr.openmc.core.utils.messages.TranslationManager; import org.bukkit.entity.Player; import static fr.openmc.core.features.city.conditions.CityChestConditions.UPGRADE_PER_AYWENITE; @@ -24,7 +24,8 @@ public static void upgradeChest(Player player, City city) { if (ItemUtils.takeAywenite(player, aywenite)) { city.saveChestContent(city.getChestPages() + 1, null); - MessagesManager.sendMessage(player, Component.text("Le coffre a été amélioré"), Prefix.CITY, MessageType.SUCCESS, true); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.chest.upgraded"), + Prefix.CITY, MessageType.SUCCESS, true); } } } \ No newline at end of file diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityClaimAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityClaimAction.java index 91ad3e19e..456b1408e 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityClaimAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityClaimAction.java @@ -10,6 +10,7 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; import org.bukkit.Chunk; import org.bukkit.entity.Player; @@ -37,7 +38,8 @@ public static void startClaim(Player sender, int chunkX, int chunkZ) { City city = CityManager.getPlayerCity(sender.getUniqueId()); org.bukkit.World bWorld = sender.getWorld(); if (!bWorld.getName().equals("world")) { - MessagesManager.sendMessage(sender, Component.text("Tu ne peux pas étendre ta ville ici"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.claim.cant_claim_here"), + Prefix.CITY, MessageType.ERROR, false); return; } @@ -46,20 +48,24 @@ public static void startClaim(Player sender, int chunkX, int chunkZ) { ChunkPos chunkVec2 = new ChunkPos(chunkX, chunkZ); if (!isAdjacentToOwnCity(chunkVec2, city.getChunks())) { - MessagesManager.sendMessage(sender, Component.text("Ce chunk n'est pas adjacent à ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.claim.isnt_adjacent"), + Prefix.CITY, MessageType.ERROR, false); return; } Chunk chunk = sender.getWorld().getChunkAt(chunkX, chunkZ); if (WorldGuardHook.doesChunkContainWGRegion(chunk)) { - MessagesManager.sendMessage(sender, Component.text("Ce chunk est dans une région protégée"), Prefix.CITY, MessageType.ERROR, true); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.claim.is_in_region"), + Prefix.CITY, MessageType.ERROR, true); return; } if (CityManager.isChunkClaimed(chunkX, chunkZ)) { City chunkCity = CityManager.getCityFromChunk(chunkX, chunkZ); + if (chunkCity == null) return; String cityName = chunkCity.getName(); - MessagesManager.sendMessage(sender, Component.text("Ce chunk est déjà claim par " + cityName + "."), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.claim.already_claim", + Component.text(cityName)), Prefix.CITY, MessageType.ERROR, false); return; } @@ -68,7 +74,9 @@ public static void startClaim(Player sender, int chunkX, int chunkZ) { if (city.getFreeClaims() <= 0) { if (city.getBalance() < price) { - MessagesManager.sendMessage(sender, Component.text("Ta ville n'a pas assez d'argent (" + price + EconomyManager.getEconomyIcon() + " nécessaires)"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("messages.city.city_not_enough_money", + Component.text(price + EconomyManager.getEconomyIcon())), + Prefix.CITY, MessageType.ERROR, false); return; } @@ -80,7 +88,8 @@ public static void startClaim(Player sender, int chunkX, int chunkZ) { city.addChunk(chunkX, chunkZ); - MessagesManager.sendMessage(sender, Component.text("Ta ville a été étendue"), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.claim.claim_success"), + Prefix.CITY, MessageType.SUCCESS, false); } private static boolean isAdjacentToOwnCity(@NotNull ChunkPos newClaim, Set cityClaims) { diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java index e973afb04..0264c370a 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java @@ -17,7 +17,10 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.Material; @@ -26,7 +29,6 @@ import org.bukkit.inventory.meta.ItemMeta; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.UUID; @@ -51,8 +53,8 @@ public static void beginCreateCity(Player player, String cityName) { getMascotStick(), "mascot:stick", 300, - Component.text("Vous avez reçu un bâton pour poser votre mascotte"), - Component.text("§cCréation annulée"), + TranslationManager.translation("feature.city.mascot.mascot_wand.claim_mascot_wand"), + TranslationManager.translation("feature.city.mascot.mascot_wand.create_cancelled"), location -> { if (!isValidLocation(player, location)) return false; @@ -76,12 +78,8 @@ private static ItemStack getMascotStick() { ItemMeta meta = stick.getItemMeta(); if (meta != null) { - meta.displayName(Component.text("§lMascotte")); - meta.lore(List.of( - Component.text("§cVotre mascotte sera posée à l'emplacement du coffre"), - Component.text("§cCe bâton n'est pas retirable"), - Component.text("§cDéconnexion = annulation") - )); + meta.displayName(TranslationManager.translation("feature.city.mascot.mascot").decorate(TextDecoration.BOLD)); + meta.lore(TranslationManager.translationLore("feature.city.mascot.mascot_wand.lore")); stick.setItemMeta(meta); } return stick; @@ -90,11 +88,13 @@ private static ItemStack getMascotStick() { private static boolean isValidLocation(Player player, Location location) { if (location == null || location.getWorld() == null) return false; if (!"world".equals(location.getWorld().getName())) { - MessagesManager.sendMessage(player, Component.text("§cVous pouvez poser votre mascotte uniquement dans le monde principal"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.mascot.mascot_wand.can_only_place_mascot"), + Prefix.CITY, MessageType.ERROR, false); return false; } if (location.clone().add(0, 1, 0).getBlock().getType().isSolid()) { - MessagesManager.sendMessage(player, Component.text("§cAucun bloc ne doit être au-dessus de la mascotte"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.mascot.mascot_wand.hasnot_block_above"), + Prefix.CITY, MessageType.ERROR, false); return false; } return true; @@ -104,12 +104,13 @@ public static boolean finalizeCreation(Player player, Location mascotLocation) { Chunk chunk = mascotLocation.getChunk(); if (WorldGuardHook.doesChunkContainWGRegion(chunk)) { - MessagesManager.sendMessage(player, Component.text("Ce chunk est dans une région protégée"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.claim.is_in_region"), Prefix.CITY, MessageType.ERROR, false); return false; } if (CityManager.isChunkClaimedInRadius(chunk, 1)) { - MessagesManager.sendMessage(player, Component.text("Une des parcelles autour de ce chunk est claim"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.claim.already_claim_in_adjacent"), + Prefix.CITY, MessageType.ERROR, false); return false; } @@ -129,8 +130,8 @@ public static boolean finalizeCreation(Player player, Location mascotLocation) { MascotsManager.createMascot(city, cityUUID, pendingCityName, player.getWorld(), mascotLocation); // Feedback - MessagesManager.sendMessage(player, Component.text("§aVotre ville a été créée : " + pendingCityName), Prefix.CITY, MessageType.SUCCESS, true); - MessagesManager.sendMessage(player, Component.text("§7+ §6" + FREE_CLAIMS + " chunks gratuits"), Prefix.CITY, MessageType.INFO, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.create.success", Component.text(pendingCityName)).color(NamedTextColor.GREEN), Prefix.CITY, MessageType.SUCCESS, true); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.create.free_claim", Component.text(FREE_CLAIMS)), Prefix.CITY, MessageType.INFO, false); DynamicCooldownManager.use(playerUUID, "city:big", 60000); DynamicCooldownManager.use(cityUUID, "city:immunity", IMMUNITY_COOLDOWN); diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityDeleteAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityDeleteAction.java index 532d6f2f0..f28ce8da7 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityDeleteAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityDeleteAction.java @@ -10,6 +10,7 @@ import fr.openmc.core.utils.messages.Prefix; import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -40,18 +41,21 @@ public static void startDeleteCity(Player player) { } CityManager.deleteCity(city); - MessagesManager.sendMessage(player, Component.text("Votre ville a été supprimée"), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.delete.success"), Prefix.CITY, MessageType.SUCCESS, false); DynamicCooldownManager.use(uuid, "city:big", 60000); // 1 minute player.closeInventory(); }, player::closeInventory, List.of( - Component.text("§7Voulez vous vraiment dissoudre la ville " + city.getName() + " ?"), - Component.text("§cCette action est §4§lIRREVERSIBLE") + TranslationManager.translation( + "feature.city.delete.confirm.lore", + Component.text(city.getName()).color(NamedTextColor.GRAY) + ), + TranslationManager.translation("feature.city.delete.confirm.warning") ), List.of( - Component.text("§7Ne pas supprimer la ville") + TranslationManager.translation("feature.city.delete.confirm.deny") ) ); menu.open(); diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityKickAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityKickAction.java index c3954618c..315a317ee 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityKickAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityKickAction.java @@ -6,6 +6,7 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -19,11 +20,29 @@ public static void startKick(Player sender, OfflinePlayer playerKick) { if (city == null) return; + String playerName = String.valueOf(playerKick.getName()); city.removePlayer(playerKick.getUniqueId()); - MessagesManager.sendMessage(sender, Component.text("Tu as exclu " + playerKick.getName() + " de la ville " + city.getName()), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, + TranslationManager.translation( + "feature.city.kick.success", + Component.text(playerName), + Component.text(city.getName()) + ), + Prefix.CITY, + MessageType.SUCCESS, + false + ); if (playerKick.isOnline()) { - MessagesManager.sendMessage((Player) playerKick, Component.text("Tu as été exclu de la ville " + city.getName()), Prefix.CITY, MessageType.INFO, true); + MessagesManager.sendMessage((Player) playerKick, + TranslationManager.translation( + "feature.city.kick.info", + Component.text(city.getName()) + ), + Prefix.CITY, + MessageType.INFO, + true + ); } } } diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityLeaveAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityLeaveAction.java index 832209df9..ee012d0ee 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityLeaveAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityLeaveAction.java @@ -6,6 +6,7 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -22,12 +23,26 @@ public static void startLeave(Player player) { city.removePlayer(player.getUniqueId()); - MessagesManager.sendMessage(player, Component.text("Tu as quitté " + city.getName()), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, + TranslationManager.translation("feature.city.leave.success", Component.text(city.getName())), + Prefix.CITY, + MessageType.SUCCESS, + false + ); city.getOnlineMembers().forEach(memberUUID -> { if (memberUUID.equals(player.getUniqueId())) return; Player onlineMember = Bukkit.getPlayer(memberUUID); - MessagesManager.sendMessage(onlineMember, Component.text(player.getName() + " a quitté la ville " + city.getName()), Prefix.CITY, MessageType.INFO, true); + MessagesManager.sendMessage(onlineMember, + TranslationManager.translation( + "feature.city.leave.info", + Component.text(player.getName()), + Component.text(city.getName()) + ), + Prefix.CITY, + MessageType.INFO, + true + ); }); } } diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityTransferAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityTransferAction.java index f846769c8..4785ec254 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityTransferAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityTransferAction.java @@ -8,7 +8,9 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -17,6 +19,7 @@ public class CityTransferAction { public static void transfer(Player player, City city, OfflinePlayer playerToTransfer) { OfflinePlayer owner = CacheOfflinePlayer.getOfflinePlayer(city.getPlayerWithPermission(CityPermission.OWNER)); + String playerName = playerToTransfer.getName(); if (owner.isOnline()) { if (!CityManageConditions.canCityTransfer(city, owner.getPlayer())) return; @@ -25,16 +28,32 @@ public static void transfer(Player player, City city, OfflinePlayer playerToTran ConfirmMenu menu = new ConfirmMenu(player, () -> { city.changeOwner(playerToTransfer.getUniqueId()); - MessagesManager.sendMessage(player, Component.text("Le nouveau propriétaire est " + playerToTransfer.getName()), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, + TranslationManager.translation("feature.city.transfer.success", Component.text(playerName)), + Prefix.CITY, + MessageType.SUCCESS, + false + ); if (playerToTransfer.isOnline()) { - MessagesManager.sendMessage(playerToTransfer.getPlayer(), Component.text("Vous êtes devenu le propriétaire de la ville"), Prefix.CITY, MessageType.INFO, true); + MessagesManager.sendMessage(playerToTransfer.getPlayer(), + TranslationManager.translation("feature.city.transfer.info"), + Prefix.CITY, + MessageType.INFO, + true + ); } player.closeInventory(); }, player::closeInventory, - List.of(Component.text("§7Voulez-vous vraiment donner la ville à " + playerToTransfer.getName() + " ?")), - List.of(Component.text("§7Vous n'allez pas donner la ville à " + playerToTransfer.getName()))); + List.of(TranslationManager.translation( + "feature.city.transfer.confirm.accept", + Component.text(playerName).color(NamedTextColor.GRAY) + )), + List.of(TranslationManager.translation( + "feature.city.transfer.confirm.deny", + Component.text(playerName).color(NamedTextColor.GRAY) + ))); menu.open(); } } diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityUnclaimAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityUnclaimAction.java index 645c34a33..e31433483 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityUnclaimAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityUnclaimAction.java @@ -8,7 +8,7 @@ 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 fr.openmc.core.utils.messages.TranslationManager; import org.bukkit.World; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -29,17 +29,17 @@ public static void startUnclaim(Player sender, int chunkX, int chunkZ) { City city = CityManager.getPlayerCity(sender.getUniqueId()); World bWorld = sender.getWorld(); if (!bWorld.getName().equals("world")) { - MessagesManager.sendMessage(sender, Component.text("Tu ne peux pas étendre ta ville ici"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.claim.cant_claim_here"), Prefix.CITY, MessageType.ERROR, false); return; } if (!city.hasChunk(chunkX, chunkZ)) { - MessagesManager.sendMessage(sender, Component.text("Vous devez posséder ce claim pour le unclaim"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.unclaim.must_own_claim"), Prefix.CITY, MessageType.ERROR, false); return; } if (city.getMascot().getChunk().getX() == chunkX && city.getMascot().getChunk().getZ() == chunkZ) { - MessagesManager.sendMessage(sender, Component.text("Vous ne pouvez pas unclaim le claim de la mascotte"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.unclaim.cant_unclaim_mascot_claim"), Prefix.CITY, MessageType.ERROR, false); return; } @@ -58,6 +58,6 @@ public static void startUnclaim(Player sender, int chunkX, int chunkZ) { city.removeChunk(chunkX, chunkZ); - MessagesManager.sendMessage(sender, Component.text("Vous venez de rétrécir votre ville en supprimant ce claim"), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.unclaim.success"), Prefix.CITY, MessageType.SUCCESS, false); } } diff --git a/src/main/resources/translations/lang.properties b/src/main/resources/translations/lang.properties index 999796746..72eb51e40 100644 --- a/src/main/resources/translations/lang.properties +++ b/src/main/resources/translations/lang.properties @@ -149,6 +149,63 @@ messages.city.target_in_other_city=Ce joueur n'est pas dans ta ville. messages.city.target_no_city=Ce joueur n'est pas dans une ville. messages.city.player_no_permission_access=Tu n'as pas la permission d'accéder aux permissions de cette ville. messages.city.not_found=Cette ville n'existe pas. + +messages.city.havent_unlocked_feature=Vous n'avez pas débloqué cette feature ! Veuillez améliorer votre ville au niveau %1$s! +messages.city.city_not_enough_money=Ta ville n'a pas assez d'argent (%1$s nécessaires) + +# - Types +feature.city.type.in_peace=en paix +feature.city.type.in_war=en guerre +feature.city.type.confirm_change=Es-tu sûr de vouloir changer le type de ta ville +feature.city.type.change_type_to_type=Vous allez passez d'une ville %1$s à une ville %2$s +feature.city.type.warning_war=⚠ Vous pourrez être exposé à des guerres contre d'autres villes à tout moment ! +feature.city.type.mascot_losing_level=⚠ Ta mascotte perdera 1 niveau ! +feature.city.type.not_change_type=Ne pas changer le type de ville +feature.city.type.mascot_not_exist_change_type=Vous n'avez pas de mascotte pour changer le type de votre ville (contactez le staff) +feature.city.type.mascot_must_by_alive_change_type=Votre mascotte doit être en vie pour changer le type de ville +feature.city.type.must_wait_before_change_type=Vous devez attendre %1$s avant de changer de type de ville +feature.city.type.change_type_success=Vous avez changé le type de votre ville de %1$s à %2$s + +# - Chest +feature.city.chest.upgraded=Le coffre a été amélioré + +# - Claim +feature.city.claim.cant_claim_here=Tu ne peux pas étendre ta ville ici +feature.city.claim.isnt_adjacent=Ce chunk n'est pas adjacent à ta ville +feature.city.claim.is_in_region=Ce chunk est dans une région protégée +feature.city.claim.already_claim=Ce chunk est déjà claim par %1$s. +feature.city.claim.claim_success=Ta ville a été étendue +feature.city.claim.already_claim_in_adjacent=Une des parcelles autour de ce chunk est claim + +# - Create +feature.city.create.success=Votre ville a été créée : % +feature.city.create.free_claim="+ %1$s chunks gratuits + +# - Delete +feature.city.delete.confirm.lore=Voulez vous vraiment dissoudre la ville %1$s ? +feature.city.delete.confirm.warning=Cette action est IRREVERSIBLE +feature.city.delete.confirm.deny=Ne pas supprimer la ville +feature.city.delete.success=Votre ville a été supprimée + +# - Kick +feature.city.kick.success=Tu as exclu %1$s de la ville %2$s +feature.city.kick.info=Tu as été exclu de la ville %1$s + +# - Leave +feature.city.leave.success=Tu as quitté %1$s +feature.city.leave.info=%1$s a quitté la ville %2$s + +# - Transfer +feature.city.transfer.confirm.accept=Voulez-vous vraiment donner la ville à %1$s ? +feature.city.transfer.confirm.deny=Vous n'allez pas donner la ville à %1$s +feature.city.transfer.success=Le nouveau propriétaire est %1$s +feature.city.transfer.info=Vous êtes devenu le propriétaire de la ville + +# - Unclaim +feature.city.unclaim.must_own_claim=Vous devez posséder ce claim pour le unclaim +feature.city.unclaim.cant_unclaim_mascot_claim=Vous ne pouvez pas unclaim le claim de la mascotte +feature.city.unclaim.success=Vous venez de rétrécir votre ville en supprimant ce claim + # - Permissions feature.city.player_cannot_claim=Tu n'as pas la permission d'agrandir ta ville. feature.city.player_cannot_kick=Tu n'as pas la permission d'exclure ce membre. @@ -164,4 +221,17 @@ feature.city.grade.cannot_exist=Ce grade n'existe pas. feature.city.grade.cannot_assign=Tu n'as pas la permission d'assigner des grades. feature.city.grade.cannot_modify_sup_role=Tu ne peux pas modifier un grade supérieur ou égal au tien. feature.city.grade.max_reach=Le nombre maximum de grades a été atteint, tu ne peux pas en ajouter d'autres. -feature.city.grade.already_exist=Ce grade existe déjà. \ No newline at end of file +feature.city.grade.already_exist=Ce grade existe déjà. + +# - Mascots +## Mascot Wand +feature.city.mascot.mascot_wand.claim_mascot_wand=Vous avez reçu un bâton pour poser votre mascotte +feature.city.mascot.mascot_wand.create_cancelled=Création annulée + +feature.city.mascot.mascot_wand.lore=Votre mascotte sera posée à l'emplacement du coffre\ +
Ce bâton n'est pas retirable + +feature.city.mascot.mascot_wand.can_only_place_mascot=Vous pouvez poser votre mascotte uniquement dans le monde principal +feature.city.mascot.mascot_wand.hasnot_block_above=Aucun bloc ne doit être au-dessus de la mascotte + +feature.city.mascot.mascot=Mascotte \ No newline at end of file From a2422ae5f0a41f64c71468b66945d478b5eb6cc3 Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Fri, 20 Mar 2026 21:08:08 +0100 Subject: [PATCH 2/5] translate city.commands package + restructure lang.properties --- .../city/commands/AdminCityCommands.java | 49 ++++++++------- .../features/city/commands/CityCommands.java | 13 ++-- .../city/commands/CityInviteCommands.java | 39 +++++++++--- .../city/commands/CityPermsCommands.java | 32 ++++++++-- .../city/commands/CityTopCommands.java | 4 +- .../resources/translations/lang.properties | 62 +++++++++++++++++-- 6 files changed, 150 insertions(+), 49 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java b/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java index b422dbb22..f49029b7a 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java @@ -9,7 +9,6 @@ import fr.openmc.core.features.city.commands.autocomplete.CityNameAutoComplete; import fr.openmc.core.features.city.menu.list.CityListDetailsMenu; import fr.openmc.core.features.economy.EconomyManager; -import fr.openmc.core.features.economy.TransactionsManager; import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; @@ -45,7 +44,7 @@ void deleteCity( } CityManager.deleteCity(city); - MessagesManager.sendMessage(player, Component.text("La ville a été supprimée"), Prefix.STAFF, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.delete.success"), Prefix.STAFF, MessageType.SUCCESS, false); } private static final int PER_PAGE = 10; @@ -68,8 +67,7 @@ void list(Player player) { List sub = all.subList(start, end); MessagesManager.sendMessage( player, - Component.text("—— Villes (page " + page + " / " + maxPage + ") ——") - .color(NamedTextColor.GOLD), + TranslationManager.translation("feature.city.admin.commands.list.header", Component.text(page), Component.text(maxPage)), Prefix.STAFF, MessageType.SUCCESS, false @@ -83,10 +81,10 @@ void list(Player player) { .append(Component.text(cityUUID.toString()).color(NamedTextColor.GRAY)) .append(Component.text(" • ")) .append(Component.text(name).color(NamedTextColor.WHITE)) - .append(Component.text(" [copier]") + .append(TranslationManager.translation("feature.city.admin.commands.list.copy_label") .color(NamedTextColor.GREEN) .hoverEvent(net.kyori.adventure.text.event.HoverEvent.showText( - Component.text("Clique pour copier l’UUID")) + TranslationManager.translation("feature.city.admin.commands.list.copy_uuid_hover")) ) .clickEvent(ClickEvent.copyToClipboard(cityUUID.toString())) ); @@ -96,12 +94,12 @@ void list(Player player) { Component nav = Component.empty() .append(page > 1 - ? Component.text("« Prev").color(NamedTextColor.YELLOW) + ? TranslationManager.translation("feature.city.admin.commands.list.nav.prev").color(NamedTextColor.YELLOW) .clickEvent(ClickEvent.runCommand("/admcity list " + (page - 1))) : Component.text(" ")) .append(Component.text(" ")) .append(page < maxPage - ? Component.text("Next »").color(NamedTextColor.YELLOW) + ? TranslationManager.translation("feature.city.admin.commands.list.nav.next").color(NamedTextColor.YELLOW) .clickEvent(ClickEvent.runCommand("/admcity list " + (page + 1))) : Component.text(" ")); @@ -117,7 +115,7 @@ void info( City city = CityManager.getCityByName(name); if (city == null) { - MessagesManager.sendMessage(player, Component.text("Cette ville n'existe pas"), Prefix.STAFF, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.info.not_found"), Prefix.STAFF, MessageType.ERROR, false); return; } @@ -133,7 +131,7 @@ void rename( ) { City newNameCity = CityManager.getCityByName(newName); if (newNameCity != null) { - MessagesManager.sendMessage(player, Component.text("Une ville a déjà le nom que vous voulez mettre"), Prefix.STAFF, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.rename.name_already_used"), Prefix.STAFF, MessageType.ERROR, false); return; } @@ -144,7 +142,7 @@ void rename( } city.rename(newName); - MessagesManager.sendMessage(player, Component.text("La ville a été renommée"), Prefix.STAFF, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.rename.success"), Prefix.STAFF, MessageType.SUCCESS, false); } @Subcommand("setOwner") @@ -177,7 +175,7 @@ void setBalance( } city.setBalance(newBalance); - MessagesManager.sendMessage(player, Component.text("Le solde de la ville a été modifié"), Prefix.STAFF, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.balance.set_success"), Prefix.STAFF, MessageType.SUCCESS, false); } @Subcommand("getBalance") @@ -192,7 +190,10 @@ void getBalance( return; } - MessagesManager.sendMessage(player, Component.text("Le solde de la ville est de "+ city.getBalance()+ EconomyManager.getEconomyIcon()), Prefix.STAFF, MessageType.INFO, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.admin.commands.balance.get_success", + Component.text(city.getBalance() + EconomyManager.getEconomyIcon()) + ), Prefix.STAFF, MessageType.INFO, false); } @Subcommand("addPlayer") @@ -209,12 +210,12 @@ void add( } if (CityManager.getPlayerCity(newMember.getUniqueId()) != null) { - MessagesManager.sendMessage(player, Component.text("Ce joueur est déjà dans une ville"), Prefix.STAFF, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.add_player.already_in_city"), Prefix.STAFF, MessageType.ERROR, false); return; } city.addPlayer(newMember.getUniqueId()); - MessagesManager.sendMessage(player, Component.text("Le joueur a été ajouté"), Prefix.STAFF, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.add_player.success"), Prefix.STAFF, MessageType.SUCCESS, false); } @Subcommand("remove") @@ -225,17 +226,17 @@ void remove( ) { City city = CityManager.getPlayerCity(member.getUniqueId()); if (city == null) { - MessagesManager.sendMessage(player, Component.text("Ce joueur n'est pas dans une ville"), Prefix.STAFF, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.remove_player.not_in_city"), Prefix.STAFF, MessageType.ERROR, false); return; } if (city.hasPermission(member.getUniqueId(), CityPermission.OWNER)) { - MessagesManager.sendMessage(player, Component.text("Ce joueur est le propriétaire de la ville"), Prefix.STAFF, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.remove_player.is_owner"), Prefix.STAFF, MessageType.ERROR, false); return; } city.removePlayer(member.getUniqueId()); - MessagesManager.sendMessage(player, Component.text("Le joueur a été retiré"), Prefix.STAFF, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.remove_player.success"), Prefix.STAFF, MessageType.SUCCESS, false); } @Subcommand("getcity") @@ -246,11 +247,15 @@ void getPlayer( ) { City city = CityManager.getPlayerCity(member.getUniqueId()); if (city == null) { - MessagesManager.sendMessage(player, Component.text("Le joueur n'est pas dans une ville"), Prefix.STAFF, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.getcity.not_in_city"), Prefix.STAFF, MessageType.ERROR, false); return; } - MessagesManager.sendMessage(player, Component.text("Le joueur est dans la ville " + city.getName() + " (" + city.getUniqueId() + ")"), Prefix.STAFF, MessageType.INFO, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.admin.commands.getcity.success", + Component.text(city.getName()), + Component.text(city.getUniqueId().toString()) + ), Prefix.STAFF, MessageType.INFO, false); } @Subcommand("claim bypass") @@ -261,10 +266,10 @@ public void bypass(Player player) { if (canBypass) { ProtectionsManager.canBypassPlayer.remove(uuid); - MessagesManager.sendMessage(player, Component.text("Vous avez désactivé le bypass des claims"), Prefix.STAFF, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.claim_bypass.disabled"), Prefix.STAFF, MessageType.SUCCESS, false); } else { ProtectionsManager.canBypassPlayer.add(uuid); - MessagesManager.sendMessage(player, Component.text("Vous avez activé le bypass des claims"), Prefix.STAFF, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.admin.commands.claim_bypass.enabled"), Prefix.STAFF, MessageType.SUCCESS, false); } } diff --git a/src/main/java/fr/openmc/core/features/city/commands/CityCommands.java b/src/main/java/fr/openmc/core/features/city/commands/CityCommands.java index 8ef4676b5..cc63aa4d3 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/CityCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/CityCommands.java @@ -41,7 +41,7 @@ public static void mainCommand(Player player) { menu.open(); } } else { - MessagesManager.sendMessage(player, Component.text("Vous ne pouvez pas ouvrir le menu des villes sans avoir posé la mascotte"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.commands.menu.must_place_mascot"), Prefix.CITY, MessageType.ERROR, false); } } @@ -76,7 +76,7 @@ void create( return; } - DialogInput.send(player, Component.text("Entrez le nom de la ville"), MAX_LENGTH_CITY, input -> { + DialogInput.send(player, TranslationManager.translation("feature.city.commands.create.enter_city_name"), MAX_LENGTH_CITY, input -> { if (input == null) return; CityCreateAction.beginCreateCity(player, input); } @@ -102,12 +102,15 @@ void rename( if (!CityManageConditions.canCityRename(playerCity, player)) return; if (!InputUtils.isInputCityName(name)) { - MessagesManager.sendMessage(player, Component.text("Le nom de ville est invalide, il doit comporter uniquement des caractères alphanumeriques et maximum " + MAX_LENGTH_CITY + " caractères."), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.commands.rename.invalid_name", + Component.text(MAX_LENGTH_CITY) + ), Prefix.CITY, MessageType.ERROR, false); return; } playerCity.rename(name); - MessagesManager.sendMessage(player, Component.text("La ville a été renommée en " + name), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.commands.rename.success", Component.text(name)), Prefix.CITY, MessageType.SUCCESS, false); } @Subcommand("transfer") @@ -150,7 +153,7 @@ void leave(Player player) { @CommandPermission("omc.commands.city.list") public void list(Player player) { if (CityManager.getCities().isEmpty()) { - MessagesManager.sendMessage(player, Component.text("Aucune ville n'existe"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.commands.list.empty"), Prefix.CITY, MessageType.ERROR, false); return; } diff --git a/src/main/java/fr/openmc/core/features/city/commands/CityInviteCommands.java b/src/main/java/fr/openmc/core/features/city/commands/CityInviteCommands.java index 6853bfbc8..f180e8018 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/CityInviteCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/CityInviteCommands.java @@ -7,6 +7,7 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; @@ -44,11 +45,28 @@ public static void invite( } else { playerInvitations.add(sender); } - MessagesManager.sendMessage(sender, Component.text("Tu as invité " + target.getName() + " dans ta ville"), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, + TranslationManager.translation("feature.city.invite.commands.invite.success", Component.text(target.getName())), + Prefix.CITY, + MessageType.SUCCESS, + false + ); MessagesManager.sendMessage(target, - Component.text("Tu as été invité(e) par " + sender.getName() + " dans la ville " + city.getName() + "\n") - .append(Component.text("§8Faite §a/city accept §8pour accepter\n").clickEvent(ClickEvent.runCommand("/city accept " + sender.getName())).hoverEvent(HoverEvent.showText(Component.text("Accepter l'invitation")))) - .append(Component.text("§8Faite §c/city deny §8pour refuser\n").clickEvent(ClickEvent.runCommand("/city deny " + sender.getName())).hoverEvent(HoverEvent.showText(Component.text("Refuser l'invitation")))), + TranslationManager.translation( + "feature.city.invite.commands.invite.received", + Component.text(sender.getName()), + Component.text(city.getName()) + ) + .append(Component.newline()) + .append(TranslationManager.translation("feature.city.invite.commands.invite.accept") + .clickEvent(ClickEvent.runCommand("/city accept " + sender.getName())) + .hoverEvent(HoverEvent.showText(TranslationManager.translation("feature.city.invite.commands.invite.accept_hover"))) + ) + .append(Component.newline()) + .append(TranslationManager.translation("feature.city.invite.commands.invite.deny") + .clickEvent(ClickEvent.runCommand("/city deny " + sender.getName())) + .hoverEvent(HoverEvent.showText(TranslationManager.translation("feature.city.invite.commands.invite.deny_hover"))) + ), Prefix.CITY, MessageType.INFO, false); } @@ -62,12 +80,15 @@ public static void acceptInvitation( List playerInvitations = invitations.get(player); if (playerInvitations == null) { - MessagesManager.sendMessage(player, Component.text("Tu n'as aucune invitation en attente"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.invite.commands.accept.none_pending"), Prefix.CITY, MessageType.ERROR, false); return; } if (!playerInvitations.contains(inviter)) { - MessagesManager.sendMessage(player, Component.text(inviter.getName() + " ne vous a pas invité"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.invite.commands.accept.not_invited", + Component.text(inviter.getName()) + ), Prefix.CITY, MessageType.ERROR, false); return; } @@ -79,9 +100,9 @@ public static void acceptInvitation( invitations.remove(player); - MessagesManager.sendMessage(player, Component.text("Tu as rejoint " + newCity.getName()), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.invite.commands.accept.joined", Component.text(newCity.getName())), Prefix.CITY, MessageType.SUCCESS, false); if (inviter.isOnline()) { - MessagesManager.sendMessage(inviter, Component.text(player.getName() + " a accepté ton invitation !"), Prefix.CITY, MessageType.SUCCESS, true); + MessagesManager.sendMessage(inviter, TranslationManager.translation("feature.city.invite.commands.accept.inviter_notified", Component.text(player.getName())), Prefix.CITY, MessageType.SUCCESS, true); } } @@ -97,7 +118,7 @@ public static void denyInvitation( invitations.remove(player); if (inviter.isOnline()) { - MessagesManager.sendMessage(inviter, Component.text(player.getName() + " a refusé ton invitation"), Prefix.CITY, MessageType.WARNING, true); + MessagesManager.sendMessage(inviter, TranslationManager.translation("feature.city.invite.commands.deny.inviter_notified", Component.text(player.getName())), Prefix.CITY, MessageType.WARNING, true); } } } 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 bc312d24a..aa574f75c 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 @@ -40,10 +40,18 @@ public static void swap(Player sender, @SuggestWith(CityMembersAutoComplete.clas if (city.hasPermission(player.getUniqueId(), permission)) { city.removePermission(player.getUniqueId(), permission); - MessagesManager.sendMessage(sender, Component.text(player.getName()+" a perdu la permission \""+permission.toString()+"\""), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, TranslationManager.translation( + "feature.city.perms.commands.switch.removed", + Component.text(String.valueOf(player.getName())), + Component.text(permission.toString()) + ), Prefix.CITY, MessageType.SUCCESS, false); } else { city.addPermission(player.getUniqueId(), permission); - MessagesManager.sendMessage(sender, Component.text(player.getName() + " a reçu la permission \"" + permission.toString() + "\""), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, TranslationManager.translation( + "feature.city.perms.commands.switch.added", + Component.text(String.valueOf(player.getName())), + Component.text(permission.toString()) + ), Prefix.CITY, MessageType.SUCCESS, false); } } @@ -71,12 +79,18 @@ void add( } if (city.hasPermission(player.getUniqueId(), permission)) { - MessagesManager.sendMessage(sender, Component.text(player.getName() + " a déjà cette permission"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation( + "feature.city.perms.commands.add.already_has", + Component.text(String.valueOf(player.getName())) + ), Prefix.CITY, MessageType.ERROR, false); return; } city.addPermission(player.getUniqueId(), permission); - MessagesManager.sendMessage(sender, Component.text("Les permissions de "+ player.getName() + " ont été modifiées"), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, TranslationManager.translation( + "feature.city.perms.commands.modified", + Component.text(String.valueOf(player.getName())) + ), Prefix.CITY, MessageType.SUCCESS, false); } @Subcommand("remove") @@ -103,12 +117,18 @@ void remove( } if (!city.hasPermission(player.getUniqueId(), permission)) { - MessagesManager.sendMessage(sender, Component.text(player.getName() + " n'a pas cette permission"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation( + "feature.city.perms.commands.remove.does_not_have", + Component.text(String.valueOf(player.getName())) + ), Prefix.CITY, MessageType.ERROR, false); return; } city.removePermission(player.getUniqueId(), permission); - MessagesManager.sendMessage(sender, Component.text("Les permissions de "+ player.getName() + " ont été modifiées"), Prefix.CITY, MessageType.SUCCESS, false); + MessagesManager.sendMessage(sender, TranslationManager.translation( + "feature.city.perms.commands.modified", + Component.text(String.valueOf(player.getName())) + ), Prefix.CITY, MessageType.SUCCESS, false); } diff --git a/src/main/java/fr/openmc/core/features/city/commands/CityTopCommands.java b/src/main/java/fr/openmc/core/features/city/commands/CityTopCommands.java index c2fd0ef7c..3aba3e036 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/CityTopCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/CityTopCommands.java @@ -6,7 +6,7 @@ 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 fr.openmc.core.utils.messages.TranslationManager; import org.bukkit.entity.Player; import revxrsal.commands.annotation.Command; import revxrsal.commands.annotation.Description; @@ -22,7 +22,7 @@ public class CityTopCommands { void notationTest(Player sender) { List cities = new ArrayList<>(CityManager.getCities()); if (cities.isEmpty()) { - MessagesManager.sendMessage(sender, Component.text("Aucune ville n'est créée pour le moment"), Prefix.CITY, MessageType.ERROR, true); + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.commands.top.empty"), Prefix.CITY, MessageType.ERROR, true); return; } new CityTopMenu(sender).open(); diff --git a/src/main/resources/translations/lang.properties b/src/main/resources/translations/lang.properties index 72eb51e40..1e49643ac 100644 --- a/src/main/resources/translations/lang.properties +++ b/src/main/resources/translations/lang.properties @@ -142,18 +142,69 @@ feature.adminshop.player_sell_item=Vous avez vendu %1$s %2$s pour %3$s # ** CITY ** -# - Global +# * COMMANDS +# - Global / Shared messages.city.player_no_in_city=Tu n'es pas dans une ville. messages.city.player_already_in_city=Tu es déjà dans une ville. messages.city.target_in_other_city=Ce joueur n'est pas dans ta ville. messages.city.target_no_city=Ce joueur n'est pas dans une ville. messages.city.player_no_permission_access=Tu n'as pas la permission d'accéder aux permissions de cette ville. messages.city.not_found=Cette ville n'existe pas. - messages.city.havent_unlocked_feature=Vous n'avez pas débloqué cette feature ! Veuillez améliorer votre ville au niveau %1$s! messages.city.city_not_enough_money=Ta ville n'a pas assez d'argent (%1$s nécessaires) -# - Types +# - Player Commands +feature.city.commands.menu.must_place_mascot=Vous ne pouvez pas ouvrir le menu des villes sans avoir posé la mascotte +feature.city.commands.create.enter_city_name=Entrez le nom de la ville +feature.city.commands.rename.invalid_name=Le nom de ville est invalide, il doit comporter uniquement des caractères alphanumeriques et maximum %1$s caractères. +feature.city.commands.rename.success=La ville a été renommée en %1$s +feature.city.commands.list.empty=Aucune ville n'existe +feature.city.commands.top.empty=Aucune ville n'est créée pour le moment + +# - Admin Commands +feature.city.admin.commands.delete.success=La ville a été supprimée +feature.city.admin.commands.list.header=—— Villes (page %1$s / %2$s) —— +feature.city.admin.commands.list.copy_label= [copier] +feature.city.admin.commands.list.copy_uuid_hover=Clique pour copier l'UUID +feature.city.admin.commands.list.nav.prev=« Précédent +feature.city.admin.commands.list.nav.next=Suivant » +feature.city.admin.commands.info.not_found=Cette ville n'existe pas +feature.city.admin.commands.rename.name_already_used=Une ville a déjà le nom que vous voulez mettre +feature.city.admin.commands.rename.success=La ville a été renommée +feature.city.admin.commands.balance.set_success=Le solde de la ville a été modifié +feature.city.admin.commands.balance.get_success=Le solde de la ville est de %1$s +feature.city.admin.commands.add_player.already_in_city=Ce joueur est déjà dans une ville +feature.city.admin.commands.add_player.success=Le joueur a été ajouté +feature.city.admin.commands.remove_player.not_in_city=Ce joueur n'est pas dans une ville +feature.city.admin.commands.remove_player.is_owner=Ce joueur est le propriétaire de la ville +feature.city.admin.commands.remove_player.success=Le joueur a été retiré +feature.city.admin.commands.getcity.not_in_city=Le joueur n'est pas dans une ville +feature.city.admin.commands.getcity.success=Le joueur est dans la ville %1$s (%2$s) +feature.city.admin.commands.claim_bypass.disabled=Vous avez désactivé le bypass des claims +feature.city.admin.commands.claim_bypass.enabled=Vous avez activé le bypass des claims + +# - Invite Commands +feature.city.invite.commands.invite.success=Tu as invité %1$s dans ta ville +feature.city.invite.commands.invite.received=Tu as été invité(e) par %1$s dans la ville %2$s +feature.city.invite.commands.invite.accept=Faites /city accept pour accepter +feature.city.invite.commands.invite.deny=Faites /city deny pour refuser +feature.city.invite.commands.invite.accept_hover=Accepter l'invitation +feature.city.invite.commands.invite.deny_hover=Refuser l'invitation +feature.city.invite.commands.accept.none_pending=Tu n'as aucune invitation en attente +feature.city.invite.commands.accept.not_invited=%1$s ne vous a pas invité +feature.city.invite.commands.accept.joined=Tu as rejoint %1$s +feature.city.invite.commands.accept.inviter_notified=%1$s a accepté ton invitation ! +feature.city.invite.commands.deny.inviter_notified=%1$s a refusé ton invitation + +# - Permissions Commands +feature.city.perms.commands.switch.removed=%1$s a perdu la permission "%2$s" +feature.city.perms.commands.switch.added=%1$s a reçu la permission "%2$s" +feature.city.perms.commands.add.already_has=%1$s a déjà cette permission +feature.city.perms.commands.remove.does_not_have=%1$s n'a pas cette permission +feature.city.perms.commands.modified=Les permissions de %1$s ont été modifiées + +# * ACTIONS +# - Type Change feature.city.type.in_peace=en paix feature.city.type.in_war=en guerre feature.city.type.confirm_change=Es-tu sûr de vouloir changer le type de ta ville @@ -178,7 +229,7 @@ feature.city.claim.claim_success=Ta ville a été étendue feature.city.claim.already_claim_in_adjacent=Une des parcelles autour de ce chunk est claim # - Create -feature.city.create.success=Votre ville a été créée : % +feature.city.create.success=Votre ville a été créée : %1$s feature.city.create.free_claim="+ %1$s chunks gratuits # - Delete @@ -206,7 +257,8 @@ feature.city.unclaim.must_own_claim=Vous devez posséder ce claim pour le unclai feature.city.unclaim.cant_unclaim_mascot_claim=Vous ne pouvez pas unclaim le claim de la mascotte feature.city.unclaim.success=Vous venez de rétrécir votre ville en supprimant ce claim -# - Permissions +# * CONDITIONS +# - Permissions / Access feature.city.player_cannot_claim=Tu n'as pas la permission d'agrandir ta ville. feature.city.player_cannot_kick=Tu n'as pas la permission d'exclure ce membre. feature.city.player_cannot_kick_himself=Tu ne peux pas t'exclure toi-même. From bdf7fb1cf749890343f245da2cd064be0d1d508b Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Fri, 20 Mar 2026 21:21:04 +0100 Subject: [PATCH 3/5] translate city.conditions package --- .../city/actions/CityCreateAction.java | 5 ++- .../city/conditions/CityChestConditions.java | 28 +++++++++---- .../city/conditions/CityClaimCondition.java | 10 +++-- .../city/conditions/CityCreateConditions.java | 15 ++++--- .../city/conditions/CityInviteConditions.java | 21 ++++++---- .../city/conditions/CityLeaveCondition.java | 3 +- .../city/conditions/CityManageConditions.java | 19 +++++---- .../city/conditions/CityTypeConditions.java | 14 +++++-- .../city/conditions/CityUnclaimCondition.java | 3 +- .../resources/translations/lang.properties | 42 +++++++++++++++++++ 10 files changed, 117 insertions(+), 43 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java b/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java index 0264c370a..af5f32384 100644 --- a/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java +++ b/src/main/java/fr/openmc/core/features/city/actions/CityCreateAction.java @@ -131,7 +131,10 @@ public static boolean finalizeCreation(Player player, Location mascotLocation) { // Feedback MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.create.success", Component.text(pendingCityName)).color(NamedTextColor.GREEN), Prefix.CITY, MessageType.SUCCESS, true); - MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.create.free_claim", Component.text(FREE_CLAIMS)), Prefix.CITY, MessageType.INFO, false); + MessagesManager.sendMessage(player, + TranslationManager.translation("feature.city.create.free_claim", + Component.text(FREE_CLAIMS).color(NamedTextColor.GOLD)), + Prefix.CITY, MessageType.INFO, false); DynamicCooldownManager.use(playerUUID, "city:big", 60000); DynamicCooldownManager.use(cityUUID, "city:immunity", IMMUNITY_COOLDOWN); diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java index a6fb5cdc9..e50fe2449 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java @@ -40,17 +40,23 @@ public static boolean canCityChestOpen(City city, Player player) { } if (!FeaturesRewards.hasUnlockFeature(city, FeaturesRewards.Feature.CHEST)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas débloqué cette feature ! Veuillez améliorer votre ville au niveau " + FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.CHEST) + "!"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "messages.city.havent_unlocked_feature", + Component.text(FeaturesRewards.getFeatureUnlockLevel(FeaturesRewards.Feature.CHEST)) + ), Prefix.CITY, MessageType.ERROR, false); return false; } if (!city.hasPermission(player.getUniqueId(), CityPermission.CHEST)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas les permissions de voir le coffre"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.chest.open.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getChestWatcher() != null) { - MessagesManager.sendMessage(player, Component.text("Le coffre est déjà ouvert par par §c" + Bukkit.getPlayer(city.getChestWatcher()).getName()), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.chest.open.already_opened_by", + Component.text(Bukkit.getPlayer(city.getChestWatcher()).getName()) + ), Prefix.CITY, MessageType.ERROR, false); return false; } return true; @@ -65,29 +71,35 @@ public static boolean canCityChestOpen(City city, Player player) { */ public static boolean canCityChestUpgrade(City city, Player player) { if (city == null) { - MessagesManager.sendMessage(player, Component.text("Vous n'êtes pas dans une ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_in_city"), Prefix.CITY, MessageType.ERROR, false); return false; } if (!city.hasPermission(player.getUniqueId(), CityPermission.CHEST_UPGRADE)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas les permissions d'améliorer le coffre de la ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.chest.upgrade.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getChestPages() >= ChestPageLimitRewards.getChestPageLimit(city.getLevel())) { - MessagesManager.sendMessage(player, Component.text("Le coffre de la ville est déjà au niveau maximum (" + ChestPageLimitRewards.getChestPageLimit(city.getLevel()) + " page(s) maximale(s)), Pour améliorer cette limite, passez a un niveau de ville supérieur"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.chest.upgrade.max_level", + Component.text(ChestPageLimitRewards.getChestPageLimit(city.getLevel())) + ), Prefix.CITY, MessageType.ERROR, false); return false; } int price = city.getChestPages() * UPGRADE_PER_MONEY; // fonction linéaire f(x)=ax ; a=UPGRADE_PER_MONEY if (city.getBalance() < price) { - MessagesManager.sendMessage(player, Component.text("La ville n'as pas assez d'argent (" + price + EconomyManager.getEconomyIcon() + " nécessaires)"), Prefix.CITY, MessageType.ERROR, true); + MessagesManager.sendMessage(player, TranslationManager.translation( + "messages.city.city_not_enough_money", + Component.text(price + EconomyManager.getEconomyIcon()) + ), Prefix.CITY, MessageType.ERROR, true); return false; } int aywenite = city.getChestPages() * UPGRADE_PER_AYWENITE; // fonction linéaire f(x)=ax ; a=UPGRADE_PER_MONEY if (!ItemUtils.hasEnoughItems(player, Objects.requireNonNull(CustomItemRegistry.getByName("omc_items:aywenite")).getBest(), aywenite)) { - MessagesManager.sendMessage(player, Component.text("Vous n'avez pas assez d'§dAywenite §f(" + aywenite + " nécessaires)"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.resource.not_enough_aywenite", Component.text(aywenite)), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityClaimCondition.java b/src/main/java/fr/openmc/core/features/city/conditions/CityClaimCondition.java index 9f904c820..b9f7b873a 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityClaimCondition.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityClaimCondition.java @@ -11,7 +11,6 @@ import fr.openmc.core.utils.messages.Prefix; import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -37,7 +36,7 @@ public static boolean canCityClaim(City city, Player player) { } if (!(city.hasPermission(player.getUniqueId(), CityPermission.CLAIM))) { - MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de claim"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.claim.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -47,7 +46,7 @@ public static boolean canCityClaim(City city, Player player) { if (!ItemUtils.hasEnoughItems(player, CustomItemRegistry.getByName("omc_items:aywenite").getBest(), amount)) { MessagesManager.sendMessage( player, - Component.text("Vous n'avez pas assez d'§dAywenite §f(" + amount + " nécessaires)"), + TranslationManager.translation("feature.city.conditions.resource.not_enough_aywenite", Component.text(amount)), Prefix.OPENMC, MessageType.ERROR, false @@ -58,7 +57,10 @@ public static boolean canCityClaim(City city, Player player) { double money = CityClaimAction.calculatePrice(city.getChunks().size()); if (city.getBalance() < money) { - MessagesManager.sendMessage(player, Component.text("§cTu n'as pas assez d'argent dans ta banque pour claim (" + money).append(Component.text(EconomyManager.getEconomyIcon() + " §cnécessaires)")).decoration(TextDecoration.ITALIC, false), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.claim.not_enough_city_money", + Component.text(money + EconomyManager.getEconomyIcon()) + ), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityCreateConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityCreateConditions.java index f13c4ee24..5074933c1 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityCreateConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityCreateConditions.java @@ -11,7 +11,6 @@ import fr.openmc.core.utils.messages.Prefix; import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.entity.Player; import java.util.Objects; @@ -33,7 +32,10 @@ public class CityCreateConditions { */ public static boolean canCityCreate(Player player, String cityName) { if (!DynamicCooldownManager.isReady(player.getUniqueId(), "city:big")) { - MessagesManager.sendMessage(player, Component.text("§cTu dois attendre avant de pouvoir créer ta ville ("+ DynamicCooldownManager.getRemaining(player.getUniqueId(), "city:big")/1000 + " secondes)"), Prefix.CITY, MessageType.INFO, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.create.must_wait", + Component.text(DynamicCooldownManager.getRemaining(player.getUniqueId(), "city:big") / 1000) + ), Prefix.CITY, MessageType.INFO, false); return false; } @@ -43,17 +45,20 @@ public static boolean canCityCreate(Player player, String cityName) { } if (EconomyManager.getBalance(player.getUniqueId()) < MONEY_CREATE) { - MessagesManager.sendMessage(player, Component.text("§cTu n'as pas assez d'argent pour créer ta ville (" + MONEY_CREATE).append(Component.text(EconomyManager.getEconomyIcon() + " §cnécessaires)")).decoration(TextDecoration.ITALIC, false), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.create.not_enough_player_money", + Component.text(MONEY_CREATE + EconomyManager.getEconomyIcon()) + ), Prefix.CITY, MessageType.ERROR, false); return false; } if (!ItemUtils.hasEnoughItems(player, Objects.requireNonNull(CustomItemRegistry.getByName("omc_items:aywenite")).getBest(), AYWENITE_CREATE)) { - MessagesManager.sendMessage(player, Component.text("§cTu n'as pas assez d'§dAywenite §cpour créer ta ville (" + AYWENITE_CREATE +" nécessaires)"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.resource.not_enough_aywenite", Component.text(AYWENITE_CREATE)), Prefix.CITY, MessageType.ERROR, false); return false; } if (cityName != null && !InputUtils.isInputCityName(cityName)) { - MessagesManager.sendMessage(player, Component.text("Le nom de ville est invalide, il doit contenir uniquement des caractères alphanumerique et doit faire moins de 24 caractères"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.commands.rename.invalid_name", Component.text(InputUtils.MAX_LENGTH_CITY)), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityInviteConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityInviteConditions.java index f81edd030..769662c8c 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityInviteConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityInviteConditions.java @@ -36,22 +36,25 @@ public static boolean canCityInvitePlayer(City city, Player player, Player targe } if (!(city.hasPermission(player.getUniqueId(), CityPermission.INVITE))) { - MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission d'inviter des joueurs dans la ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.invite.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } if (CityManager.getPlayerCity(target.getUniqueId()) != null) { - MessagesManager.sendMessage(player, Component.text("Cette personne est déjà dans une ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.invite.target_already_in_city"), Prefix.CITY, MessageType.ERROR, false); return false; } if (!PlayerSettingsManager.canReceiveCityInvite(player.getUniqueId(), target.getUniqueId())) { - MessagesManager.sendMessage(player, Component.text("§cCette personne ne peut pas recevoir d'invitation"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.invite.target_cant_receive"), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getMembers().size() >= MemberLimitRewards.getMemberLimit(city.getLevel())) { - MessagesManager.sendMessage(player, Component.text("§cVous avez atteint la limite de membre qui est de §3" + MemberLimitRewards.getMemberLimit(city.getLevel()) + "§f, Améliorez votre ville au niveau supérieur !"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.invite.member_limit_reached", + Component.text(MemberLimitRewards.getMemberLimit(city.getLevel())) + ), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -68,12 +71,12 @@ public static boolean canCityInviteDeny(Player player, Player inviter) { List playerInvitations = CityInviteCommands.invitations.get(player); if (playerInvitations == null) { - MessagesManager.sendMessage(player, Component.text("Tu n'as aucune invitation en attente"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.invite.commands.accept.none_pending"), Prefix.CITY, MessageType.ERROR, false); return false; } if (!playerInvitations.contains(inviter)) { - MessagesManager.sendMessage(player, Component.text(inviter.getName() + " ne vous a pas invité"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.invite.commands.accept.not_invited", Component.text(inviter.getName())), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -90,12 +93,12 @@ public static boolean canCityInviteDeny(Player player, Player inviter) { */ public static boolean canCityInviteAccept(City newCity, Player inviter, Player invitedPlayer) { if (!CityInviteCommands.invitations.containsKey(invitedPlayer)) { - MessagesManager.sendMessage(invitedPlayer, Component.text("Tu n'as aucune invitation en attente"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(invitedPlayer, TranslationManager.translation("feature.city.invite.commands.accept.none_pending"), Prefix.CITY, MessageType.ERROR, false); return false; } if (newCity == null) { - MessagesManager.sendMessage(invitedPlayer, Component.text("L'invitation a expiré"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(invitedPlayer, TranslationManager.translation("feature.city.conditions.invite.expired"), Prefix.CITY, MessageType.ERROR, false); List playerInvitations = CityInviteCommands.invitations.get(invitedPlayer); playerInvitations.remove(inviter); @@ -106,7 +109,7 @@ public static boolean canCityInviteAccept(City newCity, Player inviter, Player i } if (newCity.getMembers().size() >= MemberLimitRewards.getMemberLimit(newCity.getLevel())) { - MessagesManager.sendMessage(invitedPlayer, Component.text("La ville a atteint sa limite de membre"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(invitedPlayer, TranslationManager.translation("feature.city.conditions.invite.city_member_limit_reached"), Prefix.CITY, MessageType.ERROR, false); List playerInvitations = CityInviteCommands.invitations.get(invitedPlayer); playerInvitations.remove(inviter); diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityLeaveCondition.java b/src/main/java/fr/openmc/core/features/city/conditions/CityLeaveCondition.java index cb154d7af..4a995dc38 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityLeaveCondition.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityLeaveCondition.java @@ -6,7 +6,6 @@ import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; import fr.openmc.core.utils.messages.TranslationManager; -import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; /** @@ -29,7 +28,7 @@ public static boolean canCityLeave(City city, Player player) { } if (city.hasPermission(player.getUniqueId(), CityPermission.OWNER)) { - MessagesManager.sendMessage(player, Component.text("Tu ne peux pas quitter la ville car tu en es le propriétaire, supprime la ville ou transfère la propriété"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.leave.owner_cant_leave"), Prefix.CITY, MessageType.ERROR, false); return false; } return true; diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityManageConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityManageConditions.java index dccb8958a..e3f5e283f 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityManageConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityManageConditions.java @@ -32,7 +32,7 @@ public static boolean canCityRename(City city, Player player) { } if (!(city.hasPermission(player.getUniqueId(), CityPermission.RENAME))) { - MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de renommer ta ville."), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.manage.rename.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -54,12 +54,12 @@ public static boolean canCityTransfer(City city, Player player, UUID target) { } if (target.equals(player.getUniqueId())) { - MessagesManager.sendMessage(player, Component.text("Tu ne peux pas te transférer la ville à toi-même"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.manage.transfer.self"), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getPlayerWithPermission(CityPermission.OWNER).equals(target)) { - MessagesManager.sendMessage(player, Component.text("Ce joueur est déjà le propriétaire de la ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.manage.transfer.already_owner"), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -80,12 +80,12 @@ public static boolean canCityTransfer(City city, Player player) { } if (!(city.hasPermission(player.getUniqueId(), CityPermission.OWNER))) { - MessagesManager.sendMessage(player, Component.text("Tu n'es pas le propriétaire de la ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.player_isnt_owner"), Prefix.CITY, MessageType.ERROR, false); return false; } if (!city.getMembers().contains(player.getUniqueId())) { - MessagesManager.sendMessage(player, Component.text("Ce joueur n'est pas dans votre ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.target_in_other_city"), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -106,17 +106,20 @@ public static boolean canCityDelete(City city, Player player) { } if (!DynamicCooldownManager.isReady(player.getUniqueId(), "city:big")) { - MessagesManager.sendMessage(player, Component.text("§cTu dois attendre avant de pouvoir supprimer ta ville ("+ DynamicCooldownManager.getRemaining(player.getUniqueId(), "city:big")/1000 + " secondes)"), Prefix.CITY, MessageType.INFO, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.manage.delete.must_wait", + Component.text(DynamicCooldownManager.getRemaining(player.getUniqueId(), "city:big") / 1000) + ), Prefix.CITY, MessageType.INFO, false); return false; } if (city.isInWar()) { - MessagesManager.sendMessage(player, Component.text("§cVous ne pouvez pas supprimer votre ville pendant une guerre"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.manage.delete.cant_in_war"), Prefix.CITY, MessageType.ERROR, false); return false; } if (!city.getPlayerWithPermission(CityPermission.OWNER).equals(player.getUniqueId())) { - MessagesManager.sendMessage(player, Component.text("Tu n'es pas le propriétaire de la ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.player_isnt_owner"), Prefix.CITY, MessageType.ERROR, false); return false; } return true; diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java index 7180d1165..a3d149a12 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java @@ -34,22 +34,28 @@ public static boolean canCityChangeType(City city, Player player, CityType toTyp } if (!(city.hasPermission(player.getUniqueId(), CityPermission.TYPE))) { - MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de changer le statut de ta ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.type.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getType().equals(toType)) { - MessagesManager.sendMessage(player, Component.text("Tu es déjà en " + toType.getName()), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.type.already_in_type", Component.text(toType.getName())), Prefix.CITY, MessageType.ERROR, false); return false; } if (!DynamicCooldownManager.isReady(city.getUniqueId(), "city:type")) { - MessagesManager.sendMessage(player, Component.text("Vous devez attendre " + DateUtils.convertMillisToTime(DynamicCooldownManager.getRemaining(city.getUniqueId(), "city:type")) + " pour changer de type de ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.type.must_wait", + Component.text(DateUtils.convertMillisToTime(DynamicCooldownManager.getRemaining(city.getUniqueId(), "city:type"))) + ), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getBalance() < REQUIRED_MONEY_TYPE) { - MessagesManager.sendMessage(player, Component.text("Vous devez avoir au moins " + REQUIRED_MONEY_TYPE + EconomyManager.getEconomyIcon() + " dans votre banque pour changer le type de votre ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.city.conditions.type.not_enough_city_money", + Component.text(REQUIRED_MONEY_TYPE + EconomyManager.getEconomyIcon()) + ), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityUnclaimCondition.java b/src/main/java/fr/openmc/core/features/city/conditions/CityUnclaimCondition.java index a61087a7f..c326df525 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityUnclaimCondition.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityUnclaimCondition.java @@ -6,7 +6,6 @@ import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; import fr.openmc.core.utils.messages.TranslationManager; -import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -32,7 +31,7 @@ public static boolean canCityUnclaim(City city, Player player) { } if (!(city.hasPermission(player.getUniqueId(), CityPermission.CLAIM))) { - MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de unclaim"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.unclaim.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/resources/translations/lang.properties b/src/main/resources/translations/lang.properties index 1e49643ac..dc30682c2 100644 --- a/src/main/resources/translations/lang.properties +++ b/src/main/resources/translations/lang.properties @@ -267,6 +267,48 @@ feature.city.player_isnt_owner=Tu n'es pas le propriétaire de la villeSeul le propriétaire de la ville peut faire cela. +# - Manage +feature.city.conditions.manage.rename.no_permission=Tu n'as pas la permission de renommer ta ville. +feature.city.conditions.manage.transfer.self=Tu ne peux pas te transférer la ville à toi-même +feature.city.conditions.manage.transfer.already_owner=Ce joueur est déjà le propriétaire de la ville +feature.city.conditions.manage.delete.must_wait=Tu dois attendre avant de pouvoir supprimer ta ville (%1$s secondes) +feature.city.conditions.manage.delete.cant_in_war=Vous ne pouvez pas supprimer votre ville pendant une guerre + +# - Claim / Unclaim +feature.city.conditions.claim.no_permission=Tu n'as pas la permission de claim +feature.city.conditions.unclaim.no_permission=Tu n'as pas la permission de unclaim +feature.city.conditions.claim.not_enough_city_money=Tu n'as pas assez d'argent dans ta banque pour claim (%1$s nécessaires) + +# - Create +feature.city.conditions.create.must_wait=Tu dois attendre avant de pouvoir créer ta ville (%1$s secondes) +feature.city.conditions.create.not_enough_player_money=Tu n'as pas assez d'argent pour créer ta ville (%1$s nécessaires) + +# - Resources +feature.city.conditions.resource.not_enough_aywenite=Vous n'avez pas assez d'Aywenite (%1$s nécessaires) + +# - Chest +feature.city.conditions.chest.open.no_permission=Vous n'avez pas les permissions de voir le coffre +feature.city.conditions.chest.open.already_opened_by=Le coffre est déjà ouvert par %1$s +feature.city.conditions.chest.upgrade.no_permission=Vous n'avez pas les permissions d'améliorer le coffre de la ville +feature.city.conditions.chest.upgrade.max_level=Le coffre de la ville est déjà au niveau maximum (%1$s page(s) maximale(s)). Pour améliorer cette limite, passez à un niveau de ville supérieur + +# - Invite +feature.city.conditions.invite.no_permission=Tu n'as pas la permission d'inviter des joueurs dans la ville +feature.city.conditions.invite.target_already_in_city=Cette personne est déjà dans une ville +feature.city.conditions.invite.target_cant_receive=Cette personne ne peut pas recevoir d'invitation +feature.city.conditions.invite.member_limit_reached=Vous avez atteint la limite de membre qui est de %1$s. Améliorez votre ville au niveau supérieur ! +feature.city.conditions.invite.expired=L'invitation a expiré +feature.city.conditions.invite.city_member_limit_reached=La ville a atteint sa limite de membre + +# - Type +feature.city.conditions.type.no_permission=Tu n'as pas la permission de changer le statut de ta ville +feature.city.conditions.type.already_in_type=Tu es déjà en %1$s +feature.city.conditions.type.must_wait=Vous devez attendre %1$s pour changer de type de ville +feature.city.conditions.type.not_enough_city_money=Vous devez avoir au moins %1$s dans votre banque pour changer le type de votre ville + +# - Leave +feature.city.conditions.leave.owner_cant_leave=Tu ne peux pas quitter la ville car tu en es le propriétaire, supprime la ville ou transfère la propriété + # * SUB FEATURES # - City Grades feature.city.grade.cannot_exist=Ce grade n'existe pas. From b27a342a1892b1e5482acb5afd5da5ac560367ec Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Fri, 20 Mar 2026 21:37:49 +0100 Subject: [PATCH 4/5] fix color --- .../openmc/core/features/city/commands/AdminCityCommands.java | 2 +- src/main/resources/translations/lang.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java b/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java index f49029b7a..3b3d1b3bd 100644 --- a/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java +++ b/src/main/java/fr/openmc/core/features/city/commands/AdminCityCommands.java @@ -67,7 +67,7 @@ void list(Player player) { List sub = all.subList(start, end); MessagesManager.sendMessage( player, - TranslationManager.translation("feature.city.admin.commands.list.header", Component.text(page), Component.text(maxPage)), + TranslationManager.translation("feature.city.admin.commands.list.header", Component.text(page), Component.text(maxPage)).color(NamedTextColor.GOLD), Prefix.STAFF, MessageType.SUCCESS, false diff --git a/src/main/resources/translations/lang.properties b/src/main/resources/translations/lang.properties index dc30682c2..b4b175488 100644 --- a/src/main/resources/translations/lang.properties +++ b/src/main/resources/translations/lang.properties @@ -163,7 +163,7 @@ feature.city.commands.top.empty=Aucune ville n'est créée pour le moment # - Admin Commands feature.city.admin.commands.delete.success=La ville a été supprimée -feature.city.admin.commands.list.header=—— Villes (page %1$s / %2$s) —— +feature.city.admin.commands.list.header=—— Villes (page %1$s / %2$s) —— feature.city.admin.commands.list.copy_label= [copier] feature.city.admin.commands.list.copy_uuid_hover=Clique pour copier l'UUID feature.city.admin.commands.list.nav.prev=« Précédent From 6ca7e2f4d4951844adb0f2896e60fd82f5eb1abb Mon Sep 17 00:00:00 2001 From: iambibi_ <89582596+iambibi@users.noreply.github.com> Date: Sat, 21 Mar 2026 16:16:47 +0100 Subject: [PATCH 5/5] translate other (exclude menus, and sub package) --- .../fr/openmc/core/features/city/City.java | 16 +++++- .../core/features/city/CityChatManager.java | 14 +++-- .../core/features/city/CityPermission.java | 57 ++++++++++--------- .../openmc/core/features/city/CityType.java | 17 ++---- .../features/city/ProtectionsManager.java | 4 +- .../city/conditions/CityChestConditions.java | 4 +- .../city/conditions/CityPermsConditions.java | 6 +- .../city/conditions/CityTypeConditions.java | 4 +- .../protections/ExplodeProtection.java | 11 +++- .../features/city/menu/CityChestMenu.java | 2 +- .../city/menu/list/CityListDetailsMenu.java | 2 +- .../city/menu/main/buttons/ChestButton.java | 2 +- .../city/menu/main/buttons/TypeButton.java | 7 ++- .../playerlist/CityPlayerGestionMenu.java | 2 +- .../menu/playerlist/CityPlayerListMenu.java | 2 +- .../core/features/city/models/DBCityRank.java | 11 ++-- .../bank/conditions/CityBankConditions.java | 4 +- .../sub/bank/menu/CityBankDepositMenu.java | 2 +- .../city/sub/bank/menu/CityBankMenu.java | 8 +-- .../sub/bank/menu/CityBankWithdrawMenu.java | 2 +- .../city/sub/mascots/menu/MascotMenu.java | 2 +- .../sub/notation/menu/NotationDialog.java | 2 +- .../city/sub/rank/CityRankCommands.java | 6 +- .../city/sub/rank/CityRankCondition.java | 2 +- .../sub/war/menu/main/WarCityDetailsMenu.java | 2 +- .../features/city/view/CityViewManager.java | 6 +- .../resources/translations/lang.properties | 53 ++++++++++++++++- 27 files changed, 161 insertions(+), 89 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 26c4df7c0..a5cf5c27a 100644 --- a/src/main/java/fr/openmc/core/features/city/City.java +++ b/src/main/java/fr/openmc/core/features/city/City.java @@ -28,6 +28,7 @@ import lombok.Getter; import lombok.Setter; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.Chunk; import org.bukkit.OfflinePlayer; @@ -794,13 +795,17 @@ public void changeRank(Player sender, UUID playerUUID, DBCityRank newRank) { DBCityRank currentRank = getRankOfMember(playerUUID); OfflinePlayer player = CacheOfflinePlayer.getOfflinePlayer(playerUUID); - + if (currentRank != null) { currentRank.removeMember(playerUUID); for (CityPermission permission : currentRank.getPermissionsSet()) { removePermission(playerUUID, permission); } - MessagesManager.sendMessage(sender, Component.text("§cVous avez retiré le grade §e" + currentRank.getName() + "§c de §6" + player.getName()), Prefix.CITY, MessageType.SUCCESS, true); + MessagesManager.sendMessage(sender, + TranslationManager.translation("feature.city.grade.remove_grade", + Component.text(currentRank.getName()).color(NamedTextColor.YELLOW), + Component.text(player.getName())).color(NamedTextColor.GOLD), + Prefix.CITY, MessageType.SUCCESS, true); } if (currentRank != newRank) { @@ -808,7 +813,12 @@ public void changeRank(Player sender, UUID playerUUID, DBCityRank newRank) { for (CityPermission permission : newRank.getPermissionsSet()) { addPermission(playerUUID, permission); } - MessagesManager.sendMessage(sender, Component.text("§aVous avez assigné le grade §e" + newRank.getName() + "§a à §6" + player.getName()), Prefix.CITY, MessageType.SUCCESS, true); + MessagesManager.sendMessage(sender, + TranslationManager.translation("feature.city.grade.assign_grade", + Component.text(newRank.getName()).color(NamedTextColor.YELLOW), + Component.text(player.getName()).color(NamedTextColor.GOLD) + ), + Prefix.CITY, MessageType.SUCCESS, true); } Bukkit.getScheduler().runTaskAsynchronously(OMCPlugin.getInstance(), () -> { diff --git a/src/main/java/fr/openmc/core/features/city/CityChatManager.java b/src/main/java/fr/openmc/core/features/city/CityChatManager.java index 0ed0b1ebd..39d033f96 100644 --- a/src/main/java/fr/openmc/core/features/city/CityChatManager.java +++ b/src/main/java/fr/openmc/core/features/city/CityChatManager.java @@ -3,6 +3,7 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; @@ -26,7 +27,8 @@ public class CityChatManager { */ public static void addCityChatMember(Player player) { cityChatMembers.add(player); - MessagesManager.sendMessage(player, Component.text("Vous avez rejoint le chat de ville"), Prefix.CITY, MessageType.INFO, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.chat.entered"), + Prefix.CITY, MessageType.INFO, false); } /** @@ -35,7 +37,8 @@ public static void addCityChatMember(Player player) { */ public static void removeCityChatMember(Player player) { cityChatMembers.remove(player); - MessagesManager.sendMessage(player, Component.text("Vous avez quitté le chat de ville"), Prefix.CITY, MessageType.INFO, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.chat.leaved"), + Prefix.CITY, MessageType.INFO, false); } /** @@ -55,11 +58,14 @@ public static boolean isCityChatMember(Player player) { public static void sendCityChatMessage(Player sender, Component message) { City city = CityManager.getPlayerCity(sender.getUniqueId()); if (city == null) { - MessagesManager.sendMessage(sender, Component.text("Tu n'habites dans aucune ville"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(sender, TranslationManager.translation("messages.city.player_no_in_city"), + Prefix.CITY, MessageType.ERROR, false); return; } - Component msg_component = Component.text("#ville ").color(NamedTextColor.GOLD).append(sender.displayName().color(NamedTextColor.WHITE)).append( + Component msg_component = TranslationManager.translation("feature.city.chat.prefix").color(NamedTextColor.GOLD) + .appendSpace() + .append(sender.displayName().color(NamedTextColor.WHITE)).append( Component.text(" » ").color(NamedTextColor.GRAY).append( message.color(NamedTextColor.WHITE) ) diff --git a/src/main/java/fr/openmc/core/features/city/CityPermission.java b/src/main/java/fr/openmc/core/features/city/CityPermission.java index 309701b22..65c04ac11 100644 --- a/src/main/java/fr/openmc/core/features/city/CityPermission.java +++ b/src/main/java/fr/openmc/core/features/city/CityPermission.java @@ -1,41 +1,42 @@ package fr.openmc.core.features.city; +import fr.openmc.core.utils.messages.TranslationManager; import lombok.Getter; +import net.kyori.adventure.text.Component; import org.bukkit.Material; +@Getter public enum CityPermission { - OWNER("Propriétaire", Material.NETHERITE_BLOCK), //Impossible à donner sauf avec un transfert - INVITE("Inviter", Material.OAK_DOOR), - KICK("Expulser", Material.IRON_DOOR), - PLACE("Placer des blocs", Material.OAK_LOG), - BREAK("Casser des blocs", Material.STONE_PICKAXE), - OPEN_CHEST("Ouvrir les coffres", Material.CHEST), - INTERACT("Interagir avec les blocs (sauf coffres)", Material.LEVER), - CLAIM("Claim", Material.GRASS_BLOCK), - SEE_CHUNKS("Voir les claims", Material.MAP), - RENAME("Renommer", Material.NAME_TAG), - MONEY_GIVE("Déposer de l'argent", Material.EMERALD), - MONEY_BALANCE("Voir l'argent", Material.GOLD_INGOT), - MONEY_TAKE("Retirer de l'argent", Material.DIAMOND), - PERMS("Permissions", Material.DIAMOND_BLOCK), // Cette permission est donnée seulement par l'owner - CHEST("Accès au coffre de ville", Material.ENDER_CHEST), - CHEST_UPGRADE("Améliorer le coffre de ville", Material.OAK_CHEST_BOAT), - TYPE("Changer le type de ville", Material.BIRCH_SIGN), - MASCOT_MOVE("Déplacer la mascotte", Material.LEAD), - MASCOT_SKIN("Changer le skin de la mascotte", Material.ZOMBIE_SPAWN_EGG), - MASCOT_UPGRADE("Améliorer la mascotte", Material.BONE), - MASCOT_HEAL("Soigner la mascotte", Material.POTION), - LAUNCH_WAR("Lancer des guerres", Material.IRON_SWORD), - MANAGE_RANKS("Gérer les grades", Material.PAPER), - ASSIGN_RANKS("Assigner des grades", Material.BOOK) + OWNER(TranslationManager.translation("feature.city.permission.owner"), Material.NETHERITE_BLOCK), //Impossible à donner sauf avec un transfert + INVITE(TranslationManager.translation("feature.city.permission.invite"), Material.OAK_DOOR), + KICK(TranslationManager.translation("feature.city.permission.kick"), Material.IRON_DOOR), + PLACE(TranslationManager.translation("feature.city.permission.place"), Material.OAK_LOG), + BREAK(TranslationManager.translation("feature.city.permission.break"), Material.STONE_PICKAXE), + OPEN_CHEST(TranslationManager.translation("feature.city.permission.open_chest"), Material.CHEST), + INTERACT(TranslationManager.translation("feature.city.permission.interact"), Material.LEVER), + CLAIM(TranslationManager.translation("feature.city.permission.claim"), Material.GRASS_BLOCK), + SEE_CHUNKS(TranslationManager.translation("feature.city.permission.see_claim"), Material.MAP), + RENAME(TranslationManager.translation("feature.city.permission.rename"), Material.NAME_TAG), + MONEY_DEPOSIT(TranslationManager.translation("feature.city.permission.money_deposit"), Material.EMERALD), + MONEY_BALANCE(TranslationManager.translation("feature.city.permission.money_see"), Material.GOLD_INGOT), + MONEY_WITHDRAW(TranslationManager.translation("feature.city.permission.money_withdraw"), Material.DIAMOND), + MANAGE_PERMS(TranslationManager.translation("feature.city.permission.manage_perm"), Material.DIAMOND_BLOCK), // Cette permission est donnée seulement par l'owner + ACCESS_CITY_CHEST(TranslationManager.translation("feature.city.permission.access_city_chest"), Material.ENDER_CHEST), + UPGRADE_CHEST(TranslationManager.translation("feature.city.permission.upgrade_chest"), Material.OAK_CHEST_BOAT), + CHANGE_TYPE(TranslationManager.translation("feature.city.permission.change_type"), Material.BIRCH_SIGN), + MASCOT_MOVE(TranslationManager.translation("feature.city.permission.move_mascot"), Material.LEAD), + MASCOT_CHANGE_SKIN(TranslationManager.translation("feature.city.permission.change_mascot_skin"), Material.ZOMBIE_SPAWN_EGG), + MASCOT_UPGRADE(TranslationManager.translation("feature.city.permission.upgrade_mascot"), Material.BONE), + MASCOT_HEAL(TranslationManager.translation("feature.city.permission.heal_mascot"), Material.POTION), + LAUNCH_WAR(TranslationManager.translation("feature.city.permission.launch_war"), Material.IRON_SWORD), + MANAGE_RANKS(TranslationManager.translation("feature.city.permission.manage_grade"), Material.PAPER), + ASSIGN_RANKS(TranslationManager.translation("feature.city.permission.assign_grade"), Material.BOOK) ; - @Getter - private final String displayName; - @Getter + private final Component displayName; private final Material icon; - CityPermission(String displayName, Material icon) { + CityPermission(Component displayName, Material icon) { this.displayName = displayName; this.icon = icon; } diff --git a/src/main/java/fr/openmc/core/features/city/CityType.java b/src/main/java/fr/openmc/core/features/city/CityType.java index 66c38e4ad..989e77744 100644 --- a/src/main/java/fr/openmc/core/features/city/CityType.java +++ b/src/main/java/fr/openmc/core/features/city/CityType.java @@ -1,23 +1,18 @@ package fr.openmc.core.features.city; +import fr.openmc.core.utils.messages.TranslationManager; import lombok.Getter; +import net.kyori.adventure.text.Component; @Getter public enum CityType { - WAR("Guerre", "§c"), - PEACE("Paix", "§a"), - + WAR(TranslationManager.translation("feature.city.war.war")), + PEACE(TranslationManager.translation("feature.city.war.peace")), ; - private String displayName; - private String color; + private final Component displayName; - CityType(String displayName, String color) { + CityType(Component displayName) { this.displayName = displayName; - this.color = color; - } - - public String getName() { - return color + displayName + "§7"; } } diff --git a/src/main/java/fr/openmc/core/features/city/ProtectionsManager.java b/src/main/java/fr/openmc/core/features/city/ProtectionsManager.java index c5d174f63..db1ccdf3b 100644 --- a/src/main/java/fr/openmc/core/features/city/ProtectionsManager.java +++ b/src/main/java/fr/openmc/core/features/city/ProtectionsManager.java @@ -6,7 +6,7 @@ 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 fr.openmc.core.utils.messages.TranslationManager; import org.bukkit.Location; import org.bukkit.entity.Entity; import org.bukkit.entity.Player; @@ -123,7 +123,7 @@ public static void cancelMessage(Player player) { lastErrorMessageTime.put(player.getUniqueId(), now); MessagesManager.sendMessage( player, - Component.text("Vous n'avez pas l'autorisation de faire ceci !"), + TranslationManager.translation("feature.city.cant_do_this"), Prefix.CITY, MessageType.ERROR, 0.6F, diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java index e50fe2449..4806416fa 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityChestConditions.java @@ -47,7 +47,7 @@ public static boolean canCityChestOpen(City city, Player player) { return false; } - if (!city.hasPermission(player.getUniqueId(), CityPermission.CHEST)) { + if (!city.hasPermission(player.getUniqueId(), CityPermission.ACCESS_CITY_CHEST)) { MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.chest.open.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -75,7 +75,7 @@ public static boolean canCityChestUpgrade(City city, Player player) { return false; } - if (!city.hasPermission(player.getUniqueId(), CityPermission.CHEST_UPGRADE)) { + if (!city.hasPermission(player.getUniqueId(), CityPermission.UPGRADE_CHEST)) { MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.chest.upgrade.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } 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 fdace79c9..4d445650e 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 @@ -53,13 +53,13 @@ public static boolean canModifyPerms(Player sender, CityPermission permission) { return false; } - if (!(city.hasPermission(sender.getUniqueId(), CityPermission.PERMS))) { + if (!(city.hasPermission(sender.getUniqueId(), CityPermission.MANAGE_PERMS))) { MessagesManager.sendMessage(sender, TranslationManager.translation("messages.city.player_no_permission_access"), Prefix.CITY, MessageType.ERROR, false); return false; } - if (!city.hasPermission(sender.getUniqueId(), permission) && permission == CityPermission.PERMS) { - MessagesManager.sendMessage(sender, TranslationManager.translation("feature_city.only_owner_can_do_this"), Prefix.CITY, MessageType.ERROR, false); + if (!city.hasPermission(sender.getUniqueId(), permission) && permission == CityPermission.MANAGE_PERMS) { + MessagesManager.sendMessage(sender, TranslationManager.translation("feature.city.only_owner_can_do_this"), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java b/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java index a3d149a12..da08bb3e2 100644 --- a/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java +++ b/src/main/java/fr/openmc/core/features/city/conditions/CityTypeConditions.java @@ -33,13 +33,13 @@ public static boolean canCityChangeType(City city, Player player, CityType toTyp return false; } - if (!(city.hasPermission(player.getUniqueId(), CityPermission.TYPE))) { + if (!(city.hasPermission(player.getUniqueId(), CityPermission.CHANGE_TYPE))) { MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.type.no_permission"), Prefix.CITY, MessageType.ERROR, false); return false; } if (city.getType().equals(toType)) { - MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.type.already_in_type", Component.text(toType.getName())), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.conditions.type.already_in_type", toType.getDisplayName()), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java b/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java index b39fb9d5c..372f6e294 100644 --- a/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java +++ b/src/main/java/fr/openmc/core/features/city/listeners/protections/ExplodeProtection.java @@ -8,7 +8,9 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Entity; import org.bukkit.entity.EntityType; @@ -121,8 +123,13 @@ private void notifyCityMembers(City city, City attackerCity, Player attacker) { if (member.isOnline()) { MessagesManager.sendMessage( (Player) member, - Component.text("Vous vous êtes pris une TNT dans votre ville par la ville §4" + attackerCity.getName() + " §fet posée par §4" + attacker.getName() + "§f ! §8(§c" + currentTnt + "§8/§c" + MAX_TNT_PER_DAY + " tnt journalières§8)"), - Prefix.CITY, + TranslationManager.translation("feature.city.listeners.tnt_explode", + Component.text(attackerCity.getName()).color(NamedTextColor.DARK_RED), + Component.text(attacker.getName()).color(NamedTextColor.DARK_RED), + Component.text(currentTnt).color(NamedTextColor.RED), + Component.text(MAX_TNT_PER_DAY).color(NamedTextColor.RED) + ), + Prefix.CITY, MessageType.WARNING, false ); diff --git a/src/main/java/fr/openmc/core/features/city/menu/CityChestMenu.java b/src/main/java/fr/openmc/core/features/city/menu/CityChestMenu.java index e13e97cd4..e5c2c9197 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/CityChestMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/CityChestMenu.java @@ -153,7 +153,7 @@ public Map getButtons() { loreUpgrade.add(Component.text("§e§lCLIQUEZ ICI POUR AMELIORER LE COFFRE")); } - if (city.hasPermission(getOwner().getUniqueId(), CityPermission.CHEST_UPGRADE) && city.getChestPages() < ChestPageLimitRewards.getChestPageLimit(city.getLevel())) { + if (city.hasPermission(getOwner().getUniqueId(), CityPermission.UPGRADE_CHEST) && city.getChestPages() < ChestPageLimitRewards.getChestPageLimit(city.getLevel())) { map.put(47, new ItemBuilder(this, Material.ENDER_CHEST, itemMeta -> { itemMeta.displayName(Component.text("§aAméliorer le coffre")); itemMeta.lore(loreUpgrade); diff --git a/src/main/java/fr/openmc/core/features/city/menu/list/CityListDetailsMenu.java b/src/main/java/fr/openmc/core/features/city/menu/list/CityListDetailsMenu.java index e85de1d3a..d189346ca 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/list/CityListDetailsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/list/CityListDetailsMenu.java @@ -153,7 +153,7 @@ public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { }).setOnClick(inventoryClickEvent -> new CityPlayerListMenu(getOwner(), city).open())); map.put(26, new ItemBuilder(this, new ItemStack(city.getType().equals(CityType.WAR) ? Material.RED_BANNER : Material.GREEN_BANNER), - itemMeta -> itemMeta.displayName(Component.text("§eType : " + city.getType().getName())))); + itemMeta -> itemMeta.displayName(Component.text("§eType : " + city.getType().getDisplayName())))); map.put(18, new ItemBuilder(this, CustomStack.getInstance("_iainternal:icon_back_orange").getItemStack(), itemMeta -> itemMeta.displayName(Component.text("§eRetour")), true)); return map; diff --git a/src/main/java/fr/openmc/core/features/city/menu/main/buttons/ChestButton.java b/src/main/java/fr/openmc/core/features/city/menu/main/buttons/ChestButton.java index 749954c5d..a0dc77a65 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/main/buttons/ChestButton.java +++ b/src/main/java/fr/openmc/core/features/city/menu/main/buttons/ChestButton.java @@ -39,7 +39,7 @@ public static void init(Menu menu, Map contents, City city } private static List getDynamicLore(City city, Player player) { - boolean hasPermissionChest = city.hasPermission(player.getUniqueId(), CityPermission.CHEST); + boolean hasPermissionChest = city.hasPermission(player.getUniqueId(), CityPermission.ACCESS_CITY_CHEST); List lore; if (!FeaturesRewards.hasUnlockFeature(city, FeaturesRewards.Feature.CHEST)) { lore = List.of( diff --git a/src/main/java/fr/openmc/core/features/city/menu/main/buttons/TypeButton.java b/src/main/java/fr/openmc/core/features/city/menu/main/buttons/TypeButton.java index eaffc048a..9ae693b8b 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/main/buttons/TypeButton.java +++ b/src/main/java/fr/openmc/core/features/city/menu/main/buttons/TypeButton.java @@ -11,6 +11,7 @@ import fr.openmc.core.features.city.menu.CityTypeMenu; import fr.openmc.core.utils.DateUtils; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.Material; import org.bukkit.NamespacedKey; import org.bukkit.entity.Player; @@ -43,17 +44,17 @@ private static Supplier getItemSupplier(Menu menu, City city, Playe meta.lore(getDynamicLore(city, player)); meta.setItemModel(NamespacedKey.minecraft("air")); }).setOnClick(inventoryClickEvent -> { - if (!(city.hasPermission(player.getUniqueId(), CityPermission.TYPE))) return; + if (!(city.hasPermission(player.getUniqueId(), CityPermission.CHANGE_TYPE))) return; new CityTypeMenu(player).open(); }); } private static List getDynamicLore(City city, Player player) { - boolean hasPermissionChangeType = city.hasPermission(player.getUniqueId(), CityPermission.TYPE); + boolean hasPermissionChangeType = city.hasPermission(player.getUniqueId(), CityPermission.CHANGE_TYPE); List lore = new ArrayList<>(); - lore.add(Component.text("§7Votre ville est en §5" + city.getType().getDisplayName().toLowerCase(Locale.ROOT))); + lore.add(Component.text("§7Votre ville est en §5" + PlainTextComponentSerializer.plainText().serialize(city.getType().getDisplayName()).toLowerCase(Locale.ROOT))); if (city.getType().equals(CityType.WAR) && city.hasPermission(player.getUniqueId(), CityPermission.LAUNCH_WAR)) { lore.add(Component.empty()); diff --git a/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerGestionMenu.java b/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerGestionMenu.java index 189825fc2..c03c36f07 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerGestionMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerGestionMenu.java @@ -62,7 +62,7 @@ public void onInventoryClick(InventoryClickEvent click) { assert city != null; boolean hasPermissionKick = city.hasPermission(player.getUniqueId(), CityPermission.KICK); - boolean hasPermissionPerms = city.hasPermission(player.getUniqueId(), CityPermission.PERMS); + boolean hasPermissionPerms = city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_PERMS); List loreKick; diff --git a/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerListMenu.java b/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerListMenu.java index 604850f7c..c741379c9 100644 --- a/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerListMenu.java +++ b/src/main/java/fr/openmc/core/features/city/menu/playerlist/CityPlayerListMenu.java @@ -71,7 +71,7 @@ public List getItems() { assert city != null; boolean hasPermissionKick = city.hasPermission(player.getUniqueId(), CityPermission.KICK); - boolean hasPermissionPerms = city.hasPermission(player.getUniqueId(), CityPermission.PERMS); + boolean hasPermissionPerms = city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_PERMS); boolean hasPermissionOwner = city.hasPermission(player.getUniqueId(), CityPermission.OWNER); for (UUID uuid : city.getMembers()) { 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 a77ecca71..f7c6c8056 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 @@ -6,8 +6,8 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import lombok.Getter; -import net.kyori.adventure.text.Component; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -85,15 +85,18 @@ public DBCityRank(UUID rankUUID, UUID cityUUID, String name, int priority, Mater */ public DBCityRank validate(Player player) throws IllegalArgumentException { if (name == null || name.isEmpty()) { - MessagesManager.sendMessage(player, Component.text("Le nom du grade ne peut pas être vide"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.grade.name_cannot_be_null"), + Prefix.CITY, MessageType.ERROR, false); throw new IllegalArgumentException("Rank name cannot be null or empty"); } if (priority < 0) { - MessagesManager.sendMessage(player, Component.text("La priorité doit être contenue entre 0 et 17"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.grade.priority_must_be_0_17"), + Prefix.CITY, MessageType.ERROR, false); throw new IllegalArgumentException("Rank priority cannot be negative"); } if (icon == null) { - MessagesManager.sendMessage(player, Component.text("L'icône du grade ne peut pas être nulle (prévenir le staff)"), Prefix.CITY, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.city.grade.icon_cannot_be_null"), + Prefix.CITY, MessageType.ERROR, false); throw new IllegalArgumentException("Rank icon cannot be null"); } return this; diff --git a/src/main/java/fr/openmc/core/features/city/sub/bank/conditions/CityBankConditions.java b/src/main/java/fr/openmc/core/features/city/sub/bank/conditions/CityBankConditions.java index 31e32ec85..49314e6e5 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/bank/conditions/CityBankConditions.java +++ b/src/main/java/fr/openmc/core/features/city/sub/bank/conditions/CityBankConditions.java @@ -54,7 +54,7 @@ public static boolean canCityDeposit(City city, Player player) { if (!canOpenCityBank(city, player)) return false; - if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_GIVE))) { + if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_DEPOSIT))) { MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de donner de l'argent à ta ville"), Prefix.CITY, MessageType.ERROR, false); return false; } @@ -94,7 +94,7 @@ public static boolean canCityWithdraw(City city, Player player) { return false; } - if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_TAKE))) { + if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_WITHDRAW))) { MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de prendre de l'argent de ta ville"), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankDepositMenu.java b/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankDepositMenu.java index f16adbe52..c6f5ff928 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankDepositMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankDepositMenu.java @@ -59,7 +59,7 @@ public void onInventoryClick(InventoryClickEvent click) { City city = CityManager.getPlayerCity(player.getUniqueId()); assert city != null; - boolean hasPermissionMoneyGive = city.hasPermission(player.getUniqueId(), CityPermission.MONEY_GIVE); + boolean hasPermissionMoneyGive = city.hasPermission(player.getUniqueId(), CityPermission.MONEY_DEPOSIT); double moneyPlayer = EconomyManager.getBalance(player.getUniqueId()); double halfMoneyPlayer = moneyPlayer / 2; diff --git a/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankMenu.java b/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankMenu.java index 47773246c..8322a9ab5 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankMenu.java @@ -63,7 +63,7 @@ public void onInventoryClick(InventoryClickEvent click) { List loreBankDeposit; - if (city.hasPermission(player.getUniqueId(), CityPermission.MONEY_GIVE)) { + if (city.hasPermission(player.getUniqueId(), CityPermission.MONEY_DEPOSIT)) { loreBankDeposit = List.of( Component.text("§7Votre argent sera placé dans la §6banque de la ville"), Component.text("§e§lCLIQUEZ ICI POUR DEPOSER") @@ -78,7 +78,7 @@ public void onInventoryClick(InventoryClickEvent click) { itemMeta.itemName(Component.text("§7Déposer de l'§6Argent")); itemMeta.lore(loreBankDeposit); }).setOnClick(inventoryClickEvent -> { - if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_GIVE))) { + if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_DEPOSIT))) { MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de donner de l'argent à ta ville"), Prefix.CITY, MessageType.ERROR, false); return; } @@ -104,7 +104,7 @@ public void onInventoryClick(InventoryClickEvent click) { List loreBankTake; - if (city.hasPermission(player.getUniqueId(), CityPermission.MONEY_TAKE)) { + if (city.hasPermission(player.getUniqueId(), CityPermission.MONEY_WITHDRAW)) { loreBankTake = List.of( Component.text("§7L'argent sera pris dans la §6Banque de la ville"), Component.text("§e§lCLIQUEZ ICI POUR INDIQUER LE MONTANT") @@ -119,7 +119,7 @@ public void onInventoryClick(InventoryClickEvent click) { itemMeta.itemName(Component.text("§7Retirer de l'§6argent")); itemMeta.lore(loreBankTake); }).setOnClick(inventoryClickEvent -> { - if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_TAKE))) { + if (!(city.hasPermission(player.getUniqueId(), CityPermission.MONEY_WITHDRAW))) { MessagesManager.sendMessage(player, Component.text("Tu n'as pas la permission de prendre de l'argent à ta ville"), Prefix.CITY, MessageType.ERROR, false); return; } diff --git a/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankWithdrawMenu.java b/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankWithdrawMenu.java index 9f187a75b..170956ba3 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankWithdrawMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/bank/menu/CityBankWithdrawMenu.java @@ -59,7 +59,7 @@ public void onInventoryClick(InventoryClickEvent click) { City city = CityManager.getPlayerCity(player.getUniqueId()); assert city != null; - boolean hasPermissionMoneyTake = city.hasPermission(player.getUniqueId(), CityPermission.MONEY_TAKE); + boolean hasPermissionMoneyTake = city.hasPermission(player.getUniqueId(), CityPermission.MONEY_WITHDRAW); double moneyBankCity = city.getBalance(); double halfMoneyBankCity = moneyBankCity / 2; diff --git a/src/main/java/fr/openmc/core/features/city/sub/mascots/menu/MascotMenu.java b/src/main/java/fr/openmc/core/features/city/sub/mascots/menu/MascotMenu.java index b7363d6cc..610628ca5 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/mascots/menu/MascotMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/mascots/menu/MascotMenu.java @@ -100,7 +100,7 @@ public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { }) .hide(DataComponentTypes.ENCHANTMENTS, DataComponentTypes.ATTRIBUTE_MODIFIERS) .setOnClick(inventoryClickEvent -> { - if (!city.hasPermission(player.getUniqueId(), CityPermission.MASCOT_SKIN)) { + if (!city.hasPermission(player.getUniqueId(), CityPermission.MASCOT_CHANGE_SKIN)) { MessagesManager.sendMessage(player, TranslationManager.translation("messages.global.cannot_do_this"), Prefix.CITY, MessageType.ERROR, false); player.closeInventory(); return; diff --git a/src/main/java/fr/openmc/core/features/city/sub/notation/menu/NotationDialog.java b/src/main/java/fr/openmc/core/features/city/sub/notation/menu/NotationDialog.java index c36447249..3efeb1c50 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/notation/menu/NotationDialog.java +++ b/src/main/java/fr/openmc/core/features/city/sub/notation/menu/NotationDialog.java @@ -95,7 +95,7 @@ public static DialogBody lineCityNotation(City city, String weekStr) { Component hoverCityName = Component.text("§7Niveau de la mascotte : §c" + city.getMascot().getLevel()) .append(Component.newline()) - .append(Component.text("§7Statut : " + city.getType().getName())) + .append(Component.text("§7Statut : " + city.getType().getDisplayName())) .append(Component.newline()) .append(Component.text("§7Membres : §2" + city.getMembers().size())) .append(Component.newline()) 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 3917c842c..80791e7d3 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 @@ -78,7 +78,7 @@ public static void swapPermission(Player player, DBCityRank rank, CityPermission MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_in_city"), Prefix.CITY, MessageType.ERROR, false); return; } - if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { + if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_PERMS)) { MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_permission_access"), Prefix.CITY, MessageType.ERROR, false); return; } @@ -105,7 +105,7 @@ public static void addAllPermissions(Player player, DBCityRank rank) { MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_in_city"), Prefix.CITY, MessageType.ERROR, false); return; } - if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { + if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_PERMS)) { MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_permission_access"), Prefix.CITY, MessageType.ERROR, false); return; } @@ -132,7 +132,7 @@ public static void removeAllPermissions(Player player, DBCityRank rank) { MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_in_city"), Prefix.CITY, MessageType.ERROR, false); return; } - if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { + if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_PERMS)) { MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_permission_access"), Prefix.CITY, MessageType.ERROR, false); return; } 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 7eb5b8123..385ba21e2 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 @@ -98,7 +98,7 @@ public static boolean canDeleteRank(City city, Player player, String rankName) { return false; } - if (!city.hasPermission(player.getUniqueId(), CityPermission.PERMS)) { + if (!city.hasPermission(player.getUniqueId(), CityPermission.MANAGE_PERMS)) { MessagesManager.sendMessage(player, TranslationManager.translation("messages.city.player_no_permission_access"), Prefix.CITY, MessageType.ERROR, false); return false; } diff --git a/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarCityDetailsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarCityDetailsMenu.java index 8e0a3aed8..eedeea4dd 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarCityDetailsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarCityDetailsMenu.java @@ -113,7 +113,7 @@ public void onInventoryClick(InventoryClickEvent inventoryClickEvent) { }).setOnClick(inventoryClickEvent -> new WarPlayerListMenu(player, city).open())); map.put(26, new ItemBuilder(this, new ItemStack(city.getType().equals(CityType.WAR) ? Material.RED_BANNER : Material.GREEN_BANNER), - itemMeta -> itemMeta.displayName(Component.text("§7Type : " + city.getType().getName())))); + itemMeta -> itemMeta.displayName(Component.text("§7Type : " + city.getType().getDisplayName())))); map.put(18, new ItemBuilder(this, Material.ARROW, itemMeta -> { itemMeta.itemName(Component.text("§aRetour")); diff --git a/src/main/java/fr/openmc/core/features/city/view/CityViewManager.java b/src/main/java/fr/openmc/core/features/city/view/CityViewManager.java index 05a1e7cbd..e165a4763 100644 --- a/src/main/java/fr/openmc/core/features/city/view/CityViewManager.java +++ b/src/main/java/fr/openmc/core/features/city/view/CityViewManager.java @@ -9,10 +9,10 @@ import fr.openmc.core.utils.messages.MessageType; import fr.openmc.core.utils.messages.MessagesManager; import fr.openmc.core.utils.messages.Prefix; +import fr.openmc.core.utils.messages.TranslationManager; import io.papermc.paper.threadedregions.scheduler.ScheduledTask; import it.unimi.dsi.fastutil.objects.Object2ObjectMap; import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; -import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.*; import org.bukkit.entity.Player; @@ -48,7 +48,7 @@ public static void startView(@NotNull Player player) { if (claimsToShow.isEmpty()) { MessagesManager.sendMessage( player, - Component.text("Aucune ville n'a été trouvée dans les environs.", NamedTextColor.RED), + TranslationManager.translation("feature.city.view.commands.no_city").color(NamedTextColor.RED), Prefix.CITY, MessageType.ERROR, false @@ -63,7 +63,7 @@ public static void startView(@NotNull Player player) { MessagesManager.sendMessage( player, - Component.text("Visualisation des claims des villes en cours pendant 30 secondes"), + TranslationManager.translation("feature.city.view.commands.visiualizing"), Prefix.CITY ); } diff --git a/src/main/resources/translations/lang.properties b/src/main/resources/translations/lang.properties index b4b175488..824e6703c 100644 --- a/src/main/resources/translations/lang.properties +++ b/src/main/resources/translations/lang.properties @@ -203,6 +203,10 @@ feature.city.perms.commands.add.already_has=%1$s a déjà cette permission feature.city.perms.commands.remove.does_not_have=%1$s n'a pas cette permission feature.city.perms.commands.modified=Les permissions de %1$s ont été modifiées +# - City View Command +feature.city.view.commands.no_city=Aucune ville n'a été trouvée dans les environs. +feature.city.view.commands.visiualizing=Visualisation des claims des villes en cours pendant 30 secondes + # * ACTIONS # - Type Change feature.city.type.in_peace=en paix @@ -265,7 +269,9 @@ feature.city.player_cannot_kick_himself=Tu ne peux pas t'exclure toi-même. feature.city.player_isnt_owner=Tu n'es pas le propriétaire de la ville feature.city.player_is_owner=Le propriétaire a tous les pouvoirs. -feature_city.only_owner_can_do_this=Seul le propriétaire de la ville peut faire cela. +feature.city.only_owner_can_do_this=Seul le propriétaire de la ville peut faire cela. +feature.city.cant_do_this=Vous n'avez pas l'autorisation de faire ceci ! + # - Manage feature.city.conditions.manage.rename.no_permission=Tu n'as pas la permission de renommer ta ville. @@ -309,13 +315,52 @@ feature.city.conditions.type.not_enough_city_money=Vous devez avoir au moins %1$ # - Leave feature.city.conditions.leave.owner_cant_leave=Tu ne peux pas quitter la ville car tu en es le propriétaire, supprime la ville ou transfère la propriété +# * LISTENERS +feature.city.listeners.tnt_explode=Vous vous êtes pris une TNT dans votre ville par la ville %1$s et posée par %2$s ! (%3$s/%4$s tnt journalières) + # * SUB FEATURES +# - City Chat +feature.city.chat.entered=Vous avez rejoint le chat de ville +feature.city.chat.leaved=Vous avez quitté le chat de ville +feature.city.chat.prefix=#ville + +# - City Permission +feature.city.permission.owner=Propriétaire +feature.city.permission.invite=Inviter +feature.city.permission.kick=Expulser +feature.city.permission.place=Placer des blocs +feature.city.permission.break=Casser des blocs +feature.city.permission.open_chest=Ouvrir les coffres +feature.city.permission.interact=Interagir avec les blocs (sauf coffres) +feature.city.permission.claim=Claim +feature.city.permission.see_claim=Voir les claims +feature.city.permission.rename=Renommer +feature.city.permission.money_deposit=Déposer de l'argent dans la banque de la ville +feature.city.permission.money_see=Voir l'argent de la ville +feature.city.permission.money_withdraw=Retirer de l'argent de la banque de la ville +feature.city.permission.manage_perm=Gérer les permissions des membres +feature.city.permission.access_city_chest=Accéder au coffre de la ville +feature.city.permission.upgrade_chest=Améliorer le coffre de ville +feature.city.permission.change_type=Changer le type de ville +feature.city.permission.move_mascot=Déplacer la mascotte +feature.city.permission.change_mascot_skin=Changer le skin de la mascotte +feature.city.permission.upgrade_mascot=Améliorer la mascotte +feature.city.permission.heal_mascot=Soigner la mascotte +feature.city.permission.launch_war=Lancer des guerres +feature.city.permission.manage_grade=Gérer les grades +feature.city.permission.assign_grade=Assigner des grades + # - City Grades feature.city.grade.cannot_exist=Ce grade n'existe pas. +feature.city.grade.name_cannot_be_null=Le nom du grade ne peut pas être vide +feature.city.grade.priority_must_be_0_17=La priorité doit être contenue entre 0 et 17 +feature.city.grade.icon_cannot_be_null=L'icône du grade ne peut pas être nulle (prévenir le staff) feature.city.grade.cannot_assign=Tu n'as pas la permission d'assigner des grades. feature.city.grade.cannot_modify_sup_role=Tu ne peux pas modifier un grade supérieur ou égal au tien. feature.city.grade.max_reach=Le nombre maximum de grades a été atteint, tu ne peux pas en ajouter d'autres. feature.city.grade.already_exist=Ce grade existe déjà. +feature.city.grade.remove_grade=Vous avez retiré le grade %1$s de %2$s +feature.city.grade.assign_grade=Vous avez assigné le grade %1$s à %2$s # - Mascots ## Mascot Wand @@ -328,4 +373,8 @@ feature.city.mascot.mascot_wand.lore=Votre mascotte sera posée à l'emplac feature.city.mascot.mascot_wand.can_only_place_mascot=Vous pouvez poser votre mascotte uniquement dans le monde principal feature.city.mascot.mascot_wand.hasnot_block_above=Aucun bloc ne doit être au-dessus de la mascotte -feature.city.mascot.mascot=Mascotte \ No newline at end of file +feature.city.mascot.mascot=Mascotte + +# - War +feature.city.war.peace=Paix +feature.city.war.war=Guerre \ No newline at end of file