diff --git a/src/main/java/fr/openmc/core/features/mailboxes/letter/LetterHead.java b/src/main/java/fr/openmc/core/features/mailboxes/letter/LetterHead.java index 2bde9a920..e0880c1fd 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/letter/LetterHead.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/letter/LetterHead.java @@ -35,7 +35,7 @@ public LetterHead(OfflinePlayer player, int letterId, int itemsCount, LocalDateT skullMeta.setOwningPlayer(player); skullMeta.displayName(getPlayerName(player)); skullMeta.lore(List.of( - nonItalic(Component.text(formatRelativeDate(sentAt), NamedTextColor.DARK_GRAY)), + nonItalic(formatRelativeDate(sentAt).color(NamedTextColor.DARK_GRAY)), nonItalic(Component.text("➤ Contient ", NamedTextColor.DARK_GREEN) .append(Component.text(itemsCount, NamedTextColor.GREEN, TextDecoration.BOLD)) .append(Component.text(pluralize(" item", itemsCount), NamedTextColor.DARK_GREEN))) diff --git a/src/main/java/fr/openmc/core/features/privatemessage/PrivateMessageManager.java b/src/main/java/fr/openmc/core/features/privatemessage/PrivateMessageManager.java index 06d45d83c..7e049d5ca 100644 --- a/src/main/java/fr/openmc/core/features/privatemessage/PrivateMessageManager.java +++ b/src/main/java/fr/openmc/core/features/privatemessage/PrivateMessageManager.java @@ -8,6 +8,7 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import org.bukkit.entity.Player; @@ -65,17 +66,17 @@ public static void sendPrivateMessage(Player sender, Player receiver, String mes * @param message The message to send. */ public static void replyToLastMessage(Player sender, String message) { - UUID lastReceiverId = lastMessageFrom.get(sender.getUniqueId()); - if (lastReceiverId == null) { - MessagesManager.sendMessage(sender, Component.text("§cVous n'avez pas de message privé récent."), Prefix.OPENMC, MessageType.ERROR, true); - return; - } + UUID lastReceiverId = lastMessageFrom.get(sender.getUniqueId()); + if (lastReceiverId == null) { + MessagesManager.sendMessage(sender, TranslationManager.translation("messages.global.missing_arg"), Prefix.OPENMC, MessageType.ERROR, true); + return; + } - Player receiver = sender.getServer().getPlayer(lastReceiverId); - if (receiver == null || !receiver.isOnline()) { - MessagesManager.sendMessage(sender, Component.text("§cLe joueur n'est pas en ligne."), Prefix.OPENMC, MessageType.ERROR, true); - return; - } + Player receiver = sender.getServer().getPlayer(lastReceiverId); + if (receiver == null || !receiver.isOnline()) { + MessagesManager.sendMessage(sender, TranslationManager.translation("messages.global.player_not_found"), Prefix.OPENMC, MessageType.ERROR, true); + return; + } sendPrivateMessage(sender, receiver, message); } diff --git a/src/main/java/fr/openmc/core/features/privatemessage/SocialSpyManager.java b/src/main/java/fr/openmc/core/features/privatemessage/SocialSpyManager.java index 4058f2ee9..d1ca36d68 100644 --- a/src/main/java/fr/openmc/core/features/privatemessage/SocialSpyManager.java +++ b/src/main/java/fr/openmc/core/features/privatemessage/SocialSpyManager.java @@ -7,7 +7,7 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; -import net.kyori.adventure.text.Component; +import fr.openmc.core.utils.text.messages.TranslationManager; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -32,20 +32,20 @@ public Set getCommands() { * @param player The player whose social spy status is being toggled. */ public static void toggleSocialSpy(Player player) { - UUID playerUUID = player.getUniqueId(); + UUID playerUUID = player.getUniqueId(); - if (socialSpyEnabled.contains(playerUUID)) { - socialSpyEnabled.remove(playerUUID); - MessagesManager.sendMessage(player, - Component.text("§aSocial Spy désactivé."), - Prefix.OPENMC, MessageType.SUCCESS, true); - } else { - socialSpyEnabled.add(playerUUID); - MessagesManager.sendMessage(player, - Component.text("§aSocial Spy activé."), - Prefix.OPENMC, MessageType.SUCCESS, true); - } - } + if (socialSpyEnabled.contains(playerUUID)) { + socialSpyEnabled.remove(playerUUID); + MessagesManager.sendMessage(player, + TranslationManager.translation("feature.privatemessage.socialspy.toggled_off"), + Prefix.OPENMC, MessageType.SUCCESS, true); + } else { + socialSpyEnabled.add(playerUUID); + MessagesManager.sendMessage(player, + TranslationManager.translation("feature.privatemessage.socialspy.toggled_on"), + Prefix.OPENMC, MessageType.SUCCESS, true); + } + } /** * Checks if the social spy feature is enabled for the player. diff --git a/src/main/java/fr/openmc/core/features/privatemessage/command/SocialSpyCommand.java b/src/main/java/fr/openmc/core/features/privatemessage/command/SocialSpyCommand.java index 2daafd300..d3c9c25a1 100644 --- a/src/main/java/fr/openmc/core/features/privatemessage/command/SocialSpyCommand.java +++ b/src/main/java/fr/openmc/core/features/privatemessage/command/SocialSpyCommand.java @@ -5,6 +5,7 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -43,22 +44,23 @@ public void toggleSocialSpyForPlayer( @CommandPermission("omc.admin.commands.privatemessage.socialspy.admin") public void listSocialSpyPlayers(Player admin) { int spyCount = 0; - StringBuilder spyList = new StringBuilder("§6Joueurs avec Social Spy activé:\n"); + StringBuilder spyList = new StringBuilder(); for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { if (SocialSpyManager.hasSocialSpyEnabled(onlinePlayer)) { - spyList.append("§7- §a").append(onlinePlayer.getName()).append("\n"); + spyList.append(TranslationManager.translationString("feature.privatemessage.socialspy.list_item", Component.text(onlinePlayer.getName()))).append("\n"); spyCount++; } } if (spyCount == 0) { MessagesManager.sendMessage(admin, - Component.text("§cAucun joueur n'a le social spy activé."), + TranslationManager.translation("feature.privatemessage.socialspy.no_players"), Prefix.OPENMC, MessageType.INFO, true); } else { - spyList.append("§6Total: §e").append(spyCount).append(" joueur(s)"); + admin.sendMessage(TranslationManager.translationString("feature.privatemessage.socialspy.list_title")); admin.sendMessage(spyList.toString()); + admin.sendMessage(TranslationManager.translationString("feature.privatemessage.socialspy.list_total", Component.text(spyCount))); } } } diff --git a/src/main/java/fr/openmc/core/features/settings/menu/PlayerSettingsMenu.java b/src/main/java/fr/openmc/core/features/settings/menu/PlayerSettingsMenu.java index 77f9aba72..d28adff0f 100644 --- a/src/main/java/fr/openmc/core/features/settings/menu/PlayerSettingsMenu.java +++ b/src/main/java/fr/openmc/core/features/settings/menu/PlayerSettingsMenu.java @@ -14,6 +14,7 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.format.TextDecoration; @@ -176,7 +177,7 @@ private ItemStack createEnumItem(SettingType settingType, Object currentValue) { this.refresh(); MessagesManager.sendMessage(getOwner(), - Component.text(settingType.getName() + " mis à jour.", NamedTextColor.GREEN) + TranslationManager.translation("feature.settings.item.updated", Component.text(settingType.getName())) .decoration(TextDecoration.ITALIC, false), Prefix.SETTINGS, MessageType.SUCCESS, true); }); diff --git a/src/main/java/fr/openmc/core/features/tickets/TicketListener.java b/src/main/java/fr/openmc/core/features/tickets/TicketListener.java index 6349b4d34..5d998486e 100644 --- a/src/main/java/fr/openmc/core/features/tickets/TicketListener.java +++ b/src/main/java/fr/openmc/core/features/tickets/TicketListener.java @@ -7,6 +7,7 @@ import fr.openmc.core.features.displays.holograms.Hologram; import fr.openmc.core.features.displays.holograms.HologramLoader; import fr.openmc.core.features.tickets.menus.MachineBallsMenu; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import org.bukkit.Bukkit; @@ -61,9 +62,9 @@ private void createMachineHologram(Location machineLocation) { hologram.setLocation(hologramLocation.getX(), hologramLocation.getY(), hologramLocation.getZ()); hologram.setScale(0.7f); hologram.setLines( - "§6§lMachine à boules V1", - "§eCliquez pour jouer !", - "§bBonne chance !" + TranslationManager.translationString("feature.tickets.machine.hologram_line1"), + TranslationManager.translationString("feature.tickets.machine.hologram_line2"), + TranslationManager.translationString("feature.tickets.machine.hologram_line3") ); HologramLoader.registerHolograms(hologram); diff --git a/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsMenu.java b/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsMenu.java index 83a7223c6..cc4e521ac 100644 --- a/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsMenu.java +++ b/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsMenu.java @@ -8,9 +8,11 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; @@ -53,30 +55,31 @@ public String getTexture() { this, Material.PAPER, itemMeta -> { - itemMeta.displayName(Component.text("§eRécupérer mes tickets")); + itemMeta.displayName(TranslationManager.translation("feature.tickets.menu.get_tickets.title")); itemMeta.lore( List.of( - Component.text("§7Récupérer les tickets que"), - Component.text("§7vous avez récolté grâce à votre"), - Component.text("§7temps de jeu sur OpenMC V1.") + TranslationManager.translation("feature.tickets.menu.get_tickets.lore1"), + TranslationManager.translation("feature.tickets.menu.get_tickets.lore2"), + TranslationManager.translation("feature.tickets.menu.get_tickets.lore3") )); } ).setOnClick( e -> { e.getWhoClicked().closeInventory(); if (stats == null) { - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas de statistique pour récupérer des tickets."), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(getOwner(), TranslationManager.translation("feature.tickets.menu.no_stats"), Prefix.OPENMC, MessageType.ERROR, true); return; } if (stats.isTicketGiven()) { - MessagesManager.sendMessage(getOwner(), Component.text("§cVous avez déjà récupéré vos tickets !"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(getOwner(), TranslationManager.translation("feature.tickets.menu.already_claimed"), Prefix.OPENMC, MessageType.ERROR, true); return; } int ticketsToGive = TicketManager.giveTicket(getOwner().getUniqueId()); if (ticketsToGive <= 0) { - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas de tickets à récupérer !"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(getOwner(), TranslationManager.translation("feature.tickets.menu.no_tickets"), Prefix.OPENMC, MessageType.ERROR, true); } else { - MessagesManager.sendMessage(getOwner(), Component.text("§aVous avez reçu §e%s §atickets !".formatted(ticketsToGive)), Prefix.OPENMC, MessageType.SUCCESS, true); + MessagesManager.sendMessage(getOwner(), TranslationManager.translation("feature.tickets.menu.claimed", + Component.text(ticketsToGive, NamedTextColor.YELLOW)), Prefix.OPENMC, MessageType.SUCCESS, true); } } )); @@ -85,18 +88,18 @@ public String getTexture() { this, Material.NETHER_STAR, itemMeta -> { - itemMeta.displayName(Component.text("§eOuvrir un ticket")); + itemMeta.displayName(TranslationManager.translation("feature.tickets.menu.open_ticket.title")); itemMeta.lore( List.of( - Component.text("§7Ouvrir une box avec 1 ticket."), - Component.text("§7Vous avez actuellement §e%s §7tickets.".formatted(tickets)) + TranslationManager.translation("feature.tickets.menu.open_ticket.lore1"), + TranslationManager.translation("feature.tickets.menu.open_ticket.lore2", Component.text(tickets)) )); } ).setOnClick( e -> { e.getWhoClicked().closeInventory(); if (tickets <= 0) { - MessagesManager.sendMessage(getOwner(), Component.text("§cVous n'avez pas assez de tickets !"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(getOwner(), TranslationManager.translation("feature.tickets.menu.not_enough_tickets"), Prefix.OPENMC, MessageType.ERROR, true); return; } MachineBallsOpenMenu menu = new MachineBallsOpenMenu(getOwner()); diff --git a/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsOpenMenu.java b/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsOpenMenu.java index 5f13bcf32..2045c9a0c 100644 --- a/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsOpenMenu.java +++ b/src/main/java/fr/openmc/core/features/tickets/menus/MachineBallsOpenMenu.java @@ -10,6 +10,7 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.key.Key; import net.kyori.adventure.sound.Sound; import net.kyori.adventure.text.Component; @@ -223,39 +224,39 @@ private LootItem selectRandomLoot() { } private void giveReward(LootItem wonItem) { - PlayerStats ps = TicketManager.getPlayerStats(getOwner().getUniqueId()); - if (ps == null) return; - - String itemKey = wonItem.displayName(); - int alreadyWon = ps.getMaxItemsGiven().getOrDefault(itemKey, 0); - - if (wonItem.maxRewards() > 0 && alreadyWon >= wonItem.maxRewards()) { - MessagesManager.sendMessage(getOwner(), - Component.text("§cVous avez déjà atteint la limite de cet item : ") - .append(Component.text(wonItem.displayName())), - Prefix.OPENMC, MessageType.ERROR, true); - return; - } - - for (ItemStack reward : wonItem.rewards()) { - if (getOwner().getInventory().firstEmpty() != -1) { - getOwner().getInventory().addItem(reward); - } else { - getOwner().getWorld().dropItemNaturally(getOwner().getLocation(), reward); - } - } - - if (wonItem.maxRewards() > 0) { - ps.getMaxItemsGiven().put(itemKey, alreadyWon + 1); - } - - TicketManager.setTicketGiven(getOwner().getUniqueId(), ps.getTicketRemaining(), ps.isTicketGiven()); - MessagesManager.sendMessage(getOwner(), - Component.text("§aVous avez gagné : ") - .append(Component.text(wonItem.displayName())) - .append(Component.text(" §a!")), - Prefix.OPENMC, MessageType.SUCCESS, true); - } + PlayerStats ps = TicketManager.getPlayerStats(getOwner().getUniqueId()); + if (ps == null) return; + + String itemKey = wonItem.displayName(); + int alreadyWon = ps.getMaxItemsGiven().getOrDefault(itemKey, 0); + + if (wonItem.maxRewards() > 0 && alreadyWon >= wonItem.maxRewards()) { + MessagesManager.sendMessage(getOwner(), + TranslationManager.translation("feature.tickets.loot.limit_reached") + .append(Component.text(wonItem.displayName())), + Prefix.OPENMC, MessageType.ERROR, true); + return; + } + + for (ItemStack reward : wonItem.rewards()) { + if (getOwner().getInventory().firstEmpty() != -1) { + getOwner().getInventory().addItem(reward); + } else { + getOwner().getWorld().dropItemNaturally(getOwner().getLocation(), reward); + } + } + + if (wonItem.maxRewards() > 0) { + ps.getMaxItemsGiven().put(itemKey, alreadyWon + 1); + } + + TicketManager.setTicketGiven(getOwner().getUniqueId(), ps.getTicketRemaining(), ps.isTicketGiven()); + MessagesManager.sendMessage(getOwner(), + TranslationManager.translation("feature.tickets.loot.won") + .append(Component.text(wonItem.displayName())) + .append(Component.text(" !")), + Prefix.OPENMC, MessageType.SUCCESS, true); + } private List initializeLootItems() { List items = new ArrayList<>(); diff --git a/src/main/java/fr/openmc/core/features/tpa/TPAManager.java b/src/main/java/fr/openmc/core/features/tpa/TPAManager.java index dd161a9ae..32e1a3e17 100644 --- a/src/main/java/fr/openmc/core/features/tpa/TPAManager.java +++ b/src/main/java/fr/openmc/core/features/tpa/TPAManager.java @@ -10,7 +10,9 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.entity.Player; @@ -92,10 +94,16 @@ public static void expireRequest(Player player, Player target) { if (tpaRequests.containsKey(target.getUniqueId())) { if (tpaRequests.get(target.getUniqueId()).contains(player.getUniqueId())) { long requestTime = tpaRequestTime.get(player.getUniqueId()); - if (System.currentTimeMillis() - requestTime >= 30000) { // 30 secondes - MessagesManager.sendMessage(player, Component.text("§4Votre demande de téléportation à §6" + target.getName() + " §4a expiré"), Prefix.OPENMC, MessageType.WARNING, true); - MessagesManager.sendMessage(target, Component.text("§3La demande de téléportation de §6" + player.getName() + " §4a expiré"), Prefix.OPENMC, MessageType.INFO, true); - + if (System.currentTimeMillis() - requestTime >= 30000) { + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.tpa.expire.sender", + Component.text(target.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.WARNING, true); + MessagesManager.sendMessage(target, TranslationManager.translation( + "feature.tpa.expire.target", + Component.text(player.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.INFO, true); + removeRequest(player, target); } } diff --git a/src/main/java/fr/openmc/core/features/tpa/commands/TPACancelCommand.java b/src/main/java/fr/openmc/core/features/tpa/commands/TPACancelCommand.java index 7d1add9cd..0c8c95e00 100644 --- a/src/main/java/fr/openmc/core/features/tpa/commands/TPACancelCommand.java +++ b/src/main/java/fr/openmc/core/features/tpa/commands/TPACancelCommand.java @@ -4,7 +4,9 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; import revxrsal.commands.annotation.Command; import revxrsal.commands.bukkit.annotation.CommandPermission; @@ -19,20 +21,26 @@ public class TPACancelCommand { @CommandPermission("omc.commands.tpa") public void tpaCancel(Player player) { if (!TPAManager.requesterHasPendingRequest(player)) { - MessagesManager.sendMessage(player, Component.text("§4Vous n'avez aucune demande de téléportation en cours"), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.tpa.cancel.no_pending"), Prefix.OPENMC, MessageType.ERROR, false); return; } Player target = TPAManager.getTargetByRequester(player); if (target == null) { - MessagesManager.sendMessage(player, Component.text("§4Le joueur n'est pas en ligne ou n'existe pas"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.tpa.cancel.player_not_online"), Prefix.OPENMC, MessageType.ERROR, true); return; } TPAManager.removeRequest(player, target); - MessagesManager.sendMessage(player, Component.text("§2Vous avez annulé votre demande de téléportation à §6" + target.getName()), Prefix.OPENMC, MessageType.SUCCESS, true); - MessagesManager.sendMessage(target, Component.text("§3" + player.getName() + " §4a annulé sa demande de téléportation"), Prefix.OPENMC, MessageType.INFO, true); - + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.tpa.cancel.success", + Component.text(target.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.SUCCESS, true); + MessagesManager.sendMessage(target, TranslationManager.translation( + "feature.tpa.cancel.cancelled", + Component.text(player.getName()).color(NamedTextColor.DARK_RED) + ), Prefix.OPENMC, MessageType.INFO, true); + } } diff --git a/src/main/java/fr/openmc/core/features/tpa/commands/TPACommand.java b/src/main/java/fr/openmc/core/features/tpa/commands/TPACommand.java index 9c7504537..058a97e22 100644 --- a/src/main/java/fr/openmc/core/features/tpa/commands/TPACommand.java +++ b/src/main/java/fr/openmc/core/features/tpa/commands/TPACommand.java @@ -6,9 +6,11 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; import net.kyori.adventure.text.event.HoverEvent; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; import org.bukkit.scheduler.BukkitRunnable; import revxrsal.commands.annotation.Command; @@ -30,23 +32,27 @@ public void tpaAsk( @Named("player") @SuggestWith(OnlinePlayerAutoComplete.class) Player target ) { if (TPAManager.requesterHasPendingRequest(player)) { - MessagesManager.sendMessage(player, Component.text("§4Vous avez déjà une demande de téléportation en attente\n") - .append(Component.text("§3Tapez §5/tpacancel §3pour annuler votre demande de tp en cours").clickEvent(ClickEvent.runCommand("/tpacancel")).hoverEvent(HoverEvent.showText(Component.text("Annuler la demande de TP"))) - ), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(player, + TranslationManager.translation("feature.tpa.already_pending") + .append(Component.text("\n")) + .append(TranslationManager.translation("feature.tpa.already_pending_usage") + .clickEvent(ClickEvent.runCommand("/tpacancel")) + .hoverEvent(HoverEvent.showText(TranslationManager.translation("feature.tpa.request.hover.cancel")))), + Prefix.OPENMC, MessageType.ERROR, true); return; } if (target == null) { - MessagesManager.sendMessage(player, Component.text("§4Le joueur n'existe pas ou n'est pas en ligne"), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.tpa.player_not_found"), Prefix.OPENMC, MessageType.ERROR, false); return; } if (player == target) { - MessagesManager.sendMessage(player, Component.text("§4Vous ne pouvez pas vous envoyer de demande de téléportation à vous même"), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.tpa.cannot_tp_yourself"), Prefix.OPENMC, MessageType.ERROR, false); return; } if (TPAManager.hasPendingRequest(player)) { - MessagesManager.sendMessage(player, Component.text("§4Vous avez déjà une demande de téléportation en attente de votre acceptation"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.tpa.already_have_pending"), Prefix.OPENMC, MessageType.ERROR, true); return; } @@ -57,15 +63,24 @@ private void sendTPARequest(Player player, Player target) { TPAManager.addRequest(player, target); MessagesManager.sendMessage(target, - Component.text("§3Le joueur §6" + player.getName() + " §3 veut se téléporter à vous\n") - .append(Component.text("§3Tapez §5/tpaccept §3pour accepter").clickEvent(ClickEvent.runCommand("/tpaccept")).hoverEvent(HoverEvent.showText(Component.text("Accepter la demande de TP"))) - .append(Component.text("§3 et §5/tpadeny §3pour refuser").clickEvent(ClickEvent.runCommand("/tpadeny")).hoverEvent(HoverEvent.showText(Component.text("Refuser la demande de TP"))) - )), - Prefix.OPENMC, MessageType.INFO, true); - MessagesManager.sendMessage(player, Component.text("§2Vous avez envoyé une demande de téléportation à §6" + target.getName() + " \n") - .append(Component.text("§3Tapez §5/tpacancel §3pour annuler votre demande de tp").clickEvent(ClickEvent.runCommand("/tpacancel")).hoverEvent(HoverEvent.showText(Component.text("Annuler la demande de TP"))) - ), Prefix.OPENMC, MessageType.SUCCESS, true); - + TranslationManager.translation("feature.tpa.request.target_message", Component.text(player.getName()).color(NamedTextColor.GOLD)) + .append(Component.text("\n")) + .append(TranslationManager.translation("feature.tpa.request.target_accept") + .clickEvent(ClickEvent.runCommand("/tpaccept")) + .hoverEvent(HoverEvent.showText(TranslationManager.translation("feature.tpa.request.hover.accept")))) + .append(Component.text(" ")) + .append(TranslationManager.translation("feature.tpa.request.target_deny") + .clickEvent(ClickEvent.runCommand("/tpadeny")) + .hoverEvent(HoverEvent.showText(TranslationManager.translation("feature.tpa.request.hover.deny")))) + , Prefix.OPENMC, MessageType.INFO, true); + MessagesManager.sendMessage(player, + TranslationManager.translation("feature.tpa.request.sender_message", Component.text(target.getName()).color(NamedTextColor.GOLD)) + .append(Component.text("\n")) + .append(TranslationManager.translation("feature.tpa.request.sender_cancel") + .clickEvent(ClickEvent.runCommand("/tpacancel")) + .hoverEvent(HoverEvent.showText(TranslationManager.translation("feature.tpa.request.hover.cancel")))) + , Prefix.OPENMC, MessageType.SUCCESS, true); + new BukkitRunnable() { @Override public void run() { diff --git a/src/main/java/fr/openmc/core/features/tpa/commands/TPADenyCommand.java b/src/main/java/fr/openmc/core/features/tpa/commands/TPADenyCommand.java index f77cb992e..a55ed686a 100644 --- a/src/main/java/fr/openmc/core/features/tpa/commands/TPADenyCommand.java +++ b/src/main/java/fr/openmc/core/features/tpa/commands/TPADenyCommand.java @@ -5,7 +5,9 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; import revxrsal.commands.annotation.Command; import revxrsal.commands.annotation.Named; @@ -28,27 +30,36 @@ public void tpaDeny( Player player ) { if (!TPAManager.hasPendingRequest(target)) { - MessagesManager.sendMessage(target, Component.text("§4Vous n'avez aucune demande de téléportation en cours"), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(target, TranslationManager.translation("feature.tpa.deny.no_pending"), Prefix.OPENMC, MessageType.ERROR, false); return; } if (TPAManager.hasMultipleRequests(target)) { if (player == null) { - MessagesManager.sendMessage(target, Component.text("§4Vous avez plusieurs demandes de téléportation en cours, utilisez §6/tpadeny "), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(target, TranslationManager.translation("feature.tpa.deny.multiple_requests"), Prefix.OPENMC, MessageType.ERROR, false); return; } if (!TPAManager.getRequesters(target).contains(player)) { - MessagesManager.sendMessage(target, Component.text("§4Vous n'avez pas de demande de téléportation de la part de §6" + player.getName()), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(target, TranslationManager.translation( + "feature.tpa.deny.no_request_from", + Component.text(player.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.ERROR, false); return; } } else { player = TPAManager.getRequesters(target).getFirst(); } - MessagesManager.sendMessage(target, Component.text("§2Vous avez refusé la demande de téléportation de §6" + player.getName()), Prefix.OPENMC, MessageType.SUCCESS, false); - MessagesManager.sendMessage(player, Component.text("§6" + target.getName() + " §4a refusé votre demande de téléportation"), Prefix.OPENMC, MessageType.ERROR, false); - + MessagesManager.sendMessage(target, TranslationManager.translation( + "feature.tpa.deny.success", + Component.text(player.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.SUCCESS, false); + MessagesManager.sendMessage(player, TranslationManager.translation( + "feature.tpa.deny.denied", + Component.text(target.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.ERROR, false); + TPAManager.removeRequest(player, target); } diff --git a/src/main/java/fr/openmc/core/features/tpa/commands/TPAcceptCommand.java b/src/main/java/fr/openmc/core/features/tpa/commands/TPAcceptCommand.java index ec7578a80..36d1167b1 100644 --- a/src/main/java/fr/openmc/core/features/tpa/commands/TPAcceptCommand.java +++ b/src/main/java/fr/openmc/core/features/tpa/commands/TPAcceptCommand.java @@ -6,7 +6,9 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Location; import org.bukkit.entity.Player; import revxrsal.commands.annotation.Command; @@ -32,18 +34,21 @@ public void tpAccept( @Optional @SuggestWith(TpaPendingAutoComplete.class) @Named("player") Player player ) { if (!TPAManager.hasPendingRequest(target)) { - MessagesManager.sendMessage(target, Component.text("§4Vous n'avez aucune demande de téléportation en cours"), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(target, TranslationManager.translation("feature.tpa.accept.no_pending"), Prefix.OPENMC, MessageType.ERROR, false); return; } if (TPAManager.hasMultipleRequests(target)) { if (player == null) { - MessagesManager.sendMessage(target, Component.text("§4Vous avez plusieurs demandes de téléportation en cours, utilisez §6/tpaccept "), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(target, TranslationManager.translation("feature.tpa.accept.multiple_requests"), Prefix.OPENMC, MessageType.ERROR, false); return; } if (!TPAManager.getRequesters(target).contains(player)) { - MessagesManager.sendMessage(target, Component.text("§4Vous n'avez pas de demande de téléportation de la part de §6" + player.getName()), Prefix.OPENMC, MessageType.ERROR, false); + MessagesManager.sendMessage(target, TranslationManager.translation( + "feature.tpa.accept.no_request_from", + Component.text(player.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.ERROR, false); return; } } else { @@ -51,13 +56,13 @@ public void tpAccept( } if (target.getFallDistance() > 0) { - MessagesManager.sendMessage(target, Component.text("§4Le joueur est en train de tomber, téléportation impossible"), Prefix.OPENMC, MessageType.ERROR, true); - MessagesManager.sendMessage(player, Component.text("§4Vous êtes en train de tomber, téléportation impossible"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(target, TranslationManager.translation("feature.tpa.accept.falling"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.tpa.accept.you_falling"), Prefix.OPENMC, MessageType.ERROR, true); return; } if (!player.isOnline()) { - MessagesManager.sendMessage(target, Component.text("§4Le joueur n'est pas en ligne ou n'existe pas"), Prefix.OPENMC, MessageType.ERROR, true); + MessagesManager.sendMessage(target, TranslationManager.translation("feature.tpa.accept.player_not_online"), Prefix.OPENMC, MessageType.ERROR, true); return; } @@ -69,8 +74,8 @@ public void tpAccept( private void teleport(Player requester, Player target) { Location loc = target.getLocation(); PlayerUtils.sendFadeTitleTeleport(requester, loc); - MessagesManager.sendMessage(target, Component.text("§2Téléportation réussie"), Prefix.OPENMC, MessageType.SUCCESS, true); - MessagesManager.sendMessage(requester, Component.text("§2Téléportation réussie"), Prefix.OPENMC, MessageType.SUCCESS, true); + MessagesManager.sendMessage(target, TranslationManager.translation("feature.tpa.accept.success"), Prefix.OPENMC, MessageType.SUCCESS, true); + MessagesManager.sendMessage(requester, TranslationManager.translation("feature.tpa.accept.success"), Prefix.OPENMC, MessageType.SUCCESS, true); TPAManager.removeRequest(requester, target); } } diff --git a/src/main/java/fr/openmc/core/features/updates/UpdateManager.java b/src/main/java/fr/openmc/core/features/updates/UpdateManager.java index 3413bad1f..63ee29113 100644 --- a/src/main/java/fr/openmc/core/features/updates/UpdateManager.java +++ b/src/main/java/fr/openmc/core/features/updates/UpdateManager.java @@ -4,9 +4,12 @@ import fr.openmc.core.bootstrap.features.Feature; import fr.openmc.core.bootstrap.features.types.HasCommands; import fr.openmc.core.bootstrap.features.types.HasListeners; +import fr.openmc.core.utils.text.messages.TranslationManager; import lombok.Getter; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; +import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.Listener; @@ -23,13 +26,11 @@ public void init() { String version = OMCPlugin.getInstance().getPluginMeta().getVersion(); String milestoneUrl = "https://github.com/ServerOpenMC/PluginV2/releases/"; - message = Component.text("§8§m §r\n\n§7 Vous jouez actuellement sur la version") - .append(Component.text("§d§l " + version).clickEvent(ClickEvent.openUrl(milestoneUrl))) - .append(Component.text("§7 du plugin §d§lOpenMC.\n")) - .append(Component.text("§f§l Cliquez ici pour voir les changements.").clickEvent(ClickEvent.openUrl(milestoneUrl))) - .append(Component.text("\n\n§8§m §r")); + message = TranslationManager.translation("feature.updates.message.broadcast_version", + Component.text(version, NamedTextColor.LIGHT_PURPLE, TextDecoration.BOLD) + ).clickEvent(ClickEvent.openUrl(milestoneUrl)); - long period = 14400 * 20; // 4h + long period = 14400 * 20; new BukkitRunnable() { @Override diff --git a/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java b/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java index 321b79a7e..0fe121e8d 100644 --- a/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java +++ b/src/main/java/fr/openmc/core/listeners/JoinQuitMessageListener.java @@ -13,8 +13,10 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.event.ClickEvent; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; @@ -39,40 +41,44 @@ public JoinQuitMessageListener() { public void onPlayerJoin(PlayerJoinEvent event) { final Player player = event.getPlayer(); - MessagesManager.sendMessage(player, Component.text("Bienvenue sur OpenMC !"), Prefix.OPENMC, MessageType.INFO, false); - - TabList.updateTabList(player); - - FriendManager.getFriendsAsync(player.getUniqueId()).thenAccept(friendsUUIDS -> { - for (UUID friendUUID : friendsUUIDS) { - final Player friend = player.getServer().getPlayer(friendUUID); - if (friend != null && friend.isOnline() && !friend.hasMetadata(OMCPlugin.VANISH_META_KEY)) { - MessagesManager.sendMessage(friend, Component.text("§aVotre ami §r" + "§r" + LuckPermsHook.getFormattedPAPIPrefix(player) + player.getName() +" §as'est connecté(e)"), Prefix.FRIEND, MessageType.NONE, true); - } - } - }).exceptionally(throwable -> { - OMCLogger.error("An error occurred while loading friends of {} : {}", player.getName(), throwable.getMessage(), throwable); - return null; - }); - - // Quest pending reward notification - Bukkit.getScheduler().runTaskAsynchronously(OMCPlugin.getInstance(), () -> { - for (Quest quest : QuestsManager.getAllQuests()) { - if (!quest.hasPendingRewards(player.getUniqueId())) - continue; - - int pendingRewardsNumber = quest.getPendingRewardTiers(player.getUniqueId()).size(); - Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> { - MessagesManager.sendMessage(player, - Component.text("§aVous avez " + pendingRewardsNumber + " récompense(s) de quête en attente.") - .append(Component.text(" §6Cliquez ici pour les récupérer.")) - .clickEvent(ClickEvent.runCommand("/quest")), - Prefix.QUEST, - MessageType.INFO, - true); - }); - } - }); + MessagesManager.sendMessage(player, TranslationManager.translation("core.player.join.welcome"), Prefix.OPENMC, MessageType.INFO, false); + + TabList.updateTabList(player); + + FriendManager.getFriendsAsync(player.getUniqueId()).thenAccept(friendsUUIDS -> { + for (UUID friendUUID : friendsUUIDS) { + final Player friend = player.getServer().getPlayer(friendUUID); + if (friend != null && friend.isOnline() && !friend.hasMetadata(OMCPlugin.VANISH_META_KEY)) { + MessagesManager.sendMessage(friend, TranslationManager.translation( + "core.player.join.friend_online", + Component.text(LuckPermsHook.getFormattedPAPIPrefix(player) + player.getName()).color(NamedTextColor.GREEN) + ), Prefix.FRIEND, MessageType.NONE, true); + } + } + }).exceptionally(throwable -> { + OMCLogger.error("An error occurred while loading friends of {} : {}", player.getName(), throwable.getMessage(), throwable); + return null; + }); + + // Quest pending reward notification + Bukkit.getScheduler().runTaskAsynchronously(OMCPlugin.getInstance(), () -> { + for (Quest quest : QuestsManager.getAllQuests()) { + if (!quest.hasPendingRewards(player.getUniqueId())) + continue; + + int pendingRewardsNumber = quest.getPendingRewardTiers(player.getUniqueId()).size(); + Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> { + MessagesManager.sendMessage(player, + TranslationManager.translation("core.player.join.quest_reward", Component.text(pendingRewardsNumber)) + .append(Component.text(" ")) + .append(TranslationManager.translation("core.player.join.quest_reward_click")) + .clickEvent(ClickEvent.runCommand("/quest")), + Prefix.QUEST, + MessageType.INFO, + true); + }); + } + }); if (!player.hasMetadata(OMCPlugin.VANISH_META_KEY)) event.joinMessage(Component.text(JOIN_MESSAGE.formatted(LuckPermsHook.getFormattedPAPIPrefix(player), player.getName()))); @@ -102,28 +108,37 @@ public void onPlayerQuit(PlayerQuitEvent event) { Bukkit.getScheduler().runTaskAsynchronously(OMCPlugin.getInstance(), () -> QuestsManager.saveQuests(player.getUniqueId())); - FriendManager.getFriendsAsync(player.getUniqueId()).thenAccept(friendsUUIDS -> { - for (UUID friendUUID : friendsUUIDS) { - final Player friend = player.getServer().getPlayer(friendUUID); - if (friend != null && friend.isOnline() && !friend.hasMetadata(OMCPlugin.VANISH_META_KEY)) { - MessagesManager.sendMessage(friend, Component.text("§cVotre ami §e" + "§r" + LuckPermsHook.getFormattedPAPIPrefix(player) + player.getName() +" §cs'est déconnecté(e)"), Prefix.FRIEND, MessageType.NONE, true); - } - } - }).exceptionally(throwable -> { - OMCLogger.error("An error occurred while loading friends of {} : {}", player.getName(), throwable.getMessage(), throwable); - return null; - }); - - if (TPAManager.requesterHasPendingRequest(player)) { - Player targetTPA = TPAManager.getTargetByRequester(player); - TPAManager.removeRequest(player, targetTPA); - MessagesManager.sendMessage(targetTPA, Component.text("§3La demande de téléportation de §6" + player.getName() + " §4a été annulée car il s'est déconnecté"), Prefix.OPENMC, MessageType.INFO, true); - } else if (TPAManager.hasPendingRequest(player)) { - for (Player requester : TPAManager.getRequesters(player)) { - TPAManager.removeRequest(requester, player); - MessagesManager.sendMessage(requester, Component.text("§4Votre demande de téléportation à §6" + player.getName() + " §4a été annulée car il s'est déconnecté"), Prefix.OPENMC, MessageType.WARNING, true); - } - } + FriendManager.getFriendsAsync(player.getUniqueId()).thenAccept(friendsUUIDS -> { + for (UUID friendUUID : friendsUUIDS) { + final Player friend = player.getServer().getPlayer(friendUUID); + if (friend != null && friend.isOnline() && !friend.hasMetadata(OMCPlugin.VANISH_META_KEY)) { + MessagesManager.sendMessage(friend, TranslationManager.translation( + "core.player.quit.friend_offline", + Component.text(LuckPermsHook.getFormattedPAPIPrefix(player) + player.getName()).color(NamedTextColor.YELLOW) + ), Prefix.FRIEND, MessageType.NONE, true); + } + } + }).exceptionally(throwable -> { + OMCLogger.error("An error occurred while loading friends of {} : {}", player.getName(), throwable.getMessage(), throwable); + return null; + }); + + if (TPAManager.requesterHasPendingRequest(player)) { + Player targetTPA = TPAManager.getTargetByRequester(player); + TPAManager.removeRequest(player, targetTPA); + MessagesManager.sendMessage(targetTPA, TranslationManager.translation( + "core.player.tpa.expired_target", + Component.text(player.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.INFO, true); + } else if (TPAManager.hasPendingRequest(player)) { + for (Player requester : TPAManager.getRequesters(player)) { + TPAManager.removeRequest(requester, player); + MessagesManager.sendMessage(requester, TranslationManager.translation( + "core.player.tpa.expired_requester", + Component.text(player.getName()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.WARNING, true); + } + } if (!player.hasMetadata(OMCPlugin.VANISH_META_KEY)) event.quitMessage(Component.text(QUIT_MESSAGE.formatted(LuckPermsHook.getFormattedPAPIPrefix(player), player.getName()))); diff --git a/src/main/java/fr/openmc/core/listeners/PlayerDeathListener.java b/src/main/java/fr/openmc/core/listeners/PlayerDeathListener.java index a6c8ac76b..4191c918f 100644 --- a/src/main/java/fr/openmc/core/listeners/PlayerDeathListener.java +++ b/src/main/java/fr/openmc/core/listeners/PlayerDeathListener.java @@ -5,6 +5,7 @@ import fr.openmc.core.utils.text.messages.MessageType; import fr.openmc.core.utils.text.messages.MessagesManager; import fr.openmc.core.utils.text.messages.Prefix; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.entity.Player; @@ -25,11 +26,15 @@ public void onPlayerDead(PlayerDeathEvent event) { double balance = getBalance(player.getUniqueId()); - if (balance>0 && !DreamUtils.isInDreamWorld(player)) { - withdrawBalance(player.getUniqueId(), balance * LOSS_MONEY); - MessagesManager.sendMessage(player, Component.text("Vous venez de mourrir avec §6" + getFormattedSimplifiedNumber(balance) + EconomyManager.getEconomyIcon() + "§f, vous avez perdu §6" + getFormattedSimplifiedNumber(balance * LOSS_MONEY) + EconomyManager.getEconomyIcon() + "\n§8*pensez à mettre votre argent dans la banque*"), Prefix.OPENMC, MessageType.INFO, false); - } - + if (balance>0 && !DreamUtils.isInDreamWorld(player)) { + withdrawBalance(player.getUniqueId(), balance * LOSS_MONEY); + MessagesManager.sendMessage(player, TranslationManager.translation( + "core.player.death.message", + Component.text(getFormattedSimplifiedNumber(balance) + EconomyManager.getEconomyIcon()).color(NamedTextColor.GOLD), + Component.text(getFormattedSimplifiedNumber(balance * LOSS_MONEY) + EconomyManager.getEconomyIcon()).color(NamedTextColor.GOLD) + ), Prefix.OPENMC, MessageType.INFO, false); + } + Component deathMessage = event.deathMessage(); if (deathMessage == null) return; MessagesManager.broadcastMessage(deathMessage.color(NamedTextColor.DARK_RED), Prefix.DEATH, MessageType.INFO); diff --git a/src/main/java/fr/openmc/core/utils/bukkit/PlayerUtils.java b/src/main/java/fr/openmc/core/utils/bukkit/PlayerUtils.java index 97955cb7a..ad6c38f4c 100644 --- a/src/main/java/fr/openmc/core/utils/bukkit/PlayerUtils.java +++ b/src/main/java/fr/openmc/core/utils/bukkit/PlayerUtils.java @@ -4,9 +4,8 @@ import fr.openmc.core.OMCPlugin; import fr.openmc.core.features.settings.PlayerSettingsManager; import fr.openmc.core.features.settings.SettingType; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.title.Title; import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket; import net.minecraft.network.syncher.EntityDataAccessor; @@ -25,7 +24,7 @@ public static void sendFadeTitleTeleport(Player player, Location location) { if (PlayerSettingsManager.getPlayerSettings(player.getUniqueId()).getSetting(SettingType.TELEPORT_TITLE_FADE)) { player.showTitle(Title.title( Component.text(FontImageWrapper.replaceFontImages(":tp_effect:")), - Component.text("Téléportation...", NamedTextColor.GREEN, TextDecoration.BOLD), + TranslationManager.translation("core.utils.fade_title.teleporting"), Title.Times.times(Duration.ofMillis(20 * 50), Duration.ofMillis(10 * 50), Duration.ofMillis(10 * 50)) )); new BukkitRunnable() { diff --git a/src/main/java/fr/openmc/core/utils/text/ColorUtils.java b/src/main/java/fr/openmc/core/utils/text/ColorUtils.java index 8f45d0952..f2d13aa39 100644 --- a/src/main/java/fr/openmc/core/utils/text/ColorUtils.java +++ b/src/main/java/fr/openmc/core/utils/text/ColorUtils.java @@ -1,5 +1,6 @@ package fr.openmc.core.utils.text; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Material; @@ -78,31 +79,31 @@ public static NamedTextColor getNamedTextColor(String color) { return NamedTextColor.NAMES.valueOr(color.toLowerCase(), NamedTextColor.WHITE); } - private static final Map colorToName = new HashMap<>(); + private static final Map colorToNameKey = new HashMap<>(); static { - colorToName.put(BLACK, "§0Noir"); - colorToName.put(DARK_BLUE, "§1Bleu foncé"); - colorToName.put(DARK_GREEN, "§2Vert foncé"); - colorToName.put(DARK_AQUA, "§3Aqua foncé"); - colorToName.put(DARK_RED, "§4Rouge foncé"); - colorToName.put(DARK_PURPLE, "§5Violet"); - colorToName.put(GOLD, "§6Orange"); - colorToName.put(GRAY, "§7Gris"); - colorToName.put(DARK_GRAY, "§8Gris foncé"); - colorToName.put(BLUE, "§9Bleu"); - colorToName.put(GREEN, "§aVert clair"); - colorToName.put(AQUA, "§bBleu clair"); - colorToName.put(RED, "§cRouge"); - colorToName.put(LIGHT_PURPLE, "§dRose"); - colorToName.put(YELLOW, "§eJaune"); - colorToName.put(WHITE, "§fBlanc"); + colorToNameKey.put(BLACK, "core.color.name.black"); + colorToNameKey.put(DARK_BLUE, "core.color.name.dark_blue"); + colorToNameKey.put(DARK_GREEN, "core.color.name.dark_green"); + colorToNameKey.put(DARK_AQUA, "core.color.name.dark_aqua"); + colorToNameKey.put(DARK_RED, "core.color.name.dark_red"); + colorToNameKey.put(DARK_PURPLE, "core.color.name.dark_purple"); + colorToNameKey.put(GOLD, "core.color.name.gold"); + colorToNameKey.put(GRAY, "core.color.name.gray"); + colorToNameKey.put(DARK_GRAY, "core.color.name.dark_gray"); + colorToNameKey.put(BLUE, "core.color.name.blue"); + colorToNameKey.put(GREEN, "core.color.name.green"); + colorToNameKey.put(AQUA, "core.color.name.aqua"); + colorToNameKey.put(RED, "core.color.name.red"); + colorToNameKey.put(LIGHT_PURPLE, "core.color.name.light_purple"); + colorToNameKey.put(YELLOW, "core.color.name.yellow"); + colorToNameKey.put(WHITE, "core.color.name.white"); } /** - * Retourne un String qui contient la couleur entrée + * Retourne une translation key qui contient la couleur entrée */ public static String getNameFromColor(NamedTextColor c) { - return colorToName.getOrDefault(c, "Aucun"); + return TranslationManager.translationString(colorToNameKey.getOrDefault(c, "core.color.name.none")); } private static final Map colorCode = new HashMap<>(); diff --git a/src/main/java/fr/openmc/core/utils/text/DateUtils.java b/src/main/java/fr/openmc/core/utils/text/DateUtils.java index 0086dcff8..dea961c72 100644 --- a/src/main/java/fr/openmc/core/utils/text/DateUtils.java +++ b/src/main/java/fr/openmc/core/utils/text/DateUtils.java @@ -1,5 +1,7 @@ package fr.openmc.core.utils.text; +import fr.openmc.core.utils.text.messages.TranslationManager; +import net.kyori.adventure.text.Component; import java.time.DayOfWeek; import java.time.Duration; import java.time.LocalDate; @@ -132,25 +134,38 @@ private static String formatTime(long millis) { /** * Renvoie une chaine de caractère en fonction du temps passé */ - public static String formatRelativeDate(LocalDateTime dateTime) { + public static Component formatRelativeDate(LocalDateTime dateTime) { LocalDateTime now = LocalDateTime.now(); Duration duration = Duration.between(dateTime, now); long minutes = duration.toMinutes(); - String repetMsg="Il y a "; if (minutes < 1) { - return "À l'instant"; + return TranslationManager.translation("core.date.relative.just_now"); } else if (minutes < 60) { - return repetMsg + minutes + " minute" + (minutes > 1 ? "s" : ""); + return TranslationManager.translation( + minutes > 1 ? "core.date.relative.minutes" : "core.date.relative.minute", + Component.text(minutes) + ); } else if (duration.toHours() < 24) { long hours = duration.toHours(); - return repetMsg + hours + " heure" + (hours > 1 ? "s" : ""); + return TranslationManager.translation( + hours > 1 ? "core.date.relative.hours" : "core.date.relative.hour", + Component.text(hours) + ); } else if (duration.toDays() <= 5) { long days = duration.toDays(); - return repetMsg + days + " jour" + (days > 1 ? "s" : ""); + return TranslationManager.translation( + days > 1 ? "core.date.relative.days" : "core.date.relative.day", + Component.text(days) + ); } else { - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("'Le' dd/MM/yyyy 'à' HH:mm"); - return dateTime.format(formatter); + DateTimeFormatter dateFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy"); + DateTimeFormatter timeFormatter = DateTimeFormatter.ofPattern("HH:mm"); + return TranslationManager.translation( + "core.date.relative.absolute", + Component.text(dateTime.format(dateFormatter)), + Component.text(dateTime.format(timeFormatter)) + ); } } diff --git a/src/main/resources/translations/default/core.properties b/src/main/resources/translations/default/core.properties new file mode 100644 index 000000000..4a5b7310f --- /dev/null +++ b/src/main/resources/translations/default/core.properties @@ -0,0 +1,42 @@ +core.player.death.message=Vous venez de mourir avec %1$s, vous avez perdu %2$s\n*pensez à mettre votre argent dans la banque* + +core.player.join.welcome=Bienvenue sur OpenMC ! +core.player.join.friend_online=Votre ami %1$s s'est connecté(e) +core.player.join.quest_reward=Vous avez %1$s récompense(s) de quête en attente. +core.player.join.quest_reward_click=Cliquez ici pour les récupérer. + +core.player.quit.friend_offline=Votre ami %1$s s'est déconnecté(e) + +core.player.tpa.expired_target=La demande de téléportation de %1$s a été annulée car il s'est déconnecté +core.player.tpa.expired_requester=Votre demande de téléportation à %1$s a été annulée car il s'est déconnecté + +core.color.name.black=Noir +core.color.name.dark_blue=Bleu foncé +core.color.name.dark_green=Vert foncé +core.color.name.dark_aqua=Aqua foncé +core.color.name.dark_red=Rouge foncé +core.color.name.dark_purple=Violet +core.color.name.gold=Orange +core.color.name.gray=Gris +core.color.name.dark_gray=Gris foncé +core.color.name.blue=Bleu +core.color.name.green=Vert clair +core.color.name.aqua=Bleu clair +core.color.name.red=Rouge +core.color.name.light_purple=Rose +core.color.name.yellow=Jaune +core.color.name.white=Blanc +core.color.name.none=Aucun + +core.date.relative.just_now=À l'instant +core.date.relative.minute=Il y a %1$s minute +core.date.relative.minutes=Il y a %1$s minutes +core.date.relative.hour=Il y a %1$s heure +core.date.relative.hours=Il y a %1$s heures +core.date.relative.day=Il y a %1$s jour +core.date.relative.days=Il y a %1$s jours +core.date.relative.absolute=Le %1$s à %2$s + + + + diff --git a/src/main/resources/translations/default/privatemessage.properties b/src/main/resources/translations/default/privatemessage.properties new file mode 100644 index 000000000..b31882cff --- /dev/null +++ b/src/main/resources/translations/default/privatemessage.properties @@ -0,0 +1,12 @@ +feature.privatemessage.msg.cannot_message_yourself=Vous ne pouvez pas vous envoyer de message privé à vous-même. +feature.privatemessage.msg.private_messages_disabled=Vous avez désactivé les messages privés. +feature.privatemessage.msg.player_private_messages_disabled=Le joueur %1$s a désactivé les messages privés. + +feature.privatemessage.socialspy.toggled_off=Social Spy désactivé. +feature.privatemessage.socialspy.toggled_on=Social Spy activé. +feature.privatemessage.socialspy.status_changed=Social Spy %1$s pour %2$s. +feature.privatemessage.socialspy.no_players=Aucun joueur n'a le social spy activé. +feature.privatemessage.socialspy.list_title=Joueurs avec Social Spy activé: +feature.privatemessage.socialspy.list_item=- %1$s +feature.privatemessage.socialspy.list_total=Total: %1$s joueur(s) + diff --git a/src/main/resources/translations/default/settings.properties b/src/main/resources/translations/default/settings.properties new file mode 100644 index 000000000..8df4a6da7 --- /dev/null +++ b/src/main/resources/translations/default/settings.properties @@ -0,0 +1,13 @@ +feature.settings.menu.title=Menu des paramètres +feature.settings.reset.title=Réinitialiser les paramètres +feature.settings.reset.confirm_message=Êtes-vous sûr de vouloir réinitialiser tous les paramètres ? +feature.settings.reset.warning=Cette action est irréversible. +feature.settings.reset.cancel=Cliquez pour annuler +feature.settings.reset.success=Tous les paramètres ont été réinitialisés. + +feature.settings.item.status_enabled=Activé +feature.settings.item.status_disabled=Désactivé +feature.settings.item.change=Clique pour changer +feature.settings.item.changed=%1$s %2$s +feature.settings.item.updated=%1$s mis à jour. + diff --git a/src/main/resources/translations/default/tickets.properties b/src/main/resources/translations/default/tickets.properties new file mode 100644 index 000000000..29e314b9f --- /dev/null +++ b/src/main/resources/translations/default/tickets.properties @@ -0,0 +1,25 @@ +feature.tickets.machine.title=Machine à boules +feature.tickets.machine.hologram_line1=Machine à boules V1 +feature.tickets.machine.hologram_line2=Cliquez pour jouer ! +feature.tickets.machine.hologram_line3=Bonne chance ! + +feature.tickets.menu.get_tickets.title=Récupérer mes tickets +feature.tickets.menu.get_tickets.lore1=Récupérer les tickets que +feature.tickets.menu.get_tickets.lore2=vous avez récolté grâce à votre +feature.tickets.menu.get_tickets.lore3=temps de jeu sur OpenMC V1. +feature.tickets.menu.no_stats=Vous n'avez pas de statistique pour récupérer des tickets. +feature.tickets.menu.already_claimed=Vous avez déjà récupéré vos tickets ! +feature.tickets.menu.no_tickets=Vous n'avez pas de tickets à récupérer ! +feature.tickets.menu.claimed=Vous avez reçu %1$s tickets ! + +feature.tickets.menu.open_ticket.title=Ouvrir un ticket +feature.tickets.menu.open_ticket.lore1=Ouvrir une box avec 1 ticket. +feature.tickets.menu.open_ticket.lore2=Vous avez actuellement %1$s tickets. +feature.tickets.menu.not_enough_tickets=Vous n'avez pas assez de tickets ! + +feature.tickets.loot.not_enough_tickets=Vous n'avez pas assez de tickets ! +feature.tickets.loot.limit_reached=Vous avez déjà atteint la limite de cet item : +feature.tickets.loot.won=Vous avez gagné : +feature.tickets.loot.broadcast=FÉLICITATIONS à %1$s qui vient de gagner %2$s à la machine à boules ! + + diff --git a/src/main/resources/translations/default/tpa.properties b/src/main/resources/translations/default/tpa.properties new file mode 100644 index 000000000..c2046fe88 --- /dev/null +++ b/src/main/resources/translations/default/tpa.properties @@ -0,0 +1,36 @@ +feature.tpa.already_pending=Vous avez déjà une demande de téléportation en attente +feature.tpa.already_pending_usage=Tapez /tpacancel pour annuler votre demande de tp en cours +feature.tpa.player_not_found=Le joueur n'existe pas ou n'est pas en ligne +feature.tpa.cannot_tp_yourself=Vous ne pouvez pas vous envoyer de demande de téléportation à vous même +feature.tpa.already_have_pending=Vous avez déjà une demande de téléportation en attente de votre acceptation + +feature.tpa.request.target_message=Le joueur %1$s veut se téléporter à vous +feature.tpa.request.target_accept=Tapez /tpaccept pour accepter +feature.tpa.request.target_deny=et /tpadeny pour refuser +feature.tpa.request.sender_message=Vous avez envoyé une demande de téléportation à %1$s +feature.tpa.request.sender_cancel=Tapez /tpacancel pour annuler votre demande de tp +feature.tpa.request.hover.accept=Accepter la demande de TP +feature.tpa.request.hover.deny=Refuser la demande de TP +feature.tpa.request.hover.cancel=Annuler la demande de TP + +feature.tpa.accept.no_pending=Vous n'avez aucune demande de téléportation en cours +feature.tpa.accept.multiple_requests=Vous avez plusieurs demandes de téléportation en cours, utilisez /tpaccept +feature.tpa.accept.no_request_from=Vous n'avez pas de demande de téléportation de la part de %1$s +feature.tpa.accept.falling=Le joueur est en train de tomber, téléportation impossible +feature.tpa.accept.you_falling=Vous êtes en train de tomber, téléportation impossible +feature.tpa.accept.player_not_online=Le joueur n'est pas en ligne ou n'existe pas +feature.tpa.accept.success=Téléportation réussie + +feature.tpa.deny.no_pending=Vous n'avez aucune demande de téléportation en cours +feature.tpa.deny.multiple_requests=Vous avez plusieurs demandes de téléportation en cours, utilisez /tpadeny +feature.tpa.deny.no_request_from=Vous n'avez pas de demande de téléportation de la part de %1$s +feature.tpa.deny.success=Vous avez refusé la demande de téléportation de %1$s +feature.tpa.deny.denied=%1$s a refusé votre demande de téléportation + +feature.tpa.cancel.no_pending=Vous n'avez aucune demande de téléportation en cours +feature.tpa.cancel.player_not_online=Le joueur n'est pas en ligne ou n'existe pas +feature.tpa.cancel.success=Vous avez annulé votre demande de téléportation à %1$s +feature.tpa.cancel.cancelled=%1$s a annulé sa demande de téléportation + +feature.tpa.expire.sender=Votre demande de téléportation à %1$s a expiré +feature.tpa.expire.target=La demande de téléportation de %1$s a expiré diff --git a/src/main/resources/translations/default/updates.properties b/src/main/resources/translations/default/updates.properties new file mode 100644 index 000000000..2240484b5 --- /dev/null +++ b/src/main/resources/translations/default/updates.properties @@ -0,0 +1,6 @@ +feature.updates.message.broadcast_version= \ +
\ +
Vous jouez actuellement sur la version %1$s du plugin OpenMC. \ +
\ +
+ diff --git a/src/main/resources/translations/default/utils.properties b/src/main/resources/translations/default/utils.properties new file mode 100644 index 000000000..c5d8c8584 --- /dev/null +++ b/src/main/resources/translations/default/utils.properties @@ -0,0 +1 @@ +core.utils.fade_title.teleporting=Téléportation... \ No newline at end of file