diff --git a/src/main/java/fr/openmc/api/menulib/Menu.java b/src/main/java/fr/openmc/api/menulib/Menu.java index fdd8694a4..ddeb4645e 100644 --- a/src/main/java/fr/openmc/api/menulib/Menu.java +++ b/src/main/java/fr/openmc/api/menulib/Menu.java @@ -13,6 +13,7 @@ import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap; import lombok.Getter; import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; @@ -184,7 +185,7 @@ public final void setItem(Player player, Inventory inventory, int slot, ItemMenu itemMeta.itemName(TranslationManager.translation("api.menulib.menu.back.title")); itemMeta.customName(TranslationManager.translation("api.menulib.menu.back.title")); itemMeta.lore(TranslationManager.translationLore("api.menulib.menu.back.lore", MenuLib.getLastMenu(player) != null ? - MenuLib.getLastMenu(player).getName() : TranslationManager.translation("api.menulib.menu.back"))); + MenuLib.getLastMenu(player).getName().color(NamedTextColor.GREEN) : TranslationManager.translation("api.menulib.menu.back"))); }, true)); return; } diff --git a/src/main/java/fr/openmc/api/scoreboard/SternalBoard.java b/src/main/java/fr/openmc/api/scoreboard/SternalBoard.java index 8192879bc..d38d7f856 100644 --- a/src/main/java/fr/openmc/api/scoreboard/SternalBoard.java +++ b/src/main/java/fr/openmc/api/scoreboard/SternalBoard.java @@ -1,5 +1,6 @@ package fr.openmc.api.scoreboard; +import io.papermc.paper.adventure.PaperAdventure; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; @@ -193,13 +194,12 @@ private String getLastColors(String text) { } @Override - protected Object toMinecraftComponent(Component component) throws Throwable { + protected Object toMinecraftComponent(Component component) { if (component == null || component.equals(Component.empty())) { return EMPTY_MESSAGE; } - String legacy = LEGACY_SERIALIZER.serialize(component); - return Array.get(MESSAGE_FROM_STRING.invoke(legacy), 0); + return PaperAdventure.asVanilla(component); } @Override diff --git a/src/main/java/fr/openmc/core/features/city/sub/mayor/menu/create/MayorColorMenu.java b/src/main/java/fr/openmc/core/features/city/sub/mayor/menu/create/MayorColorMenu.java index 5be3e674b..1aa0a8579 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/mayor/menu/create/MayorColorMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/mayor/menu/create/MayorColorMenu.java @@ -94,12 +94,12 @@ public void onClose(InventoryCloseEvent event) { colorSlot.forEach((color, slot) -> { List loreColor = TranslationManager.translationLore( "feature.city.mayor.menu.color.option.lore", - Component.text(ColorUtils.getNameFromColor(color)).color(color) + ColorUtils.getNameFromColor(color).color(color) ); inventory.put(slot, new ItemMenuBuilder(this, ColorUtils.getMaterialFromColor(color), itemMeta -> { itemMeta.displayName(TranslationManager.translation( "feature.city.mayor.menu.color.option.name", - Component.text(ColorUtils.getNameFromColor(color)).color(color) + ColorUtils.getNameFromColor(color).color(color) )); itemMeta.lore(loreColor); }).setOnClick(inventoryClickEvent -> { @@ -232,4 +232,4 @@ public void onClose(InventoryCloseEvent event) { public List getTakableSlot() { return List.of(); } -} \ No newline at end of file +} diff --git a/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarPlayerListMenu.java b/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarPlayerListMenu.java index 680a76837..61abe2ee0 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarPlayerListMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/war/menu/main/WarPlayerListMenu.java @@ -70,19 +70,22 @@ else if (MayorManager.cityMayor.get(city.getUniqueId()).getMayorUUID().equals(uu for (UUID memberUUID : sortedMembers) { OfflinePlayer playerOffline = CacheOfflinePlayer.getOfflinePlayer(memberUUID); + if (playerOffline == null) continue; + String playerName = playerOffline.getName() != null ? playerOffline.getName() : "null"; boolean hasPermissionOwner = city.hasPermission(memberUUID, CityPermission.OWNER); - String title; + Component title; if (hasPermissionOwner) { - title = TranslationManager.translationString("feature.city.war.menu.players.role.owner"); + title = TranslationManager.translation("feature.city.war.menu.players.role.owner"); } else if (MayorManager.cityMayor.get(city.getUniqueId()).getMayorUUID().equals(memberUUID)) { - title = TranslationManager.translationString("feature.city.war.menu.players.role.mayor"); + title = TranslationManager.translation("feature.city.war.menu.players.role.mayor"); } else { - title = TranslationManager.translationString("feature.city.war.menu.players.role.member"); + title = TranslationManager.translation("feature.city.war.menu.players.role.member"); } - String finalTitle = title; - items.add(new ItemMenuBuilder(this, SkullUtils.getPlayerSkull(memberUUID), itemMeta -> itemMeta.displayName(Component.text(finalTitle + playerOffline.getName()).decoration(TextDecoration.ITALIC, false)))); + + items.add(new ItemMenuBuilder(this, SkullUtils.getPlayerSkull(memberUUID), itemMeta -> itemMeta.displayName(title + .append(Component.text(playerName).decoration(TextDecoration.ITALIC, false))))); } return items; diff --git a/src/main/java/fr/openmc/core/features/city/sub/war/menu/selection/WarChooseParticipantsMenu.java b/src/main/java/fr/openmc/core/features/city/sub/war/menu/selection/WarChooseParticipantsMenu.java index 94bfa54db..14d079351 100644 --- a/src/main/java/fr/openmc/core/features/city/sub/war/menu/selection/WarChooseParticipantsMenu.java +++ b/src/main/java/fr/openmc/core/features/city/sub/war/menu/selection/WarChooseParticipantsMenu.java @@ -82,23 +82,26 @@ else if (MayorManager.cityMayor.get(cityLaunch.getUniqueId()) != null && (MayorM for (UUID memberUUID : sortedMembers) { OfflinePlayer offline = CacheOfflinePlayer.getOfflinePlayer(memberUUID); + if (offline == null) continue; + String playerName = offline.getName() != null ? offline.getName() : "null"; + boolean isSelected = selected.contains(memberUUID); boolean isOwner = cityLaunch.hasPermission(memberUUID, CityPermission.OWNER); boolean isMayor = MayorManager.phaseMayor == 2 && cityLaunch.getMayor() != null && cityLaunch.getMayor().getMayorUUID().equals(memberUUID); - String prefix = isOwner - ? TranslationManager.translationString("feature.city.war.menu.players.role.owner") + Component prefix = isOwner + ? TranslationManager.translation("feature.city.war.menu.players.role.owner") : isMayor - ? TranslationManager.translationString("feature.city.war.menu.players.role.mayor") - : TranslationManager.translationString("feature.city.war.menu.players.role.member"); + ? TranslationManager.translation("feature.city.war.menu.players.role.mayor") + : TranslationManager.translation("feature.city.war.menu.players.role.member"); ItemMenuBuilder item = new ItemMenuBuilder(this, SkullUtils.getPlayerSkull(memberUUID), meta -> { Component prefixComponent = isSelected ? TranslationManager.translation("feature.city.war.menu.participants.selected_prefix") : Component.empty(); - meta.displayName(prefixComponent.append(Component.text(prefix + offline.getName())) + meta.displayName(prefixComponent.append(prefix.append(Component.text(playerName))) .decoration(TextDecoration.ITALIC, false)); meta.lore(List.of(TranslationManager.translation( isSelected ? "feature.city.war.menu.participants.click_remove" : "feature.city.war.menu.participants.click_select" diff --git a/src/main/java/fr/openmc/core/features/displays/TabList.java b/src/main/java/fr/openmc/core/features/displays/TabList.java index 057fbb475..05764e3d2 100644 --- a/src/main/java/fr/openmc/core/features/displays/TabList.java +++ b/src/main/java/fr/openmc/core/features/displays/TabList.java @@ -7,7 +7,6 @@ import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketContainer; import com.comphenix.protocol.events.PacketEvent; -import com.comphenix.protocol.wrappers.WrappedChatComponent; import dev.lone.itemsadder.api.FontImages.FontImageWrapper; import fr.openmc.core.OMCPlugin; import fr.openmc.core.bootstrap.features.Feature; @@ -17,9 +16,13 @@ import fr.openmc.core.hooks.ProtocolLibHook; import fr.openmc.core.hooks.itemsadder.ItemsAdderHook; import fr.openmc.core.utils.text.messages.TranslationManager; +import io.papermc.paper.adventure.PaperAdventure; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.minecraft.network.protocol.game.ClientboundTabListPacket; +import net.minecraft.server.level.ServerPlayer; import org.bukkit.Bukkit; +import org.bukkit.craftbukkit.entity.CraftPlayer; import org.bukkit.entity.Player; import java.util.EnumSet; @@ -72,16 +75,10 @@ public void onPacketSending(PacketEvent event) { }); } - public static void updateHeaderFooter(Player player, String header, String footer) { - try { - if (protocolManager == null) return; - PacketContainer packet = protocolManager.createPacket(PacketType.Play.Server.PLAYER_LIST_HEADER_FOOTER); - packet.getChatComponents().write(0, WrappedChatComponent.fromText(header)) - .write(1, WrappedChatComponent.fromText(footer)); - protocolManager.sendServerPacket(player, packet); - } catch (Exception e) { - throw new RuntimeException(e); - } + public static void updateHeaderFooter(Player player, Component header, Component footer) { + ServerPlayer nmsPlayer = ((CraftPlayer) player).getHandle(); + nmsPlayer.connection.send(new ClientboundTabListPacket( + PaperAdventure.asVanilla(header), PaperAdventure.asVanilla(footer))); } public static void updateTabList(Player player) { @@ -100,20 +97,20 @@ public static void updateTabList(Player player) { logo = "OPEN MC"; } - String header = !isInDream - ? TranslationManager.translationString( + Component header = !isInDream + ? TranslationManager.translation( "feature.displays.tablist.header.default", Component.text(logo), Component.text(visibleOnlinePlayers).color(NamedTextColor.GOLD), Component.text(Bukkit.getMaxPlayers()).color(NamedTextColor.YELLOW) ) - : TranslationManager.translationString( + : TranslationManager.translation( "feature.displays.tablist.header.dream", Component.text(logo) ); - String footer = isInDream - ? TranslationManager.translationString("feature.displays.tablist.footer.dream") - : TranslationManager.translationString("feature.displays.tablist.footer.default"); + Component footer = isInDream + ? TranslationManager.translation("feature.displays.tablist.footer.dream") + : TranslationManager.translation("feature.displays.tablist.footer.default"); updateHeaderFooter(player, header, footer); } diff --git a/src/main/java/fr/openmc/core/features/displays/bossbar/contents/HelpConfigManager.java b/src/main/java/fr/openmc/core/features/displays/bossbar/contents/HelpConfigManager.java index 7991c38aa..aea1d4833 100644 --- a/src/main/java/fr/openmc/core/features/displays/bossbar/contents/HelpConfigManager.java +++ b/src/main/java/fr/openmc/core/features/displays/bossbar/contents/HelpConfigManager.java @@ -4,8 +4,6 @@ import fr.openmc.core.bootstrap.features.Feature; import fr.openmc.core.bootstrap.integration.OMCLogger; import lombok.Getter; -import net.kyori.adventure.text.Component; -import net.kyori.adventure.text.minimessage.MiniMessage; import org.bukkit.configuration.file.YamlConfiguration; import java.io.File; @@ -18,7 +16,7 @@ public class HelpConfigManager extends Feature { @Getter - private static final List helpMessages = new ArrayList<>(); + private static final List helpMessages = new ArrayList<>(); @Getter private static File configFile; @@ -55,8 +53,8 @@ private static void loadDefaultMessages() { YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile); helpMessages.clear(); - for (String rawMessage : config.getStringList("messages")) { - helpMessages.add(MiniMessage.miniMessage().deserialize(rawMessage)); + for (String key : config.getStringList("messages")) { + helpMessages.add(key); } if (helpMessages.isEmpty()) { diff --git a/src/main/java/fr/openmc/core/features/displays/bossbar/contents/MainBossbar.java b/src/main/java/fr/openmc/core/features/displays/bossbar/contents/MainBossbar.java index de0eff0fa..5d04ff870 100644 --- a/src/main/java/fr/openmc/core/features/displays/bossbar/contents/MainBossbar.java +++ b/src/main/java/fr/openmc/core/features/displays/bossbar/contents/MainBossbar.java @@ -2,6 +2,7 @@ import fr.openmc.core.features.displays.bossbar.BaseBossbar; import fr.openmc.core.features.dream.DreamUtils; +import fr.openmc.core.utils.text.messages.TranslationManager; import net.kyori.adventure.bossbar.BossBar; import org.bukkit.entity.Player; @@ -30,7 +31,7 @@ protected String id() { protected void update(Player player, BossBar bar) { indexMessage = (indexMessage + 1) % HelpConfigManager.getHelpMessages().size(); - bar.name(HelpConfigManager.getHelpMessages().get(indexMessage)); + bar.name(TranslationManager.translation(HelpConfigManager.getHelpMessages().get(indexMessage))); } @Override diff --git a/src/main/java/fr/openmc/core/features/displays/scoreboards/BaseScoreboard.java b/src/main/java/fr/openmc/core/features/displays/scoreboards/BaseScoreboard.java index 57369cf70..fa5fe15cb 100644 --- a/src/main/java/fr/openmc/core/features/displays/scoreboards/BaseScoreboard.java +++ b/src/main/java/fr/openmc/core/features/displays/scoreboards/BaseScoreboard.java @@ -7,10 +7,9 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.entity.Player; -import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmall; - public abstract class BaseScoreboard { protected static final boolean canShowLogo = ItemsAdderHook.isEnable(); @@ -74,7 +73,7 @@ public Component getTitle() { * @return Un {@link Component} pour le footer */ public static Component getFooter() { - String footerText = textToSmall(TranslationManager.translationString("feature.displays.scoreboard.footer.text")); - return MiniMessage.miniMessage().deserialize(" %s".formatted(footerText)); + Component footerText = TranslationManager.translation("feature.displays.scoreboard.footer.text.to_small"); + return MiniMessage.miniMessage().deserialize(" ", Placeholder.component("name", footerText)); } -} \ No newline at end of file +} diff --git a/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/CityWarScoreboard.java b/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/CityWarScoreboard.java index 4ed86dfed..d6165518a 100644 --- a/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/CityWarScoreboard.java +++ b/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/CityWarScoreboard.java @@ -16,6 +16,7 @@ import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.Chunk; import org.bukkit.Location; import org.bukkit.World; @@ -26,8 +27,8 @@ import java.util.ArrayList; import java.util.List; -import static fr.openmc.core.utils.text.messages.MessagesManager.keyToSmall; import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmall; +import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmallComponent; import static net.kyori.adventure.text.Component.empty; import static net.kyori.adventure.text.Component.text; @@ -49,26 +50,32 @@ public void update(Player player, SternalBoard board) { List lines = new ArrayList<>(MainScoreboard.getDefaultLines(player)); lines.add(MiniMessage.miniMessage() - .deserialize("%s".formatted(keyToSmall("feature.displays.scoreboard.citywar.title"))) + .deserialize( + "</gradient>", + Placeholder.component("title", TranslationManager.translation("feature.displays.scoreboard.citywar.title.to_small")) + ) .decoration(TextDecoration.BOLD, true)); lines.add(text(" • ", net.kyori.adventure.text.format.NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.enemy.label"), TextColor.color(0xAAAAAA))) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.enemy.label.to_small").color(TextColor.color(0xAAAAAA))) .appendSpace() - .append(text(textToSmall(enemyCity.getName()), TextColor.color(0xFF0634))) + .append(textToSmallComponent(enemyCity.getName()).color(TextColor.color(0xFF0634))) ); Component phaseComponent; switch (war.getPhase()) { case PREPARATION -> phaseComponent = MiniMessage.miniMessage() .deserialize("<gradient:#FF7518:#FFD580>%s</gradient>".formatted(textToSmall(WarManager.getFormattedPhase(war.getPhase())))); - case COMBAT -> phaseComponent = text(textToSmall(WarManager.getFormattedPhase(war.getPhase())), TextColor.color(0xFC1C1C)); - case ENDED -> phaseComponent = text(textToSmall(WarManager.getFormattedPhase(war.getPhase())), NamedTextColor.GRAY); - default -> phaseComponent = text(textToSmall(WarManager.getFormattedPhase(war.getPhase())), NamedTextColor.WHITE); + case COMBAT -> phaseComponent = textToSmallComponent(WarManager.getFormattedPhase(war.getPhase())) + .color(TextColor.color(0xFC1C1C)); + case ENDED -> phaseComponent = textToSmallComponent(WarManager.getFormattedPhase(war.getPhase())) + .color(NamedTextColor.GRAY); + default -> phaseComponent = textToSmallComponent((WarManager.getFormattedPhase(war.getPhase()))) + .color(NamedTextColor.WHITE); } lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.phase.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.phase.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(phaseComponent) ); @@ -88,7 +95,7 @@ public void update(Player player, SternalBoard board) { int rounded = (int) Math.round(distance); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.distance.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.distance.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(text(direction, TextColor.color(0xFFE206))) .appendSpace() @@ -98,7 +105,7 @@ public void update(Player player, SternalBoard board) { switch (war.getPhase()) { case PREPARATION -> lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.starts_in.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.starts_in.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(text(DateUtils.convertSecondToTime(war.getPreparationTimeRemaining()), TextColor.color(0xF52727))) ); @@ -106,29 +113,29 @@ public void update(Player player, SternalBoard board) { case COMBAT -> { if (mascot != null) lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.mascot.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.mascot.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(getColoredHealth(mascot)) ); if (enemyMascot != null) lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.enemy.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.enemy.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(getColoredHealth(enemyMascot)) ); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.ends_in.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.ends_in.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(text(DateUtils.convertSecondToTime(war.getCombatTimeRemaining()), TextColor.color(0xF52727))) ); } case ENDED -> lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.citywar.state.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.state.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(text(keyToSmall("feature.displays.scoreboard.citywar.state.ended"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.citywar.state.ended.to_small").color(NamedTextColor.GRAY)) ); } @@ -157,10 +164,10 @@ protected int updateInterval() { private Component getColoredHealth(LivingEntity entity) { if (entity.isDead()) - return text(textToSmall(TranslationManager.translationString( - "feature.displays.scoreboard.citywar.mascot.dead", + return TranslationManager.translation( + "feature.displays.scoreboard.citywar.mascot.dead.to_small", Component.text(FontImageWrapper.replaceFontImages(":dead1:")) - )), TextColor.color(0xFF3246)); + ).color(TextColor.color(0xFF3246)); double health = entity.getHealth(); double maxHealth = entity.getAttribute(Attribute.MAX_HEALTH).getValue(); diff --git a/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/MainScoreboard.java b/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/MainScoreboard.java index 0057d6d57..53d52cb7e 100644 --- a/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/MainScoreboard.java +++ b/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/MainScoreboard.java @@ -24,15 +24,17 @@ import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import org.bukkit.entity.Player; import java.time.DayOfWeek; import java.util.ArrayList; import java.util.List; -import static fr.openmc.core.utils.text.messages.MessagesManager.keyToSmall; import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmall; -import static net.kyori.adventure.text.Component.*; +import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmallComponent; +import static net.kyori.adventure.text.Component.empty; +import static net.kyori.adventure.text.Component.text; public class MainScoreboard extends BaseScoreboard { @Override @@ -48,16 +50,18 @@ public void update(Player player, SternalBoard board) { if (WeeklyEventsManager.getCurrentEvent() instanceof Contest) { ContestData data = ContestManager.data; if (WeeklyEventsManager.getCurrentPhase() != ContestPhase.VOTE_CAMP.getPhase()) { - lines.add(MiniMessage.miniMessage().deserialize("<gradient:#FFB800:#F0DF49>%s</gradient>".formatted( - keyToSmall("feature.displays.scoreboard.contest.title"))).decoration(TextDecoration.BOLD, true)); + lines.add(MiniMessage.miniMessage().deserialize( + "<gradient:#FFB800:#F0DF49><title></gradient>", + Placeholder.component("title", TranslationManager.translation("feature.displays.scoreboard.contest.title.to_small")) + ).decoration(TextDecoration.BOLD, true)); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(textToSmall(data.getCamp1()), data.getColor1AsNamedTextColor())) + .append(data.getCamp1ToSmall()) .appendSpace() - .append(text(keyToSmall("feature.displays.scoreboard.contest.vs"), NamedTextColor.GRAY)) - .append(text(textToSmall(data.getCamp2()), data.getColor2AsNamedTextColor())) + .append(TranslationManager.translation("feature.displays.scoreboard.contest.vs.to_small").color(NamedTextColor.GRAY)) + .append(data.getCamp2ToSmall()) ); lines.add(Component.text(" • ", NamedTextColor.DARK_GRAY) - .append(Component.text(keyToSmall("feature.displays.scoreboard.contest.ends"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.contest.ends.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(text(DateUtils.getTimeUntilNextDay(DayOfWeek.MONDAY), TextColor.color(0xFF8F06))) ); @@ -73,16 +77,16 @@ public void update(Player player, SternalBoard board) { public static List<Component> getDefaultLines(Player player) { Component rank = LuckPermsHook.isEnable() ? Component.text(LuckPermsHook.getFormattedPAPIPrefix(player)) - : Component.text(keyToSmall("feature.displays.scoreboard.rank.none")).color(TextColor.color(0xFF1FCC)); + : TranslationManager.translation("feature.displays.scoreboard.rank.none.to_small").color(TextColor.color(0xFF1FCC)); City city = CityManager.getPlayerCity(player.getUniqueId()); City chunkCity = CityManager.getCityFromChunk(player.getChunk().getX(), player.getChunk().getZ()); boolean isInRegion = WorldGuardHook.isRegionConflict(player.getLocation()); - String location = isInRegion - ? TranslationManager.translationString("feature.displays.scoreboard.location.protected") - : TranslationManager.translationString("feature.displays.scoreboard.location.wilderness"); - location = (chunkCity != null) ? chunkCity.getName() : location; + Component location = isInRegion + ? TranslationManager.translation("feature.displays.scoreboard.location.protected.to_small") + : TranslationManager.translation("feature.displays.scoreboard.location.wilderness.to_small"); + location = (chunkCity != null) ? textToSmallComponent(chunkCity.getName()) : location; String balance = EconomyManager.getMiniBalance(player.getUniqueId()); @@ -91,26 +95,28 @@ public static List<Component> getDefaultLines(Player player) { lines.add(empty()); lines.add(MiniMessage.miniMessage().deserialize("<gradient:#FF45B9:#FF1FCC>%s</gradient>".formatted(textToSmall(player.getName()))).decoration(TextDecoration.BOLD, true)); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.rank.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.rank.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(rank) ); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.city.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.city.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(text(textToSmall(city != null ? city.getName() : TranslationManager.translationString("feature.displays.scoreboard.city.none"))).color(TextColor.color(0xFF06DC))) + .append(city != null + ? textToSmallComponent(city.getName()).color(TextColor.color(0xFF06DC)) + : TranslationManager.translation("feature.displays.scoreboard.city.none.to_small").color(TextColor.color(0xFF06DC))) ); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.balance.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.balance.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(text(textToSmall(balance)).color(TextColor.color(0xFF06DC))) + .append(textToSmallComponent(balance).color(TextColor.color(0xFF06DC))) .appendSpace() .append(text(EconomyManager.getEconomyIcon())) ); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.location.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.location.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(text(textToSmall(location)).color(TextColor.color(0xFF06DC))) + .append(location.color(TextColor.color(0xFF06DC))) ); if (FancyNpcsHook.isEnable()) { @@ -121,14 +127,14 @@ public static List<Component> getDefaultLines(Player player) { if (halloweenNPC != null) { String pumpkinCount = EconomyManager.getFormattedSimplifiedNumber(HalloweenManager.getPumpkinCount(player.getUniqueId())); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(keyToSmall("feature.displays.scoreboard.pumpkins.label"), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.displays.scoreboard.pumpkins.label.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(text(textToSmall(pumpkinCount)).color(TextColor.color(0xFF7518))) + .append(textToSmallComponent(pumpkinCount).color(TextColor.color(0xFF7518))) ); } } - lines.add(newline()); + lines.add(empty()); return lines; } diff --git a/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/RestartScoreboard.java b/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/RestartScoreboard.java index 519a2bf2a..11783c3e9 100644 --- a/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/RestartScoreboard.java +++ b/src/main/java/fr/openmc/core/features/displays/scoreboards/sb/RestartScoreboard.java @@ -12,7 +12,6 @@ import java.util.ArrayList; import java.util.List; -import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmall; import static net.kyori.adventure.text.Component.empty; import static net.kyori.adventure.text.Component.text; @@ -27,11 +26,10 @@ public void update(Player player, SternalBoard board) { List<Component> lines = new ArrayList<>(); lines.add(empty()); - lines.add(text( - "%s %s".formatted(textToSmall( - TranslationManager.translationString("feature.displays.scoreboard.restart.in")), - DateUtils.convertSecondToTime(Restart.remainingTime) - ), NamedTextColor.RED)); + lines.add(TranslationManager.translation("feature.displays.scoreboard.restart.in.to_small") + .appendSpace() + .append(text(DateUtils.convertSecondToTime(Restart.remainingTime))) + .color(NamedTextColor.RED)); lines.add(empty()); lines.add(getFooter()); diff --git a/src/main/java/fr/openmc/core/features/dream/displays/DreamScoreboard.java b/src/main/java/fr/openmc/core/features/dream/displays/DreamScoreboard.java index 72cba6d77..4e7bdeda0 100644 --- a/src/main/java/fr/openmc/core/features/dream/displays/DreamScoreboard.java +++ b/src/main/java/fr/openmc/core/features/dream/displays/DreamScoreboard.java @@ -15,6 +15,7 @@ import net.kyori.adventure.text.format.TextColor; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.minimessage.MiniMessage; +import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import org.bukkit.entity.Player; @@ -22,6 +23,7 @@ import java.util.List; import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmall; +import static fr.openmc.core.utils.text.messages.MessagesManager.textToSmallComponent; import static net.kyori.adventure.text.Component.empty; import static net.kyori.adventure.text.Component.text; @@ -55,14 +57,14 @@ public void update(Player player, SternalBoard board) { int cold = dreamPlayer.getCold(); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(textToSmall(TranslationManager.translationString("feature.dream.scoreboard.time")), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.dream.scoreboard.time.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(text(textToSmall(DateUtils.convertSecondToTime(time))).color(TextColor.color(0x00CC34))) + .append(textToSmallComponent(DateUtils.convertSecondToTime(time)).color(TextColor.color(0x00CC34))) ); if (cold > 0) lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(textToSmall(TranslationManager.translationString("feature.dream.scoreboard.cold")), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.dream.scoreboard.cold.to_small").color(NamedTextColor.GRAY)) .appendSpace() .append(text(dreamPlayer.getCold()).color(TextColor.color(0x44EBDA))) ); @@ -72,9 +74,9 @@ public void update(Player player, SternalBoard board) { if (dreamBiome != null) { lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(textToSmall(TranslationManager.translationString("feature.dream.scoreboard.biome")), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.dream.scoreboard.biome.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(Component.text(textToSmall(dreamBiome.getName()))) + .append(dreamBiome.getSmallName()) ); } @@ -82,14 +84,17 @@ public void update(Player player, SternalBoard board) { if (dreamStructure != null) { String nameLocation = PlainTextComponentSerializer.plainText().serialize(dreamStructure.getName()); lines.add(text(" • ", NamedTextColor.DARK_GRAY) - .append(text(textToSmall(TranslationManager.translationString("feature.dream.scoreboard.location")), NamedTextColor.GRAY)) + .append(TranslationManager.translation("feature.dream.scoreboard.location.to_small").color(NamedTextColor.GRAY)) .appendSpace() - .append(Component.text(textToSmall(nameLocation))) + .append(textToSmallComponent(nameLocation)) ); } lines.add(empty()); - lines.add(MiniMessage.miniMessage().deserialize(" <gradient:#001a66:#1358c9>%s</gradient>".formatted(textToSmall("play.openmc.fr")))); + lines.add(MiniMessage.miniMessage().deserialize( + " <gradient:#001a66:#1358c9><footer></gradient>", + Placeholder.component("footer", TranslationManager.translation("feature.displays.scoreboard.footer.text.to_small")) + )); board.updateLines(lines); } diff --git a/src/main/java/fr/openmc/core/features/dream/milestone/DreamMilestone.java b/src/main/java/fr/openmc/core/features/dream/milestone/DreamMilestone.java index cc53eccb2..04c0f4a4e 100644 --- a/src/main/java/fr/openmc/core/features/dream/milestone/DreamMilestone.java +++ b/src/main/java/fr/openmc/core/features/dream/milestone/DreamMilestone.java @@ -30,8 +30,8 @@ public HashMap<UUID, MilestoneModel> getPlayerData() { } @Override - public String getName() { - return TranslationManager.translationString("feature.dream.milestone.name"); + public Component getName() { + return TranslationManager.translation("feature.dream.milestone.name"); } @Override diff --git a/src/main/java/fr/openmc/core/features/dream/registries/DreamBiome.java b/src/main/java/fr/openmc/core/features/dream/registries/DreamBiome.java index cb8265c30..cc72444f4 100644 --- a/src/main/java/fr/openmc/core/features/dream/registries/DreamBiome.java +++ b/src/main/java/fr/openmc/core/features/dream/registries/DreamBiome.java @@ -4,6 +4,7 @@ import io.papermc.paper.registry.RegistryAccess; import io.papermc.paper.registry.RegistryKey; import lombok.Getter; +import net.kyori.adventure.text.Component; import org.bukkit.Location; import org.bukkit.NamespacedKey; import org.bukkit.Registry; @@ -46,8 +47,12 @@ public enum DreamBiome { this.biome = registry.get(biomeKey); } - public String getName() { - return TranslationManager.translationString(nameKey); + public Component getName() { + return TranslationManager.translation(nameKey); + } + + public Component getSmallName() { + return TranslationManager.translation(nameKey + ".to_small"); } public static boolean isDreamBiome(Location loc, DreamBiome dreamBiome) { diff --git a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestManager.java b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestManager.java index 8ff1758a6..83d003c8c 100644 --- a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestManager.java +++ b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestManager.java @@ -139,7 +139,13 @@ public static void initContestData() { try { data = contestDao.queryForFirst(); if (data == null) { - data = new ContestData("Mayonnaise", "Ketchup", "YELLOW", "RED", 0, 0); + data = new ContestData( + "feature.events.contest.camp.mayonnaise", + "feature.events.contest.camp.ketchup", + "YELLOW", + "RED", + 0, + 0); contestDao.create(data); } } catch (SQLException e) { @@ -270,8 +276,8 @@ public static void initPhase3() { String camp2Color = data.getColor2(); NamedTextColor color1 = ColorUtils.getReadableColor(ColorUtils.getNamedTextColor(camp1Color)); NamedTextColor color2 = ColorUtils.getReadableColor(ColorUtils.getNamedTextColor(camp2Color)); - String camp1Name = data.getCamp1(); - String camp2Name = data.getCamp2(); + Component camp1Name = data.getCamp1(); + Component camp2Name = data.getCamp2(); // Create part of the book ItemStack baseBook = new ItemStack(Material.WRITTEN_BOOK); @@ -281,8 +287,8 @@ public static void initPhase3() { List<Component> lore = TranslationManager.translationLore( "feature.events.contest.book.lore", - Component.text(camp1Name).decoration(TextDecoration.ITALIC, false).color(color1), - Component.text(camp2Name).decoration(TextDecoration.ITALIC, false).color(color2) + camp1Name.colorIfAbsent(color1), + camp2Name.colorIfAbsent(color2) ); baseBookMeta.lore(lore); @@ -314,12 +320,12 @@ public static void initPhase3() { points2Taux = Integer.parseInt(df.format(points2Taux)); // 1ERE PAGE - STATS GLOBAL - String campWinner; + Component campWinner; NamedTextColor colorWinner; int voteWinnerTaux; int pointsWinnerTaux; - String campLooser; + Component campLooser; NamedTextColor colorLooser; int voteLooserTaux; int pointsLooserTaux; @@ -348,10 +354,10 @@ public static void initPhase3() { baseBookMeta.addPages(TranslationManager.translation( "feature.events.contest.book.page.global", - Component.text(campWinner).decoration(TextDecoration.ITALIC, false).color(colorWinner), + campWinner.colorIfAbsent(colorWinner), Component.text(voteWinnerTaux + "%").decoration(TextDecoration.ITALIC, false), Component.text(pointsWinnerTaux + "%").decoration(TextDecoration.ITALIC, false), - Component.text(campLooser).decoration(TextDecoration.ITALIC, false).color(colorLooser), + campLooser.colorIfAbsent(colorLooser), Component.text(voteLooserTaux + "%").decoration(TextDecoration.ITALIC, false), Component.text(pointsLooserTaux + "%").decoration(TextDecoration.ITALIC, false), Component.text(multiplicateurPoint).decoration(TextDecoration.ITALIC, false).color(NamedTextColor.AQUA) @@ -412,21 +418,22 @@ public static void initPhase3() { .appendNewline() .append(TranslationManager.translation("feature.events.contest.mail.click")) .clickEvent(ClickEvent.runCommand("mailbox")) - .hoverEvent(getHoverEvent(TranslationManager.translationString("feature.events.contest.mail.hover"))) + .hoverEvent(getHoverEvent(TranslationManager.translation("feature.events.contest.mail.hover"))) .append(TranslationManager.translation("feature.events.contest.mail.open_mailbox")); player.sendMessage(messageMail); } } - String playerCampName = data.get("camp" + dataPlayer1.getCamp()); + Component playerCampName = data.getCampComponent(dataPlayer1.getCamp()); NamedTextColor playerCampColor = ColorUtils.getReadableColor(dataPlayer1.getColor()); - String playerTitleContest = ContestPlayerManager.getTitleWithPoints(points) + playerCampName; // ex. Novice en + Moutarde + Component playerTitleContest = Component.text(ContestPlayerManager.getTitleWithPoints(points)) // ex. Novice en + Moutarde + .append(playerCampName); bookMetaPlayer.addPages(TranslationManager.translation( "feature.events.contest.book.page.personal", - Component.text(playerCampName).decoration(TextDecoration.ITALIC, false).color(playerCampColor), - Component.text(playerTitleContest).decoration(TextDecoration.ITALIC, false).color(playerCampColor), + playerCampName.colorIfAbsent(playerCampColor), + playerTitleContest.colorIfAbsent(playerCampColor), Component.text(rank.get()), Component.text(points).color(NamedTextColor.AQUA) )); @@ -519,7 +526,7 @@ public static void initPhase3() { // Exécuter les requêtes SQL dans un autre thread Bukkit.getScheduler().runTaskAsynchronously(OMCPlugin.getInstance(), () -> { - TradeYMLManager.addOneToLastContest(data.getCamp1()); // on ajoute 1 au contest précédant dans data/contest.yml pour signifier qu'il n'est plus prioritaire + TradeYMLManager.addOneToLastContest(data.getKeyCamp1()); // on ajoute 1 au contest précédant dans data/contest.yml pour signifier qu'il n'est plus prioritaire try { TableUtils.clearTable(DatabaseManager.getConnectionSource(), ContestPlayer.class); diff --git a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestPlayerManager.java b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestPlayerManager.java index 743943cae..b5521d67e 100644 --- a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestPlayerManager.java +++ b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/managers/ContestPlayerManager.java @@ -2,6 +2,7 @@ import fr.openmc.core.features.events.contents.weeklyevents.contents.contest.models.ContestPlayer; import lombok.Setter; +import net.kyori.adventure.text.Component; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; @@ -84,15 +85,9 @@ public class ContestPlayerManager { MULTIPLICATOR_MONEY.put(10, 2.4); } - /** - * Retourne le nom du camp auquel appartient le joueur. - * - * @param player Le joueur dont on veut connaître le camp. - * @return Le nom du camp (camp1 ou camp2). - */ - public static String getPlayerCampName(Player player) { + public static Component getPlayerCampComponent(Player player) { int campInteger = ContestManager.dataPlayer.get(player.getUniqueId()).getCamp(); - return ContestManager.data.get("camp" + campInteger); + return ContestManager.data.getCampComponent(campInteger); } /** diff --git a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/ContributionMenu.java b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/ContributionMenu.java index 99d4bc90a..a2541fe08 100644 --- a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/ContributionMenu.java +++ b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/ContributionMenu.java @@ -16,7 +16,6 @@ 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 org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; @@ -59,7 +58,7 @@ public void onInventoryClick(InventoryClickEvent click) { Player player = getOwner(); Map<Integer, ItemMenuBuilder> inventory = new HashMap<>(); - String campName = ContestPlayerManager.getPlayerCampName(player); + Component campName = ContestPlayerManager.getPlayerCampComponent(player); NamedTextColor campColor = ContestManager.dataPlayer.get(player.getUniqueId()).getColor(); Material m = ColorUtils.getMaterialFromColor(campColor); @@ -67,17 +66,17 @@ public void onInventoryClick(InventoryClickEvent click) { List<Component> loreContribute = TranslationManager.translationLore( "feature.events.contest.contribution.lore.contribute", - Component.text("Team").decoration(TextDecoration.ITALIC, false).color(campColor) + TranslationManager.translation("feature.events.contest.team.label", campName).color(campColor) ); List<Component> loreTrade = TranslationManager.translationLore( "feature.events.contest.contribution.lore.trade", - Component.text("Team").decoration(TextDecoration.ITALIC, false).color(campColor) + TranslationManager.translation("feature.events.contest.team.label", campName).color(campColor) ); List<Component> loreRang = TranslationManager.translationLore( "feature.events.contest.contribution.lore.rank", - Component.text(ContestPlayerManager.getTitleContest(player) + campName).decoration(TextDecoration.ITALIC, false).color(campColor), + Component.text(ContestPlayerManager.getTitleContest(player)).append(campName).colorIfAbsent(campColor), Component.text(ContestManager.dataPlayer.get(player.getUniqueId()).getPoints()).color(campColor), Component.text(ContestPlayerManager.getGoalPointsToRankUp(getOwner())).color(campColor) ); @@ -95,7 +94,7 @@ public void onInventoryClick(InventoryClickEvent click) { inventory.put(15, new ItemMenuBuilder(this, m, itemMeta -> { itemMeta.displayName(TranslationManager.translation( "feature.events.contest.contribution.button.name", - Component.text("Team " + campName).decoration(TextDecoration.ITALIC, false).color(campColor) + TranslationManager.translation("feature.events.contest.team.label", campName.colorIfAbsent(campColor)) )); itemMeta.lore(loreContribute); }).setOnClick(inventoryClickEvent -> { diff --git a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/TradeMenu.java b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/TradeMenu.java index e6f94dc99..b02419ffb 100644 --- a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/TradeMenu.java +++ b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/TradeMenu.java @@ -18,7 +18,6 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.format.NamedTextColor; -import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Material; import org.bukkit.entity.Player; import org.bukkit.event.inventory.InventoryClickEvent; @@ -61,7 +60,7 @@ public void onInventoryClick(InventoryClickEvent click) { Player player = getOwner(); Map<Integer, ItemMenuBuilder> inventory = new HashMap<>(); - String campName = ContestPlayerManager.getPlayerCampName(player); + Component campName = ContestPlayerManager.getPlayerCampComponent(player); NamedTextColor campColor = ContestManager.dataPlayer.get(player.getUniqueId()).getColor(); ItemStack shellContest = OMCRegistry.CUSTOM_ITEMS.CONTEST_SHELL.getBest(); @@ -70,7 +69,7 @@ public void onInventoryClick(InventoryClickEvent click) { List<Component> loreTrade = TranslationManager.translationLore( "feature.events.contest.trade.main.lore", - Component.text("Team " + campName).decoration(TextDecoration.ITALIC, false).color(campColor) + TranslationManager.translation("feature.events.contest.team.label", campName).color(campColor) ); inventory.put(4, new ItemMenuBuilder(this, shellContest, itemMeta -> { diff --git a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/VoteMenu.java b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/VoteMenu.java index f3d381093..817d75cac 100644 --- a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/VoteMenu.java +++ b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/menu/VoteMenu.java @@ -14,7 +14,6 @@ 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 org.bukkit.Material; import org.bukkit.Sound; import org.bukkit.entity.Player; @@ -59,8 +58,8 @@ public void onInventoryClick(InventoryClickEvent event) { Player player = getOwner(); Map<Integer, ItemMenuBuilder> inventory = new HashMap<>(); - String camp1Name = ContestManager.data.getCamp1(); - String camp2Name = ContestManager.data.getCamp2(); + Component camp1Name = ContestManager.data.getCamp1(); + Component camp2Name = ContestManager.data.getCamp2(); String camp1Color = ContestManager.data.getColor1(); String camp2Color = ContestManager.data.getColor2(); @@ -85,7 +84,7 @@ public void onInventoryClick(InventoryClickEvent event) { ench2 = false; lore1.add(TranslationManager.translation( "feature.events.contest.vote.lore.vote_team", - Component.text(camp1Name).decoration(TextDecoration.ITALIC, false).color(color1) + camp1Name )); lore1.add(TranslationManager.translation("feature.events.contest.vote.lore.win")); lore1.add(TranslationManager.translation("feature.events.contest.vote.lore.warning_choice")); @@ -93,7 +92,7 @@ public void onInventoryClick(InventoryClickEvent event) { lore2.add(TranslationManager.translation( "feature.events.contest.vote.lore.vote_team", - Component.text(camp2Name).decoration(TextDecoration.ITALIC, false).color(color2) + camp2Name )); lore2.add(TranslationManager.translation("feature.events.contest.vote.lore.win")); lore2.add(TranslationManager.translation("feature.events.contest.vote.lore.warning_choice")); @@ -103,14 +102,14 @@ public void onInventoryClick(InventoryClickEvent event) { ench2 = false; lore1.add(TranslationManager.translation( "feature.events.contest.vote.lore.vote_team", - Component.text(camp1Name).decoration(TextDecoration.ITALIC, false).color(color1) + camp1Name )); lore1.add(TranslationManager.translation("feature.events.contest.vote.lore.win")); lore1.add(TranslationManager.translation("feature.events.contest.vote.lore.warning_choice")); lore2.add(TranslationManager.translation( "feature.events.contest.vote.lore.vote_team", - Component.text(camp2Name).decoration(TextDecoration.ITALIC, false).color(color2) + camp2Name )); lore2.add(TranslationManager.translation("feature.events.contest.vote.lore.win")); lore2.add(TranslationManager.translation("feature.events.contest.vote.lore.warning_choice")); @@ -118,28 +117,28 @@ public void onInventoryClick(InventoryClickEvent event) { } else if (playerData.getCamp() == 1) { lore1.add(TranslationManager.translation( "feature.events.contest.vote.lore.voted_for", - Component.text(camp1Name).decoration(TextDecoration.ITALIC, false).color(color1) + camp1Name )); lore1.add(TranslationManager.translation("feature.events.contest.vote.lore.win_exclaim")); ench1 = true; lore2.add(TranslationManager.translation( "feature.events.contest.vote.lore.lose_team", - Component.text(camp2Name).decoration(TextDecoration.ITALIC, false).color(color2) + camp2Name )); lore2.add(TranslationManager.translation("feature.events.contest.vote.lore.lose_detail")); ench2 = false; } else if (playerData.getCamp() == 2) { lore1.add(TranslationManager.translation( "feature.events.contest.vote.lore.lose_team", - Component.text(camp1Name).decoration(TextDecoration.ITALIC, false).color(color1) + camp1Name )); lore1.add(TranslationManager.translation("feature.events.contest.vote.lore.lose_detail")); ench1 = false; lore2.add(TranslationManager.translation( "feature.events.contest.vote.lore.voted_for", - Component.text(camp2Name).decoration(TextDecoration.ITALIC, false).color(color2) + camp2Name )); lore2.add(TranslationManager.translation("feature.events.contest.vote.lore.win_exclaim")); ench2 = true; @@ -152,19 +151,18 @@ public void onInventoryClick(InventoryClickEvent event) { List<Component> loreInfo = TranslationManager.translationLore("feature.events.contest.vote.info.lore"); inventory.put(camp1Slot, new ItemMenuBuilder(this, m1, itemMeta -> { - itemMeta.displayName(Component.text(camp1Name).decoration(TextDecoration.ITALIC, false).color(color1)); + itemMeta.displayName(camp1Name); itemMeta.lore(lore1); itemMeta.setEnchantmentGlintOverride(ench1); }).setOnClick(inventoryClickEvent -> { if (playerData == null || playerData.getCamp() <= 0) { - String campName = ContestManager.data.getCamp1(); String campColor = ContestManager.data.getColor1(); NamedTextColor colorFinal = ColorUtils.getNamedTextColor(campColor); Component teamComponent = TranslationManager.translation( "feature.events.contest.team.label", - Component.text(campName).decoration(TextDecoration.ITALIC, false).color(colorFinal) - ); + ContestManager.data.getCamp1() + ).color(colorFinal); List<Component> loreAccept = TranslationManager.translationLore( "feature.events.contest.vote.confirm.join.lore", teamComponent @@ -206,19 +204,18 @@ public void onInventoryClick(InventoryClickEvent event) { })); inventory.put(camp2Slot, new ItemMenuBuilder(this, m2, itemMeta -> { - itemMeta.displayName(Component.text(camp2Name).decoration(TextDecoration.ITALIC, false).color(color2)); + itemMeta.displayName(camp2Name); itemMeta.lore(lore2); itemMeta.setEnchantmentGlintOverride(ench2); }).setOnClick(inventoryClickEvent -> { if (playerData == null || playerData.getCamp() <= 0) { - String campName = ContestManager.data.getCamp2(); String campColor = ContestManager.data.getColor2(); NamedTextColor colorFinal = ColorUtils.getNamedTextColor(campColor); Component teamComponent = TranslationManager.translation( "feature.events.contest.team.label", - Component.text(campName).decoration(TextDecoration.ITALIC, false).color(colorFinal) - ); + ContestManager.data.getCamp2() + ).color(colorFinal); List<Component> loreAccept = TranslationManager.translationLore( "feature.events.contest.vote.confirm.join.lore", teamComponent @@ -262,7 +259,7 @@ public void onInventoryClick(InventoryClickEvent event) { inventory.put(35, new ItemMenuBuilder(this, Material.EMERALD, itemMeta -> { itemMeta.displayName(TranslationManager.translation("feature.events.contest.vote.info.name")); itemMeta.lore(loreInfo); - }).setOnClick(inventoryClickEvent -> new MoreInfoMenu(player).open())); + }).setOnClick(_ -> new MoreInfoMenu(player).open())); return inventory; } diff --git a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/models/ContestData.java b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/models/ContestData.java index 54419d3c6..55836cf4e 100644 --- a/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/models/ContestData.java +++ b/src/main/java/fr/openmc/core/features/events/contents/weeklyevents/contents/contest/models/ContestData.java @@ -2,10 +2,12 @@ import com.j256.ormlite.field.DatabaseField; import com.j256.ormlite.table.DatabaseTable; +import fr.openmc.core.utils.text.messages.TranslationManager; import lombok.Getter; import lombok.Setter; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; import java.util.Objects; @@ -16,9 +18,9 @@ public class ContestData { private int id; // required for Dao.update function @DatabaseField(canBeNull = false) - private String camp1; + private String keyCamp1; @DatabaseField(canBeNull = false) - private String camp2; + private String keyCamp2; @DatabaseField(canBeNull = false) private String color1; @DatabaseField(canBeNull = false) @@ -34,26 +36,17 @@ public class ContestData { // required for ORMLite } - public ContestData(String camp1, String camp2, String color1, String color2, int points1, int points2) { + public ContestData(String keyCamp1, String keyCamp2, String color1, String color2, int points1, int points2) { this.id = 1; // we will only be storing one row, so we need a constant id - this.camp1 = camp1; - this.camp2 = camp2; + this.keyCamp1 = keyCamp1; + this.keyCamp2 = keyCamp2; + this.color1 = color1; this.color2 = color2; this.points1 = points1; this.points2 = points2; } - public String get(String input) { - return switch (input) { - case "camp1" -> camp1; - case "camp2" -> camp2; - case "color1" -> color1; - case "color2" -> color2; - case null, default -> null; - }; - } - public int getInteger(String input) { if (Objects.equals(input, "points1")) { return points1; @@ -74,9 +67,43 @@ public NamedTextColor getColor2AsNamedTextColor() { public Component getCampVSComponent() { return Component.text() - .append(Component.text(camp1, getColor1AsNamedTextColor())) + .append(getCamp1()) .append(Component.text(" VS ", NamedTextColor.GRAY)) - .append(Component.text(camp2, getColor2AsNamedTextColor())) + .append(getCamp2()) .build(); } + + public Component getCampComponent(Integer campInt) { + if (campInt == 1) { + return getCamp1(); + } else if (campInt == 2) { + return getCamp2(); + } else { + return Component.empty(); + } + } + + public Component getCamp1() { + return TranslationManager.translation(keyCamp1) + .decoration(TextDecoration.ITALIC, false) + .color(getColor1AsNamedTextColor()); + } + + public Component getCamp2() { + return TranslationManager.translation(keyCamp2) + .decoration(TextDecoration.ITALIC, false) + .color(getColor2AsNamedTextColor()); + } + + public Component getCamp1ToSmall() { + return TranslationManager.translation(keyCamp1 + ".to_small") + .decoration(TextDecoration.ITALIC, false) + .color(getColor1AsNamedTextColor()); + } + + public Component getCamp2ToSmall() { + return TranslationManager.translation(keyCamp2 + ".to_small") + .decoration(TextDecoration.ITALIC, false) + .color(getColor2AsNamedTextColor()); + } } diff --git a/src/main/java/fr/openmc/core/features/friend/commands/FriendCommand.java b/src/main/java/fr/openmc/core/features/friend/commands/FriendCommand.java index 2dd088f35..6be28551f 100644 --- a/src/main/java/fr/openmc/core/features/friend/commands/FriendCommand.java +++ b/src/main/java/fr/openmc/core/features/friend/commands/FriendCommand.java @@ -128,6 +128,8 @@ public void removeCommand( ) { try { OfflinePlayer target = Bukkit.getOfflinePlayer(targetName); + String playerName = target.getName() != null ? target.getName() : "null"; + if (!target.hasPlayedBefore()) { MessagesManager.sendMessage(player, TranslationManager.translation("feature.friend.player_not_found"), Prefix.OPENMC, MessageType.ERROR, true); return; @@ -140,14 +142,14 @@ public void removeCommand( MessagesManager.sendMessage(player, TranslationManager.translation("feature.friend.remove.error"), Prefix.FRIEND, MessageType.ERROR, true); return; } - String targetDisplayName = target.getName() != null - ? target.getName() - : TranslationManager.translationString("feature.friend.unknown_player"); + Component targetDisplayName = target.getName() != null + ? Component.text(playerName) + : TranslationManager.translation("feature.friend.unknown_player"); MessagesManager.sendMessage( player, TranslationManager.translation( "feature.friend.remove.success", - Component.text(targetDisplayName).color(NamedTextColor.YELLOW) + targetDisplayName.color(NamedTextColor.YELLOW) ), Prefix.FRIEND, MessageType.INFO, @@ -218,9 +220,10 @@ public void listCommand( for (int i = startIndex; i < endIndex; i++) { UUID friendUUID = friendsList.get(i); OfflinePlayer friend = CacheOfflinePlayer.getOfflinePlayer(friendUUID); - String friendName = friend.getName() != null - ? friend.getName() - : TranslationManager.translationString("feature.friend.unknown_player"); + String friendName = friend.getName() != null ? friend.getName() : "null"; + Component friendNameComponent = friend.getName() != null + ? Component.text(friendName) + : TranslationManager.translation("feature.friend.unknown_player"); try { Timestamp timestamp = FriendManager.getTimestamp(player.getUniqueId(), friend.getUniqueId()); @@ -230,7 +233,8 @@ public void listCommand( City city = CityManager.getPlayerCity(friend.getUniqueId()); String formattedMoney = EconomyManager.getFormattedBalance(friend.getUniqueId()); - Component cityComponent = Component.text(city != null ? city.getName() : TranslationManager.translationString("feature.friend.list.city.none")).color(NamedTextColor.YELLOW); + Component cityComponent = city != null ? Component.text(city.getName()).color(NamedTextColor.YELLOW) : + TranslationManager.translation("feature.friend.list.city.none").color(NamedTextColor.YELLOW); Component moneyComponent = Component.text(formattedMoney).color(NamedTextColor.YELLOW); Component statusComponent = isOnline ? TranslationManager.translation("feature.friend.status.online").color(NamedTextColor.GREEN) @@ -238,7 +242,7 @@ public void listCommand( TextComponent friendComponent = Component.text(" " + (i+1) + ". ") .color(NamedTextColor.GRAY) - .append(Component.text(friendName) + .append(friendNameComponent .color(isOnline ? NamedTextColor.GREEN : NamedTextColor.YELLOW) .decoration(TextDecoration.BOLD, isOnline)) .hoverEvent(HoverEvent.showText( @@ -342,14 +346,14 @@ public void acceptCommand( return; } FriendManager.addFriend(player.getUniqueId(), target.getUniqueId()); - String targetDisplayName = target.getName() != null - ? target.getName() - : TranslationManager.translationString("feature.friend.unknown_player"); + Component targetDisplayName = target.getName() != null + ? Component.text(targetName) + : TranslationManager.translation("feature.friend.unknown_player"); MessagesManager.sendMessage( player, TranslationManager.translation( "feature.friend.request.accepted", - Component.text(targetDisplayName).color(NamedTextColor.YELLOW) + targetDisplayName.color(NamedTextColor.YELLOW) ), Prefix.FRIEND, MessageType.INFO, @@ -390,14 +394,14 @@ public void denyCommand( return; } FriendManager.removeRequest(FriendManager.getRequest(target.getUniqueId())); - String targetDisplayName = target.getName() != null - ? target.getName() - : TranslationManager.translationString("feature.friend.unknown_player"); + Component targetDisplayName = target.getName() != null + ? Component.text(target.getName()) + : TranslationManager.translation("feature.friend.unknown_player"); MessagesManager.sendMessage( player, TranslationManager.translation( "feature.friend.request.denied", - Component.text(targetDisplayName).color(NamedTextColor.YELLOW) + targetDisplayName.color(NamedTextColor.YELLOW) ), Prefix.FRIEND, MessageType.INFO, diff --git a/src/main/java/fr/openmc/core/features/homes/utils/HomeUtil.java b/src/main/java/fr/openmc/core/features/homes/utils/HomeUtil.java index d15512e91..8f64aaaa0 100644 --- a/src/main/java/fr/openmc/core/features/homes/utils/HomeUtil.java +++ b/src/main/java/fr/openmc/core/features/homes/utils/HomeUtil.java @@ -76,51 +76,4 @@ public static boolean isValidHomeName(String name) { return name.matches("^[a-zA-Z0-9_-]+$"); } - - public static String sanitizeHomeName(String name) { - if (name == null) { - return "home"; - } - - String sanitized = name.replaceAll("[^a-zA-Z0-9_-]", "_"); - - if (sanitized.length() > 32) sanitized = sanitized.substring(0, 32); - if (sanitized.trim().isEmpty()) sanitized = "home"; - - return sanitized; - } - - public static String formatLocation(org.bukkit.Location location) { - if (location == null || location.getWorld() == null) { - return TranslationManager.translationString("feature.homes.location.invalid"); - } - - return TranslationManager.translationString( - "feature.homes.location.format", - Component.text(location.getWorld().getName()).color(NamedTextColor.YELLOW), - Component.text(location.getBlockX()).color(NamedTextColor.GOLD), - Component.text(location.getBlockY()).color(NamedTextColor.GOLD), - Component.text(location.getBlockZ()).color(NamedTextColor.GOLD) - ); - } - - public static boolean isSafeLocation(org.bukkit.Location location) { - if (location == null || location.getWorld() == null) { - return false; - } - - Block headBlock = location.getWorld().getBlockAt( - location.getBlockX(), - location.getBlockY() + 1, - location.getBlockZ() - ); - - Block feetBlock = location.getWorld().getBlockAt( - location.getBlockX(), - location.getBlockY(), - location.getBlockZ() - ); - - return feetBlock.getType().isAir() && headBlock.getType().isAir(); - } } diff --git a/src/main/java/fr/openmc/core/features/mailboxes/MailboxManager.java b/src/main/java/fr/openmc/core/features/mailboxes/MailboxManager.java index 2ea40f10b..bc09e63ab 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/MailboxManager.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/MailboxManager.java @@ -153,18 +153,18 @@ public static void sendMailNotification(Player player) { if (count == 0) return; - String countLabel = count > 1 - ? Long.toString(count) - : TranslationManager.translationString("feature.mailboxes.message.one_letter"); + Component countLabel = count > 1 + ? Component.text(count) + : TranslationManager.translation("feature.mailboxes.message.one_letter"); Component line1 = TranslationManager.translation( "feature.mailboxes.message.new_letters.line1", - Component.text(countLabel).color(NamedTextColor.GREEN), - Component.text(pluralize("lettre", count)).color(NamedTextColor.DARK_GREEN) + countLabel.color(NamedTextColor.GREEN), + pluralize(TranslationManager.translation("feature.mailboxes.letter"), count).color(NamedTextColor.DARK_GREEN) ).color(NamedTextColor.DARK_GREEN); Component clickComponent = TranslationManager.translation("feature.mailboxes.message.new_letters.click") .color(NamedTextColor.YELLOW) .clickEvent(ClickEvent.runCommand("/mailbox")) - .hoverEvent(getHoverEvent(TranslationManager.translationString("feature.mailboxes.message.new_letters.hover"))); + .hoverEvent(getHoverEvent(TranslationManager.translation("feature.mailboxes.message.new_letters.hover"))); Component line2 = clickComponent .append(Component.space()) .append(TranslationManager.translation("feature.mailboxes.message.new_letters.suffix") @@ -219,13 +219,14 @@ private static void sendLetterReceivedNotification(Player receiver, int numItems Component line1 = TranslationManager.translation( "feature.mailboxes.message.letter_received.line1", Component.text(numItems).color(NamedTextColor.GREEN), - Component.text(pluralize(" item", numItems)).color(NamedTextColor.DARK_GREEN), + pluralize(Component.space() + .append(TranslationManager.translation("global.item")), numItems).color(NamedTextColor.DARK_GREEN), Component.text(name).color(NamedTextColor.GREEN) ).color(NamedTextColor.DARK_GREEN); Component clickComponent = TranslationManager.translation("feature.mailboxes.message.letter_received.click") .color(NamedTextColor.YELLOW) .clickEvent(ClickEvent.runCommand("/mailbox open " + id)) - .hoverEvent(getHoverEvent(TranslationManager.translationString( + .hoverEvent(getHoverEvent(TranslationManager.translation( "feature.mailboxes.message.letter_received.hover", Component.text(id) ))); @@ -253,7 +254,8 @@ private static void sendLetterReceivedNotification(Player receiver, int numItems "feature.mailboxes.title.new_letter.subtitle", Component.text(name).color(NamedTextColor.GOLD), Component.text(numItems).color(NamedTextColor.GOLD), - Component.text(pluralize(" item", numItems)).color(NamedTextColor.YELLOW) + pluralize(Component.space() + .append(TranslationManager.translation("global.item")), numItems).color(NamedTextColor.YELLOW) ).color(NamedTextColor.YELLOW); Component title = TranslationManager.translation("feature.mailboxes.title.new_letter") .color(NamedTextColor.GREEN); @@ -264,8 +266,8 @@ private static void sendSuccessSendingMessage(Player player, String receiverName Component message = TranslationManager.translation( "feature.mailboxes.message.send_success", Component.text(numItems).color(NamedTextColor.GREEN), - Component.text(pluralize("item", numItems)).color(NamedTextColor.DARK_GREEN), - Component.text(pluralize(TranslationManager.translationString("feature.mailboxes.message.sent_word"), numItems)).color(NamedTextColor.DARK_GREEN), + pluralize(TranslationManager.translation("global.item"), numItems).color(NamedTextColor.DARK_GREEN), + pluralize(TranslationManager.translation("feature.mailboxes.message.sent_word"), numItems).color(NamedTextColor.DARK_GREEN), Component.text(receiverName).color(NamedTextColor.GREEN) ).color(NamedTextColor.DARK_GREEN); 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 5055983e6..bf61f0292 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 @@ -1,5 +1,6 @@ package fr.openmc.core.features.mailboxes.letter; +import fr.openmc.core.utils.text.messages.TranslationManager; import io.papermc.paper.datacomponent.DataComponentTypes; import io.papermc.paper.datacomponent.item.TooltipDisplay; import lombok.Getter; @@ -40,7 +41,7 @@ public LetterHead(OfflinePlayer player, int letterId, int itemsCount, LocalDateT nonItalic(translation( "feature.mailboxes.letter.contains", Component.text(itemsCount).color(NamedTextColor.GREEN).decorate(TextDecoration.BOLD), - Component.text(pluralize("item", itemsCount)).color(NamedTextColor.DARK_GREEN) + pluralize(TranslationManager.translation("global.item"), itemsCount).color(NamedTextColor.DARK_GREEN) ).color(NamedTextColor.DARK_GREEN)) )); TooltipDisplay tooltipDisplay = TooltipDisplay.tooltipDisplay().addHiddenComponents( diff --git a/src/main/java/fr/openmc/core/features/mailboxes/letter/SenderLetter.java b/src/main/java/fr/openmc/core/features/mailboxes/letter/SenderLetter.java index 5ac10e750..fcca11d0a 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/letter/SenderLetter.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/letter/SenderLetter.java @@ -4,6 +4,7 @@ import lombok.Getter; import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; +import net.kyori.adventure.text.format.TextDecoration; import org.bukkit.Material; import org.bukkit.OfflinePlayer; import org.bukkit.inventory.ItemStack; @@ -12,7 +13,8 @@ import java.time.LocalDateTime; import java.util.ArrayList; -import static fr.openmc.core.features.mailboxes.utils.MailboxUtils.*; +import static fr.openmc.core.features.mailboxes.utils.MailboxUtils.getPlayerName; +import static fr.openmc.core.features.mailboxes.utils.MailboxUtils.nonItalic; import static fr.openmc.core.utils.text.DateUtils.formatRelativeDate; import static fr.openmc.core.utils.text.InputUtils.pluralize; @@ -25,14 +27,15 @@ public SenderLetter(OfflinePlayer player, int itemsCount, LocalDateTime sentAt, skullMeta.setOwningPlayer(player); skullMeta.displayName(getStatus(refused)); ArrayList<Component> lore = new ArrayList<>(); - lore.add(colorText(TranslationManager.translationString("feature.mailboxes.letter.cancel_hint"), NamedTextColor.YELLOW, true)); + lore.add(TranslationManager.translation("feature.mailboxes.letter.cancel_hint") + .color(NamedTextColor.YELLOW).decoration(TextDecoration.ITALIC, false)); lore.add(getPlayerName(player)); - lore.add(colorText(TranslationManager.translationString( + lore.add(TranslationManager.translation( "feature.mailboxes.letter.sent_info", formatRelativeDate(sentAt), Component.text(itemsCount), - Component.text(pluralize("item", itemsCount)) - ), NamedTextColor.DARK_GRAY, true)); + pluralize(TranslationManager.translation("global.item"), itemsCount) + ).color(NamedTextColor.DARK_GRAY).decoration(TextDecoration.ITALIC, false)); skullMeta.lore(lore); this.setItemMeta(skullMeta); } diff --git a/src/main/java/fr/openmc/core/features/mailboxes/menu/PendingMailbox.java b/src/main/java/fr/openmc/core/features/mailboxes/menu/PendingMailbox.java index c10d6f291..2b943d3c6 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/menu/PendingMailbox.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/menu/PendingMailbox.java @@ -135,7 +135,7 @@ public static void cancelLetter(Player player, int id) { "feature.mailboxes.message.cancel_success_sender", Component.text(player.getName()).color(NamedTextColor.DARK_GREEN), Component.text(itemsCount).color(NamedTextColor.GREEN), - Component.text(pluralize(" item", itemsCount)).color(NamedTextColor.DARK_GREEN) + pluralize(Component.space().append(TranslationManager.translation("global.item")), itemsCount).color(NamedTextColor.DARK_GREEN) ).color(NamedTextColor.DARK_GREEN); MessagesManager.sendMessage( diff --git a/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java b/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java index d1a8c5f0a..d70a8653d 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/menu/letter/LetterMenu.java @@ -104,7 +104,7 @@ public void accept() { TranslationManager.translation( "feature.mailboxes.message.items_received", Component.text(letterHead.getItemsCount()).color(NamedTextColor.GREEN), - Component.text(pluralize("item", letterHead.getItemsCount())).color(NamedTextColor.DARK_GREEN) + pluralize(TranslationManager.translation("global.item"), letterHead.getItemsCount()).color(NamedTextColor.DARK_GREEN) ).color(NamedTextColor.DARK_GREEN), Prefix.MAILBOX, MessageType.SUCCESS, diff --git a/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxUtils.java b/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxUtils.java index b88b8dba3..91d53b7b0 100644 --- a/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxUtils.java +++ b/src/main/java/fr/openmc/core/features/mailboxes/utils/MailboxUtils.java @@ -41,8 +41,8 @@ public static Component nonItalic(Component name) { return name.decoration(TextDecoration.ITALIC, false); } - public static @NotNull HoverEvent<Component> getHoverEvent(String message) { - return HoverEvent.showText(Component.text(message, NamedTextColor.GRAY)); + public static @NotNull HoverEvent<Component> getHoverEvent(Component message) { + return HoverEvent.showText(message.color(NamedTextColor.GRAY)); } public static ItemStack getHead(OfflinePlayer player) { diff --git a/src/main/java/fr/openmc/core/features/mainmenu/listeners/MainMenuListener.java b/src/main/java/fr/openmc/core/features/mainmenu/listeners/MainMenuListener.java index 4816b95f5..4dfbe0678 100644 --- a/src/main/java/fr/openmc/core/features/mainmenu/listeners/MainMenuListener.java +++ b/src/main/java/fr/openmc/core/features/mainmenu/listeners/MainMenuListener.java @@ -7,6 +7,7 @@ import io.netty.channel.ChannelDuplexHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.ChannelPromise; +import io.papermc.paper.adventure.PaperAdventure; import lombok.Getter; import net.minecraft.advancements.*; import net.minecraft.network.chat.Component; @@ -52,7 +53,7 @@ private static ClientboundUpdateAdvancementsPacket createEmptyAdvancementPacket( // Rien de très important ici, on crée justes les instances nécessaires pour le packet avec le minimum requis. DisplayInfo displayInfo = new DisplayInfo( ItemStackTemplate.fromNonEmptyStack(ItemStack.fromBukkitCopy(getInvisibleItem())), - Component.literal(TranslationManager.translationString("feature.mainmenu.advancements.loading")), + PaperAdventure.asVanilla(TranslationManager.translation("feature.mainmenu.advancements.loading")), Component.empty(), Optional.empty(), AdvancementType.GOAL, diff --git a/src/main/java/fr/openmc/core/features/mainmenu/menus/Page1.java b/src/main/java/fr/openmc/core/features/mainmenu/menus/Page1.java index f4499fd7a..ab489b28b 100644 --- a/src/main/java/fr/openmc/core/features/mainmenu/menus/Page1.java +++ b/src/main/java/fr/openmc/core/features/mainmenu/menus/Page1.java @@ -276,8 +276,14 @@ public void onInventoryClick(InventoryClickEvent event) { Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> TpHomeCommand.home(player, null)); } else if (PROFILE_SLOTS.contains(slot)) { PacketMenuLib.closeMenu(player); - String rawMessage = TranslationManager.translationString("feature.mainmenu.message.profile_dev"); - MessagesManager.sendMessage(player, Component.text(FontImageWrapper.replaceFontImages(rawMessage), NamedTextColor.RED), Prefix.OPENMC, MessageType.INFO, true); + MessagesManager.sendMessage(player, + TranslationManager.translation( + "feature.mainmenu.message.profile_dev", + Component.text(FontImageWrapper.replaceFontImages(":sad:")) + ).color(NamedTextColor.RED), + Prefix.OPENMC, + MessageType.INFO, + true); } else if (RIGHT_ARROW_SLOT == slot) { PacketMenuLib.openMenu(new Page2(), player); } else if (SETTINGS_SLOTS.contains(slot)) { diff --git a/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java b/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java index ec3573204..d9e853cd2 100644 --- a/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java +++ b/src/main/java/fr/openmc/core/features/mainmenu/menus/Page2.java @@ -202,17 +202,24 @@ public void onInventoryClick(InventoryClickEvent event) { player.sendActionBar(message); }); } else if (COMPANY_SLOTS.contains(slot) || SHOPS_SLOTS.contains(slot)) { - String rawMessage = TranslationManager.translationString("feature.mainmenu.message.shops_disabled"); MessagesManager.sendMessage(player, - Component.text(FontImageWrapper.replaceFontImages(rawMessage), NamedTextColor.RED), + TranslationManager.translation( + "feature.mainmenu.message.shops_disabled", + Component.text(FontImageWrapper.replaceFontImages(":sad:")) + ).color(NamedTextColor.RED), Prefix.OPENMC, MessageType.ERROR, true); } else if (LEADERBOARD_SLOTS.contains(slot)) { PacketMenuLib.closeMenu(player); - String rawMessage = TranslationManager.translationString("feature.mainmenu.message.leaderboard_dev"); - MessagesManager.sendMessage(player, Component.text(FontImageWrapper.replaceFontImages(rawMessage), NamedTextColor.RED), - Prefix.OPENMC, MessageType.INFO, true); + MessagesManager.sendMessage(player, + TranslationManager.translation( + "feature.mainmenu.message.leaderboard_dev", + Component.text(FontImageWrapper.replaceFontImages(":sad:")) + ).color(NamedTextColor.RED), + Prefix.OPENMC, + MessageType.INFO, + true); } else if (BANK_SLOTS.contains(slot)) { Bukkit.getScheduler().runTask(OMCPlugin.getInstance(), () -> BankCommands.openBankMenu(player)); } else if (COMING_SOON_1_SLOTS.contains(slot) || COMING_SOON_2_SLOTS.contains(slot) diff --git a/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java b/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java index d0701905a..00b6bcadb 100644 --- a/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java +++ b/src/main/java/fr/openmc/core/features/milestones/menus/MainMilestonesMenu.java @@ -56,13 +56,13 @@ public void onInventoryClick(InventoryClickEvent click) { Map<Integer, ItemMenuBuilder> inventory = new HashMap<>(); Player player = getOwner(); - Milestone tutoMilestone = MilestoneType.TUTORIAL.getMilestone(); + Milestone<?> tutoMilestone = MilestoneType.TUTORIAL.getMilestone(); inventory.put(10, new ItemMenuBuilder(this, tutoMilestone.getIcon(), itemMeta -> { - itemMeta.displayName(Component.text(tutoMilestone.getName()).decoration(TextDecoration.ITALIC, false)); + itemMeta.displayName(tutoMilestone.getName().decoration(TextDecoration.ITALIC, false)); itemMeta.lore(tutoMilestone.getDescription()); itemMeta.setEnchantmentGlintOverride(MilestonesManager.getPlayerStep(tutoMilestone.getType(), player) + 1 >= tutoMilestone.getSteps().size()); - }).setOnClick(inventoryClickEvent -> tutoMilestone.getMenu(player).open())); + }).setOnClick(_ -> tutoMilestone.getMenu(player).open())); List<Component> loreMilestoneVille = new ArrayList<>(); @@ -97,10 +97,10 @@ public void onInventoryClick(InventoryClickEvent click) { } })); - Milestone dreamMilestone = MilestoneType.DREAM.getMilestone(); + Milestone<?> dreamMilestone = MilestoneType.DREAM.getMilestone(); inventory.put(14, new ItemMenuBuilder(this, dreamMilestone.getIcon(), itemMeta -> { - itemMeta.displayName(Component.text(dreamMilestone.getName()).decoration(TextDecoration.ITALIC, false)); + itemMeta.displayName(dreamMilestone.getName().decoration(TextDecoration.ITALIC, false)); itemMeta.lore(dreamMilestone.getDescription()); itemMeta.setEnchantmentGlintOverride(MilestonesManager.getPlayerStep(dreamMilestone.getType(), player) + 1 >= dreamMilestone.getSteps().size()); }).setOnClick(inventoryClickEvent -> dreamMilestone.getMenu(player).open())); diff --git a/src/main/java/fr/openmc/core/features/milestones/menus/MilestoneMenu.java b/src/main/java/fr/openmc/core/features/milestones/menus/MilestoneMenu.java index 8b73af586..e59454ffa 100644 --- a/src/main/java/fr/openmc/core/features/milestones/menus/MilestoneMenu.java +++ b/src/main/java/fr/openmc/core/features/milestones/menus/MilestoneMenu.java @@ -54,7 +54,7 @@ public MilestoneMenu(Player owner, Milestone milestone) { public @NotNull Component getName() { return TranslationManager.translation( "feature.milestones.menu.title.milestone", - Component.text(milestone.getName()) + milestone.getName() ); } diff --git a/src/main/java/fr/openmc/core/features/milestones/models/Milestone.java b/src/main/java/fr/openmc/core/features/milestones/models/Milestone.java index 76c22021f..2574ace02 100644 --- a/src/main/java/fr/openmc/core/features/milestones/models/Milestone.java +++ b/src/main/java/fr/openmc/core/features/milestones/models/Milestone.java @@ -27,7 +27,7 @@ public interface Milestone<T extends Enum<T> & MilestoneStep> { * * @return The name of the milestone. */ - String getName(); + Component getName(); /** * Returns the description of the milestone. diff --git a/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java b/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java index 4592174f5..c44e9ffc6 100644 --- a/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java +++ b/src/main/java/fr/openmc/core/features/milestones/tutorial/TutorialMilestone.java @@ -30,8 +30,8 @@ public HashMap<UUID, MilestoneModel> getPlayerData() { } @Override - public String getName() { - return TranslationManager.translationString("feature.milestones.tutorial.name"); + public Component getName() { + return TranslationManager.translation("feature.milestones.tutorial.name"); } @Override 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 313a2121c..d323cd9ab 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 @@ -47,11 +47,17 @@ public void toggleSocialSpyForPlayer( @CommandPermission("omc.admin.commands.privatemessage.socialspy.admin") public void listSocialSpyPlayers(Player admin) { int spyCount = 0; - StringBuilder spyList = new StringBuilder(); + Component spyList = Component.empty(); for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { if (SocialSpyManager.hasSocialSpyEnabled(onlinePlayer)) { - spyList.append(TranslationManager.translationString("feature.privatemessage.socialspy.list_item", Component.text(onlinePlayer.getName()))).append("\n"); + if (spyCount > 0) { + spyList = spyList.appendNewline(); + } + spyList = spyList.append(TranslationManager.translation( + "feature.privatemessage.socialspy.list_item", + Component.text(onlinePlayer.getName()) + )); spyCount++; } } @@ -61,9 +67,9 @@ public void listSocialSpyPlayers(Player admin) { TranslationManager.translation("feature.privatemessage.socialspy.no_players"), Prefix.OPENMC, MessageType.INFO, true); } else { - 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))); + admin.sendMessage(TranslationManager.translation("feature.privatemessage.socialspy.list_title")); + admin.sendMessage(spyList); + admin.sendMessage(TranslationManager.translation("feature.privatemessage.socialspy.list_total", Component.text(spyCount))); } } } diff --git a/src/main/java/fr/openmc/core/features/shops/ShopCommand.java b/src/main/java/fr/openmc/core/features/shops/ShopCommand.java index d5cc896a8..2fa8df2e6 100644 --- a/src/main/java/fr/openmc/core/features/shops/ShopCommand.java +++ b/src/main/java/fr/openmc/core/features/shops/ShopCommand.java @@ -8,6 +8,7 @@ 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.CommandPlaceholder; @@ -23,7 +24,8 @@ public class ShopCommand { @Description("Create a shop") public void createShop(Player player) { if (!EconomyManager.hasEnoughMoney(player.getUniqueId(), 500)) { - MessagesManager.sendMessage(player, TranslationManager.translation("feature.shop.player.not_enough_money", Component.text("500 " + EconomyManager.getEconomyIcon())), Prefix.SHOP, MessageType.ERROR, false); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.shop.player.not_enough_money", + Component.text("500 " + EconomyManager.getEconomyIcon(), NamedTextColor.RED)), Prefix.SHOP, MessageType.ERROR, false); return; } PlayerShopManager.startCreatingShop(player); diff --git a/src/main/java/fr/openmc/core/features/shops/managers/PlayerShopManager.java b/src/main/java/fr/openmc/core/features/shops/managers/PlayerShopManager.java index 289fb59de..f6d107df3 100644 --- a/src/main/java/fr/openmc/core/features/shops/managers/PlayerShopManager.java +++ b/src/main/java/fr/openmc/core/features/shops/managers/PlayerShopManager.java @@ -34,7 +34,8 @@ public class PlayerShopManager { */ public static void startCreatingShop(Player player) { if (!EconomyManager.withdrawBalance(player.getUniqueId(), 500)) { - MessagesManager.sendMessage(player, TranslationManager.translation("feature.shop.player.not_enough_money", Component.text("500 " + EconomyManager.getEconomyIcon()).color(NamedTextColor.RED)), Prefix.SHOP, MessageType.ERROR, true); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.shop.player.not_enough_money", + Component.text("500 " + EconomyManager.getEconomyIcon(), NamedTextColor.RED)), Prefix.SHOP, MessageType.ERROR, true); return; } @@ -51,7 +52,8 @@ public static void startCreatingShop(Player player) { }, () -> { EconomyManager.addBalance(player.getUniqueId(), 500, "Canceling shop creation"); - MessagesManager.sendMessage(player, TranslationManager.translation("feature.shop.player.cancelling_pay", Component.text("500 " + EconomyManager.getEconomyIcon()).color(NamedTextColor.GREEN)), Prefix.SHOP, MessageType.INFO, true); + MessagesManager.sendMessage(player, TranslationManager.translation("feature.shop.player.cancelling_pay", + Component.text("500 " + EconomyManager.getEconomyIcon()).color(NamedTextColor.GREEN)), Prefix.SHOP, MessageType.INFO, true); } ); } diff --git a/src/main/java/fr/openmc/core/utils/cache/PlayerNameCache.java b/src/main/java/fr/openmc/core/utils/cache/PlayerNameCache.java index 4d36ca128..154bf1fbd 100644 --- a/src/main/java/fr/openmc/core/utils/cache/PlayerNameCache.java +++ b/src/main/java/fr/openmc/core/utils/cache/PlayerNameCache.java @@ -17,7 +17,7 @@ public static Component name(UUID uuid) { public static String getName(UUID uuid) { return nameCache.computeIfAbsent(uuid, id -> { OfflinePlayer player = CacheOfflinePlayer.getOfflinePlayer((UUID) id); - return player.getName() != null ? player.getName() : "Inconnu"; + return player.getName() != null ? player.getName() : "null"; }); } 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 f2d13aa39..0badd43dd 100644 --- a/src/main/java/fr/openmc/core/utils/text/ColorUtils.java +++ b/src/main/java/fr/openmc/core/utils/text/ColorUtils.java @@ -1,6 +1,7 @@ package fr.openmc.core.utils.text; import fr.openmc.core.utils.text.messages.TranslationManager; +import net.kyori.adventure.text.Component; import net.kyori.adventure.text.format.NamedTextColor; import org.bukkit.Material; @@ -102,8 +103,8 @@ public static NamedTextColor getNamedTextColor(String color) { /** * Retourne une translation key qui contient la couleur entrée */ - public static String getNameFromColor(NamedTextColor c) { - return TranslationManager.translationString(colorToNameKey.getOrDefault(c, "core.color.name.none")); + public static Component getNameFromColor(NamedTextColor c) { + return TranslationManager.translation(colorToNameKey.getOrDefault(c, "core.color.name.none")); } private static final Map<NamedTextColor, String> colorCode = new HashMap<>(); diff --git a/src/main/java/fr/openmc/core/utils/text/InputUtils.java b/src/main/java/fr/openmc/core/utils/text/InputUtils.java index 976d56984..09ecc072e 100644 --- a/src/main/java/fr/openmc/core/utils/text/InputUtils.java +++ b/src/main/java/fr/openmc/core/utils/text/InputUtils.java @@ -2,6 +2,7 @@ import fr.openmc.core.features.city.City; import fr.openmc.core.features.city.CityManager; +import net.kyori.adventure.text.Component; import org.bukkit.Bukkit; public class InputUtils { @@ -107,11 +108,11 @@ public static boolean isInputPlayer(String input) { return Bukkit.getPlayer(input) != null; } - public static String pluralize(String word, int count) { - return word + (count > 1 ? "s" : ""); + public static Component pluralize(Component word, int count) { + return word.append(Component.text((count > 1 ? "s" : ""))); } - public static String pluralize(String word, long count) { - return word + (count > 1 ? "s" : ""); + public static Component pluralize(Component word, long count) { + return word.append(Component.text((count > 1 ? "s" : ""))); } } diff --git a/src/main/java/fr/openmc/core/utils/text/messages/MessagesManager.java b/src/main/java/fr/openmc/core/utils/text/messages/MessagesManager.java index e71d3b0e5..c1bbbbf47 100644 --- a/src/main/java/fr/openmc/core/utils/text/messages/MessagesManager.java +++ b/src/main/java/fr/openmc/core/utils/text/messages/MessagesManager.java @@ -166,7 +166,7 @@ public static String textToSmall(String text) { return result.toString(); } - public static String keyToSmall(String key) { - return textToSmall(TranslationManager.translationString(key)); + public static Component textToSmallComponent(String text) { + return Component.text(textToSmall(text)); } } diff --git a/src/main/java/fr/openmc/core/utils/text/messages/TranslationManager.java b/src/main/java/fr/openmc/core/utils/text/messages/TranslationManager.java index 4c92818ab..8d578d62d 100644 --- a/src/main/java/fr/openmc/core/utils/text/messages/TranslationManager.java +++ b/src/main/java/fr/openmc/core/utils/text/messages/TranslationManager.java @@ -13,6 +13,7 @@ import net.kyori.adventure.text.TranslatableComponent; import net.kyori.adventure.text.format.TextDecoration; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; +import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import java.io.IOException; import java.nio.file.Files; @@ -32,6 +33,7 @@ public class TranslationManager { .create(); private static final LegacyComponentSerializer LEGACY_COMPONENT_SERIALIZER = LegacyComponentSerializer.legacySection(); + private static final PlainTextComponentSerializer PLAIN_TEXT_COMPONENT_SERIALIZER = PlainTextComponentSerializer.plainText(); /** * Initialise le gestionnaire de traductions et génère les ressource packs. @@ -77,7 +79,6 @@ public static void init(BootstrapContext context, Locale defaultLang, Locale... translations.putAll(localeTranslations); - try { injectLangs(resourcePackFolder, translations, locale); } catch (Exception e) { @@ -110,6 +111,7 @@ public static Component translation(String key, ComponentLike... args) { /** * Retourne une traduction sous forme de String au format legacy. + * ATTENTION RETOURNE DIRECTEMENT LE FALLBACK * * @param key La clé de traduction * @param args Les arguments à interpoler @@ -128,19 +130,23 @@ public static String translationString(String key, ComponentLike... args) { * @return Une liste de composants, un par ligne (italique désactivé) */ public static List<Component> translationLore(String key, ComponentLike... componentsArgs) { - String fallback = fallbackTranslations.getOrDefault(key, key); - + String fallback = getFallbackTranslation(key); ComponentLike[] normalizedArgs = ComponentUtils.normalizeComponent(componentsArgs); - TranslatableComponent translatable = Component.translatable(key, normalizedArgs).fallback(fallback); - - String legacy = LegacyComponentSerializer.legacySection().serialize(translatable); + String[] lines = fallback.split("\n"); - String[] lines = legacy.split("\n"); + if (lines.length == 1) { + TranslatableComponent translatable = Component.translatable(key, normalizedArgs).fallback(fallback); + return List.of(translatable.decorationIfAbsent(TextDecoration.ITALIC, TextDecoration.State.FALSE)); + } List<Component> lore = new ArrayList<>(); - for (String line : lines) { - lore.add(LegacyComponentSerializer.legacySection().deserialize(line).decorationIfAbsent(TextDecoration.ITALIC, TextDecoration.State.FALSE)); + for (int i = 0; i < lines.length; i++) { + lore.add(Component.translatable( + getLoreLineKey(key, i), + lines[i], + normalizedArgs + ).decorationIfAbsent(TextDecoration.ITALIC, TextDecoration.State.FALSE)); } return lore; @@ -155,7 +161,16 @@ public static List<Component> translationLore(String key, ComponentLike... compo private static Map<String, String> toLegacyMap(Map<String, String> miniMessageMap) { Map<String, String> result = new HashMap<>(); for (Map.Entry<String, String> entry : miniMessageMap.entrySet()) { - result.put(entry.getKey(), MessageConvertor.toLegacy(entry.getValue())); + String key = entry.getKey(); + if (key.endsWith(".to_small")) continue; + + String value = MessageConvertor.toLegacy(entry.getValue()); + result.put(key, value); + + if (miniMessageMap.get(key + ".to_small") != null && + miniMessageMap.get(key + ".to_small").equalsIgnoreCase("true")) { + result.put(key + ".to_small", MessagesManager.textToSmall(value)); + } } return result; } @@ -187,7 +202,19 @@ private static void injectLangs(Path resourcePackFolder, Map<String, String> tra JsonObject root = new JsonObject(); for (Map.Entry<String, String> entry : translations.entrySet()) { - root.addProperty(entry.getKey(), entry.getValue()); + String key = entry.getKey(); + String value = entry.getValue(); + + root.addProperty(key, value); + + String[] lines = value.split("\n"); + if (lines.length == 1) { + continue; + } + + for (int i = 0; i < lines.length; i++) { + root.addProperty(getLoreLineKey(key, i), lines[i]); + } } Files.writeString( @@ -195,4 +222,8 @@ private static void injectLangs(Path resourcePackFolder, Map<String, String> tra GSON.toJson(root) ); } + + private static String getLoreLineKey(String key, int line) { + return key + "." + line; + } } diff --git a/src/main/resources/data/bossbars.yml b/src/main/resources/data/bossbars.yml index 61bb8dc4d..e91fd7cea 100644 --- a/src/main/resources/data/bossbars.yml +++ b/src/main/resources/data/bossbars.yml @@ -1,6 +1,6 @@ messages: - - "<bold><gold>Bienvenue sur <gradient:#ff77e9:#ff1493>OpenMC</gradient> !</gold></bold>" - - "<bold><aqua>Astuce :</aqua></bold> <white>Utilisez <green>/leaderboard</green> pour voir les <yellow>classements</yellow> !" - - "<bold><light_purple>Événement en cours :</light_purple></bold> <gradient:#ff416c:#ff4b2b>UPDATE V2 !</gradient>" - - "<bold><aqua>Astuce :</aqua></bold> <white>Utilisez <gradient:#ff77e9:#ff1493>/omcbossbar ou /bb</gradient> pour activer/désactiver la <yellow>bossbar</yellow> !" - - "<blue>Rejoignez le <bold><aqua>discord</aqua></bold> pour contribuer au <green>développement</green> !" \ No newline at end of file + - "feature.displays.bossbar.help.welcome" + - "feature.displays.bossbar.help.leaderboard" + - "feature.displays.bossbar.help.update" + - "feature.displays.bossbar.help.toggle" + - "feature.displays.bossbar.help.discord" diff --git a/src/main/resources/data/contest.yml b/src/main/resources/data/contest.yml index 4f20e32c5..84f49f1cc 100644 --- a/src/main/resources/data/contest.yml +++ b/src/main/resources/data/contest.yml @@ -189,153 +189,153 @@ contestTrades: # La Liste des Contest # - Couleurs autorisées : BLACK, DARK_BLUE, DARK_GREEN, DARK_AQUA, DARK_RED, DARK_PURPLE, GOLD, GRAY, DARK_GRAY, BLUE, GREEN, AQUA, RED, LIGHT_PURPLE, YELLOW, WHITE contestList: - - camp1: "Mayonnaise" + - camp1: "feature.events.contest.camp.mayonnaise" color1: "YELLOW" - camp2: "Ketchup" + camp2: "feature.events.contest.camp.ketchup" color2: "RED" selected: 0 - - camp1: "Héros" + - camp1: "feature.events.contest.camp.heroes" color1: "YELLOW" - camp2: "Vilian" + camp2: "feature.events.contest.camp.villain" color2: "RED" selected: 0 - - camp1: "Chaos" + - camp1: "feature.events.contest.camp.chaos" color1: "GOLD" - camp2: "Ordre" + camp2: "feature.events.contest.camp.order" color2: "WHITE" selected: 0 - - camp1: "Pates" + - camp1: "feature.events.contest.camp.pasta" color1: "YELLOW" - camp2: "Riz" + camp2: "feature.events.contest.camp.rice" color2: "WHITE" selected: 0 - - camp1: "Samsung" + - camp1: "feature.events.contest.camp.samsung" color1: "DARK_GRAY" - camp2: "Apple" + camp2: "feature.events.contest.camp.apple" color2: "WHITE" selected: 0 - - camp1: "Montagne" + - camp1: "feature.events.contest.camp.mountain" color1: "GRAY" - camp2: "Mer" + camp2: "feature.events.contest.camp.sea" color2: "AQUA" selected: 0 - - camp1: "Chien" + - camp1: "feature.events.contest.camp.dog" color1: "BLUE" - camp2: "Chat" + camp2: "feature.events.contest.camp.cat" color2: "RED" selected: 0 - - camp1: "Passé" + - camp1: "feature.events.contest.camp.past" color1: "GREEN" - camp2: "Futur" + camp2: "feature.events.contest.camp.future" color2: "WHITE" selected: 0 - - camp1: "Pain Au Chocolat" + - camp1: "feature.events.contest.camp.pain_au_chocolat" color1: "WHITE" - camp2: "Chocolatine" + camp2: "feature.events.contest.camp.chocolatine" color2: "DARK_GRAY" selected: 0 - - camp1: "Jour" + - camp1: "feature.events.contest.camp.day" color1: "YELLOW" - camp2: "Nuit" + camp2: "feature.events.contest.camp.night" color2: "DARK_AQUA" selected: 0 - - camp1: "Pizza" + - camp1: "feature.events.contest.camp.pizza" color1: "RED" - camp2: "Burger" + camp2: "feature.events.contest.camp.burger" color2: "DARK_GREEN" selected: 0 - - camp1: "Ete" + - camp1: "feature.events.contest.camp.summer" color1: "YELLOW" - camp2: "Hiver" + camp2: "feature.events.contest.camp.winter" color2: "WHITE" selected: 0 - - camp1: "Sucré" + - camp1: "feature.events.contest.camp.sweet" color1: "LIGHT_PURPLE" - camp2: "Salé" + camp2: "feature.events.contest.camp.salty" color2: "AQUA" selected: 0 - - camp1: "Pluie" + - camp1: "feature.events.contest.camp.rain" color1: "BLUE" - camp2: "Soleil" + camp2: "feature.events.contest.camp.sun" color2: "YELLOW" selected: 0 - - camp1: "Ville" + - camp1: "feature.events.contest.camp.city" color1: "GRAY" - camp2: "Campagne" + camp2: "feature.events.contest.camp.countryside" color2: "DARK_GREEN" selected: 0 - - camp1: "Football" + - camp1: "feature.events.contest.camp.football" color1: "DARK_GREEN" - camp2: "Basketball" + camp2: "feature.events.contest.camp.basketball" color2: "DARK_BLUE" selected: 0 - - camp1: "Thé" + - camp1: "feature.events.contest.camp.tea" color1: "GREEN" - camp2: "Café" + camp2: "feature.events.contest.camp.coffee" color2: "GOLD" selected: 0 - - camp1: "Chocolat Noir" + - camp1: "feature.events.contest.camp.dark_chocolate" color1: "DARK_PURPLE" - camp2: "Chocolat au Lait" + camp2: "feature.events.contest.camp.milk_chocolate" color2: "LIGHT_PURPLE" selected: 0 - - camp1: "DC" + - camp1: "feature.events.contest.camp.dc" color1: "DARK_GRAY" - camp2: "Marvel" + camp2: "feature.events.contest.camp.marvel" color2: "RED" selected: 0 - - camp1: "Loup" + - camp1: "feature.events.contest.camp.wolf" color1: "GRAY" - camp2: "Renard" + camp2: "feature.events.contest.camp.fox" color2: "GOLD" selected: 0 - - camp1: "Matin" + - camp1: "feature.events.contest.camp.morning" color1: "GOLD" - camp2: "Soir" + camp2: "feature.events.contest.camp.evening" color2: "DARK_GRAY" selected: 0 - - camp1: "Netflix" + - camp1: "feature.events.contest.camp.netflix" color1: "RED" - camp2: "Disney+" + camp2: "feature.events.contest.camp.disney_plus" color2: "BLUE" selected: 0 - - camp1: "Camping" + - camp1: "feature.events.contest.camp.camping" color1: "DARK_GREEN" - camp2: "Hôtel" + camp2: "feature.events.contest.camp.hotel" color2: "WHITE" selected: 0 - - camp1: "Avion" + - camp1: "feature.events.contest.camp.plane" color1: "AQUA" - camp2: "Train" + camp2: "feature.events.contest.camp.train" color2: "DARK_GRAY" selected: 0 - - camp1: "PlayStation" + - camp1: "feature.events.contest.camp.playstation" color1: "BLUE" - camp2: "Xbox" + camp2: "feature.events.contest.camp.xbox" color2: "GREEN" selected: 0 - - camp1: "Hiver" + - camp1: "feature.events.contest.camp.winter" color1: "WHITE" - camp2: "Printemps" + camp2: "feature.events.contest.camp.spring" color2: "LIGHT_PURPLE" selected: 0 - - camp1: "Manga" + - camp1: "feature.events.contest.camp.manga" color1: "DARK_GRAY" - camp2: "Anime" + camp2: "feature.events.contest.camp.anime" color2: "DARK_RED" selected: 0 - - camp1: "Plage" + - camp1: "feature.events.contest.camp.beach" color1: "YELLOW" - camp2: "Forêt" + camp2: "feature.events.contest.camp.forest" color2: "DARK_GREEN" selected: 0 - - camp1: "Cinéma" + - camp1: "feature.events.contest.camp.cinema" color1: "DARK_PURPLE" - camp2: "Théâtre" + camp2: "feature.events.contest.camp.theater" color2: "GOLD" selected: 0 - - camp1: "Voiture" + - camp1: "feature.events.contest.camp.car" color1: "DARK_GRAY" - camp2: "Moto" + camp2: "feature.events.contest.camp.motorcycle" color2: "RED" selected: 0 diff --git a/src/main/resources/translations/default/contest.properties b/src/main/resources/translations/default/contest.properties index a11b494a3..e4577df20 100644 --- a/src/main/resources/translations/default/contest.properties +++ b/src/main/resources/translations/default/contest.properties @@ -1,4 +1,4 @@ -feature.events.contest.vote.menu.title=Menu des Contests - Vote +feature.events.contest.vote.menu.title=Menu des Contests - Vote feature.events.contest.vote.lore.vote_team=<gray>Votez pour la team </gray>%1$s feature.events.contest.vote.lore.win=<gray>Faites la gagner en déposant le plus de points</gray> feature.events.contest.vote.lore.warning_choice=<red><bold>ATTENTION ! Le choix est définitif!</bold></red> @@ -125,4 +125,123 @@ feature.events.contest.book.page.rewards.aywenite.prefix=\ <blue>+ </blue> feature.events.contest.book.page.rewards.aywenite.suffix=<light_purple> d'Aywenite</light_purple> feature.events.contest.book.page.rewards.boost.prefix=\ -<gray>Boost de </gray> \ No newline at end of file +<gray>Boost de </gray> +feature.events.contest.camp.mayonnaise=Mayonnaise +feature.events.contest.camp.ketchup=Ketchup +feature.events.contest.camp.heroes=Héros +feature.events.contest.camp.villain=Vilain +feature.events.contest.camp.chaos=Chaos +feature.events.contest.camp.order=Ordre +feature.events.contest.camp.pasta=Pâtes +feature.events.contest.camp.rice=Riz +feature.events.contest.camp.samsung=Samsung +feature.events.contest.camp.apple=Apple +feature.events.contest.camp.mountain=Montagne +feature.events.contest.camp.sea=Mer +feature.events.contest.camp.dog=Chien +feature.events.contest.camp.cat=Chat +feature.events.contest.camp.past=Passé +feature.events.contest.camp.future=Futur +feature.events.contest.camp.pain_au_chocolat=Pain Au Chocolat +feature.events.contest.camp.chocolatine=Chocolatine +feature.events.contest.camp.day=Jour +feature.events.contest.camp.night=Nuit +feature.events.contest.camp.pizza=Pizza +feature.events.contest.camp.burger=Burger +feature.events.contest.camp.summer=Été +feature.events.contest.camp.winter=Hiver +feature.events.contest.camp.sweet=Sucré +feature.events.contest.camp.salty=Salé +feature.events.contest.camp.rain=Pluie +feature.events.contest.camp.sun=Soleil +feature.events.contest.camp.city=Ville +feature.events.contest.camp.countryside=Campagne +feature.events.contest.camp.football=Football +feature.events.contest.camp.basketball=Basketball +feature.events.contest.camp.tea=Thé +feature.events.contest.camp.coffee=Café +feature.events.contest.camp.dark_chocolate=Chocolat Noir +feature.events.contest.camp.milk_chocolate=Chocolat au Lait +feature.events.contest.camp.dc=DC +feature.events.contest.camp.marvel=Marvel +feature.events.contest.camp.wolf=Loup +feature.events.contest.camp.fox=Renard +feature.events.contest.camp.morning=Matin +feature.events.contest.camp.evening=Soir +feature.events.contest.camp.netflix=Netflix +feature.events.contest.camp.disney_plus=Disney+ +feature.events.contest.camp.camping=Camping +feature.events.contest.camp.hotel=Hôtel +feature.events.contest.camp.plane=Avion +feature.events.contest.camp.train=Train +feature.events.contest.camp.playstation=PlayStation +feature.events.contest.camp.xbox=Xbox +feature.events.contest.camp.spring=Printemps +feature.events.contest.camp.manga=Manga +feature.events.contest.camp.anime=Anime +feature.events.contest.camp.beach=Plage +feature.events.contest.camp.forest=Forêt +feature.events.contest.camp.cinema=Cinéma +feature.events.contest.camp.theater=Théâtre +feature.events.contest.camp.car=Voiture +feature.events.contest.camp.motorcycle=Moto + +feature.events.contest.camp.mayonnaise.to_small=true +feature.events.contest.camp.ketchup.to_small=true +feature.events.contest.camp.heroes.to_small=true +feature.events.contest.camp.villain.to_small=true +feature.events.contest.camp.chaos.to_small=true +feature.events.contest.camp.order.to_small=true +feature.events.contest.camp.pasta.to_small=true +feature.events.contest.camp.rice.to_small=true +feature.events.contest.camp.samsung.to_small=true +feature.events.contest.camp.apple.to_small=true +feature.events.contest.camp.mountain.to_small=true +feature.events.contest.camp.sea.to_small=true +feature.events.contest.camp.dog.to_small=true +feature.events.contest.camp.cat.to_small=true +feature.events.contest.camp.past.to_small=true +feature.events.contest.camp.future.to_small=true +feature.events.contest.camp.pain_au_chocolat.to_small=true +feature.events.contest.camp.chocolatine.to_small=true +feature.events.contest.camp.day.to_small=true +feature.events.contest.camp.night.to_small=true +feature.events.contest.camp.pizza.to_small=true +feature.events.contest.camp.burger.to_small=true +feature.events.contest.camp.summer.to_small=true +feature.events.contest.camp.winter.to_small=true +feature.events.contest.camp.sweet.to_small=true +feature.events.contest.camp.salty.to_small=true +feature.events.contest.camp.rain.to_small=true +feature.events.contest.camp.sun.to_small=true +feature.events.contest.camp.city.to_small=true +feature.events.contest.camp.countryside.to_small=true +feature.events.contest.camp.football.to_small=true +feature.events.contest.camp.basketball.to_small=true +feature.events.contest.camp.tea.to_small=true +feature.events.contest.camp.coffee.to_small=true +feature.events.contest.camp.dark_chocolate.to_small=true +feature.events.contest.camp.milk_chocolate.to_small=true +feature.events.contest.camp.dc.to_small=true +feature.events.contest.camp.marvel.to_small=true +feature.events.contest.camp.wolf.to_small=true +feature.events.contest.camp.fox.to_small=true +feature.events.contest.camp.morning.to_small=true +feature.events.contest.camp.evening.to_small=true +feature.events.contest.camp.netflix.to_small=true +feature.events.contest.camp.disney_plus.to_small=true +feature.events.contest.camp.camping.to_small=true +feature.events.contest.camp.hotel.to_small=true +feature.events.contest.camp.plane.to_small=true +feature.events.contest.camp.train.to_small=true +feature.events.contest.camp.playstation.to_small=true +feature.events.contest.camp.xbox.to_small=true +feature.events.contest.camp.spring.to_small=true +feature.events.contest.camp.manga.to_small=true +feature.events.contest.camp.anime.to_small=true +feature.events.contest.camp.beach.to_small=true +feature.events.contest.camp.forest.to_small=true +feature.events.contest.camp.cinema.to_small=true +feature.events.contest.camp.theater.to_small=true +feature.events.contest.camp.car.to_small=true +feature.events.contest.camp.motorcycle.to_small=true diff --git a/src/main/resources/translations/default/displays.properties b/src/main/resources/translations/default/displays.properties index b15ef0fea..5a605c497 100644 --- a/src/main/resources/translations/default/displays.properties +++ b/src/main/resources/translations/default/displays.properties @@ -4,32 +4,61 @@ feature.displays.tablist.footer.default=\n<light_purple>play.openmc.fr</light_pu feature.displays.tablist.footer.dream=\n<dark_blue>play.openmc.fr</dark_blue>\n feature.displays.scoreboard.title.text=<light_purple>OPENMC</light_purple> feature.displays.scoreboard.footer.text=play.openmc.fr +feature.displays.scoreboard.footer.text.to_small=true feature.displays.scoreboard.contest.title=contest +feature.displays.scoreboard.contest.title.to_small=true feature.displays.scoreboard.contest.vs= VS +feature.displays.scoreboard.contest.vs.to_small=true feature.displays.scoreboard.contest.ends=fin: +feature.displays.scoreboard.contest.ends.to_small=true feature.displays.scoreboard.rank.label=rang: +feature.displays.scoreboard.rank.label.to_small=true feature.displays.scoreboard.rank.none=aucun +feature.displays.scoreboard.rank.none.to_small=true feature.displays.scoreboard.city.label=ville: +feature.displays.scoreboard.city.label.to_small=true feature.displays.scoreboard.city.none=Aucune +feature.displays.scoreboard.city.none.to_small=true feature.displays.scoreboard.balance.label=argent: +feature.displays.scoreboard.balance.label.to_small=true feature.displays.scoreboard.location.label=location: +feature.displays.scoreboard.location.label.to_small=true feature.displays.scoreboard.location.wilderness=Nature +feature.displays.scoreboard.location.wilderness.to_small=true feature.displays.scoreboard.location.protected=Région Protégée +feature.displays.scoreboard.location.protected.to_small=true feature.displays.scoreboard.pumpkins.label=citrouilles: +feature.displays.scoreboard.pumpkins.label.to_small=true feature.displays.scoreboard.citywar.title=GUERRE EN COURS +feature.displays.scoreboard.citywar.title.to_small=true feature.displays.scoreboard.citywar.enemy.label=ennemi: +feature.displays.scoreboard.citywar.enemy.label.to_small=true feature.displays.scoreboard.citywar.phase.label=phase: +feature.displays.scoreboard.citywar.phase.label.to_small=true feature.displays.scoreboard.citywar.distance.label=distance: +feature.displays.scoreboard.citywar.distance.label.to_small=true feature.displays.scoreboard.citywar.starts_in.label=début dans: +feature.displays.scoreboard.citywar.starts_in.label.to_small=true feature.displays.scoreboard.citywar.mascot.label=mascotte: +feature.displays.scoreboard.citywar.mascot.label.to_small=true feature.displays.scoreboard.citywar.ends_in.label=fin dans: +feature.displays.scoreboard.citywar.ends_in.label.to_small=true feature.displays.scoreboard.citywar.state.label=état: +feature.displays.scoreboard.citywar.state.label.to_small=true feature.displays.scoreboard.citywar.state.ended=terminée +feature.displays.scoreboard.citywar.state.ended.to_small=true feature.displays.scoreboard.citywar.mascot.dead=%1$s MORTE +feature.displays.scoreboard.citywar.mascot.dead.to_small=true feature.displays.scoreboard.restart.in=Redémarrage dans +feature.displays.scoreboard.restart.in.to_small=true feature.displays.holograms.command.setpos.success=Position de l'hologramme %1$s mise à jour. feature.displays.holograms.command.setpos.error=Erreur lors de la mise à jour de la position de l'hologramme %1$s : %2$s feature.displays.holograms.command.setpos.invalid=Veuillez spécifier un hologramme valide : %1$s feature.displays.holograms.command.disable=Hologrammes désactivés avec succès. feature.displays.holograms.command.enable=Hologrammes activés avec succès. +feature.displays.bossbar.help.welcome=<bold><gold>Bienvenue sur <light_purple>OpenMC</light_purple> !</gold></bold> +feature.displays.bossbar.help.leaderboard=<bold><aqua>Astuce :</aqua></bold> <white>Utilisez <green>/leaderboard</green> pour voir les <yellow>classements</yellow> ! +feature.displays.bossbar.help.update=<bold><light_purple>Événement en cours :</light_purple></bold> <red>UPDATE V2.5 !</red> +feature.displays.bossbar.help.toggle=<bold><aqua>Astuce :</aqua></bold> <white>Utilisez <light_purple>/omcbossbar ou /bb</light_purple> pour activer/désactiver la <yellow>bossbar</yellow> ! +feature.displays.bossbar.help.discord=<blue>Rejoignez le <bold><aqua>discord</aqua></bold> pour contribuer au <green>développement</green> ! diff --git a/src/main/resources/translations/default/dream.properties b/src/main/resources/translations/default/dream.properties index b4cda92a8..ce248fc6a 100644 --- a/src/main/resources/translations/default/dream.properties +++ b/src/main/resources/translations/default/dream.properties @@ -12,9 +12,13 @@ feature.dream.message.time_lost_damage=<white>Vous avez perdu </white>%1$s <whit feature.dream.message.great_dream_bonus=<white>Vous avez reçu <dark_aqua>60%</dark_aqua> de temps en plus !</white> feature.dream.scoreboard.time=temps: +feature.dream.scoreboard.time.to_small=true feature.dream.scoreboard.cold=froid: +feature.dream.scoreboard.cold.to_small=true feature.dream.scoreboard.biome=biome: +feature.dream.scoreboard.biome.to_small=true feature.dream.scoreboard.location=location: +feature.dream.scoreboard.location.to_small=true # * ITEMS feature.dream.item.ame_orb.name=Orbe des Ames @@ -39,10 +43,15 @@ feature.dream.item.meteo_wand.message.success=<green>Vous avez changé la mété # * BIOMES feature.dream.biome.sculk_plains=<dark_aqua>Plaine de Sculk</dark_aqua> +feature.dream.biome.sculk_plains.to_small=true feature.dream.biome.soul_forest=<dark_purple>Forêt des Âmes</dark_purple> +feature.dream.biome.soul_forest.to_small=true feature.dream.biome.mud_beach=<dark_gray>Plage de boue</dark_gray> +feature.dream.biome.mud_beach.to_small=true feature.dream.biome.cloud_land=<white>Vallée des Nuages</white> +feature.dream.biome.cloud_land.to_small=true feature.dream.biome.glacite_grotto=<aqua>Grotte glacée</aqua> +feature.dream.biome.glacite_grotto.to_small=true feature.dream.biome.message.not_unlocked=<yellow>Attention, vous êtes dans un biome que vous n'avez pas encore débloqué, il vous faut l'</yellow>%1$s feature.dream.biome.progression.soul_forest=la Forêt des Âmes feature.dream.biome.progression.cloud_land=le Château des Nuages @@ -383,4 +392,4 @@ feature.dream.milestone.quest.transferable_object.reward=<green>Il y a bien un l feature.dream.loot_table.cloud_fishing=<white>Loots de pêche dans les nuages</white> feature.dream.loot_table.cloud_vault=<white>Loots des coffres des nuages</white> -feature.dream.loot_table.metal_detector=<white>Loots du détecteur de métaux</white> \ No newline at end of file +feature.dream.loot_table.metal_detector=<white>Loots du détecteur de métaux</white> diff --git a/src/main/resources/translations/default/mailboxes.properties b/src/main/resources/translations/default/mailboxes.properties index 689ff665a..7846c6902 100644 --- a/src/main/resources/translations/default/mailboxes.properties +++ b/src/main/resources/translations/default/mailboxes.properties @@ -1,4 +1,5 @@ feature.mailboxes.player.unknown=Inconnu +feature.mailboxes.letter=lettre feature.mailboxes.menu.title.home=Boite aux lettres feature.mailboxes.menu.title.player=Boite aux lettres diff --git a/src/main/resources/translations/default/main.properties b/src/main/resources/translations/default/main.properties index 1653ba597..a72bc1883 100644 --- a/src/main/resources/translations/default/main.properties +++ b/src/main/resources/translations/default/main.properties @@ -3,6 +3,7 @@ # Do not use color codes in this file if there is an argument # * KEY DE TEST test=TESTTTT +global.item=item # ** GLOBAL ** global.never=Jamais diff --git a/src/main/resources/translations/default/mainmenu.properties b/src/main/resources/translations/default/mainmenu.properties index dafb1bb65..26a1464d0 100644 --- a/src/main/resources/translations/default/mainmenu.properties +++ b/src/main/resources/translations/default/mainmenu.properties @@ -43,10 +43,10 @@ feature.mainmenu.item.coming_soon.name=À venir feature.mainmenu.item.coming_soon.lore=Cette fonctionnalité est en cours de développement. feature.mainmenu.message.dream_world=Vous ne pouvez pas interagir avec le menu principal depuis le monde des rêves. -feature.mainmenu.message.profile_dev=Les profils des joueurs sont toujours en développement :sad:. +feature.mainmenu.message.profile_dev=Les profils des joueurs sont toujours en développement %1$s. feature.mainmenu.message.advancements_hint=Appuyez sur la touche '%1$s' pour ouvrir le menu des Avancements. -feature.mainmenu.message.shops_disabled=Les entreprises et shops on été désactivé :sad:. -feature.mainmenu.message.leaderboard_dev=Le menu de leaderboard est toujours en développement :sad:.\nVous pouvez toujours utiliser le /lb ou regarder les holograms dans le spawn. +feature.mainmenu.message.shops_disabled=Les entreprises et shops on été désactivé %1$s. +feature.mainmenu.message.leaderboard_dev=Le menu de leaderboard est toujours en développement %1$s.\nVous pouvez toujours utiliser le /lb ou regarder les holograms dans le spawn. feature.mainmenu.message.coming_soon=Cette fonctionnalité est en cours de développement et sera bientôt disponible ! feature.mainmenu.advancements.loading=Chargement... diff --git a/src/main/resources/translations/en_GB/adminshop.properties b/src/main/resources/translations/en_GB/adminshop.properties new file mode 100644 index 000000000..867cf25fe --- /dev/null +++ b/src/main/resources/translations/en_GB/adminshop.properties @@ -0,0 +1,41 @@ +# ** ADMINSHOP ** +feature.adminshop.menu.category.name=Menu of an adminshop category +feature.adminshop.right_click_choice=<dark_gray>■</dark_gray> <gray>Left click to choose the item</gray> +feature.adminshop.lore_item.buy=Buy : %1$s +feature.adminshop.lore_item.sell=Sell : %1$s +feature.adminshop.right_click_buy=<dark_gray>■</dark_gray> <green>Left click to <dark_green>buy</dark_green></green> +feature.adminshop.left_click_sell=<dark_gray>■</dark_gray> <red>Right click to <dark_red>sell</dark_red></red> + +feature.adminshop.menu.main.name=AdminShop Main Menu + +feature.adminshop.menu.color_variants.name=Color variants menu for %1$s + +feature.adminshop.menu.confirm.name=AdminShop Confirmation Menu +feature.adminshop.menu.confirm.lore=<dark_gray>■</dark_gray> <yellow>Quantity :</yellow> <white>%1$s</white> <gray>(<white>%2$s <gray>stack</gray>%3$s</white>)</gray>\ + <br><dark_gray>■</dark_gray> <yellow>Unit price:</yellow> <green>%4$s</green>%5$s \ + <br><dark_gray>■</dark_gray> <yellow>Total price:</yellow> <green>%6$s</green>%7$s \ + <br> \ + <br><dark_gray>■</dark_gray> <green>Click the wheel to <dark_green>define</dark_green> the quantity manually</green> +feature.adminshop.menu.confirm.input=<yellow>Please enter the desired quantity:</yellow> +feature.adminshop.menu.confirm.quantity=%1$s %2$s +feature.adminshop.menu.confirm.add=Add +feature.adminshop.menu.confirm.remove=Withdraw + +feature.adminshop.menu.leaves_variants.name=Leaf Variants Menu +feature.adminshop.menu.leaves_variants.leaves=<gray>Leaves</gray> + +feature.adminshop.menu.log_variants.name=Menu of log variations +feature.adminshop.menu.log_variants.log=<gray>Logs</gray> + +feature.adminshop.have_enough_item=<red>You do not have this item in your inventory!</red> +feature.adminshop.have_enough_money=<red>You don't have enough money!</red> +feature.adminshop.inventory_full=<red>Your inventory is full!</red> +feature.adminshop.item_not_sellable=<red>This product is not for sale!</red> +feature.adminshop.item_not_buyable=<red>This product is not purchasable!</red> +feature.adminshop.player_not_enough_item=<red>You don't have enough of this item in your inventory!</red> +feature.adminshop.item_not_found=<red>This product does not exist!</red> +feature.adminshop.isnt_in_category=<red>Please open a store category first!</red> + +feature.adminshop.player_buy_item=You bought %1$s %2$s For %3$s +feature.adminshop.player_sell_item=You sold %1$s %2$s For %3$s + diff --git a/src/main/resources/translations/en_GB/api.properties b/src/main/resources/translations/en_GB/api.properties index a64b637e4..faae7390a 100644 --- a/src/main/resources/translations/en_GB/api.properties +++ b/src/main/resources/translations/en_GB/api.properties @@ -1,2 +1,46 @@ -api.dialoginput.type_string=input english du texte +# ** API ** +api.chronometer.chronometer_not_found=No timers found for the group %1$s +api.chronometer.chronometer_on=<green>Active stopwatches:</green> +api.chronometer.chronometer_on_list= - %1$s: %2$ss +api.chronometer.none_chronometer_player=<red>This player has no active timer.</red> + +# <arg:0> | Le temps restant en secondes +# <arg:1> | Le temps restant en millisecondes +api.cooldown.must_wait=You have to wait %s + +api.iteminteraction.not_egnough_space=<red>You don't have enough space in your inventory! The action was canceled</red> +api.iteminteraction.have_already_item=<red>You already have this item in your inventory! The action was canceled</red> +api.iteminteraction.cant_move_item=<red>You cannot move this object here</red> +api.iteminteraction.cant_move_item_by_shiftclick=<red>You cannot move this object by shift-click</red> +api.iteminteraction.cant_throw_item=<red>You cannot throw this item away</red> + +api.chatinput.cancel=You canceled the action + +api.dialoginput.type_string=Enter text +api.dialoginput.type_string.here=Enter text here + +api.dialoginput.type_float=Enter a number +api.dialoginput.type_float.here=Enter a number here + +api.dialoginput.button.save=Save +api.dialoginput.button.confirm=Confirm +api.dialoginput.button.cancel=Cancel +api.dialoginput.button.back=Back +api.dialoginput.button.next=Next +api.dialoginput.button.previous=Previous +api.dialoginput.button.finish=Finish +api.dialoginput.button.ignore=Ignore + +api.menulib.an_error_occurred=<red>An error has occurred, please contact the Staff</red> +api.menulib.no_permission=<red>You do not have permission to open this menu.</red> + +api.menulib.menu.back.title=<green>Back</green> +api.menulib.menu.back=Previous Menu +api.menulib.menu.back.lore=<grey>You will return to <green>%1$s</green>.</grey>\ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +api.menulib.menu.confirm.title=Confirmation Menu +api.menulib.menu.confirm.accept.title=<green>Accept</green> +api.menulib.menu.confirm.accept.lore=<yellow><bold>CLICK HERE TO VALIDATE</bold></yellow> +api.menulib.menu.confirm.deny.title=<red>Refuse</red> +api.menulib.menu.confirm.deny.lore=<yellow><bold>CLICK HERE TO REFUSE</bold></yellow> diff --git a/src/main/resources/translations/en_GB/city.properties b/src/main/resources/translations/en_GB/city.properties new file mode 100644 index 000000000..67629df8b --- /dev/null +++ b/src/main/resources/translations/en_GB/city.properties @@ -0,0 +1,1390 @@ +# ** CITY ** +# * COMMANDS +# - Global / Shared +messages.city.player_no_in_city=<red>You're not in a city.</red> +messages.city.player_already_in_city=<red>You are already in a city.</red> +messages.city.target_in_other_city=<red>This player is not in your city.</red> +messages.city.target_no_city=<red>This player is not in a city.</red> +messages.city.player_no_permission_access=<red>You do not have permission to access the permissions of this city.</red> +messages.city.not_found=<red>This city does not exist.</red> +messages.city.havent_unlocked_feature=You have not unlocked this feature! Please upgrade your city to the level %1$s! +messages.city.city_not_enough_money=Your city doesn't have enough money (%1$s necessary) + +# - Player Commands +feature.city.commands.menu.must_place_mascot=You cannot open the cities menu without having placed the mascot +feature.city.commands.create.enter_city_name=Enter the city name +feature.city.commands.rename.invalid_name=The city name is invalid, it must contain only alphanumeric characters and maximum %1$s characters. +feature.city.commands.rename.success=The city was renamed to %1$s +feature.city.commands.list.empty=No city exists +feature.city.commands.top.empty=No cities are created at the moment + +# - Admin Commands +feature.city.admin.commands.delete.success=The city was deleted +feature.city.admin.commands.list.header=—— Cities (page %1$s / %2$s) —— +feature.city.admin.commands.list.copy_label= [copy] +feature.city.admin.commands.list.copy_uuid_hover=Click to copy the UUID +feature.city.admin.commands.list.nav.prev=« Previous +feature.city.admin.commands.list.nav.next=Next » +feature.city.admin.commands.info.not_found=This city does not exist +feature.city.admin.commands.rename.name_already_used=A city already has the name you want to put +feature.city.admin.commands.rename.success=The city was renamed +feature.city.admin.commands.balance.set_success=City balance has been changed +feature.city.admin.commands.balance.get_success=The city's balance is %1$s +feature.city.admin.commands.add_player.already_in_city=This player is already in a city +feature.city.admin.commands.add_player.success=The player has been added +feature.city.admin.commands.remove_player.not_in_city=This player is not in a city +feature.city.admin.commands.remove_player.is_owner=This player is the owner of the city +feature.city.admin.commands.remove_player.success=The player has been removed +feature.city.admin.commands.getcity.not_in_city=The player is not in a city +feature.city.admin.commands.getcity.success=The player is in the city %1$s (%2$s) +feature.city.admin.commands.claim_bypass.disabled=You have disabled claims bypass +feature.city.admin.commands.claim_bypass.enabled=You have activated claims bypass + +# - Invite Commands +feature.city.invite.commands.invite.success=You invited %1$s in your city +feature.city.invite.commands.invite.received=You have been invited by %1$s in the city %2$s +feature.city.invite.commands.invite.accept=<dark_gray>Do <green>/city accept</green> to accept</dark_gray> +feature.city.invite.commands.invite.deny=<dark_gray>Do <red>/city deny</red> to refuse</dark_gray> +feature.city.invite.commands.invite.accept_hover=Accept the invitation +feature.city.invite.commands.invite.deny_hover=Refuse the invitation +feature.city.invite.commands.accept.none_pending=You have no pending invitations +feature.city.invite.commands.accept.not_invited=%1$s didn't invite you +feature.city.invite.commands.accept.joined=You joined %1$s +feature.city.invite.commands.accept.inviter_notified=%1$s accepted your invitation! +feature.city.invite.commands.deny.inviter_notified=%1$s refused your invitation + +# - Permissions Commands +feature.city.perms.commands.switch.removed=%1$s lost permission "%2$s" +feature.city.perms.commands.switch.added=%1$s received permission "%2$s" +feature.city.perms.commands.add.already_has=%1$s already has this permission +feature.city.perms.commands.remove.does_not_have=%1$s does not have this permission +feature.city.perms.commands.modified=The permissions of %1$s have been modified + +# - City View Command +feature.city.view.commands.no_city=No towns were found in the surrounding area. +feature.city.view.commands.visiualizing=Viewing current city claims for 30 seconds + +# * ACTIONS +# - Type Change +feature.city.type.in_peace=in peace +feature.city.type.in_war=at war +feature.city.type.confirm_change=<red>Are you sure you want to change the type of your <light_purple>city</light_purple></red> +feature.city.type.change_type_to_type=<gray>You will go from one <light_purple>city</light_purple> %1$s <gray>to a</gray> <light_purple>city</light_purple> %2$s</gray> +feature.city.type.warning_war=<red>⚠ You may be exposed to wars against other cities at any time!</red> +feature.city.type.mascot_losing_level=<red>⚠ Your mascot <bold><dark_red>will lose 1 level!</dark_red></bold></red> +feature.city.type.not_change_type=<gray>Do not change the</gray> <light_purple>type of city</light_purple> +feature.city.type.mascot_not_exist_change_type=You do not have a mascot to change the type of your city (contact the staff) +feature.city.type.mascot_must_by_alive_change_type=Your mascot must be alive to change the city type +feature.city.type.must_wait_before_change_type=You have to wait %1$s before changing city type +feature.city.type.change_type_success=You have changed the type of your city from %1$s has %2$s + +# - Chest +feature.city.chest.upgraded=The trunk has been improved + +# - Claim +feature.city.claim.cant_claim_here=You can't expand your city here +feature.city.claim.isnt_adjacent=This chunk is not adjacent to your city +feature.city.claim.is_in_region=This chunk is in a protected region +feature.city.claim.already_claim=This chunk is already claimed by %1$s. +feature.city.claim.claim_success=Your city has been expanded +feature.city.claim.already_claim_in_adjacent=One of the plots around this chunk is claim + +# - Create +feature.city.create.success=Your city has been created: %1$s +feature.city.create.free_claim=<gray>+</gray> %1$s <gray>free chunks</gray> + +# - Delete +feature.city.delete.confirm.lore=<gray>Do you really want to dissolve the city?</gray> %1$s <gray>?</gray> +feature.city.delete.confirm.warning=<red>This action is <dark_red><bold>IRREVERSIBLE</bold></dark_red></red> +feature.city.delete.confirm.deny=<gray>Don't delete the city</gray> +feature.city.delete.success=Your city has been deleted + +# - Kick +feature.city.kick.success=You excluded %1$s of the city %2$s +feature.city.kick.info=You were kicked out of town %1$s + +# - Leave +feature.city.leave.success=You left %1$s +feature.city.leave.info=%1$s left town %2$s + +# - Transfer +feature.city.transfer.confirm.accept=<gray>Do you really want to give the city to</gray> %1$s <gray>?</gray> +feature.city.transfer.confirm.deny=<gray>You are not going to give the city to</gray> %1$s +feature.city.transfer.success=The new owner is %1$s +feature.city.transfer.info=You became the owner of the city + +# - Unclaim +feature.city.unclaim.must_own_claim=You must own this claim for unclaim +feature.city.unclaim.cant_unclaim_mascot_claim=You cannot unclaim the mascot's claim +feature.city.unclaim.success=You have just shrunk your city by deleting this claim + +# * CONDITIONS +# - Permissions / Access +feature.city.player_cannot_claim=<red>You don't have permission to expand your city.</red> +feature.city.player_cannot_kick=<red>You do not have permission to exclude this member.</red> +feature.city.player_cannot_kick_himself=<red>You can't exclude yourself.</red> + +feature.city.player_isnt_owner=<red>You are not the owner of the city</red> +feature.city.player_is_owner=The owner has all the powers. +feature.city.only_owner_can_do_this=<red>Only the city owner can do this.</red> +feature.city.cant_do_this=You do not have permission to do this! + + +# - Manage +feature.city.conditions.manage.rename.no_permission=You don't have permission to rename your city. +feature.city.conditions.manage.transfer.self=You can't transfer the city to yourself +feature.city.conditions.manage.transfer.already_owner=This player is already the owner of the city +feature.city.conditions.manage.delete.must_wait=You have to wait before you can delete your city (%1$s seconds) +feature.city.conditions.manage.delete.cant_in_war=You cannot delete your city during a war + +# - Claim / Unclaim +feature.city.conditions.claim.no_permission=You don't have permission to claim +feature.city.conditions.unclaim.no_permission=You do not have permission to unclaim +feature.city.conditions.claim.not_enough_city_money=You don't have enough money in your bank to claim (%1$s necessary) + +# - Create +feature.city.conditions.create.must_wait=You have to wait before you can create your city (%1$s seconds) +feature.city.conditions.create.not_enough_player_money=You don't have enough money to create your city (%1$s necessary) + +# - Resources +feature.city.conditions.resource.not_enough_aywenite=You don't have enough Aywenite (%1$s necessary) + +# - Chest +feature.city.conditions.chest.open.no_permission=You do not have permissions to view the vault +feature.city.conditions.chest.open.already_opened_by=The trunk is already opened by %1$s +feature.city.conditions.chest.upgrade.no_permission=You do not have permissions to upgrade the city chest +feature.city.conditions.chest.upgrade.max_level=The city chest is already at the maximum level (%1$s maximum page(s). To improve this limit, upgrade to a higher city level + +# - Invite +feature.city.conditions.invite.no_permission=You don't have permission to invite players into the city +feature.city.conditions.invite.target_already_in_city=This person is already in a city +feature.city.conditions.invite.target_cant_receive=This person cannot receive an invitation +feature.city.conditions.invite.member_limit_reached=You have reached the member limit which is %1$s. Upgrade your city to the next level! +feature.city.conditions.invite.expired=The invitation has expired +feature.city.conditions.invite.city_member_limit_reached=The city has reached its membership limit + +# - Type +feature.city.conditions.type.no_permission=You do not have permission to change the status of your city +feature.city.conditions.type.already_in_type=You are already in %1$s +feature.city.conditions.type.must_wait=You have to wait %1$s to change city type +feature.city.conditions.type.not_enough_city_money=You must have at least %1$s in your bank to change the type of your city + +# - Leave +feature.city.conditions.leave.owner_cant_leave=You cannot leave the city because you own it, delete the city or transfer ownership + +# * LISTENERS +feature.city.listeners.tnt_explode=You took a TNT in your city by the city %1$s and posed by %2$s ! <dark_gray>(</dark_gray>%3$s<dark_gray>/</dark_gray>%4$s daily tnt<dark_gray>)</dark_gray> + +# * MENUS +feature.city.menus.main.name=Cities Menu +feature.city.menus.main.bank.title=<gold>The bank</gold> +feature.city.menus.main.bank.lore.unlocked=<gray>Store your money and that of your city</gray> \ + <br><gray>Contribute to the development of your city</gray> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE ACCOUNTS</bold></yellow> +feature.city.menus.main.bank.lore.locked=<gray>Store your money and that of your city</gray> \ + <br><gray>Contribute to the development of your city</gray> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.map.title=<green>Size of your city</green> +feature.city.menus.main.map.no_permission=<red>You do not have permission to view the claims</red> +feature.city.menus.main.map.lore.access=<gray>Your city has an area of</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MAP</bold></yellow> +feature.city.menus.main.map.lore.view=<gray>Your city has an area of</gray> %1$s +feature.city.menus.main.leave.title=<red>Leave the city</red> +feature.city.menus.main.leave.confirm.accept=<gray>Do you really want to leave</gray> %1$s <gray>?</gray> +feature.city.menus.main.leave.confirm.deny=<gray>Stay in the city</gray> %1$s +feature.city.menus.main.leave.lore.leave=<gray>You go <red>to leave</red></gray> %1$s \ + <br><yellow><bold>CLICK HERE TO GO</bold></yellow> +feature.city.menus.main.leave.lore.owner_cant=<gray>You can't <red>to leave</red></gray> %1$s <gray>because you are <red>owner</red></gray> +feature.city.menus.main.chest.title=<green>The city chest</green> +feature.city.menus.main.chest.lore.locked=<gray>Access your city's vault to</gray> \ + <br><gray>store items in common</gray> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.chest.lore.opened=<gray>Access your city's vault to</gray> \ + <br><gray>store items in common</gray> \ + <br><gray>This chest is already opened by</gray> %1$s +feature.city.menus.main.chest.lore.click=<gray>Access your city's vault to</gray> \ + <br><gray>store items in common</gray> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE CHEST</bold></yellow> +feature.city.menus.main.chest.lore.no_permission=<gray>You do not have the right to view the chest!</gray> +feature.city.menus.main.milestone.title=<dark_aqua>Milestone of your city</dark_aqua> +feature.city.menus.main.milestone.lore=<dark_gray><italic>Access the city progression route!</italic></dark_gray> \ + <br><dark_gray><italic>Important for unlocking the different city features!</italic></dark_gray> \ + <br><gray>Level:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MILESTONE</bold></yellow> +feature.city.menus.main.notation.title=<dark_aqua>The rating of your city</dark_aqua> +feature.city.menus.main.notation.lore=<gray>City rating:</gray> %1$s<gray>/</gray>%2$s \ + <br><gray>Money won:</gray> %3$s %4$s \ + <br><yellow><bold>CLICK HERE TO VIEW RATING</bold></yellow> +feature.city.menus.main.notation.lore.none=<red>You have no rating</red> +feature.city.menus.main.notation.lore.locked=<red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.notation.dialog.title=Ranking of Cities - Week %1$s of %2$s +feature.city.notation.header.city=City +feature.city.notation.header.activity=Activ. +feature.city.notation.header.economy=Econo. +feature.city.notation.header.military=Milit. +feature.city.notation.header.architectural=Arch. +feature.city.notation.header.coherence=Oh. +feature.city.notation.header.total=Total +feature.city.notation.header.money=Money +feature.city.notation.table.none=No rating +feature.city.notation.hover.city.mascot_level=Mascot level: %1$s +feature.city.notation.hover.city.status=Status : %1$s +feature.city.notation.hover.city.members=Members: %1$s +feature.city.notation.hover.city.more_info=Click here for more information about the city +feature.city.notation.hover.total.none=No total for you +feature.city.notation.hover.total.title=Details +feature.city.notation.hover.total.activity=Activity %1$s +feature.city.notation.hover.total.economy=Economy %1$s +feature.city.notation.hover.total.military=Military %1$s +feature.city.notation.hover.total.architecture=Architecture %1$s +feature.city.notation.hover.total.coherence=Consistency %1$s +feature.city.notation.hover.total.justification=Rationale for rating +feature.city.notation.hover.activity=Rating ranging from 0 to %1$s points, which includes, the number of active players in the city per a city's playing time. \ + <br>Note on %1$s points +feature.city.notation.hover.economy=Note which includes, the wealth of the city and the GDP per capita of the city. \ + <br>Note on %1$s points +feature.city.notation.hover.military=Rating which is based on the quantity of power points in your city, recoverable through wars \ + <br>Note on %1$s points +feature.city.notation.hover.coherence=Coherence note which includes, the coherence of the constructions between them, the harmony of the colors, the transition between 2 themes, ... \ + <br>Note on %1$s points +feature.city.notation.hover.architectural=Architectural note which includes the diversity of blocks used, the architecture of the builds as well as the vegetation. \ + <br>Note on %1$s points +feature.city.notation.join.title=RATING! +feature.city.notation.join.message=Your city has been rated and is placed no.%1$s of the best cities! +feature.city.notation.join.hover=Click to see your city's rating! +feature.city.notation.command.none=No ratings have been posted for this week! +feature.city.notation.admin.edit.example=Example: this week we are %1$s and next week, the %2$s +feature.city.notation.admin.edit.prompt=Enter the week format (%1$s) +feature.city.notation.admin.edit.invalid=Wrong entry! %1$s +feature.city.notation.admin.edit.none=No city to edit +feature.city.notation.admin.edit.error=Error opening menu +feature.city.notation.admin.publish.missing=You must do <gold>/admcity notation edit</gold> and edit the week %1$s +feature.city.notation.admin.publish.success=The week %1$s was published, the savings and activity scores as well as the gains were calculated and given +feature.city.notation.edit.teleport=Teleport to the city in question. +feature.city.notation.edit.teleport.success=You have been teleported to the city %1$s. Click on the message to continue editing. +feature.city.notation.edit.input.architectural=Architectural Note +feature.city.notation.edit.input.architectural.hover=Note on %1$s points \ + <br>which takes into account the buildings, infrastructure and aesthetics of the city +feature.city.notation.edit.input.coherence=Rating Consistency +feature.city.notation.edit.input.coherence.hover=Note on %1$s points \ + <br>which takes into account the consistency of builds and the gradual change of theme. +feature.city.notation.edit.input.justification=Rationale for rating +feature.city.notation.edit.input.justification.hover=A justification of the grade is mandatory +feature.city.notation.edit.title=Ranking of weekly ratings %1$s - City Edition: %2$s (%3$s/%4$s) +feature.city.notation.edit.completed=The ratings for the %1$s were completely done +feature.city.menus.main.ranks.title=<gold>City Ranks</gold> +feature.city.menus.main.ranks.lore.unlocked=<gray>Manage your city's ranks</gray> \ + <br><gray>Your Rank:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE GRADES</bold></yellow> +feature.city.menus.main.ranks.lore.locked=<gray>Manage your city's ranks</gray> \ + <br><red>You must be Level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.type.title=<dark_purple>The status of your city</dark_purple> +feature.city.menus.main.type.lore.status=<gray>Your city is in</gray> %1$s +feature.city.menus.main.type.lore.war_command=<gray>You can start a war with <red>/war</red></gray> +feature.city.menus.main.type.lore.cooldown=<red>Cooldown</red> <gray>:</gray> %1$s +feature.city.menus.main.type.lore.click=<yellow><bold>CLICK HERE TO CHANGE IT</bold></yellow> +feature.city.menus.main.mayor.title=<blue>The elections</blue> +feature.city.menus.main.mayor.locked.phase2=<gray>At the moment, the mayors are all diligent in the cities!</gray> \ + <br><gray>Except yours!</gray> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.mayor.locked.phase1=<gray>The elections are currently <blue>open</blue></gray> \ + <br><red>Closure in</red> %1$s \ + <br><gray>But you can't access it!</gray> \ + <br><red>You must be level </red>%2$s<red> to unlock this</red> +feature.city.menus.main.mayor.locked.error=<red>Error</red> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.mayor.election.phase2=<gray>Your city has a <blue>mayor</blue> !</gray> \ + <br><gray>Mayor:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE INFORMATION</bold></yellow> +feature.city.menus.main.mayor.election.phase1=<gray>The elections are currently <blue>open</blue></gray> \ + <br><red>Closure in</red> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE ELECTIONS</bold></yellow> +feature.city.menus.main.mayor.election.error=<red>Error</red> +feature.city.menus.main.mayor.owner.phase2=<gray>Your city has a <blue>mayor</blue> !</gray> \ + <br><gray>Mayor:</gray> %1$s \ + <br><red>Opening of elections in</red> %2$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE INFORMATION</bold></yellow> +feature.city.menus.main.mayor.owner.phase1.has_mayor=<gray>The elections are <blue>disabled</blue></gray> \ + <br><red>You need at least</red> %1$s <red>members</red> \ + <br><gray>You have already chosen your <dark_aqua>reforms</dark_aqua> !</gray> \ + <br><gray>However you can change your color!</gray> \ + <br><red>Closure in</red> %2$s +feature.city.menus.main.mayor.owner.phase1.no_mayor=<gray>The elections are <blue>disabled</blue></gray> \ + <br><red>You need at least</red> %1$s <red>members</red> \ + <br><gray>Only the owner can choose <dark_aqua>the reforms</dark_aqua> that he wants.</gray> \ + <br><red>Closure in</red> %2$s \ + <br><yellow><bold>CLICK HERE TO CHOOSE YOUR REFORMS</bold></yellow> +feature.city.menus.main.mayor.owner.phase1.viewer=<gray>The elections are <blue>disabled</blue></gray> \ + <br><red>You need at least</red> %1$s <red>members</red> \ + <br><gray>Only the owner can choose <dark_aqua>the reforms</dark_aqua> that he wants.</gray> \ + <br><red>Closure in</red> %2$s +feature.city.menus.main.mayor.owner.error=<red>Error</red> +feature.city.menus.main.mascots.title=<red>Your Mascot</red> +feature.city.menus.main.mascots.lore.dead=<gray>Life :</gray> %1$s<dark_red>/</dark_red>%2$s \ + <br><gray>Status :</gray> <red>Dead</red> \ + <br><gray>Reappears in:</gray> %3$s \ + <br><gray>Level :</gray> %4$s \ + <br><yellow><bold>CLICK HERE TO INTERACT WITH</bold></yellow> +feature.city.menus.main.mascots.lore.alive=<gray>Life :</gray> %1$s<dark_red>/</dark_red>%2$s \ + <br><gray>Status :</gray> <green>Envy</green> \ + <br><gray>Level :</gray> %3$s \ + <br><yellow><bold>CLICK HERE TO INTERACT WITH</bold></yellow> +feature.city.menus.main.mascots.lore.not_found=<red>Mascot not found</red> +feature.city.menus.main.mascots.lore.missing=<red>Mascot non-existent (contact the staff)</red> +feature.city.menus.main.manage.title=%1$s +feature.city.menus.main.manage.lore.edit=<gray>City owner:</gray> %1$s \ + <br><gray>Mayor of the city:</gray> %2$s \ + <br><gray>Member(s):</gray> %3$s/%4$s \ + <br><yellow><bold>CLICK HERE TO CHANGE THE CITY</bold></yellow> +feature.city.menus.main.manage.lore.view=<gray>City owner:</gray> %1$s \ + <br><gray>Mayor of the city:</gray> %2$s \ + <br><gray>Member(s):</gray> %3$s/%4$s +feature.city.menus.main.members.title=<light_purple>List of Members</light_purple> +feature.city.menus.main.members.lore=<gray>There is currently</gray> %1$s <gray>member(s) in your city</gray> \ + <br><gray>You have a member limit of</gray> %2$s <gray>member(s)</gray> \ + <br><yellow><bold>CLICK HERE TO SEE THE LIST OF PLAYERS</bold></yellow> +feature.city.menus.no_city.name=Cities Menu - None +feature.city.menus.no_city.invitations.none.title=<gray>You have no <gold>invitation</gold></gray> +feature.city.menus.no_city.invitations.none.lore=<gray>An inhabitant of a city owes you <gold>invite</gold></gray> \ + <br><gold>via /city invite</gold> +feature.city.menus.no_city.invitations.count.title=<gray>You have</gray> %1$s <gray>invitation</gray>%2$s +feature.city.menus.no_city.invitations.count.lore=<yellow><bold>CLICK HERE TO SEE YOUR INVITATIONS</bold></yellow> +feature.city.menus.no_city.create.title=<gray>Create <light_purple>your city</light_purple></gray> +feature.city.menus.no_city.create.lore.cooldown=<gray>You can also create <light_purple>your city</light_purple></gray> \ + <br><gray>Do <light_purple>/city create [name]</light_purple> or click here!</gray> \ + <br><gray>You have to wait</gray> %1$s <gray>before you can create a city</gray> +feature.city.menus.no_city.create.lore.ready=<gray>You can also create <light_purple>your city</light_purple></gray> \ + <br><gray>Do <light_purple>/city create [name]</light_purple> or click here!</gray> \ + <br><red>Costs:</red> \ + <br><dark_gray>-</dark_gray> %1$s %2$s \ + <br><dark_gray>-</dark_gray> %3$s <gray>of Aywenite</gray> \ + <br><yellow><bold>CLICK HERE TO CREATE YOUR CITY</bold></yellow> +feature.city.menus.invitations.name=Menu of cities - Invitations +feature.city.menus.invitations.item.name=%1$s invited you to %2$s +feature.city.menus.invitations.item.lore=<yellow><bold>CLICK HERE TO JOIN THE CITY</bold></yellow> +feature.city.menus.invitations.confirm.deny=<gray>Refuse</gray> %1$s +feature.city.menus.type.name=Cities Menu - Type +feature.city.menus.type.peace.title=<green>City at peace</green> +feature.city.menus.type.peace.lore=<gray>Your safety is assured!</gray> \ + <br><gold><bold>TIPS: Perfect for building, and trading with complete peace of mind!</bold></gold> +feature.city.menus.type.war.title=<red>City at war</red> +feature.city.menus.type.war.lore=<gray>A world of war and competition.</gray> \ + <br><red><bold>⚠ WARNING</bold></red> \ + <br><dark_gray>-</dark_gray> <red>Cities being in the same status as you can declare war on you!</red> \ + <br><gold><bold>TIPS: Ideal for tryhards and competitive riders</bold></gold> +feature.city.menus.type.war.lore.locked=<gray>A world of war and competition.</gray> \ + <br><red><bold>⚠ WARNING</bold></red> \ + <br><dark_gray>-</dark_gray> <red>Cities being in the same status as you can declare war on you!</red> \ + <br><gold><bold>TIPS: Ideal for tryhards and competitive riders</bold></gold> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.transfer.name=Cities Menu - Transfer +feature.city.menus.transfer.item.lore=<gray>Do you want to transfer the city to</gray> %1$s <gray>?</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.menus.modify.name=Cities Menu - Edit +feature.city.menus.modify.rename.title=<gray>Rename your <light_purple>city</light_purple></gray> +feature.city.menus.modify.rename.lore=<gray>You can rename your <light_purple>city</light_purple>.</gray> \ + <br><gray>Current name:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO EDIT IT</bold></yellow> +feature.city.menus.modify.rename.invalid=<red>Please enter correct entry</red> +feature.city.menus.modify.transfer.title=<gray>Transfer the <light_purple>city</light_purple></gray> +feature.city.menus.modify.transfer.lore=<light_purple>The City</light_purple> <gray>will be transferred to the person you select</gray> \ + <br><yellow><bold>CLICK HERE TO CHOOSE</bold></yellow> +feature.city.menus.modify.transfer.no_member=<red>There is no member to whom you can transfer the city</red> +feature.city.menus.modify.delete.title=<gray>Delete city</gray> +feature.city.menus.modify.delete.lore.wait=<gray>You will definitely delete the city!</gray> \ + <br><gray>You have to wait</gray> %1$s <gray>before you can delete your city</gray> +feature.city.menus.modify.delete.lore.click=<gray>You will definitely delete the city!</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.menus.perms.name=Permissions %1$s +feature.city.menus.perms.permission.remove=Withdraw %1$s +feature.city.menus.perms.permission.add=Add %1$s +feature.city.menus.perms.permission=%1$s +feature.city.menus.perms.permission.lore.remove=<yellow><bold>CLICK TO REMOVE THIS PERMISSION</bold></yellow> +feature.city.menus.perms.permission.lore.add=<yellow><bold>CLICK TO ADD THIS PERMISSION</bold></yellow> +feature.city.menus.perms.bulk.title=Manage all member permissions +feature.city.menus.perms.bulk.lore=<red>Left click to remove everything</red> \ + <br><green>Right click to add all</green> +feature.city.menus.chest.name=Safe menu %1$s - Page %2$s +feature.city.menus.chest.upgrade.title=<green>Upgrade the trunk</green> +feature.city.menus.chest.upgrade.lore.click=<gray>Your city must have:</gray> \ + <br><dark_gray>-</dark_gray> %1$s %2$s \ + <br><dark_gray>-</dark_gray> %3$s <dark_gray>of Aywenite</dark_gray> \ + <br><yellow><bold>CLICK HERE TO IMPROVE THE CHEST</bold></yellow> +feature.city.menus.chest.upgrade.lore.max=<gray>Your city must have:</gray> \ + <br><dark_gray>-</dark_gray> %1$s %2$s \ + <br><dark_gray>-</dark_gray> %3$s <dark_gray>of Aywenite</dark_gray> \ + <br><red>Limit reached</red> +feature.city.menus.chunks.name=Cities menu - The map +feature.city.menus.chunks.loading.title=<yellow>Loading...</yellow> +feature.city.menus.chunks.loading.lore=<gray>Loading chunk data in progress</gray> +feature.city.menus.chunks.free_claim.title=<gold>Claim free</gold> +feature.city.menus.chunks.free_claim.lore=<gray>You have</gray> %1$s <gray>free claim!</gray> +feature.city.menus.chunks.refresh.title=<gold>Refresh map</gold> +feature.city.menus.chunks.refresh.lore=<gray>To update <gold>claims displayed</gold></gray> +feature.city.menus.chunks.protected.title=<red>Claim in a protected region</red> +feature.city.menus.chunks.protected.lore=<red>This area is protected by a WorldGuard region</red> \ + <br><gray>Position :</gray> %1$s +feature.city.menus.chunks.player_claim.title=<blue>Claim your city</blue> +feature.city.menus.chunks.player_claim.lore.reward=<gray>City :</gray> %1$s \ + <br><gray>Position :</gray> %2$s \ + <br><red>Brings you:</red> \ + <br><dark_gray>-</dark_gray> %3$s %4$s \ + <br><dark_gray>-</dark_gray> %5$s <dark_gray>of Aywenite</dark_gray> \ + <br><yellow><bold>CLICK TO UNCLAIM</bold></yellow> +feature.city.menus.chunks.player_claim.lore.basic=<gray>City :</gray> %1$s \ + <br><gray>Position :</gray> %2$s \ + <br><yellow><bold>CLICK TO UNCLAIM</bold></yellow> +feature.city.menus.chunks.other_claim.title=<red>Claim from an opposing city</red> +feature.city.menus.chunks.other_claim.lore=<gray>City :</gray> %1$s \ + <br><gray>Position :</gray> %2$s +feature.city.menus.chunks.unclaimed.title=<red>Free claim</red> +feature.city.menus.chunks.unclaimed.lore.free=<gray>Position :</gray> %1$s \ + <br><red>Costs:</red> \ + <br><dark_gray>-</dark_gray> Claim free \ + <br><yellow><bold>CLICK TO CLAIM</bold></yellow> +feature.city.menus.chunks.unclaimed.lore.cost=<gray>Position :</gray> %1$s \ + <br><red>Costs:</red> \ + <br><dark_gray>-</dark_gray> %2$s %3$s \ + <br><dark_gray>-</dark_gray> %4$s <dark_gray>of Aywenite</dark_gray> \ + <br><yellow><bold>CLICK TO CLAIM</bold></yellow> +feature.city.menus.chunks.confirm_claim.accept=<gray>Do you really want to claim this chunk?</gray> +feature.city.menus.chunks.confirm_claim.deny=<gray>Cancel the claim procedure</gray> +feature.city.menus.chunks.confirm_unclaim.accept=<gray>Do you really want to unclaim this chunk?</gray> +feature.city.menus.chunks.confirm_unclaim.deny=<gray>Cancel the unclaim procedure</gray> +feature.city.menus.top.name=City ranking menu +feature.city.menus.top.sort.title=Sort +feature.city.menus.top.sort.header=<gray>Click to sort by</gray> +feature.city.menus.top.sort.selected_prefix=<gold>➢ </gold> +feature.city.menus.top.sort.unselected_prefix=<aqua> </aqua> +feature.city.menus.top.sort.global=Overall +feature.city.menus.top.sort.power=Powers +feature.city.menus.top.sort.money=Riches +feature.city.menus.top.sort.claim=Area +feature.city.menus.top.sort.population=Population +feature.city.menus.top.item.title=no.%1$s %2$s +feature.city.menus.top.item.lore=<gray>Owner :</gray> %1$s \ + <br><gray>Level :</gray> %2$s \ + <br><gray>Members:</gray> %3$s/%4$s \ + <br><gray>Area:</gray> %5$s <gray>chunks</gray> \ + <br><gray>Riches:</gray> %6$s %7$s \ + <br><gray>Power points:</gray> %8$s +feature.city.menus.top.item.lore.with_mayor=<gray>Owner :</gray> %1$s \ + <br><gray>Mayor:</gray> %2$s \ + <br><gray>Level :</gray> %3$s \ + <br><gray>Members:</gray> %4$s/%5$s \ + <br><gray>Area:</gray> %6$s <gray>chunks</gray> \ + <br><gray>Riches:</gray> %7$s %8$s \ + <br><gray>Power points:</gray> %9$s +feature.city.menus.list.name=City list menu +feature.city.menus.list.sort.title=Sort +feature.city.menus.list.sort.header=<gray>Click to sort by</gray> +feature.city.menus.list.sort.selected_prefix=<gold>➢ </gold> +feature.city.menus.list.sort.unselected_prefix=<aqua> </aqua> +feature.city.menus.list.sort.name=Name +feature.city.menus.list.sort.wealth=Riches +feature.city.menus.list.sort.population=Population +feature.city.menus.list.sort.peace_war=Peace/Guerre +feature.city.menus.list.item.title=%1$s +feature.city.menus.list.item.lore=<gray>Owner :</gray> %1$s \ + <br><gray>Level :</gray> %2$s \ + <br><gray>Members:</gray> %3$s/%4$s member%5$s \ + <br><yellow>Kind :</yellow> %6$s \ + <br><gold>Riches:</gold> %7$s %8$s +feature.city.menus.list.item.lore.with_mayor=<gray>Owner :</gray> %1$s \ + <br><gray>Mayor:</gray> %2$s \ + <br><gray>Level :</gray> %3$s \ + <br><gray>Members:</gray> %4$s/%5$s member%6$s \ + <br><yellow>Kind :</yellow> %7$s \ + <br><gold>Riches:</gold> %8$s %9$s +feature.city.menus.list.details.name=City details menu %1$s +feature.city.menus.list.details.level=<gray>Level :</gray> %1$s +feature.city.menus.list.details.owner=<gray>Owner :</gray> %1$s +feature.city.menus.list.details.mayor=<gray>Mayor:</gray> %1$s +feature.city.menus.list.details.mascot.level=<light_purple>Mascot Level:</light_purple> %1$s +feature.city.menus.list.details.mascot.missing=<red>No mascot found (bug)</red> +feature.city.menus.list.details.size=<aqua>Size :</aqua> %1$s <aqua>chunks</aqua> +feature.city.menus.list.details.wealth=<gold>Riches:</gold> %1$s %2$s +feature.city.menus.list.details.population=<aqua>Population :</aqua> %1$s/%2$s player%3$s +feature.city.menus.list.details.population.lore=<yellow><bold>CLICK HERE TO VIEW MEMBERS</bold></yellow> +feature.city.menus.list.details.type=<yellow>Kind :</yellow> %1$s +feature.city.menus.list.members.name=Member detail menu %1$s +feature.city.menus.list.members.back_lore=<yellow><bold>CLICK HERE TO RETURN</bold></yellow> +feature.city.menus.members.name=Cities Menu - Members +feature.city.menus.members.owner.lore=<gray>The owner of the city.</gray> +feature.city.menus.members.cant_edit_owner.lore=<gray>You cannot edit the owner</gray> +feature.city.menus.members.manage.lore=<gray>You can manage this player like<red>expel</red> <gray>or modify</gray> <green>his permissions</green></gray> \ + <br><yellow><bold>CLICK HERE TO MANAGE THIS PLAYER</bold></yellow> +feature.city.menus.members.perms.lore=<gray>You can modify the permissions of this player</gray> \ + <br><yellow><bold>CLICK HERE TO MODIFY YOUR PERMISSIONS</bold></yellow> +feature.city.menus.members.cant_self_kick.lore=<gray>You can't <green>exclude</green> yourself</gray> +feature.city.menus.members.cant_kick_owner.lore=<gray>You can't <green>exclude</green> the owner</gray> +feature.city.menus.members.kick.lore=<gray>You can exclude this player</gray> \ + <br><yellow><bold>CLICK HERE TO EXCLUDE IT</bold></yellow> +feature.city.menus.members.member.lore=<gray>A member like you</gray> +feature.city.menus.members.kick.confirm=<gray>Do you really want to evict?</gray> %1$s <gray>?</gray> +feature.city.menus.members.kick.deny=<gray>Do not expel</gray> %1$s +feature.city.menus.members.invite.title=<gray>Invite <light_purple>people</light_purple></gray> +feature.city.menus.members.invite.lore=<gray>You can invite people to your city to fill it</gray> \ + <br><gray>You are at</gray> %1$s<gray>/</gray>%2$s +feature.city.menus.members.invite.prompt=Enter player name +feature.city.menus.members.invite.invalid=<red>Please enter correct entry</red> +feature.city.menus.members.manage.name=Cities Menu - Edit Player +feature.city.menus.members.manage.kick.self=<red>You can't deport yourself</red> +feature.city.menus.members.manage.kick.owner=<red>You can't evict the owner</red> +feature.city.menus.members.manage.kick.info=<gray>You can expel</gray> %1$s <gray>of your <light_purple>city</light_purple>.</gray> \ + <br><yellow><bold>CLICK HERE TO EXPEL</bold></yellow> +feature.city.menus.members.manage.kick.title=<red>Expel</red> %1$s +feature.city.menus.members.manage.target.lore=<gray>You are modifying its status in the <light_purple>city</light_purple></gray> +feature.city.menus.members.manage.target.title=<yellow>Player</yellow> %1$s +feature.city.menus.members.manage.perms.lore=<gray>You will modify <green>his permissions</green></gray> \ + <br><yellow><bold>CLICK HERE TO EDIT</bold></yellow> +feature.city.menus.members.manage.perms.title=<red>Change permissions</red> +feature.city.menus.members.manage.back_lore=<gray>You will return to the previous menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> + +# * SUB FEATURES +# - Bank +feature.city.bank.menu.name=<yellow>Cities menu - Bank</yellow> +feature.city.bank.menu.deposit.title=<gray>Deposit money</gray> +feature.city.bank.menu.deposit.lore=<gray>Your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> + +feature.city.bank.menu.withdraw.title=<gray>Withdraw money</gray> +feature.city.bank.menu.withdraw.lore=<gray>The money will be taken from the <gold>bank</gold> of the city</gray> \ + <br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> + +feature.city.bank.menu.balance.title=<gold>Your city's money</gold> +feature.city.bank.menu.balance.lore=<gray>The city currently has</gray> %1$s %2$s \ + <br><gray>Your next interest is to</gray> %3$s<aqua>%</aqua> <gray>In</gray> %4$s +feature.city.bank.menu.back_lore=<gray>You will return to the previous menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> + +feature.city.bank.menu.deposit.name=City Bank Menu - Fill +feature.city.bank.menu.deposit.all.title=<gray>Drop off all your <gold>money</gold></gray> +feature.city.bank.menu.deposit.all.lore=<gray>All your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><gray>Amount that will be deposited:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> + +feature.city.bank.menu.deposit.half.title=<gray>Deposit half of your <gold>money</gold></gray> +feature.city.bank.menu.deposit.half.lore=<gray>Half of your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><gray>Amount that will be deposited:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> + +feature.city.bank.menu.deposit.input.title=<gray>Drop a <gold>specific amount</gold></gray> +feature.city.bank.menu.deposit.input.lore=<gray>Your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.city.bank.menu.deposit.input.prompt=Enter the amount you want to deposit + +feature.city.bank.menu.withdraw.name=City Bank Menu - Withdraw +feature.city.bank.menu.withdraw.all.title=<gray>Take the<gold>money</gold> from your city</gray> +feature.city.bank.menu.withdraw.all.lore=<gray>All the money placed in the <gold>bank</gold> of the city will be given to you</gray> \ + <br><gray>Amount that will be given to you:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> + +feature.city.bank.menu.withdraw.half.title=<gray>Take half of the<gold>money</gold> of the city</gray> +feature.city.bank.menu.withdraw.half.lore=<gray>Half of the money will be taken from the <gold>bank</gold> from your city to give it to you</gray> \ + <br><gray>Amount that will be given to you:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> + +feature.city.bank.menu.withdraw.input.title=<gray>Take a <gold>specific amount</gold></gray> +feature.city.bank.menu.withdraw.input.lore=<gray>The money requested will be taken from the <gold>bank</gold> from the city to give it to you</gray> \ + <br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.city.bank.menu.withdraw.input.prompt=Enter the amount you want to withdraw + +feature.city.bank.errors.feature_locked=<red>You have not unlocked this feature! Please upgrade your city to the level </red>%1$s<red> !</red> +feature.city.bank.errors.no_permission_deposit=<red>You don't have permission to give money to your city</red> +feature.city.bank.errors.no_permission_balance=<red>You don't have permission to look at the city's money</red> +feature.city.bank.errors.no_permission_withdraw=<red>You don't have permission to take money from your city</red> +feature.city.bank.errors.war_blocked=<red>Your city is in a war situation, you cannot do this</red> +feature.city.bank.errors.min_level=<red>To use the city bank, your city must be level 2 minimum!</red> +feature.city.bank.errors.not_enough_city_money=<red>Your town bank doesn't have enough money.</red> +feature.city.bank.deposit.success=You filed %1$s in your city bank. +feature.city.bank.withdraw.success=%1$s %2$s <gray>have been transferred to your account.</gray> + +# - City Chat +feature.city.chat.entered=You have joined the city chat +feature.city.chat.leaved=You left the town chat +feature.city.chat.prefix=#city + +# - City Permission +feature.city.permission.owner=Owner +feature.city.permission.invite=Invite +feature.city.permission.kick=Expel +feature.city.permission.place=Place blocks +feature.city.permission.break=Break blocks +feature.city.permission.open_chest=Open chests +feature.city.permission.interact=Interact with blocks (except chests) +feature.city.permission.claim=Claim +feature.city.permission.see_claim=View claims +feature.city.permission.rename=Rename +feature.city.permission.money_deposit=Deposit money in the city bank +feature.city.permission.money_see=See the city money +feature.city.permission.money_withdraw=Withdraw money from the city bank +feature.city.permission.manage_perm=Manage member permissions +feature.city.permission.access_city_chest=Access the city vault +feature.city.permission.upgrade_chest=Upgrade the Town Chest +feature.city.permission.change_type=Change city type +feature.city.permission.move_mascot=Move the mascot +feature.city.permission.change_mascot_skin=Change the mascot skin +feature.city.permission.upgrade_mascot=Improve the mascot +feature.city.permission.heal_mascot=Take care of the mascot +feature.city.permission.launch_war=Starting wars +feature.city.permission.manage_grade=Manage grades +feature.city.permission.assign_grade=Assign grades + +# - City Grades +feature.city.grade.cannot_exist=<red>This grade does not exist.</red> +feature.city.grade.name_cannot_be_null=Rank name cannot be empty +feature.city.grade.priority_must_be_0_17=The priority must be contained between 0 and 17 +feature.city.grade.icon_cannot_be_null=The grade icon cannot be zero (notify the staff) +feature.city.grade.cannot_assign=<red>You don't have permission to assign ranks.</red> +feature.city.grade.cannot_modify_sup_role=<red>You cannot modify a rank greater than or equal to yours.</red> +feature.city.grade.max_reach=<red>The maximum number of ranks has been reached, you cannot add more.</red> +feature.city.grade.already_exist=<red>This grade already exists.</red> +feature.city.grade.remove_grade=<red>You removed the rank</red> %1$s <red>of</red> %2$s +feature.city.grade.assign_grade=<green>You have assigned the rank</green> %1$s <green>has</green> %2$s +feature.city.rank.menu.list.title=City Menu - Grades +feature.city.rank.menu.list.rank.title=Grade %1$s +feature.city.rank.menu.list.rank.lore.priority=<gray>Priority :</gray> %1$s +feature.city.rank.menu.list.rank.lore.permissions=<gray>Permissions:</gray> %1$s +feature.city.rank.menu.list.rank.lore.click_edit=<yellow><bold>CLICK TO EDIT ROLE</bold></yellow> +feature.city.rank.menu.list.rank.lore.click_info=<yellow><bold>CLICK FOR INFORMATION</bold></yellow> +feature.city.rank.menu.list.assign.title=<green>Assign grades</green> +feature.city.rank.menu.list.assign.lore.empty=<red>No grades have been created in this city.</red> \ + <br><gray>Create a rank so you can assign it to members.</gray> +feature.city.rank.menu.list.assign.lore.available=<white>You can assign ranks to town members.</white> \ + <br> \ + <br><yellow><bold>CLICK TO ASSIGN A GRADE</bold></yellow> +feature.city.rank.menu.list.create.title=<green>Add a rank</green> +feature.city.rank.menu.list.create.lore=<white>You can make a rank, a set of permissions!</white> \ + <br> \ + <br><yellow><bold>CLICK TO CREATE A GRADE</bold></yellow> +feature.city.rank.menu.details.title.edit=Rank details menu %1$s +feature.city.rank.menu.details.title.create=Rank creation menu %1$s +feature.city.rank.menu.details.priority.title.create=<light_purple>Insert grade priority</light_purple> +feature.city.rank.menu.details.priority.lore.create=<gray>Priority determines rank order</gray> \ + <br><gold><bold>Lower priority means higher grade</bold></gold> \ + <br><gray>Editable later</gray> \ + <br><gray>Current priority:</gray> %1$s +feature.city.rank.menu.details.name.title=<dark_aqua>Rank name</dark_aqua> +feature.city.rank.menu.details.name.undefined=<italic>Undefined</italic> +feature.city.rank.menu.details.name.lore.create=<gray>The name of the grade is given when it is created</gray> \ + <br><gray>Editable later</gray> \ + <br><gray>Current name:</gray> %1$s +feature.city.rank.menu.details.icon.title=<blue>Rank icon</blue> +feature.city.rank.menu.details.icon.lore.create=<gray>Click to change an icon</gray> \ + <br><gray>Editable later</gray> +feature.city.rank.menu.details.perms.title=<aqua>Rank permissions</aqua> +feature.city.rank.menu.details.perms.none=<italic>None</italic> +feature.city.rank.menu.details.perms.lore.create=<gray>Click to select permissions</gray> \ + <br><gray>Editable later</gray> \ + <br><gray>Current permissions:</gray> %1$s +feature.city.rank.menu.details.cancel_create.title=<red>Cancel and delete</red> +feature.city.rank.menu.details.cancel_create.lore=<gray>Click to cancel the creation of the grade</gray> +feature.city.rank.menu.details.create.title=<green>Create the grade</green> +feature.city.rank.menu.details.create.lore=<gray>Click to create the grade with the defined parameters</gray> +feature.city.rank.menu.details.priority.lore.current=<gray>Current priority:</gray> %1$s +feature.city.rank.menu.details.priority.lore.add=<yellow><bold>LEFT CLICK TO ADD 1</bold></yellow> +feature.city.rank.menu.details.priority.lore.remove=<yellow><bold>RIGHT CLICK TO REMOVE 1</bold></yellow> +feature.city.rank.menu.details.priority.title.edit=<light_purple>Priority</light_purple> +feature.city.rank.menu.details.name.lore.current=<gray>Current name:</gray> %1$s +feature.city.rank.menu.details.name.lore.edit=<yellow><bold>CLICK TO EDIT NAME</bold></yellow> +feature.city.rank.menu.details.icon.lore.current=<gray>Here is your current icon:</gray> %1$s +feature.city.rank.menu.details.icon.lore.edit=<yellow><bold>CLICK TO CHANGE ICON</bold></yellow> +feature.city.rank.menu.details.perms.lore.current=<gray>Current permissions:</gray> %1$s +feature.city.rank.menu.details.perms.lore.edit_manage=<yellow><bold>CLICK TO MANAGE PERMISSIONS</bold></yellow> +feature.city.rank.menu.details.perms.lore.edit_view=<yellow><bold>CLICK TO VIEW PERMISSIONS</bold></yellow> +feature.city.rank.menu.details.cancel_edit.title=<red>Cancel</red> +feature.city.rank.menu.details.cancel_edit.lore=<gray>Click to cancel changes</gray> \ + <br><dark_red>No changes will be saved</dark_red> +feature.city.rank.menu.details.delete.title=<red>Remove grade</red> +feature.city.rank.menu.details.delete.lore=<gray>Click to remove this rank</gray> \ + <br><dark_red>This action is irreversible</dark_red> +feature.city.rank.menu.details.save.title=<green>Save changes</green> +feature.city.rank.menu.details.save.lore=<gray>Click to save rank changes</gray> +feature.city.rank.menu.perms.item.add=Add %1$s +feature.city.rank.menu.perms.item.remove=Withdraw %1$s +feature.city.rank.menu.perms.item.lore.add=<yellow><bold>CLICK TO ADD THIS PERMISSION</bold></yellow> +feature.city.rank.menu.perms.item.lore.remove=<yellow><bold>CLICK TO REMOVE THIS PERMISSION</bold></yellow> +feature.city.rank.menu.perms.manage_all.title=<gold>Manage all grade permissions</gold> +feature.city.rank.menu.perms.manage_all.lore=<red>Left click to remove everything</red> \ + <br><green>Right click to add all</green> +feature.city.rank.menu.perms.title=Rank Permissions %1$s +feature.city.rank.menu.icon.item.lore=<gray>Click to select this icon</gray> +feature.city.rank.menu.icon.search.title=<aqua>Find an icon</aqua> +feature.city.rank.menu.icon.search.lore=<gray>Click to enter a keyword</gray> +feature.city.rank.menu.icon.search.prompt=Enter a keyword name for the icon +feature.city.rank.menu.icon.clear.title=<red>Clear filter</red> +feature.city.rank.menu.icon.clear.lore=<yellow><bold>CLICK TO CLEAR FILTER</bold></yellow> +feature.city.rank.menu.icon.title=Menu for choosing an icon - Page %1$s +feature.city.rank.menu.members.item.rank=<gray>Grade :</gray> %1$s +feature.city.rank.menu.members.item.click_assign=<yellow><bold>CLICK HERE TO ASSIGN A GRADE</bold></yellow> +feature.city.rank.menu.members.item.name_unknown=<red><italic>Unknown player</italic></red> +feature.city.rank.menu.members.title=Members' Choice Menu - Ranks +feature.city.rank.menu.assign.title=Cities Menu - Assign a rank +feature.city.rank.menu.assign.item.lore.count=<gray>Permissions:</gray> %1$s<gray> permission(s)</gray> +feature.city.rank.menu.assign.item.lore.none=None +feature.city.rank.prompt.create=Enter your rank name +feature.city.rank.prompt.rename=Enter your new rank name +feature.city.rank.rename.success=The rank name has been updated: %1$s → %2$s +feature.city.rank.create.success=Grade %1$s created successfully! +feature.city.rank.update.cancelled=Changes canceled, no changes were saved. +feature.city.rank.update.success=Grade %1$s modified successfully! +feature.city.rank.delete.confirm.lore=<red>This action is irreversible</red> +feature.city.rank.delete.success=Grade %1$s successfully deleted! +feature.city.rank.delete.error=Unable to delete rank: %1$s + +# - Mascots +# Menus +feature.city.mascots.menu.main.name=Pet Menu (Lvl. %1$s) +feature.city.mascots.menu.main.skin.title=<gray>The skin of the <red>mascot</red></gray> +feature.city.mascots.menu.main.skin.lore=<gray>You can change the appearance of your <red>mascot</red></gray> \ + <br><yellow><bold>CLICK HERE TO CHANGE SKIN</bold></yellow> + +feature.city.mascots.menu.main.move.title=<gray>Move your <red>mascot</red></gray> +feature.city.mascots.menu.main.move.lore.ready=<gray>You can change the position of your <red>mascot</red></gray> \ + <br><yellow><bold>CLICK HERE TO CHANGE IT POSITION</bold></yellow> +feature.city.mascots.menu.main.move.lore.cooldown=<gray>You cannot change the position of your <red>mascot</red></gray> \ + <br><red>Cooldown:</red> %1$s +feature.city.mascots.menu.main.move.item.title=<gray>Move your <bold>mascot</bold></gray> +feature.city.mascots.menu.main.move.item.lore=<red>Your mascot will be placed in the location of the chest</red> \ + <br><red>This safe is not removable</red> +feature.city.mascots.menu.main.move.interaction.remaining=Time remaining: %%sdry%%s +feature.city.mascots.menu.main.move.interaction.cancelled=<red>Mascot move canceled</red> +feature.city.mascots.menu.main.move.error.inventory_space=<red>Free up space in your inventory</red> +feature.city.mascots.menu.main.move.error.invalid_chunk=<red>Cannot move the mascot here because this chunk does not belong to you or is adjacent to another city</red> + +feature.city.mascots.menu.main.upgrade.title=<gray>Improve your <red>Mascot</red></gray> +feature.city.mascots.menu.main.upgrade.max_level=<gray>Max level reached</gray> +feature.city.mascots.menu.main.upgrade.level_required=<red>You must be level </red>%1$s<red> to improve the mascot</red> +feature.city.mascots.menu.main.upgrade.cost=<gray>Need </gray>%1$s<gray> of Aywenites</gray> +feature.city.mascots.menu.main.upgrade.success=<gray>You have improved your mascot to the level </gray>%1$s +feature.city.mascots.menu.main.upgrade.not_enough_aywenite=<red>You don't have enough Aywenite</red> + +feature.city.mascots.menu.main.immunity.title=<gray>Your <red>mascot</red> East <aqua>immune</aqua> !</gray> +feature.city.mascots.menu.main.immunity.lore=<gray>You have a <aqua>immunity</aqua> on your <red>mascot</red></gray> \ + <br><red>Time remaining:</red> %1$s \ + <br><gray>To reduce the time by 1 hour, you must have:</gray> \ + <br><dark_gray>-</dark_gray> %2$s <gray>of Aywenite</gray> \ + <br><yellow><bold>CLICK HERE TO REDUCE IMMUNITY TIME</bold></yellow> +feature.city.mascots.menu.main.immunity.reduce.success=<gray>You just spent </gray>%1$s<gray> of Aywenite to reduce the cooldown by one hour</gray> + +feature.city.mascots.menu.dead.name=Mascot menu [DEAD] +feature.city.mascots.menu.dead.title=<gray>Your <red>mascot</red> is dead</gray> +feature.city.mascots.menu.dead.lore=<gray>Your pet is dead, you can reduce the reanimation time</gray> \ + <br><gray>which is currently:</gray> %1$s \ + <br><gray>To reduce the time by 1 hour, you must have:</gray> \ + <br><dark_gray>-</dark_gray> %2$s <gray>of Aywenite</gray> \ + <br><yellow><bold>CLICK HERE TO REDUCE RESUSCITATION TIME</bold></yellow> +feature.city.mascots.menu.dead.reduce.success=<gray>You just spent </gray>%1$s<gray> of Aywenite to reduce the cooldown by one hour</gray> + +feature.city.mascots.menu.skin.name=Pet Skin Menu +feature.city.mascots.menu.skin.lore.level_required=<red>You must be level </red>%1$s<red> to unlock this skin</red> +feature.city.mascots.menu.skin.lore.price_required=<red>You must have </red>%1$s<red> Aywenite</red> +feature.city.mascots.menu.skin.error.level_required=<red>You do not have the required city level to put on this skin</red> +feature.city.mascots.menu.skin.error.not_enough_aywenite=<red>You don't have enough Aywenite</red> + +feature.city.mascots.skin.requirement=<gray>Need </gray>%1$s<gray> of Aywenites</gray> + +feature.city.mascots.skin.error.space_above=<red>Free up space above the mascot to change its skin</red> +feature.city.mascots.skin.error.space_around=<red>Free up space around the mascot to change its skin</red> + +feature.city.mascots.interaction.error.not_found=<red>No mascots found - Please contact the staff</red> +feature.city.mascots.interaction.error.not_owner=<red>This mascot does not belong to you</red> +feature.city.mascots.rename.error=<red>You cannot rename this mascot</red> + +feature.city.mascots.name.alive=%1$s %2$s%3$s +feature.city.mascots.name.dead=<dark_red>☠</dark_red> <red>Dead Mascot</red> + +feature.city.mascots.admin.remove.success=<green>Mascot removed</green> + +feature.city.mascots.damage.error.enemy_city_unknown=<red>Error: The enemy city was not recognized</red> +feature.city.mascots.damage.error.city_type_unknown=<red>Error: Your city type was not recognized</red> +feature.city.mascots.damage.error.enemy_city_type_unknown=<red>Error: The enemy city type was not recognized</red> +feature.city.mascots.damage.error.self_mascot=<red>You cannot attack your mascot</red> +feature.city.mascots.damage.error.enemy_city_peace=<red>This city is in peace</red> +feature.city.mascots.damage.error.city_peace=<red>Your city is in peace</red> +feature.city.mascots.damage.error.immune=<red>This mascot is immune for the moment</red> +feature.city.mascots.damage.error.not_in_war=<red>You are not at war with </red>%1$s +feature.city.mascots.damage.error.not_in_combat=<red>You can only attack the pet during the combat phase</red> +feature.city.mascots.damage.error.not_selected_for_war=<red>You cannot attack the mascot because you have not been selected for war</red> + +## Mascot Wand +feature.city.mascot.mascot_wand.claim_mascot_wand=You received a stick to pose your mascot +feature.city.mascot.mascot_wand.create_cancelled=<red>Creation canceled</red> + +feature.city.mascot.mascot_wand.lore=<red>Your mascot will be placed in the location of the chest</red>\ + <br><red>This stick is not removable</red> + +feature.city.mascot.mascot_wand.can_only_place_mascot=<red>You can only pose your pet in the main world</red> +feature.city.mascot.mascot_wand.hasnot_block_above=<red>No block should be above the mascot</red> + +feature.city.mascot.mascot=Mascot + +# - War +feature.city.war.peace=<green>Peace</green> +feature.city.war.war=<red>War</red> +feature.city.war.command.type_required=<red>Your city is not in a war status! Change the type of your city with</red> <red>/city type</red> <red>or from the main cities menu</red> +feature.city.war.command.city_immune=<red>Your city is currently in immunity period, you cannot start a war at this time.</red> \ + <br><gray>Time remaining:</gray> %1$s +feature.city.war.command.no_permission_launch=<red>You do not have permission to start a war for the city</red> +feature.city.war.command.already_declared=<red>You have already been declared at war!</red> +feature.city.war.command.already_in_war=<red>You are already at war!</red> +feature.city.war.command.defense.none=<red>No war being prepared.</red> +feature.city.war.command.defense.full=<red>The maximum number of defenders has been reached.</red> +feature.city.war.command.defense.accepted=<red>You are now participating in the defense! No more going back possible.</red> +feature.city.war.begin.type_required=<red>Your city is not in a war status! Change the type of your city with</red> <red>/city type</red> <red>or in the main menu of cities</red> +feature.city.war.begin.target_not_war=<red>The city you are trying to attack is not in war status!</red> +feature.city.war.begin.no_permission_launch=<red>You do not have permission to start a war for the city</red> +feature.city.war.begin.already_declared=<red>You have already been declared at war!</red> +feature.city.war.begin.already_in_war=<red>Your city is already at war!</red> +feature.city.war.begin.target_preparing=<red>The city you are trying to attack is already preparing troops</red> +feature.city.war.begin.target_in_war=<red>The city you are trying to attack is already at war!</red> +feature.city.war.begin.target_immune=<red>The city you are trying to attack is in immunity period!</red> +feature.city.war.begin.city_immune=<red>Your city is in immunity period!</red> +feature.city.war.begin.target_no_online=<red>The city you are trying to attack has no members connected!</red> +feature.city.war.begin.no_combat=<red>No combat possible (not enough players connected)</red> +feature.city.war.begin.not_enough_members=<red>Not enough members connected to start a fight</red> %1$s <red>vs.</red> %1$s +feature.city.war.begin.city_already_in_war=<red>One of the cities is already at war!</red> +feature.city.war.begin.confirm.lore=<red><bold>ATTENTION</bold></red> \ + <br><gray>You are about to start a war against</gray> %1$s \ + <br><gray>with</gray> %2$s <gray>players from your city.</gray> +feature.city.war.begin.confirm.cancel=<gray>Do not start a war against</gray> %1$s +feature.city.war.begin.defense.attacked=<red>⚔ Your city is attacked by</red> %1$s <red>, you need</red> %2$s <red>player(s)!</red> +feature.city.war.begin.defense.click_to_join=<green>Click here to join the defense!</green> +feature.city.war.begin.defense.hover_join=<green>Click to join the war</green> +feature.city.war.begin.attacker.chosen=<red>⚔ You have been chosen to fight against</red> %1$s +feature.city.war.begin.waiting_defense=<dark_gray><italic>Please wait until</italic></dark_gray> %1$s <dark_gray><italic>react, the game will still be started in 2 min</italic></dark_gray> +feature.city.war.begin.cancel_not_enough_defenders=<red>The war was called off because the enemy city did not have enough required defenders.</red> +feature.city.war.preparation.message=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>Preparation for war begins</gray> \ + <br><dark_gray><italic>Prepare yourself for the fight against</italic></dark_gray> %1$s \ + <br><dark_gray><italic>You have</italic></dark_gray> %2$s <dark_gray><italic>minutes to equip yourself.</italic></dark_gray> \ + <br><dark_gray><italic>You will be in</italic></dark_gray> %3$s <dark_gray><italic>VS</italic></dark_gray> %4$s \ + <br><dark_gray><italic>When the fight begins you will be teleported to your pet.</italic></dark_gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.combat.message=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>The fight is imminent!</gray> \ + <br><dark_gray><italic>Fight against</italic></dark_gray> %1$s \ + <br><dark_gray><italic>You have</italic></dark_gray> %2$s <dark_gray><italic>minutes of combat.</italic></dark_gray> \ + <br><dark_gray><italic>If you kill the opposing city's mascot, you win the war.</italic></dark_gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.draw=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>It's the end of the fighting!</gray> \ + <br><dark_gray><italic>There was a tie!</italic></dark_gray> \ + <br> \ + <br><gray>Overall statistics:</gray> \ + <br><gray> -</gray> <red>Kills %3$s :</red> %4$s \ + <br><gray> -</gray> <blue>Kills %5$s :</blue> %6$s \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.reason.win.mascot_death=You have killed the opposing mascot! +feature.city.war.result.reason.win.mascot_hp=Your mascot had the most life points! +feature.city.war.result.reason.win.kills=Your city has killed the most opponents! +feature.city.war.result.reason.win.draw=It's a tie! +feature.city.war.result.reason.lose.mascot_death=Your mascot has been killed! +feature.city.war.result.reason.lose.mascot_hp=Your mascot had the fewest life points! +feature.city.war.result.reason.lose.kills=The opponent has killed the most people! +feature.city.war.result.reason.lose.draw=It's a tie! +feature.city.war.result.winner=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>It's the end of the fighting!</gray> \ + <br><dark_gray><italic>You won against</italic></dark_gray> %1$s <dark_gray><italic>!</italic></dark_gray> \ + <br><dark_gray><italic>%2$s</italic></dark_gray> \ + <br> \ + <br><gray>Overall statistics:</gray> \ + <br><gray> -</gray> <red>Kills %3$s :</red> %4$s \ + <br><gray> -</gray> <blue>Kills %5$s :</blue> %6$s \ + <br> \ + <br><gold><bold>Awards</bold></gold> \ + <br><gray>%7$s</gray> \ + <br><gray>%8$s</gray> \ + <br><gray>%9$s</gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.loser=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>It's the end of the fighting!</gray> \ + <br><dark_gray><italic>You lost to</italic></dark_gray> %1$s <dark_gray><italic>!</italic></dark_gray> \ + <br><dark_gray><italic>%2$s</italic></dark_gray> \ + <br> \ + <br><gray>Overall statistics:</gray> \ + <br><gray> -</gray> <red>Kills %3$s :</red> %4$s \ + <br><gray> -</gray> <blue>Kills %5$s :</blue> %6$s \ + <br> \ + <br><red><bold>Losses</bold></red> \ + <br><gray>%7$s</gray> \ + <br><gray>%8$s</gray> \ + <br><gray>%9$s</gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.reward.power=+ %1$s power points +feature.city.war.result.reward.money=+ %1$s stolen from the adversary +feature.city.war.result.reward.money_bonus=+ %1$s stolen from the opponent + %2$s bonuses +feature.city.war.result.reward.claims=+ %1$s conquered territory(ies) +feature.city.war.result.loss.power=- %1$s power points +feature.city.war.result.loss.money=- %1$s lost +feature.city.war.result.loss.claims=- %1$s lost territory(ies) +feature.city.war.admin.not_in_preparation=<red>This city is not preparing for war!</red> +feature.city.war.tnt.limit_reached=<red>The city</red> %1$s <red>has reached its daily TNT limit!</red> <dark_gray>(</dark_gray><red>%2$s</red><dark_gray>/</dark_gray><red>%3$s</red> <dark_gray>daily TNT)</dark_gray> +feature.city.war.menu.main.title=Menu of Wars +feature.city.war.menu.main.owner=<gray>Owner :</gray> %1$s +feature.city.war.menu.main.population_online=<gray>Population (online):</gray> %1$s +feature.city.war.menu.main.mascot_level=<gray>Mascot:</gray> <gray>lv.</gray> %1$s +feature.city.war.menu.main.mascot_location=<gray>Location:</gray> %1$s +feature.city.war.menu.main.reforms=<gray>Reforms:</gray> +feature.city.war.menu.main.wealth=<gray>Riches:</gray> %1$s +feature.city.war.menu.main.click_details=<yellow><bold>RIGHT CLICK FOR MORE INFORMATION ABOUT THE CITY</bold></yellow> +feature.city.war.menu.main.click_launch=<yellow><bold>LEFT CLICK TO START A WAR</bold></yellow> +feature.city.war.menu.more_info.title=<green>More info!</green> +feature.city.war.menu.more_info.lore=<gray>Learn more about the Wars!</gray> \ + <br><gray>The preparation, the fight,...</gray> \ + <br><yellow><bold>CLICK HERE TO LEARN MORE!</bold></yellow> +feature.city.war.menu.more_info.menu_title=Menu des Guerres - More info +feature.city.war.menu.more_info.prep.title=<gold>The preparation -</gold> %1$s <gold>min</gold> +feature.city.war.menu.more_info.prep.lore=<gray>Choose a city to attack!</gray> \ + <br><gray>The number of fighters will be the same everywhere!</gray> \ + <br><dark_gray><italic>ex. If you are 5 players connected and 2 opposite,</italic></dark_gray> \ + <br><dark_gray><italic>then you will have the choice to do a 1vs1 or a 2vs2</italic></dark_gray> \ + <br> \ + <br><gray>When you come to declare war on a city, the people affected will be informed</gray> \ + <br><gray>You will have</gray> %1$s <gray>min preparation</gray> \ + <br><gray>which gives you time to equip yourself and go to the front!</gray> +feature.city.war.menu.more_info.combat.title=<red>The fight -</red> %1$s <red>min</red> +feature.city.war.menu.more_info.combat.lore=<gray>The fight begins, the game will end</gray> %1$s <gray>min after the start.</gray> \ + <br><gray>It can be finished before if the enemy pet is killed.</gray> \ + <br><gray>And during this time you can do everything in the enemy city.</gray> +feature.city.war.menu.more_info.result.title=<white>The results</white> +feature.city.war.menu.more_info.result.lore=<gray>The end of the war, peace is imposed between the two camps.</gray> \ + <br><gray>The winner is chosen, the reward is given.</gray> \ + <br><gray>And both cities get 2 days immunity!</gray> +feature.city.war.menu.details.title=War Menu - Details %1$s +feature.city.war.menu.details.mascot.level=<gray>Mascot level:</gray> %1$s +feature.city.war.menu.details.mascot.location=<gray>Mascot location:</gray> %1$s +feature.city.war.menu.details.size=<gray>Size :</gray> %1$s <gray>chunks</gray> +feature.city.war.menu.details.wealth=<gray>Riches:</gray> %1$s +feature.city.war.menu.details.population=<gray>Population :</gray> %1$s %2$s +feature.city.war.menu.details.population_online=<gray>Connected population:</gray> %1$s %2$s +feature.city.war.menu.details.population.player=player +feature.city.war.menu.details.population.players=players +feature.city.war.menu.details.type=<gray>Kind :</gray> %1$s +feature.city.war.menu.players.title=War Menu - Members +feature.city.war.menu.players.role.owner=Owner +feature.city.war.menu.players.role.mayor=Mayor +feature.city.war.menu.players.role.member=Member +feature.city.war.menu.players.back_lore=<gray>You will return to the details menu of the city at war</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.war.menu.size.menu_title=Menu of Wars - Selection +feature.city.war.menu.size.title=%1$s vs. %1$s +feature.city.war.menu.size.lore=<gray>Clash between</gray> %1$s <gray>players from each city.</gray> \ + <br> \ + <br><yellow><bold>CLICK TO CONTINUE</bold></yellow> +feature.city.war.menu.participants.title=Wars Menu - Participants +feature.city.war.menu.participants.selected_prefix=<green>✔ </green> +feature.city.war.menu.participants.click_remove=<red><bold>CLICK TO REMOVE</bold></red> +feature.city.war.menu.participants.click_select=<green><bold>CLICK TO SELECT</bold></green> +feature.city.war.menu.participants.already_selected=<red>You have already selected</red> %1$s <red>player(s).</red> +feature.city.war.menu.participants.confirm.title=Validate selection +feature.city.war.menu.participants.confirm.lore=<gray>Selected participants:</gray> %1$s<gray>/</gray>%2$s +feature.city.war.menu.participants.must_select=<red>You must select</red> %1$s <red>player(s).</red> + +# - Mayor +feature.city.mayor.perk.category.military=<dark_gray><italic>Military reforms</italic></dark_gray> +feature.city.mayor.perk.category.strategy=<dark_gray><italic>Strategy reforms</italic></dark_gray> +feature.city.mayor.perk.category.agricultural=<dark_gray><italic>Agricultural reforms</italic></dark_gray> +feature.city.mayor.perk.category.economic=<dark_gray><italic>Economic reforms</italic></dark_gray> +feature.city.mayor.perk.category.onirique=<dark_gray><italic>Dream Reforms</italic></dark_gray> +feature.city.mayor.perk.none.name=<dark_gray>Empty Reform</dark_gray> +feature.city.mayor.perk.fou_de_rage.name=<yellow><bold>Mad with rage</bold></yellow> +feature.city.mayor.perk.fou_de_rage.lore=<gray>In your city:</gray> <dark_aqua>Resistance</dark_aqua> \ + <br><gray>Outside your city:</gray> <dark_aqua>Strength</dark_aqua> +feature.city.mayor.perk.impot.name=<yellow><bold>Tax Withholding</bold></yellow> +feature.city.mayor.perk.impot.lore=<gray>Collectors levy tax on players</gray> \ + <br><dark_gray>Fixed amount per attack</dark_gray> +feature.city.mayor.perk.miner.name=<yellow><bold>Dedicated Minor</bold></yellow> +feature.city.mayor.perk.miner.lore=<gray>Grants a mining bonus</gray> \ + <br><dark_gray>Permanent speed</dark_gray> +feature.city.mayor.perk.demon_fruit.name=<yellow><bold>Devil Fruit</bold></yellow> +feature.city.mayor.perk.demon_fruit.lore=<gray>Increases interaction range</gray> \ + <br><dark_gray>Blocks and entities</dark_gray> +feature.city.mayor.perk.business_man.name=<yellow><bold>Businessman</bold></yellow> +feature.city.mayor.perk.business_man.lore=<gray>Increases the bank's interest</gray> \ + <br><dark_gray>Interest bonus</dark_gray> +feature.city.mayor.perk.iron_man.name=<yellow><bold>Iron in the Blood</bold></yellow> +feature.city.mayor.perk.iron_man.lore=<gray>A golem defends the mascot in case of attack</gray> +feature.city.mayor.perk.city_hunter.name=<yellow><bold>Urban Hunter</bold></yellow> +feature.city.mayor.perk.city_hunter.lore=<gray>Increases your damage against players and monsters</gray> \ + <br><dark_gray>Bonuses outside of opposing cities</dark_gray> +feature.city.mayor.perk.ayweniter.name=<yellow><bold>Ayweniteur</bold></yellow> +feature.city.mayor.perk.ayweniter.lore=<gray>Chance of finding Aywenite by mining stone</gray> +feature.city.mayor.perk.gps_tracker.name=<yellow><bold>GPS tracker</bold></yellow> +feature.city.mayor.perk.gps_tracker.lore=<gray>Intruders are highlighted in your city</gray> \ + <br><dark_gray>Alert on entry</dark_gray> +feature.city.mayor.perk.symbiosis.name=<yellow><bold>Symbiosis</bold></yellow> +feature.city.mayor.perk.symbiosis.lore=<gray>Reduces damage near your pet</gray> \ + <br><dark_gray>10 block radius</dark_gray> +feature.city.mayor.perk.agricultural_essor.name=<yellow><bold>Agricultural Boom</bold></yellow> +feature.city.mayor.perk.agricultural_essor.lore=<gray>Double the harvests during the event</gray> \ + <br><dark_gray>Limited time</dark_gray> +feature.city.mayor.perk.mineral_rush.name=<yellow><bold>Mining Rush/bold></yellow> +feature.city.mayor.perk.mineral_rush.lore=<gray>Double the minerals during the event</gray> \ + <br><dark_gray>Bonuses on rare ores</dark_gray> +feature.city.mayor.perk.military_dissuasion.name=<yellow><bold>Military Deterrence</bold></yellow> +feature.city.mayor.perk.military_dissuasion.lore=<gray>Spawn golems in your town</gray> \ + <br><dark_gray>Temporary effect</dark_gray> +feature.city.mayor.perk.idyllic_rain.name=<yellow><bold>Idyllic rain</bold></yellow> +feature.city.mayor.perk.idyllic_rain.lore=<gray>Makes it rain Aywenite in your city</gray> \ + <br><dark_gray>Reserved for members</dark_gray> +feature.city.mayor.perk.mascots_friendly.name=<yellow><bold>Company Mascot</bold></yellow> +feature.city.mayor.perk.mascots_friendly.lore=<gray>Grants pet level bonuses to members</gray> +feature.city.mayor.perk.great_sleeper.name=<yellow><bold>Big Sleeper</bold></yellow> +feature.city.mayor.perk.great_sleeper.lore=<gray>Increases the chance of entering a dream</gray> \ + <br><dark_gray>Significant bonus</dark_gray> +feature.city.mayor.perk.great_dream.name=<yellow><bold>Big Dreamer</bold></yellow> +feature.city.mayor.perk.great_dream.lore=<gray>Increases time spent in dreams</gray> \ + <br><dark_gray>Time bonus</dark_gray> +feature.city.mayor.perk.chaos_dream.name=<yellow><bold>Chaotic Dream</bold></yellow> +feature.city.mayor.perk.chaos_dream.lore=<gray>Teleport the limbs into the dream</gray> \ + <br><dark_gray>City event</dark_gray> + +feature.city.menus.common.error=<red>Error of reform</red> +feature.city.mayor.menu.common.back.name=<green>Back</green> +feature.city.mayor.menu.common.back.lore=<gray>You will return to the previous menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.common.more_info.name=<green>More info!</green> +feature.city.mayor.menu.common.more_info.lore=<gray>Learn more about mayors!</gray> \ + <br><gray>The course..., the elections,...</gray> \ + <br><yellow><bold>CLICK HERE TO SEE MORE!</bold></yellow> + +feature.city.mayor.label.mayor=mayor +feature.city.mayor.label.color=color +feature.city.mayor.label.this_one=this one + +feature.city.mayor.error.not_in_city=<dark_gray><italic>This object is not in a city</italic></dark_gray> +feature.city.mayor.error.feature_locked=<red>You have not unlocked this feature! Please upgrade your city to the level </red>%1$s<red> !</red> + +feature.city.mayor.urne.interact.mysterious=<dark_gray><italic>*Mysterious object... This must surely be used for elections...*</italic></dark_gray> +feature.city.mayor.urne.interact.not_your_urne=<dark_gray><italic>*Mhh... It's not your urn*</italic></dark_gray> +feature.city.mayor.urne.interact.need_members=<dark_gray><italic>*you must have at least</italic></dark_gray> %1$s <dark_gray><italic>members in order to be able to make an election*</italic></dark_gray> +feature.city.mayor.urne.interact.election_already=<dark_gray><italic>*The elections have already taken place!*</italic></dark_gray> +feature.city.mayor.urne.interact.no_candidate=<dark_gray><italic>*no one showed up! Introduce yourself! /city*</italic></dark_gray> +feature.city.mayor.urne.place.must_be_overworld=You must be in overworld to pose this! +feature.city.mayor.urne.place.need_city=You must have a city to post this! +feature.city.mayor.urne.place.must_be_in_city=You need to put this in your city! +feature.city.mayor.urne.place.require_level=You must be level %1$s of town to place the urn +feature.city.mayor.urne.place.not_owner=You are not the owner! +feature.city.mayor.urne.place.already_has_npc=You can't put this down because you already have NPCs +feature.city.mayor.urne.break.not_owner=You cannot post this because you are not the owner + +feature.city.mayor.npc.display.mayor=Mayor %1$s +feature.city.mayor.npc.display.unknown=Unknown +feature.city.mayor.npc.display.owner=Owner %1$s +feature.city.mayor.npc.error.feature_locked=<red>You have not unlocked this feature! Please upgrade your city to the level </red>%1$s<red> !</red> +feature.city.mayor.npc.info.no_mayor_yet=<dark_gray><italic>*mhh this city has not yet elected a mayor*</italic></dark_gray> +feature.city.mayor.npc.info.no_election_unlocked=<dark_gray><italic>*mhh this city has not yet unblocked the elections*</italic></dark_gray> +feature.city.mayor.npc.move.prompt=<dark_gray><italic>*Good morning ? Do you want to move me? Click here!*</italic></dark_gray> +feature.city.mayor.npc.move.hover=Move this NPC +feature.city.mayor.npc.move.item.lore=<gray>Click on where you want to move the </gray><blue>NPC</blue> +feature.city.mayor.npc.move.item.name=<gray>Location of </gray><blue>NPC</blue> +feature.city.mayor.npc.move.interaction.remaining=<gray>You have</gray> %1$s <gray>to select your location</gray> +feature.city.mayor.npc.move.interaction.timeout=<gray>You didn't have time to move your NPC</gray> +feature.city.mayor.npc.move.error.outside_city=<red>Cannot put NPC outside your city</red> + +feature.city.mayor.menu.more_info.name=Mayors' menu - More info +feature.city.mayor.menu.more_info.elections.title=<gold>Elections - Wednesday</gold> +feature.city.mayor.menu.more_info.reforms.title=<dark_aqua>Reforms - Thursday</dark_aqua> +feature.city.mayor.menu.more_info.elections.lore=<gray>All the <gold>Wednesdays</gold>, THE <gold>elections</gold> begin</gray> \ + <br><gray>If you have more than </gray>%1$s<gray> members,</gray> \ + <br><gray>you can elect a </gray><gold>mayor</gold><gray> for your city</gray> \ + <br><gray>Otherwise, the owner will choose the </gray><dark_aqua>reforms</dark_aqua><gray> what he wants!</gray> +feature.city.mayor.menu.more_info.reforms.lore=<gray>All the <dark_aqua>Thursdays</dark_aqua>, the mayor is elected!</gray> \ + <br><gray>THE <dark_aqua>reforms</dark_aqua> chosen by the mayor are applied</gray> \ + <br><gray>You can take a look at </gray><dark_aqua>/city mayor</dark_aqua> + +feature.city.mayor.menu.owner.name=Mayors' menu - Owner's mandate +feature.city.mayor.menu.owner.lore.header=<dark_gray><italic>Owner of %1$s</italic></dark_gray> +feature.city.mayor.menu.owner.title=Owner %1$s +feature.city.mayor.menu.mayor.name=Mayors' Menu - Mayor's Mandate +feature.city.mayor.menu.mayor.lore.header=<dark_gray><italic>Mayor of %1$s</italic></dark_gray> +feature.city.mayor.menu.mayor.title=Mayor %1$s +feature.city.mayor.menu.npc.move.name=Move this NPC +feature.city.mayor.menu.npc.move.lore=<gray>You will be able to move this NPC</gray> \ + <br><yellow><bold>CLICK HERE TO CONTINUE</bold></yellow> + +feature.city.mayor.menu.mandate.name=Mayors Menu - Mandate +feature.city.mayor.menu.mandate.mayor.lore.header=<dark_gray><italic>Mayor of %1$s</italic></dark_gray> +feature.city.mayor.menu.mandate.owner.lore.header=<dark_gray><italic>Owner of %1$s</italic></dark_gray> +feature.city.mayor.menu.mandate.mayor.title=Mayor %1$s +feature.city.mayor.menu.mandate.owner.title=Owner %1$s +feature.city.mayor.menu.mandate.law.lore=<gray>You are the </gray>%1$s<gray>!</gray> \ + <br><br><gray>You can change the </gray><dark_blue>laws</dark_blue><gray> and launch </gray><gold>events</gold><gray>!</gray> \ + <br><br><yellow><bold>CLICK HERE TO OPEN A MENU</bold></yellow> +feature.city.mayor.menu.mandate.law.name=<dark_blue>The Laws</dark_blue> + +feature.city.mayor.command.warp.not_set.phase2=<gray>The city warp is not yet defined! Ask the </gray><gold>mayor</gold><gray> current to put one!</gray> \ + <br><dark_gray><italic>*via /city setwarp or with the menu of laws*</italic></dark_gray> +feature.city.mayor.command.warp.not_set.no_mayor=<gray>The city warp is not yet defined! You have to wait until a mayor is elected to put a warp</gray> + +feature.city.mayor.warp.error.not_mayor=<red>You are not the mayor of the city</red> +feature.city.mayor.warp.interaction.remaining=<gray>You have %1$s to select your spawn point</gray> +feature.city.mayor.warp.interaction.timeout=<gray>You didn't have time to place your warp</gray> +feature.city.mayor.warp.error.outside_city=<red>Can't warp here because it's not in your city</red> +feature.city.mayor.warp.success=<gray>You just put the </gray><blue>warp</blue><gray> from your city in:</gray> \ + <br><dark_gray>-</dark_gray> <gray>x=%1$s</gray> \ + <br><dark_gray>-</dark_gray> <gray>y=%2$s</gray> \ + <br><dark_gray>-</dark_gray> <gray>z=%3$s</gray> +feature.city.mayor.warp.wand.lore=<gray>Click on where you want to put the </gray><blue>warp</blue> +feature.city.mayor.warp.wand.name=<gray>Selection of </gray><blue>warp</blue> + +feature.city.mayor.broadcast.phase1=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MAYOR!</bold></aqua> <gray>The elections are open!</gray> \ + <br><dark_gray><italic>Introduce yourself, vote for mayors,...</italic></dark_gray> \ + <br><dark_gray><italic>See if you have enough members!</italic></dark_gray> \ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.mayor.broadcast.phase2=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MAYOR!</bold></aqua> <gray>Your reforms are active!</gray> \ + <br><dark_gray><italic>Make your strategies, farm, and lots of other things!</italic></dark_gray> \ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +feature.city.mayor.menu.law.name=Menu of laws +feature.city.mayor.menu.law.pvp.name.disable=<red>Disable</red> <gray>PVP</gray> +feature.city.mayor.menu.law.pvp.name.enable=<dark_red>Enable</dark_red> <gray>PVP</gray> +feature.city.mayor.menu.law.pvp.lore.active=<gray>This </gray><dark_blue>law</dark_blue> <dark_red>active</dark_red> <gray>PVP throughout</gray> <light_purple>city</light_purple> +feature.city.mayor.menu.law.pvp.lore.inactive=<gray>This </gray><dark_blue>law</dark_blue> <red>disabled</red> <gray>PVP throughout</gray> <light_purple>city</light_purple> +feature.city.mayor.menu.law.pvp.lore.members=<gray>between the members!</gray> +feature.city.mayor.menu.law.pvp.click.enable=<yellow><bold>CLICK HERE TO ACTIVATE PVP</bold></yellow> +feature.city.mayor.menu.law.pvp.click.disable=<yellow><bold>CLICK HERE TO DISABLE PVP</bold></yellow> +feature.city.mayor.menu.law.pvp.message.enable=<gray>You have </gray><dark_red>activated</dark_red> <gray>PVP in your city</gray> +feature.city.mayor.menu.law.pvp.message.disable=<gray>You have </gray><red>disabled</red> <gray>PVP in your city</gray> +feature.city.mayor.menu.law.warp.name=<gray>Change sound </gray><blue>warp</blue> +feature.city.mayor.menu.law.warp.lore.unset=<gray>This </gray><dark_blue>law</dark_blue> <gray>is not effective!</gray> \ + <br><gray>You need to choose a location where members can</gray> \ + <br><gray>arrive</gray> +feature.city.mayor.menu.law.warp.lore.set=<gray>Members can teleport to your </gray><blue>warp</blue><gray>!</gray> \ + <br><gray>Here is the position of </gray><blue>warp</blue><gray> :</gray> +feature.city.mayor.menu.law.warp.lore.x=<dark_gray>-</dark_gray> <gray>x=%1$s</gray> +feature.city.mayor.menu.law.warp.lore.y=<dark_gray>-</dark_gray> <gray>y=%1$s</gray> +feature.city.mayor.menu.law.warp.lore.z=<dark_gray>-</dark_gray> <gray>z=%1$s</gray> +feature.city.mayor.menu.law.warp.click=<yellow><bold>CLICK HERE TO CHOOSE A LOCATION</bold></yellow> +feature.city.mayor.menu.law.announce.name=<gray>Make an announcement</gray> +feature.city.mayor.menu.law.announce.lore=<gray>This </gray><dark_blue>law</dark_blue> <gray>allows you to send a message throughout the city!</gray> +feature.city.mayor.menu.law.announce.click=<yellow><bold>CLICK HERE TO WRITE THE MESSAGE</bold></yellow> +feature.city.mayor.menu.law.announce.prompt=<yellow>You can enter your message that you want to spread throughout the city! Type cancel to cancel the action</yellow> +feature.city.mayor.menu.law.announce.header=<dark_gray>-- </dark_gray><gold>Mayor's announcement</gold><dark_gray> --</dark_gray> +feature.city.mayor.menu.law.announce.success=You sent the message to everyone in town +feature.city.mayor.menu.law.cooldown=<red>Cooldown:</red> %1$s +feature.city.mayor.menu.law.perk_event.click=<yellow><bold>CLICK HERE TO USE THE REFORM</bold></yellow> +feature.city.mayor.menu.law.perk_event.wait=<red>You must wait before you can use this </red><dark_aqua>reform</dark_aqua> +feature.city.mayor.menu.law.perk_event.impot.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Tax Withholding</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.agricultural.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the</gray><yellow>Agricultural Boom</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.mineral.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Mining Rush</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.military.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Military Deterrence</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.idyllic.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Idyllic rain</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.dream.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Chaotic Dream</yellow><gray> !</gray> + +feature.city.mayor.menu.vote.name=Mayors' menu - Votes +feature.city.mayor.menu.vote.lore.header=<dark_gray>Candidate for mayor of %1$s</dark_gray> +feature.city.mayor.menu.vote.lore.votes=<gray>Votes:</gray> %1$s +feature.city.mayor.menu.vote.lore.progress=<dark_gray>[</dark_gray>%1$s<dark_gray>]</dark_gray> <gray>(%2$s%%)</gray> +feature.city.mayor.menu.vote.lore.click=<yellow><bold>CLICK HERE TO VOTE</bold></yellow> +feature.city.mayor.menu.vote.mayor.title=Mayor %1$s +feature.city.mayor.menu.vote.message.already_voted=<gray>You have already voted for this </gray><gold>mayor</gold> +feature.city.mayor.menu.vote.message.voted=<gray>You voted for the </gray>%1$s + +feature.city.mayor.menu.election.name=Elections menu +feature.city.mayor.menu.election.item.name=<gold>The elections</gold> +feature.city.mayor.menu.election.item.lore.voted=<gray>The elections are </gray><gold>open</gold><gray>!</gray> \ + <br><gray>You can change your vote!</gray> \ + <br> \ + <br><gray>Current vote:</gray> %1$s \ + <br><red>Closure in %2$s</red> \ + <br> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MENU</bold></yellow> +feature.city.mayor.menu.election.item.lore.not_voted=<gray>The elections are </gray><gold>open</gold><gray>!</gray> \ + <br><gray>Choose the mayor you like!</gray> \ + <br> \ + <br><red>Closure in %1$s</red> \ + <br> \ + <br><yellow><bold>CLICK HERE TO REGISTER</bold></yellow> +feature.city.mayor.menu.election.error.no_candidate=There are no volunteers to be mayor +feature.city.mayor.menu.election.candidature.lore.already=<gray>You have already </gray><dark_aqua>presented</dark_aqua><gray> !</gray> \ + <br><gray>Change your color and watch </gray><dark_aqua>the reforms</dark_aqua><gray> that you have chosen</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MENU</bold></yellow> +feature.city.mayor.menu.election.candidature.lore.new=<gray>You can </gray><dark_aqua>register</dark_aqua><gray> to be mayor!</gray> \ + <br><gray>Select </gray><dark_aqua>your reforms</dark_aqua><gray> and your color!</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO REGISTER</bold></yellow> +feature.city.mayor.menu.election.candidature.name=<gray>Your </gray><dark_aqua>candidacy</dark_aqua> +feature.city.mayor.menu.election.owner_reform.name=<gray>Choice of one </gray><dark_aqua>reform</dark_aqua> +feature.city.mayor.menu.election.owner_reform.lore.chosen=<gray>You have already chosen </gray><dark_aqua>your reform</dark_aqua><gray> !</gray> +feature.city.mayor.menu.election.owner_reform.lore.choice=<gray>You are the owner of the </gray><light_purple>city</light_purple><gray> !</gray> \ + <br><gray>You can choose a </gray><dark_aqua>event reform</dark_aqua><gray> !</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CHOOSE THE REFORM</bold></yellow> + +feature.city.mayor.menu.create.name=Mayors' menu - Creation +feature.city.mayor.menu.create.perk.choose.lore=<gray>Choose </gray><dark_aqua>your reform</dark_aqua><gray> that you want to see!</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CHOOSE THE REFORM</bold></yellow> +feature.city.mayor.menu.create.perk.change.lore=<yellow><bold>CLICK HERE TO CHANGE THE REFORM</bold></yellow> +feature.city.mayor.menu.create.back.election=<gray>You will return to the elections menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.create.back.city=<gray>You will return to the menu of your city</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.create.confirm.name.ready=Confirm +feature.city.mayor.menu.create.confirm.name.blocked=Confirm +feature.city.mayor.menu.create.confirm.lore.ready=<gray>You have chosen all </gray><green>the reforms</green><gray> necessary</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CONTINUE THE APPLICATION</bold></yellow> +feature.city.mayor.menu.create.confirm.lore.blocked=<gray>You didn't choose all </gray><red>the reforms</red><gray> necessary</gray> +feature.city.mayor.menu.create.confirm.owner.success=<gray>You added the Reformation: </gray>%1$s + +feature.city.mayor.menu.modify.name=Mayors' menu - Modification +feature.city.mayor.menu.modify.color.lore=<gray>You can change the color of your name!</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CHANGE COLOR</bold></yellow> +feature.city.mayor.menu.modify.color.name=<gray>Change your </gray>%1$s +feature.city.mayor.menu.modify.back.lore=<gray>You will return to the menu of your city</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> + +feature.city.mayor.menu.color.name=Mayors Menu - Color +feature.city.mayor.menu.color.option.lore=<gray>Your name will be displayed in %1$s</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.color.option.name=<gray>Put some %1$s</gray> +feature.city.mayor.menu.color.confirm.lore=<gray>You will introduce yourself as </gray><gold>mayor</gold><gray> of %1$s</gray> +feature.city.mayor.menu.color.confirm.final=<red><bold>NO RETURN POSSIBLE!</bold></red> +feature.city.mayor.menu.color.confirm.cancel=<gray>Do not present yourself as </gray><gold>Mayor</gold><gray> of %1$s</gray> +feature.city.mayor.menu.color.candidate.announce=%1$s <gray>introduced himself as </gray><gold>mayor</gold><gray>!</gray> +feature.city.mayor.menu.color.candidate.success=<gray>You introduced yourself with </gray><green>success</green><gray>!</gray> +feature.city.mayor.menu.color.error.no_mayor=<red>Your city has no mayor!</red> +feature.city.mayor.menu.color.change.success=<gray>You changed your </gray>%1$s<gray> in </gray>%2$s +feature.city.mayor.menu.color.change.confirm=<gray>Change your </gray>%1$s<gray> in </gray>%2$s +feature.city.mayor.menu.color.change.cancel=<gray>Don't change it </gray>%1$s<gray> in </gray>%2$s + +feature.city.mayor.menu.perk_choice.name=Mayors' menu - Reforms +feature.city.mayor.menu.perk_choice.locked=<red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.mayor.menu.perk_choice.error.event_duplicate=You cannot choose 2 event-type reforms! +feature.city.mayor.menu.perk_choice.button.back=<gray>Go back</gray> +feature.city.mayor.menu.perk_choice.button.prev=<red>Previous page</red> +feature.city.mayor.menu.perk_choice.button.next=<green>Next page</green> + +feature.city.mayor.perk.basic.ayweniter.blessing=<dark_gray><italic>*the blessing!*</italic></dark_gray> +feature.city.mayor.perk.basic.iron_blood.tremor=<dark_gray><italic>*tremor* Something seems to be happening...</italic></dark_gray> +feature.city.mayor.perk.basic.gps_tracker.entered=<red>You just entered the city </red>%1$s<red> who has the </red><yellow><bold>GPS Tracker</bold></yellow><red> ! Be on your guard.</red> +feature.city.mayor.perk.event.agricultural.start=The Essor Agricole event reform has been launched and all that remains is %1$s +feature.city.mayor.perk.event.agricultural.end=The Essor Agricole event reform is complete! +feature.city.mayor.perk.event.mineral.start=The Ruée Minière event reform has been launched and all that remains is %1$s +feature.city.mayor.perk.event.mineral.end=The Mining Rush event reform is complete! +feature.city.mayor.perk.event.impot.zombie.name=Servant of %1$s +feature.city.mayor.perk.event.impot.victim.lucky=<dark_gray><italic>*grr you're lucky!*</italic></dark_gray> +feature.city.mayor.perk.event.impot.victim.lost=You lost %1$s because of the mayor %2$s +feature.city.mayor.perk.event.impot.mayor.collected=You have just taken %1$s has %2$s +feature.city.mayor.perk.event.impot.zombies.done=<dark_gray><italic>*the zombies got everything they wanted*</italic></dark_gray> +feature.city.mayor.perk.event.military.golem.name=Defendant of %1$s + +feature.city.mayor.admin.changeelection.usage=/adminmayor changeelection cityUUID electionType<owner_choose/election> +feature.city.mayor.admin.changeelection.success=You just put: %1$s in the city %2$s + +# ** CITY LEVELS ** +feature.city.levels.menu.title=Cities Menu - Levels +feature.city.levels.menu.requirements.header=<dark_aqua><bold>Required :</bold></dark_aqua> +feature.city.levels.menu.rewards.header=<gold><bold>Rewards:</bold></gold> +feature.city.levels.menu.rewards.item=<gold>Awards</gold> +feature.city.levels.menu.status.unlocked=<green><bold>UNBLOCKED</bold></green> +feature.city.levels.menu.unlock.remaining=<white>He's staying</white> %1$s <white>unlocking</white> +feature.city.levels.menu.unlock.duration=%1$s <white>unlocking</white> +feature.city.levels.menu.click.start_upgrade=<yellow><bold>CLICK HERE TO START IMPROVEMENT</bold></yellow> +feature.city.levels.menu.click.contribute=<yellow><bold>CLICK HERE TO CONTRIBUTE</bold></yellow> +feature.city.levels.menu.deposit.click_one=<yellow><bold>CLICK TO DEPOSIT A</bold></yellow> +feature.city.levels.menu.deposit.click_all=<yellow><bold>SHIFT-CLICK TO DROP ALL</bold></yellow> + +feature.city.levels.rewards.none=<gray>None</gray> +feature.city.levels.rewards.unlock=<gray>Unblocked</gray> %1$s +feature.city.levels.rewards.list.separator=<gray>,</gray> +feature.city.levels.rewards.list.last_separator=<gray>And</gray> +feature.city.levels.rewards.feature.chest=<green>/city chest</green> +feature.city.levels.rewards.feature.city_bank=<gold>/city bank</gold> +feature.city.levels.rewards.feature.player_bank=<aqua>/bank</aqua> +feature.city.levels.rewards.feature.notation=<dark_aqua>/city notation</dark_aqua> +feature.city.levels.rewards.feature.rank=<gold>/city ranks</gold> +feature.city.levels.rewards.feature.mayor=<gold>/city mayor</gold> +feature.city.levels.rewards.feature.perk_agricultural=<dark_aqua>agricultural reforms</dark_aqua> +feature.city.levels.rewards.feature.perk_economy=<dark_aqua>economic reforms</dark_aqua> +feature.city.levels.rewards.feature.type_war=<red>the type of war city</red> +feature.city.levels.rewards.feature.war=<red>/war</red> +feature.city.levels.rewards.feature.perk_dream=<dark_aqua>dreamlike reforms</dark_aqua> +feature.city.levels.rewards.feature.perk_military=<dark_aqua>military reforms</dark_aqua> +feature.city.levels.rewards.feature.perk_strategy=<dark_aqua>strategy reforms</dark_aqua> +feature.city.levels.rewards.mascot_level_max=<red>Level</red> %1$s maximum for the mascot +feature.city.levels.rewards.member_limit=%1$s maximum members +feature.city.levels.rewards.rank_limit=%1$s maximum grades +feature.city.levels.rewards.chest_page_limit=%1$s maximum vault pages +feature.city.levels.rewards.player_bank_limit=Limit to %1$s money in the %2$s +feature.city.levels.rewards.player_bank_label=personal bank +feature.city.levels.rewards.interest=+ %1$s%% interest +feature.city.levels.rewards.mascot_skin.single=the mascot %1$s +feature.city.levels.rewards.mascot_skin.multiple=the mascots %1$s + +feature.city.levels.requirements.deposit=Deposit %1$s %2$s +feature.city.levels.requirements.deposit.progress=Deposit %1$s %2$s (%3$s/%1$s) +feature.city.levels.requirements.deposit.description=<yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.city.levels.requirements.deposit.success=You filed %1$s %2$s +feature.city.levels.requirements.command=Execute %1$s times %2$s +feature.city.levels.requirements.command.progress=Execute %1$s times %2$s (%3$s/%1$s) + +feature.city.levels.upgrade.broadcast=The city %1$s has moved to the Level %2$s ! Maximum GG! +feature.city.levels.admin.skip_upgrade.success=Skip Level Upgrade +feature.city.levels.admin.set_level.success=Level %1$s applied to the city +feature.city.levels.level_1.name=Level 1 +feature.city.levels.level_1.description=Urban era +feature.city.levels.level_2.name=Level 2 +feature.city.levels.level_2.description=The foundations +feature.city.levels.level_3.name=Level 3 +feature.city.levels.level_3.description=Undeveloped city +feature.city.levels.level_4.name=Level 4 +feature.city.levels.level_4.description=Democracy +feature.city.levels.level_5.name=Level 5 +feature.city.levels.level_5.description=Economic development +feature.city.levels.level_6.name=Level 6 +feature.city.levels.level_6.description=Capital +feature.city.levels.level_7.name=Level 7 +feature.city.levels.level_7.description=Kingdom? +feature.city.levels.level_8.name=Level 8 +feature.city.levels.level_8.description=Empire? +feature.city.levels.level_9.name=Level 9 +feature.city.levels.level_9.description=Military power +feature.city.levels.level_10.name=Level 10 +feature.city.levels.level_10.description=Metropolis + +feature.city.levels.rewards.free_claims=%1$s <gold>claims</gold> <gray>free</gray> + +feature.city.levels.requirements.claims=To have %1$s claims +feature.city.levels.requirements.claims.progress=To have %1$s claims (%2$s/%1$s) +feature.city.levels.requirements.setwarp=Ask a /city setwarp +feature.city.levels.requirements.bank=To have %1$s in the bank +feature.city.levels.requirements.bank.progress=To have %1$s in the bank (%2$s/%1$s) +feature.city.levels.requirements.members=To have %1$s members +feature.city.levels.requirements.members.progress=To have %1$s members (%2$s/%1$s) +feature.city.levels.requirements.mascot_level=Have the mascot level %1$s +feature.city.levels.requirements.notation.receive=Receive a rating +feature.city.levels.requirements.ranks=To have %1$s grades (/city rank) +feature.city.levels.requirements.ranks.progress=To have %1$s grades (%2$s/%1$s) +feature.city.levels.requirements.craft_urne=Craft an urn +feature.city.levels.requirements.place_urne=Place the urn +feature.city.levels.requirements.notation.points=Minimum credit %1$s points on one of the ratings +feature.city.levels.requirements.war.count=Have done %1$s wars +feature.city.levels.requirements.war.count.progress=Have done %1$s wars (%2$s/%1$s) +feature.city.levels.requirements.war.win=Win a war +feature.city.levels.requirements.war.win.count=Earn %1$s wars +feature.city.levels.requirements.war.win.count.progress=Earn %1$s wars (%2$s/%1$s) +feature.city.levels.requirements.notation.top10=Be in the top 10 of the ratings on one of the ratings diff --git a/src/main/resources/translations/en_GB/commands.properties b/src/main/resources/translations/en_GB/commands.properties index 9c99899e7..cfb9370ba 100644 --- a/src/main/resources/translations/en_GB/commands.properties +++ b/src/main/resources/translations/en_GB/commands.properties @@ -1,2 +1,68 @@ -command.fun.playtime.success=You have <light_purple>%s</light_purple> of playtime. +command.fun.playtime.success=You have %1$s of playing time. +command.fun.diceroll.success=The result is: %1$s +command.admin.freeze.title=<dark_red>You are frozen</dark_red> +command.admin.freeze.subtitle=<dark_purple>If you log out you will be banned</dark_purple> +command.admin.freeze.player_freezed=<dark_red>You have been freezing</dark_red> +command.admin.freeze.player_not_found=<dark_red>Player not found</dark_red> +command.admin.freeze.player_unfreeze=<dark_green>You have unfreeze %1$s</dark_green> +command.admin.freeze.target_unfreeze=<dark_green>You've been unfreeze</dark_green> +command.admin.freeze.player_freeze=<dark_green>You have frozen %1$s</dark_green> +command.admin.freeze.target_freeze=<dark_green>You have been freezing</dark_green> +command.admin.freeze.quit_reason.kicked=<dark_green>The player was kicked</dark_green> +command.admin.freeze.quit_reason.timeout=<dark_green>The player was timed out</dark_green> +command.admin.freeze.quit_reason.error=<dark_green>The player had a connection error</dark_green> +command.admin.freeze.quit_reason.default=<dark_green>The player has been disconnected</dark_green> + +command.debug.chronometer.cant_90s_chronometer=<red>Do not exceed more than 90s for debugging</red> + +command.debug.cooldown.success=<green>Success, cooldown is activated</green> +command.debug.cooldown.error=<red>Error, you can redo the order</red> + +command.registry.custom_ambient.apply.null=<red>Error, the id entered is null</red> +command.registry.custom_ambient.apply.success=<green>The atmosphere</green> %1$s <green>has been correctly applied to</green> %2$s <green>!</green> +command.registry.custom_ambient.reset.player_havnt_ambient=<red>Error, the player has no atmosphere applied</red> +command.registry.custom_ambient.reset.success=<green>The ambiance was correctly removed on</green> %1$s <green>!</green> + +command.registry.custom_mobs.summon.not_found=<red>This mob does not exist</red> + +command.registry.custom_items_debug.test=Test %1$s: %2$s +command.registry.custom_items_debug.test.passed=<green>pass</green> +command.registry.custom_items_debug.test.failed=<red>failed</red> +command.registry.custom_items_debug.hand.empty=<red>You don't hold anything in your hand.</red> +command.registry.custom_items_debug.hand.not_custom=<red>The item in hand is not a custom item.</red> +command.registry.custom_items_debug.list.title=<yellow>List of custom items:</yellow> +command.registry.custom_items_debug.list.item=<yellow>- </yellow>%1$s +command.registry.custom_items_debug.get.not_found=<red>This item does not exist.</red> + +command.utils.cooldowns.no_cooldown=<red>You have no active cooldown.</red> +command.utils.cooldowns.list_cooldowns=List of active cooldowns: +command.utils.cooldowns.list=- %1$s : %2$s + +command.utils.restart.cannot_open_city_chest=The vault is inaccessible during a scheduled reboot +command.utils.restart.redem=🔄 Server restart 🔄 \ + <br> +command.utils.restart.server_restarting=The server is restarting. \ + <br> +command.utils.restart.thanks=Thank you for your patience! +command.utils.restart.restarting_in=Restarting the server in %1$s second%2$s +command.utils.restart.restart=Reboot +command.utils.restart.in=%1$s second%2$s + +command.utils.rtp.must_wait=You have to wait before you can rtp (%3$s) +command.utils.rtp.fail=RTP failed. Try again later... +command.utils.rtp.try=RTP: Attempt %1$s/%2$s <red>Failure</red>... +command.utils.rtp.success=You have been teleported to <gold>X:</gold> %1$s, <gold>Y:</gold> %2$s, <gold>Z:</gold> %3$s + +command.utils.setspawn.success=You changed the spawn point to <gold>X:</gold> %1$s, <gold>Y:</gold> %2$s, <gold>Z:</gold> %3$s + +command.utils.spawn.got_sent=<light_green>You have been sent to spawn</light_green> +command.utils.spawn.have_sent=<light_green>You sent %1$s at spawn</light_green> +command.utils.spawn.have_sent_by=<light_green>You were sent to spawn by %1$s</light_green> + +command.utils.socials.hover_access=Click to access +command.utils.socials.discord=<blue>Discord</blue> <dark_gray>:</dark_gray> +command.utils.socials.site=<light_purple>Site</light_purple> <dark_gray>:</dark_gray> +command.utils.socials.wiki=<dark_purple>Wiki</dark_purple> <dark_gray>:</dark_gray> +command.utils.socials.github=<black>Github</black> <dark_gray>:</dark_gray> +command.utils.socials.blog=<black>Blog</black> <dark_gray>:</dark_gray> diff --git a/src/main/resources/translations/en_GB/contest.properties b/src/main/resources/translations/en_GB/contest.properties new file mode 100644 index 000000000..1df9454b0 --- /dev/null +++ b/src/main/resources/translations/en_GB/contest.properties @@ -0,0 +1,247 @@ +feature.events.contest.vote.menu.title=Contests Menu - Voting +feature.events.contest.vote.lore.vote_team=<gray>Vote for the team </gray>%1$s +feature.events.contest.vote.lore.win=<gray>Win it by depositing the most points</gray> +feature.events.contest.vote.lore.warning_choice=<red><bold>ATTENTION ! The choice is final!</bold></red> +feature.events.contest.vote.lore.voted_for=<gray>You voted for the team </gray>%1$s +feature.events.contest.vote.lore.win_exclaim=<gray>Win it by depositing the most points!</gray> +feature.events.contest.vote.lore.lose_team=<gray>Make the team lose </gray>%1$s +feature.events.contest.vote.lore.lose_detail=<gray>By bringing in as many points as you can!</gray> +feature.events.contest.vote.info.lore=<gray>Learn more about contests!</gray>\ +<br><gray>The process, the results, ...</gray>\ +<br><yellow><bold>CLICK HERE TO SEE MORE!</bold></yellow> +feature.events.contest.vote.confirm.join.lore=<gray>You will join </gray>%1$s\ +<br><red><bold>ATTENTION ! You will not be able to change your choice!</bold></red> +feature.events.contest.vote.confirm.cancel.lore=<gray>You will cancel your choice: </gray>%1$s\ +<br><red><bold>ATTENTION ! You will not be able to change your choice!</bold></red> +feature.events.contest.vote.joined=<gray>You have successfully joined: </gray>%1$s +feature.events.contest.vote.info.name=<green>More info!</green> +feature.events.contest.team.label=<gray>Team</gray> %1$s +feature.events.contest.trade.menu.title=Contests Menu - Exchanges +feature.events.contest.trade.main.name=<gray>The exchanges</gray> +feature.events.contest.trade.main.lore=<gray>Sell as many resources as possible</gray>\ +<br><gray>Against </gray><aqua>contest shells</aqua>\ +<br><gray>To win the </gray>%1$s +feature.events.contest.trade.info.lore=<gray>Learn more about contests!</gray>\ +<br><gray>The process, the results, ...</gray>\ +<br><yellow><bold>CLICK HERE TO SEE MORE!</bold></yellow> +feature.events.contest.trade.offer.lore=<gray>Sell </gray><yellow>%1$s</yellow><gray> For </gray><aqua>%2$s</aqua><gray> shell(s)</gray>\ +<br><yellow><bold>LEFT CLICK TO SELL ONCE</bold></yellow>\ +<br><yellow><bold>SHIFT-LEFT-CLICK TO SELL ALL THIS RESOURCE</bold></yellow> +feature.events.contest.trade.unavailable=<red>Functionality blocked. Contact the administration.</red> +feature.events.contest.trade.success=<gray>You exchanged </gray>%1$s %2$s<gray> against </gray>%3$s<gray> contest shell(s)</gray> +feature.events.contest.trade.not_enough=<red>You don't have enough of this resource to exchange it!</red> +feature.events.contest.phase.vote.name=The votes +feature.events.contest.phase.vote.lore=<gray>Every Friday, the contest begins</gray>\ +<br><gray>And the votes open, and you have to choose</gray>\ +<br><gray>Between 2 camps, an atmosphere is created in the spawn...</gray> +feature.events.contest.phase.trade.name=The confrontation +feature.events.contest.phase.trade.lore=<gray>Night falls on the spawn for 2 days</gray>\ +<br><gray>Let the party begin!</gray>\ +<br><gray>Trades are available</gray>\ +<br><gray>Giving away contest shells!</gray> +feature.events.contest.phase.end.name=The results +feature.events.contest.phase.end.lore=<gray>Sunrise over the spawn!</gray>\ +<br><gray>The results fall, and a camp</gray>\ +<br><gray>will be a winner. And rewards will be awarded</gray>\ +<br><gray>to everyone.</gray> +feature.events.contest.command.no_event=<red>There is no Contest! Come back in </red>%1$s<red> days).</red> +feature.events.contest.command.ended_phase=<red>The Contest is in its finished phase, please contact the staff.</red> +feature.events.contest.command.setcontest.not_active=<red>You cannot define a contest when it is not active</red> +feature.events.contest.command.setcontest.started=<red>You cannot define a contest when it has started</red> +feature.events.contest.command.setcontest.saved=<green>The Contest: </green>%1$s<green> VS </green>%2$s<green> has been successfully saved</green>\ +<gray>Please wait for the cached data to refresh.</gray> +feature.events.contest.command.setcontest.invalid_color=<red>/contest setcontest <camp1> <color1> <camp2> <color2> and color must be valid</red> +feature.events.contest.command.addpoints.not_started=<red>You cannot give points when the contest has not started</red> +feature.events.contest.command.addpoints.not_registered=<red>You cannot give points to this player because he did not register</red> +feature.events.contest.command.addpoints.invalid=<red>You cannot give negative points or equal to 0</red> +feature.events.contest.command.addpoints.success=<green>You added </green>%1$s<green> point(s) to </green>%2$s +feature.events.contest.more_info.title=Contests Menu - More info +feature.events.contest.more_info.vote.name=<dark_blue>Votes - Friday</dark_blue> +feature.events.contest.more_info.trade.name=<red>The clash - Saturday-Sunday</red> +feature.events.contest.more_info.end.name=<yellow>Results - Monday</yellow> +feature.events.contest.broadcast.phase1=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gold><bold>CONTEST!</bold></gold><gray> Votes are open!</gray>\ + <br><dark_gray><italic>*we meet at the spawn to be able to vote or /contest...*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.events.contest.broadcast.phase2=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \<br><gold><bold>CONTEST!</bold></gold><gray> The contributions have started!</gray>\ + <br><gray>Exchange resources for Contest Shells. Collect as many as possible and place them</gray>\ + <br><dark_gray><italic>via the contest terminal or /contest</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.events.contest.broadcast.phase3=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \<br><gold><bold>CONTEST!</bold></gold><gray> Time over!</gray>\ + <br><gray>End of the contest, find your rewards and the results of this Contest</gray>\ + <br><gray>in book form</gray>\ + <br><dark_gray><italic>*/contest pour see when the next contest is coming*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.events.contest.contribution.title=Contests Menu - Contributions +feature.events.contest.contribution.lore.contribute=<gray>Give your </gray><aqua>contest shells</aqua>\ +<br><gray>To win your </gray>%1$s\ +<br><yellow><bold>Click to pour all your shellfish</bold></yellow> +feature.events.contest.contribution.lore.trade=<gray>Trade for </gray><aqua>contest shells</aqua>\ +<br><gray>Useful to win your </gray>%1$s\ +<br><yellow><bold>Click to access the exchanges menu</bold></yellow> +feature.events.contest.contribution.lore.rank=%1$s\ +<br><gray>Progress </gray><dark_gray>:</dark_gray> %2$s<dark_gray>/</dark_gray>%3$s\ +<br><yellow><bold>INCREASE TITLE TO GET BETTER REWARDS</bold></yellow> +feature.events.contest.contribution.title.name=<gold><bold>Your title</bold></gold> +feature.events.contest.contribution.button.name=<gray>Contribute for the</gray> %1$s +feature.events.contest.contribution.unavailable=<red>Functionality blocked. Please contact the administration</red> +feature.events.contest.contribution.success=<gray>You filed </gray>%1$s<gray> contest shell(s) for your team!</gray> +feature.events.contest.contribution.no_shells=<red>You don't have a contest shell</red> +feature.events.contest.book.title=The results of the contest +feature.events.contest.book.author=The contests +feature.events.contest.book.lore=%1$s <dark_gray>VS</dark_gray> %2$s\ +<br><yellow><bold>Open this book to learn more!</bold></yellow> +feature.events.contest.book.page.global=<dark_gray><bold>Overall statistics</bold></dark_gray>\ +<br>Winner: %1$s\ +<br>Voting rate: %2$s\ +<br>Point rate: %3$s\ +<br>\ +<br>Loser: %4$s\ +<br>Voting rate: %5$s\ +<br>Point rate: %6$s\ +<br>Inferiority multiplier: <aqua>x</aqua>%7$s\ +<br><dark_gray><italic>Next page: ranking of the 10 best contributors</italic></dark_gray> +feature.events.contest.book.page.ranking.title=<dark_gray><bold>The ranking of the contest (up to 10th)</bold></dark_gray> +feature.events.contest.mail.received=<dark_green>You have received the contest letter</dark_green> +feature.events.contest.mail.click=<yellow>Click here</yellow> +feature.events.contest.mail.hover=Open mailbox +feature.events.contest.mail.open_mailbox=<gold> to open the mailbox</gold> +feature.events.contest.book.page.personal=<dark_gray><bold>Personal statistics</bold></dark_gray>\ +<br>Your side: %1$s\ +<br>Your title on the contest: %2$s\ +<br>Your rank in the contest: #%3$s\ +<br>Points submitted: %4$s +feature.events.contest.book.page.rewards.title=<dark_gray><bold>Awards</bold></dark_gray> +feature.events.contest.book.page.rewards.money.prefix=\ +<dark_gray>+ </dark_gray> +feature.events.contest.book.page.rewards.money.suffix=<gold>$ </gold> +feature.events.contest.book.page.rewards.aywenite.prefix=\ +<blue>+ </blue> +feature.events.contest.book.page.rewards.aywenite.suffix=<light_purple> of Aywenite</light_purple> +feature.events.contest.book.page.rewards.boost.prefix=\ +<gray>Boost </gray> +feature.events.contest.camp.mayonnaise=Mayonnaise +feature.events.contest.camp.ketchup=Ketchup +feature.events.contest.camp.heroes=Heroes +feature.events.contest.camp.villain=Villain +feature.events.contest.camp.chaos=Chaos +feature.events.contest.camp.order=Order +feature.events.contest.camp.pasta=Pasta +feature.events.contest.camp.rice=Rice +feature.events.contest.camp.samsung=Samsung +feature.events.contest.camp.apple=Apple +feature.events.contest.camp.mountain=Mountain +feature.events.contest.camp.sea=Sea +feature.events.contest.camp.dog=Dog +feature.events.contest.camp.cat=Cat +feature.events.contest.camp.past=Past +feature.events.contest.camp.future=Future +feature.events.contest.camp.pain_au_chocolat=Pain au chocolat +feature.events.contest.camp.chocolatine=Chocolatine +feature.events.contest.camp.day=Day +feature.events.contest.camp.night=Night +feature.events.contest.camp.pizza=Pizza +feature.events.contest.camp.burger=Burger +feature.events.contest.camp.summer=Summer +feature.events.contest.camp.winter=Winter +feature.events.contest.camp.sweet=Sweet +feature.events.contest.camp.salty=Salty +feature.events.contest.camp.rain=Rain +feature.events.contest.camp.sun=Sun +feature.events.contest.camp.city=City +feature.events.contest.camp.countryside=Countryside +feature.events.contest.camp.football=Football +feature.events.contest.camp.basketball=Basketball +feature.events.contest.camp.tea=Tea +feature.events.contest.camp.coffee=Coffee +feature.events.contest.camp.dark_chocolate=Dark Chocolate +feature.events.contest.camp.milk_chocolate=Milk Chocolate +feature.events.contest.camp.dc=DC +feature.events.contest.camp.marvel=Marvel +feature.events.contest.camp.wolf=Wolf +feature.events.contest.camp.fox=Fox +feature.events.contest.camp.morning=Morning +feature.events.contest.camp.evening=Evening +feature.events.contest.camp.netflix=Netflix +feature.events.contest.camp.disney_plus=Disney+ +feature.events.contest.camp.camping=Camping +feature.events.contest.camp.hotel=Hotel +feature.events.contest.camp.plane=Plane +feature.events.contest.camp.train=Train +feature.events.contest.camp.playstation=PlayStation +feature.events.contest.camp.xbox=Xbox +feature.events.contest.camp.spring=Spring +feature.events.contest.camp.manga=Manga +feature.events.contest.camp.anime=Anime +feature.events.contest.camp.beach=Beach +feature.events.contest.camp.forest=Forest +feature.events.contest.camp.cinema=Cinema +feature.events.contest.camp.theater=Theatre +feature.events.contest.camp.car=Car +feature.events.contest.camp.motorcycle=Motorcycle + +feature.events.contest.camp.mayonnaise.to_small=true +feature.events.contest.camp.ketchup.to_small=true +feature.events.contest.camp.heroes.to_small=true +feature.events.contest.camp.villain.to_small=true +feature.events.contest.camp.chaos.to_small=true +feature.events.contest.camp.order.to_small=true +feature.events.contest.camp.pasta.to_small=true +feature.events.contest.camp.rice.to_small=true +feature.events.contest.camp.samsung.to_small=true +feature.events.contest.camp.apple.to_small=true +feature.events.contest.camp.mountain.to_small=true +feature.events.contest.camp.sea.to_small=true +feature.events.contest.camp.dog.to_small=true +feature.events.contest.camp.cat.to_small=true +feature.events.contest.camp.past.to_small=true +feature.events.contest.camp.future.to_small=true +feature.events.contest.camp.pain_au_chocolat.to_small=true +feature.events.contest.camp.chocolatine.to_small=true +feature.events.contest.camp.day.to_small=true +feature.events.contest.camp.night.to_small=true +feature.events.contest.camp.pizza.to_small=true +feature.events.contest.camp.burger.to_small=true +feature.events.contest.camp.summer.to_small=true +feature.events.contest.camp.winter.to_small=true +feature.events.contest.camp.sweet.to_small=true +feature.events.contest.camp.salty.to_small=true +feature.events.contest.camp.rain.to_small=true +feature.events.contest.camp.sun.to_small=true +feature.events.contest.camp.city.to_small=true +feature.events.contest.camp.countryside.to_small=true +feature.events.contest.camp.football.to_small=true +feature.events.contest.camp.basketball.to_small=true +feature.events.contest.camp.tea.to_small=true +feature.events.contest.camp.coffee.to_small=true +feature.events.contest.camp.dark_chocolate.to_small=true +feature.events.contest.camp.milk_chocolate.to_small=true +feature.events.contest.camp.dc.to_small=true +feature.events.contest.camp.marvel.to_small=true +feature.events.contest.camp.wolf.to_small=true +feature.events.contest.camp.fox.to_small=true +feature.events.contest.camp.morning.to_small=true +feature.events.contest.camp.evening.to_small=true +feature.events.contest.camp.netflix.to_small=true +feature.events.contest.camp.disney_plus.to_small=true +feature.events.contest.camp.camping.to_small=true +feature.events.contest.camp.hotel.to_small=true +feature.events.contest.camp.plane.to_small=true +feature.events.contest.camp.train.to_small=true +feature.events.contest.camp.playstation.to_small=true +feature.events.contest.camp.xbox.to_small=true +feature.events.contest.camp.spring.to_small=true +feature.events.contest.camp.manga.to_small=true +feature.events.contest.camp.anime.to_small=true +feature.events.contest.camp.beach.to_small=true +feature.events.contest.camp.forest.to_small=true +feature.events.contest.camp.cinema.to_small=true +feature.events.contest.camp.theater.to_small=true +feature.events.contest.camp.car.to_small=true +feature.events.contest.camp.motorcycle.to_small=true \ No newline at end of file diff --git a/src/main/resources/translations/en_GB/core.properties b/src/main/resources/translations/en_GB/core.properties new file mode 100644 index 000000000..f89d392d1 --- /dev/null +++ b/src/main/resources/translations/en_GB/core.properties @@ -0,0 +1,42 @@ +core.player.death.message=<red>You just died with</red> %1$s, <red>you lost</red> %2$s\n<dark_gray>*consider putting your money in the bank*</dark_gray> + +core.player.join.welcome=<gray>Welcome to OpenMC!</gray> +core.player.join.friend_online=<green>Your friend</green> %1$s <green>logged in</green> +core.player.join.quest_reward=<green>You have</green> %1$s <green>Pending quest reward(s).</green> +core.player.join.quest_reward_click=<gold>Click here to collect them.</gold> + +core.player.quit.friend_offline=<red>Your friend</red> %1$s <red>disconnected</red> + +core.player.tpa.expired_target=<dark_aqua>The request for teleportation</dark_aqua> %1$s <dark_aqua>was canceled because he disconnected</dark_aqua> +core.player.tpa.expired_requester=<dark_red>Your teleport request to</dark_red> %1$s <dark_red>was canceled because he disconnected</dark_red> + +core.color.name.black=<black>Black</black> +core.color.name.dark_blue=<dark_blue>Dark blue</dark_blue> +core.color.name.dark_green=<dark_green>Dark green</dark_green> +core.color.name.dark_aqua=<dark_aqua>Dark Aqua</dark_aqua> +core.color.name.dark_red=<dark_red>Dark red</dark_red> +core.color.name.dark_purple=<dark_purple>Purple</dark_purple> +core.color.name.gold=<gold>Orange</gold> +core.color.name.gray=<gray>Gray</gray> +core.color.name.dark_gray=<dark_gray>Dark gray</dark_gray> +core.color.name.blue=<blue>Blue</blue> +core.color.name.green=<green>Light green</green> +core.color.name.aqua=<aqua>Light blue</aqua> +core.color.name.red=<red>Red</red> +core.color.name.light_purple=<light_purple>Pink</light_purple> +core.color.name.yellow=<yellow>YELLOW</yellow> +core.color.name.white=<white>White</white> +core.color.name.none=<gray>None</gray> + +core.date.relative.just_now=Right now +core.date.relative.minute=There is %1$s minute +core.date.relative.minutes=There is %1$s minutes +core.date.relative.hour=There is %1$s hour +core.date.relative.hours=There is %1$s hours +core.date.relative.day=There is %1$s day +core.date.relative.days=There is %1$s days +core.date.relative.absolute=THE %1$s has %2$s + + + + diff --git a/src/main/resources/translations/en_GB/credits.properties b/src/main/resources/translations/en_GB/credits.properties new file mode 100644 index 000000000..ffdfe3dab --- /dev/null +++ b/src/main/resources/translations/en_GB/credits.properties @@ -0,0 +1,47 @@ +feature.credits.menu.title=<yellow>Server credits</yellow> +feature.credits.menu.lore.developers=<gray>Developer(s):</gray> %1$s +feature.credits.menu.lore.graphists=<gray>Graphic designer(s):</gray> %1$s +feature.credits.menu.lore.builders=<gray>Builder(s):</gray> %1$s +feature.credits.menu.close=<red>Close menu</red> +feature.credits.feature.adminshop=Adminshop +feature.credits.feature.animations=Entertainment +feature.credits.feature.cube=The Cube +feature.credits.feature.city=Cities +feature.credits.feature.dream=The Dimension of Dreams +feature.credits.feature.dream_milestone=The Milestone of Dreams +feature.credits.feature.mascots=Mascots +feature.credits.feature.mayor=The Mayors +feature.credits.feature.city_milestone=The Cities Milestone +feature.credits.feature.war=Wars +feature.credits.feature.notation=Ratings +feature.credits.feature.rank=The Ranks +feature.credits.feature.contest=The Contests +feature.credits.feature.weekly_events=Weekly Events +feature.credits.feature.holograms=Holograms +feature.credits.feature.economy=Economy +feature.credits.feature.friends=The friend system +feature.credits.feature.homes=The Home System +feature.credits.feature.leaderboard=Rankings +feature.credits.feature.mailbox=The Mailbox +feature.credits.feature.mainmenu=The Main Menu +feature.credits.feature.milestones=The Milestones +feature.credits.feature.privatemessage=Private messages +feature.credits.feature.quest=Quests +feature.credits.feature.settings=Settings +feature.credits.feature.shops=Shops +feature.credits.feature.tickets=V1 Tickets +feature.credits.feature.tpa=The Tpa +feature.credits.feature.rtp=The RTP +feature.credits.feature.versionning=Versioning +feature.credits.feature.omcregistry=WTO Registers +feature.credits.feature.customitems=Custom Items +feature.credits.feature.customlootbox=Custom Lootboxes +feature.credits.feature.chronometer=Stopwatch +feature.credits.feature.cooldown=Cooldown +feature.credits.feature.menu_lib=Menu System +feature.credits.feature.packet_menu_lib=Packet Menu System +feature.credits.feature.errorhandler=The error handling system +feature.credits.feature.unittest=Unit tests +feature.credits.feature.orm=Database system + + diff --git a/src/main/resources/translations/en_GB/cube.properties b/src/main/resources/translations/en_GB/cube.properties new file mode 100644 index 000000000..4877c656e --- /dev/null +++ b/src/main/resources/translations/en_GB/cube.properties @@ -0,0 +1,14 @@ +feature.cube.bossbar.title=The Cube +feature.cube.command.start_shock=Electro-magnetic shock launched +feature.cube.command.start_bubble=Corrupted bubble launched +feature.cube.command.stop_shock=Electro-magnetic shock stopped +feature.cube.command.stop_bubble=Corrupt bubble stopped +feature.cube.command.reproduce=Reproduction of the cube launched! +feature.cube.command.reproduce_force.unavailable=Reproduction is not in progress, use %1$s +feature.cube.command.reproduce_force.success=Forced reproduction of the cube! +feature.cube.command.invalid_format=Invalid format! +feature.cube.command.world_not_found=World not found +feature.cube.command.invalid_coords=Invalid coordinates +feature.cube.command.not_found=No cubes found +feature.cube.command.not_cube=It's not a cube + diff --git a/src/main/resources/translations/en_GB/dailyevents.properties b/src/main/resources/translations/en_GB/dailyevents.properties new file mode 100644 index 000000000..610370f93 --- /dev/null +++ b/src/main/resources/translations/en_GB/dailyevents.properties @@ -0,0 +1,102 @@ +feature.dailyevents.bloodynight.name=<dark_red><bold>Bloody Night</bold></dark_red> +feature.dailyevents.goldenharvest.name=<gold><bold>Golden Harvest</bold></gold> +feature.dailyevents.miraculousfishing.name=<dark_aqua><bold>Miraculous fishing</bold></dark_aqua> + +feature.dailyevents.bloodynight.lore=<gray>The night remains to be <dark_red>bloody</dark_red>...</gray> \ + <br><gray>Protect yourself, fight, you will experience different waves</gray> \ + <br><gray>and you will surely have a <dark_red>big boss</dark_red> to beat with several</gray> +feature.dailyevents.goldenharvest.lore=<gray>It risks being <gold>sporty</gold></gray> \ + <br><gray>Expect farms to be running at full capacity!</gray> \ + <br><gray>Benefit from <gold>several new resources</gold> and many surprises</gray> +feature.dailyevents.miraculousfishing.lore=<gray>Live a <dark_aqua>great fishing session</dark_aqua> !</gray> \ + <br><gray>Be careful <aqua>Sea Monsters</aqua> we will wait for you impatiently</gray> \ + <br><gray>for you to jump on!</gray> \ + <br><gray>But you risk having several good surprises if you are <dark_aqua>lucky</dark_aqua></gray> + +feature.dailyevents.bloodynight.toast.start=<gray>There </gray><dark_red><bold>Bloody Night</bold></dark_red><gray> has started!</gray> +feature.dailyevents.bloodynight.toast.end=<gray>The ordeal of the </gray><dark_red><bold>Bloody Night</bold></dark_red><gray> stopped</gray> + +feature.dailyevents.goldenharvest.toast.start=<gray>There</gray> <gold><bold>Golden Harvest</bold></gold> <gray>is coming to your barns!</gray> +feature.dailyevents.goldenharvest.toast.end=<gray>There</gray> <gold><bold>Golden Harvest</bold></gold> <gray>has stopped!</gray> + +feature.dailyevents.miraculousfishing.toast.start=<gray>There</gray> <dark_aqua><bold>Miraculous fishing</bold></dark_aqua> <gray>is open!</gray> +feature.dailyevents.miraculousfishing.toast.end=<gray>There</gray> <dark_aqua><bold>Miraculous fishing</bold></dark_aqua> <gray>left</gray> + +feature.dailyevents.toast.beginning_event_in_world=<gray>An event will begin in your world in %1$ss!</gray> +feature.dailyevents.toast.beginning_event_out_world=<gray>An event will start in %1$ss!</gray> + +feature.dailyevents.broadcast.soon=<dark_gray><italic>*an event begins to come closer to our world...*</italic></dark_gray> + +feature.dailyevents.miraculousfishing.broadcast.start=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MIRACLE FISHING!</bold></aqua><gray> The big session has begun!</gray>\ + <br><dark_gray><italic>*take out your fishing rod and discover the mysteries of the lakes*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><gray>Effects:</gray>\ + <br><dark_gray>+</dark_gray> %1$s<aqua>%</aqua> <gray>fishing speed</gray>\ + <br><dark_gray>+</dark_gray> <aqua>Special and rare loots</qua>\ + <br><dark_gray>+</dark_gray> <dark_aqua>Sea Monsters</dark_aqua>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.dailyevents.miraculousfishing.broadcast.end=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MIRACLE FISHING!</bold></aqua><gray> The blessing is over! </gray>\ + <br><dark_gray><italic>*rejoice in your captures!*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +feature.dailyevents.bloodynight.broadcast.start=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><dark_red><bold>BLOODY NIGHT!</bold></dark_red><gray> The bloodbath begins!</gray>\ + <br><dark_gray><italic>*take out your weapons and fight the waves of monsters*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.dailyevents.bloodynight.broadcast.end=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><dark_red><bold>BLOODY NIGHT!</bold></dark_red><gray> The calamity has ended! </gray>\ + <br><dark_gray><italic>*return to a calm and peaceful world*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +feature.dailyevents.goldenharvest.broadcast.start=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gold><bold>GOLDEN HARVEST!</bold></gold><gray> Crops are now blessed!</gray>\ + <br><dark_gray><italic>*find crop mutations, and other surprises...*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.dailyevents.goldenharvest.broadcast.end=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gold><bold>GOLDEN HARVEST!</bold></gold><gray> Crop productivity stops! </gray>\ + <br><dark_gray><italic>*store, sell your resources that you could farm with*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +# ** Pêche miraculeuse ** +feature.dailyevents.miraculousfishing.lootbox.fishing_furniture.name=<dark_aqua><bold>Fishing equipment box</bold></dark_aqua> +feature.dailyevents.miraculousfishing.lootbox.rare_fishing_treasure.name=<blue><bold>Rare fishing treasure</bold></blue> +feature.dailyevents.miraculousfishing.lootbox.epic_fishing_treasure.name=<dark_purple><bold>Epic Fishing Treasure</bold></dark_purple> +feature.dailyevents.miraculousfishing.lootbox.legendary_fishing_treasure.name=<gold><bold>Legendary fishing treasure</bold></gold> + +feature.dailyevents.miraculousfishing.loot_table.get=<gray>You fished</gray> %1$s <gray>objects!</gray> +feature.dailyevents.miraculousfishing.loot_table.get.double_hook=<blue><italic>*Double grip applied*</italic></blue> +feature.dailyevents.miraculousfishing.loot_table.basic_fishing=<gray>Basic Fishing Loot</gray> +feature.dailyevents.miraculousfishing.loot_table.miraculous_fishing=<dark_aqua>Miraculous Catch Loots</dark_aqua> +feature.dailyevents.miraculousfishing.loot_table.sea_creature=<dark_aqua>Sea Monsters</dark_aqua> + +feature.dailyevents.miraculousfishing.eat_kebab_fermented.smelt=<green>Ugh, it stinks!</green> +feature.dailyevents.miraculousfishing.eat_kebab_fermented.boat=Your boat has sunk. +feature.dailyevents.miraculousfishing.eat_kebab_fermented.broadcast=[<red><bold><obf>has</obf></bold></red>] <bold>PROUT</bold> !!! %1$s has <bold>farted</bold>. <green><bold>Yuck</bold></green> ! + +feature.dailyevents.miraculousfishing.menu.info.fishing_speed.name=<aqua>Fishing Speed Boost</aqua> +feature.dailyevents.miraculousfishing.menu.info.fishing_speed.lore=<gray>Fishing speed is reduced by</gray> %1$s<aqua>%</aqua> + +feature.dailyevents.miraculousfishing.menu.loot_info.sea_creature=<dark_aqua>Sea Monster Loots</dark_aqua> +feature.dailyevents.miraculousfishing.menu.info.sea_creature.name=<dark_aqua>Sea Monsters</dark_aqua> +feature.dailyevents.miraculousfishing.menu.info.sea_creature.lore=<dark_gray><italic>Sea monsters are rare creatures and </italic></dark_gray>\ + <br><dark_gray><italic>powerful, which can give you quite special loots</italic></dark_gray>\ + <br><yellow><bold>CLICK HERE TO VIEW SPAWNABLE CREATURES</bold></yellow> + +feature.dailyevents.miraculousfishing.menu.info.loot_table.name=<light_purple>Unique and special loots</light_purple> +feature.dailyevents.miraculousfishing.menu.info.loot_table.lore=<dark_gray><italic>Benefit from a miraculous blessing </italic></dark_gray>\ + <br><dark_gray><italic>leaving you with new rewards and loot</italic></dark_gray>\ + <br><yellow><bold>CLICK HERE TO SEE SINABLE ITEMS</bold></yellow> \ No newline at end of file diff --git a/src/main/resources/translations/en_GB/displays.properties b/src/main/resources/translations/en_GB/displays.properties new file mode 100644 index 000000000..db7b54f96 --- /dev/null +++ b/src/main/resources/translations/en_GB/displays.properties @@ -0,0 +1,64 @@ +feature.displays.tablist.header.default=\n\n\n\n\n\n\n%1$s\n\n <yellow>Online players</yellow> <gray>:</gray> %2$s<gray>/</gray>%3$s \n +feature.displays.tablist.header.dream=\n\n\n\n\n\n\n%1$s\n\n +feature.displays.tablist.footer.default=\n<light_purple>play.openmc.fr</light_purple>\n +feature.displays.tablist.footer.dream=\n<dark_blue>play.openmc.fr</dark_blue>\n +feature.displays.scoreboard.title.text=<light_purple>OPEN™</light_purple> +feature.displays.scoreboard.footer.text=play.openmc.fr +feature.displays.scoreboard.footer.text.to_small=true +feature.displays.scoreboard.contest.title=contest +feature.displays.scoreboard.contest.title.to_small=true +feature.displays.scoreboard.contest.vs= VS +feature.displays.scoreboard.contest.vs.to_small=true +feature.displays.scoreboard.contest.ends=END: +feature.displays.scoreboard.contest.ends.to_small=true +feature.displays.scoreboard.rank.label=rank: +feature.displays.scoreboard.rank.label.to_small=true +feature.displays.scoreboard.rank.none=none +feature.displays.scoreboard.rank.none.to_small=true +feature.displays.scoreboard.city.label=city: +feature.displays.scoreboard.city.label.to_small=true +feature.displays.scoreboard.city.none=None +feature.displays.scoreboard.city.none.to_small=true +feature.displays.scoreboard.balance.label=money: +feature.displays.scoreboard.balance.label.to_small=true +feature.displays.scoreboard.location.label=rental: +feature.displays.scoreboard.location.label.to_small=true +feature.displays.scoreboard.location.wilderness=Nature +feature.displays.scoreboard.location.wilderness.to_small=true +feature.displays.scoreboard.location.protected=Protected Region +feature.displays.scoreboard.location.protected.to_small=true +feature.displays.scoreboard.pumpkins.label=pumpkins: +feature.displays.scoreboard.pumpkins.label.to_small=true +feature.displays.scoreboard.citywar.title=ONGOING WAR +feature.displays.scoreboard.citywar.title.to_small=true +feature.displays.scoreboard.citywar.enemy.label=enemy: +feature.displays.scoreboard.citywar.enemy.label.to_small=true +feature.displays.scoreboard.citywar.phase.label=phase: +feature.displays.scoreboard.citywar.phase.label.to_small=true +feature.displays.scoreboard.citywar.distance.label=distance: +feature.displays.scoreboard.citywar.distance.label.to_small=true +feature.displays.scoreboard.citywar.starts_in.label=start in: +feature.displays.scoreboard.citywar.starts_in.label.to_small=true +feature.displays.scoreboard.citywar.mascot.label=mascot: +feature.displays.scoreboard.citywar.mascot.label.to_small=true +feature.displays.scoreboard.citywar.ends_in.label=end in: +feature.displays.scoreboard.citywar.ends_in.label.to_small=true +feature.displays.scoreboard.citywar.state.label=state: +feature.displays.scoreboard.citywar.state.label.to_small=true +feature.displays.scoreboard.citywar.state.ended=finished +feature.displays.scoreboard.citywar.state.ended.to_small=true +feature.displays.scoreboard.citywar.mascot.dead=%1$s DEAD +feature.displays.scoreboard.citywar.mascot.dead.to_small=true +feature.displays.scoreboard.restart.in=Reboot in +feature.displays.scoreboard.restart.in.to_small=true +feature.displays.holograms.command.setpos.success=Hologram position %1$s update. +feature.displays.holograms.command.setpos.error=Error updating hologram position %1$s : %2$s +feature.displays.holograms.command.setpos.invalid=Please specify a valid hologram: %1$s +feature.displays.holograms.command.disable=Holograms successfully disabled. +feature.displays.holograms.command.enable=Holograms activated successfully. +feature.displays.bossbar.help.welcome=<bold><gold>Welcome to <light_purple>OpenMC</light_purple>!</gold></bold> +feature.displays.bossbar.help.leaderboard=<bold><aqua>Tip:</aqua></bold> <white>Use <green>/leaderboard</green> to view the <yellow>leaderboards</yellow>! +feature.displays.bossbar.help.update=<bold><light_purple>Current event:</light_purple></bold> <red>UPDATE V2.5 !</red> +feature.displays.bossbar.help.toggle=<bold><aqua>Tip:</aqua></bold> <white>Use <light_purple>/omcbossbar ou /bb</light_purple> to enable/disable the <yellow>bossbar</yellow>! +feature.displays.bossbar.help.discord=<blue>Join the <bold><aqua>Discord</aqua></bold> to contribute to <green>development</green>! + diff --git a/src/main/resources/translations/en_GB/dream.properties b/src/main/resources/translations/en_GB/dream.properties new file mode 100644 index 000000000..d2db0db45 --- /dev/null +++ b/src/main/resources/translations/en_GB/dream.properties @@ -0,0 +1,395 @@ +# ** DREAM ** + +# * COMMANDS +feature.dream.commands.leave.not_in_dream=<red>You are not in a dream</red> +feature.dream.commands.leave.success=<green>You have successfully left your dream.</green> +feature.dream.commands.item.not_found=<red>This item does not exist</red> +feature.dream.admin.commands.showdialog.invalid_step=<red>The step name is invalid!</red> +feature.dream.admin.commands.showdialog.no_dialogs=<red>This step has no dialogs!</red> + +# * MESSAGES +feature.dream.message.time_lost_damage=<white>You lost </white>%1$s <white>because you took damage!</white> +feature.dream.message.great_dream_bonus=<white>You received <dark_aqua>60%</dark_aqua> extra time!</white> + +feature.dream.scoreboard.time=time: +feature.dream.scoreboard.time.to_small=true +feature.dream.scoreboard.cold=cold: +feature.dream.scoreboard.cold.to_small=true +feature.dream.scoreboard.biome=biome: +feature.dream.scoreboard.biome.to_small=true +feature.dream.scoreboard.location=location: +feature.dream.scoreboard.location.to_small=true + +# * ITEMS +feature.dream.item.ame_orb.name=Soul Orb +feature.dream.item.cloud_orb.name=Cloud Orb +feature.dream.item.glacite_orb.name=Frozen Orb +feature.dream.item.mud_orb.name=Mud Orb +feature.dream.item.unknown_orb.name=Unknown orb + +feature.dream.item.message.cannot_drop=<red>You cannot throw this item away!</red> + +feature.dream.item.rarity.common=<white><bold>COMMON ITEM</bold></white> +feature.dream.item.rarity.rare=<blue><bold>RARE ITEM</bold></blue> +feature.dream.item.rarity.epic=<dark_purple><bold>EPIC ITEM</bold></dark_purple> +feature.dream.item.rarity.legendary=<gold><bold>LEGENDARY ITEM</bold></gold> +feature.dream.item.rarity.onirisme=<aqua><bold>ITEM ONIRISM</bold></aqua> + +feature.dream.item.metal_detector.message.must_be_dream=<red>You have to be in a dream to use the metal detector!</red> +feature.dream.item.metal_detector.message.reset_cooldown=<red>The cooldown was reset because you changed world or you are no longer in a dream.</red> +feature.dream.item.meteo_wand.message.must_be_overworld=<red>You must be in the Overworld to use the Weather Wand!</red> +feature.dream.item.meteo_wand.message.cooldown=<red>You have to wait </red>%1$s <red>before using the weather wand!</red> +feature.dream.item.meteo_wand.message.success=<green>You have successfully changed the weather!</green> + +# * BIOMES +feature.dream.biome.sculk_plains=<dark_aqua>Sculk Plain</dark_aqua> +feature.dream.biome.sculk_plains.to_small=true +feature.dream.biome.soul_forest=<dark_purple>Forest of Souls</dark_purple> +feature.dream.biome.soul_forest.to_small=true +feature.dream.biome.mud_beach=<dark_gray>Mud beach</dark_gray> +feature.dream.biome.mud_beach.to_small=true +feature.dream.biome.cloud_land=<white>Valley of Clouds</white> +feature.dream.biome.cloud_land.to_small=true +feature.dream.biome.glacite_grotto=<aqua>Frozen cave</aqua> +feature.dream.biome.glacite_grotto.to_small=true +feature.dream.biome.message.not_unlocked=<yellow>Warning, you are in a biome you have not unlocked yet, you need </yellow>%1$s +feature.dream.biome.progression.soul_forest=the Forest of Souls +feature.dream.biome.progression.cloud_land=Cloud Castle +feature.dream.biome.progression.mud_beach=Mud Beach +feature.dream.biome.progression.glacite_grotto=the Glacite Cave +feature.dream.biome.progression.unknown=Unknown +feature.dream.biome.message.unlocked=<green>You have unlocked </green>%1$s <green>!</green> + +# * STRUCTURES +feature.dream.structure.base_camp=<aqua>Cave Camp</aqua> +feature.dream.structure.cube_temple=<dark_purple>Temple of the Cube</dark_purple> +feature.dream.structure.cloud_castle=<gray>Cloud Castle</gray> +feature.dream.structure.message.exit=<gray>You come out of: </gray>%1$s +feature.dream.structure.message.enter=<gray>You enter: </gray>%1$s + +# * MOBS +feature.dream.mob.breezy=Breezy +feature.dream.mob.corrupted_tadpole=Corrupted tadpole +feature.dream.mob.crazy_frog=Crazy Frog +feature.dream.mob.dream_creaking=Dream Creaking +feature.dream.mob.dream_phantom=Phantom Awakened +feature.dream.mob.dream_spider=Dream Spider +feature.dream.mob.dream_stray=Dream Stray +feature.dream.mob.soul=Soul +feature.dream.mob.soul.display=<dark_purple><bold>Soul</bold></dark_purple> +feature.dream.mob.soul.skull=<gold><bold>Soul</bold></gold> + +# * ENCHANTMENTS +feature.dream.enchantment.dream_sleeper.name=Sleepy +feature.dream.enchantment.experientastic.name=Experientastic +feature.dream.enchantment.soulbound.name=Soulbound +feature.dream.enchantment.soulbound.message.effect=<green>Your Soulbound enchantment has taken effect! Next use in </green>%1$s + +# * MECHANISMS +feature.dream.altar.message.must_hold_item=<red>You must hold an item in your hand!</red> +feature.dream.altar.message.unusable_item=<red>This item cannot be used on the altar!</red> +feature.dream.altar.message.no_recipe=<red>No recipe was found for this item!</red> +feature.dream.altar.message.bound=<green>The item has been linked to the altar.</green> +feature.dream.altar.message.already_bound=<red>This item is already linked to the altar!</red> +feature.dream.altar.message.must_hold_bound_item=<red>You must hold the linked item in your hand!</red> +feature.dream.altar.message.soul_not_found=<red>No souls bound to this altar have been found!</red> +feature.dream.altar.message.not_enough_souls=<red>You need </red>%1$s <red>souls to perform this ritual!</red> +feature.dream.altar.message.ritual_complete=<green>The ritual is complete!</green> + +feature.dream.cold.message.level_1=<aqua>You start to feel the cold...</aqua> +feature.dream.cold.message.level_2=<aqua>The cold is becoming difficult to bear...</aqua> +feature.dream.cold.message.level_3=<red>You are frozen!</red> +feature.dream.cold.message.level_4=<dark_red>The cold is killing you!</dark_red> + +feature.dream.rng.prefix.crazy_rare=<dark_purple><bold>INCREDIBLY RARE!</bold></dark_purple> +feature.dream.rng.prefix.wow=<gold><bold>WOW!</bold></gold> +feature.dream.rng.prefix.pretty_nice=<aqua><bold>PRETTY NICE!</bold></aqua> +feature.dream.rng.prefix.nice=<green><bold>NICE !</bold></green> +feature.dream.rng.prefix.good=<gray><bold>GOOD !</bold></gray> +feature.dream.rng.message.chance=<gray>(</gray>%1$s<gray>)</gray> +feature.dream.rng.message.loot=%1$s %2$s <gray>got </gray>%3$s %4$s + +feature.dream.actionbar.distance=<gray>Distance : </gray>%1$s +feature.dream.actionbar.cube_distance=<gray>Cube Distance: </gray>%1$s + +feature.dream.orb.message.obtained=%1$s <gray>got </gray>%2$s + +# * TRADER +feature.dream.trader.npc.name=<aqua>Frozen Wanderer</aqua> +feature.dream.trader.menu.name=Wanderer's Trades +feature.dream.trader.time.one_minute=1 minute of time +feature.dream.trader.menu.time.name=<green>1 min Time</green> +feature.dream.trader.menu.time.lore=<gray>Buy time so you can stay longer!</gray>\ + <br><gray>Cost :</gray>\ + <br>%1$s <dark_purple>Ewenite</dark_purple> +feature.dream.trader.menu.trade.lore.cost=<gray>Cost :</gray> +feature.dream.trader.menu.trade.lore.glacite= %1$s <aqua>Glacite</aqua> +feature.dream.trader.menu.trade.lore.ewenite= %1$s <dark_purple>Ewenite</dark_purple> +feature.dream.trader.menu.trade.lore.click=<yellow><bold>LEFT CLICK TO BUY</bold></yellow> +feature.dream.trader.message.not_enough_resources=<red>You don't have enough resources to make this purchase!</red> +feature.dream.trader.message.time_trade_success=<green>You exchanged </green>%1$s<dark_purple> of Ewenite</dark_purple> <green>against </green>%2$s +feature.dream.trader.message.cost.glacite=%1$s of Glacite +feature.dream.trader.message.cost.ewenite=%1$s of Ewenite +feature.dream.trader.message.cost.separator=And +feature.dream.trader.message.trade_success=<green>You exchanged </green>%1$s<green> against </green>%2$s +feature.dream.trader.trade.glacite_orb=<aqua>Glacite Orb</aqua> +feature.dream.trader.trade.soulbound_book=<gold>Soulbound II Book</gold> +feature.dream.trader.trade.somnifere=<green>Sleeping pill</green> +feature.dream.trader.trade.eternal_campfire=<gold>Eternal Campfire</gold> +feature.dream.trader.trade.ewenite=<dark_purple>Ewenite</dark_purple> + +# * SINGULARITY +feature.dream.singularity.menu.name=Singularity +feature.dream.singularity.message.crafted=%1$s <gray>made the </gray>%2$s + +# * MILESTONES +feature.dream.milestone.name=Dream +feature.dream.milestone.description=<gray>Explore the dimension of dreams,</gray>\ + <br><gray>collect the orbs and break through</gray>\ + <br><gray>the mystery of this world.</gray>\ + <br><gray>Good night.</gray> + +feature.dream.milestone.quest.altar.name=Start of the ritual +feature.dream.milestone.quest.cloud_castle.name=Laputa +feature.dream.milestone.quest.cloud_valley.name=Rise to seventh heaven +feature.dream.milestone.quest.craft_domination_orb.name=Dominating is cool +feature.dream.milestone.quest.craft_eternal_fire.name=The Ice Age +feature.dream.milestone.quest.crafting_table.name=A new survival? +feature.dream.milestone.quest.craft_singularity.name=The purpose? +feature.dream.milestone.quest.crafts.name=Learn new crafts +feature.dream.milestone.quest.creaking_heart.name=Resin has no heart +feature.dream.milestone.quest.crystallized_pickaxe.name=Good pick +feature.dream.milestone.quest.cube_temple.name=Worship the Soul Cube +feature.dream.milestone.quest.ewenite.name=Aywenite, Awyenito or Ewenite? +feature.dream.milestone.quest.find_cube.name=A little detour +feature.dream.milestone.quest.glacite_orb.name=Finally the last one? +feature.dream.milestone.quest.grotto_camp.name=Survival in end-of-the-world mode? +feature.dream.milestone.quest.illusionist.name=Is there anyone? +feature.dream.milestone.quest.kill_breezy.name=The air of the wind +feature.dream.milestone.quest.metal_detector.name=Cooooooooaaaaaaa +feature.dream.milestone.quest.mud_beach.name=I prefer the beach +feature.dream.milestone.quest.mud_orb.name=Beep Beep Beep +feature.dream.milestone.quest.old_axe.name=The first tool! Finally ! +feature.dream.milestone.quest.sleep.name=Sleep is life +feature.dream.milestone.quest.soul_orb.name=A sacrifice is necessary! +feature.dream.milestone.quest.souls.name=My friends come from beyond +feature.dream.milestone.quest.transferable_object.name=Was it just a dream? +feature.dream.milestone.quest.altar.description=<white>Drop the</white><light_purple>Orb of Domination </light_purple><white>on the</white><light_purple>Altar</light_purple>\ + <br><dark_gray><italic>Let's begin the orb conversion ritual</italic></dark_gray> +feature.dream.milestone.quest.cloud_castle.description=<white>Enter the </white>%1$s\ + <br><dark_gray><italic>A new castle to conquer?</italic></dark_gray> +feature.dream.milestone.quest.cloud_valley.description=<white>Discover the </white>%1$s\ + <br><dark_gray><italic>These clouds in this dream must be hiding something...</italic></dark_gray> +feature.dream.milestone.quest.craft_domination_orb.description=<white>Make the</white><light_purple>Orb of Domination</light_purple>\ + <br><dark_gray><italic>1 in 5 to dominate them all!</italic></dark_gray> +feature.dream.milestone.quest.craft_eternal_fire.description=<white>Make it </white><light_purple>eternal fire</light_purple>\ + <br><dark_gray><italic>Will we find fossilized dinosaurs or Sid?</italic></dark_gray> +feature.dream.milestone.quest.craft_singularity.description=<white>Craft it </white><light_purple>Singularity</light_purple>\ + <br><dark_gray><italic>Wouldn't the orbs have a final use?</italic></dark_gray> +feature.dream.milestone.quest.crafting_table.description=<white>Make a </white><light_purple>craft table</light_purple>\ + <br><dark_gray><italic>Strange this night survival...</italic></dark_gray>\ + <br><dark_gray><italic>we don't see except the full of sculks</italic></dark_gray> +feature.dream.milestone.quest.crafts.description=<white>Do </white><light_purple>/crafts </light_purple><white>to see the available crafts</white>\ + <br><dark_gray><italic>This dimension has its own rules,</italic></dark_gray>\ + <br><dark_gray><italic>I have to learn them to survive</italic></dark_gray> +feature.dream.milestone.quest.creaking_heart.description=<white>Recover a </white><light_purple>Creaking Heart</light_purple>\ + <br><dark_gray><italic>Are we looking for the resin or the heart?</italic></dark_gray> +feature.dream.milestone.quest.crystallized_pickaxe.description=<white>Get the </white><light_purple>Crystallized Pickaxe</light_purple>\ + <br><dark_gray><italic>Sometimes you have to rack your brains</italic></dark_gray> +feature.dream.milestone.quest.cube_temple.description=<white>Enter the </white>%1$s\ + <br><dark_gray><italic>In search of the Cube of Souls monument...</italic></dark_gray>\ + <br><dark_gray><italic>we are still in Minecraft, even in a dream!</italic></dark_gray> +feature.dream.milestone.quest.ewenite.description=<white>Get</white><light_purple>Ewenite</light_purple>\ + <br><dark_gray><italic>A new ore to exploit.</italic></dark_gray>\ + <br><dark_gray><italic>Strange, this name is familiar to me.</italic></dark_gray> +feature.dream.milestone.quest.find_cube.description=<white>Find the </white><light_purple>Cube</light_purple>\ + <br><dark_gray><italic>Mystery and explanations</italic></dark_gray> +feature.dream.milestone.quest.glacite_orb.description=<white>Exchange the</white><light_purple>Ice Orb</light_purple>\ + <br><dark_gray><italic>Final stretch to collect them all.</italic></dark_gray> +feature.dream.milestone.quest.grotto_camp.description=<white>Find a </white><light_purple>cave camp</light_purple>\ + <br><dark_gray><italic>There is no Transperceneige but,</italic></dark_gray>\ + <br><dark_gray><italic>Would there be a protected area?</italic></dark_gray> +feature.dream.milestone.quest.illusionist.description=<white>Find and see the </white><light_purple>merchant</light_purple>\ + <br><dark_gray><italic>If there are fires lit,</italic></dark_gray>\ + <br><dark_gray><italic>there is life in the area.</italic></dark_gray> +feature.dream.milestone.quest.kill_breezy.description=<white>Beat </white><light_purple>Breezy</light_purple>\ + <br><dark_gray><italic>We're going to tame one of the mountain spirits</italic></dark_gray>\ + <br><dark_gray><italic>from Poncahontas, or is it Elsa?</italic></dark_gray> +feature.dream.milestone.quest.metal_detector.description=<white>Recover the </white><light_purple>metal detector</light_purple>\ + <br><dark_gray><italic>Why are tadpoles so big?</italic></dark_gray> +feature.dream.milestone.quest.mud_beach.description=<white>Enter the </white>%1$s\ + <br><dark_gray><italic>Let's take advantage of this dream to go and bask in the Sun.</italic></dark_gray>\ + <br><dark_gray><italic>Hey, why is there no water, but only mud?</italic></dark_gray>\ + <br><dark_gray><italic>And still no Sun!? So this place is only night?</italic></dark_gray> +feature.dream.milestone.quest.mud_orb.description=<white>Find the</white><light_purple>Mud Orb</light_purple>\ + <br><dark_gray><italic>Well, not sand, but mud.</italic></dark_gray>\ + <br><dark_gray><italic>Possible that people still lose</italic></dark_gray>\ + <br><dark_gray><italic>things. Oh hey, 6 blocks to the right.</italic></dark_gray> +feature.dream.milestone.quest.old_axe.description=<white>Make a </white><light_purple>Old Creaking Ax</light_purple>\ + <br><dark_gray><italic>Our best friend in this world!</italic></dark_gray> +feature.dream.milestone.quest.sleep.description=<white>Enter the </white><light_purple>dimension of dreams</light_purple>\ + <br><dark_gray><italic>How good it is to sleep for</italic></dark_gray>\ + <br><dark_gray><italic>rest from the hard life of the cities...</italic></dark_gray> +feature.dream.milestone.quest.soul_orb.description=<white>Get the</white><light_purple>Soul Orb</light_purple>\ + <br><dark_gray><italic>Souls in the pocket, allow me, by your power,</italic></dark_gray>\ + <br><dark_gray><italic>to obtain your orb with the sacrifice of the Orb of Domination.</italic></dark_gray> +feature.dream.milestone.quest.souls.description=<white>To recover </white>%1$s <white>souls</white>\ + <br><dark_gray><italic>I seem to have seen creatures</italic></dark_gray>\ + <br><dark_gray><italic>flies prowling towards the tall dark trees.</italic></dark_gray> +feature.dream.milestone.quest.transferable_object.description=<white>Retrieve an item </white><light_purple>transferable </light_purple><white>in the Overworld</white>\ + <br><dark_gray><italic>This world still seems real to me.</italic></dark_gray>\ + <br><dark_gray><italic>Wouldn't the singularity be a portal?</italic></dark_gray>\ + <br><dark_gray><italic>dimensional for loot?</italic></dark_gray> + +feature.dream.milestone.quest.altar.dialog=<dark_aqua>Traveler: To obtain the Soul Orb, you will need...</dark_aqua>\ + <br><gold>Souls?!</gold>\ + <br><dark_aqua>Traveler: Yes! That's it! You will need some </dark_aqua>%1$s\ + <br><dark_aqua>Traveler: But be careful, they love the weather even more than the creakings</dark_aqua>\ + <br><gold>How can I find them, and how do I recognize them?</gold>\ + <br><dark_aqua>Traveler: Look around the altar, towards the </dark_aqua><light_purple>trees</light_purple><dark_aqua>. Souls wander outside the building.</dark_aqua>\ + <br><dark_aqua>Traveler: Just like the "Creaking" armor, it is possible to have the armor of </dark_aqua><light_purple>"Souls"</light_purple><dark_aqua>. This will give you </dark_aqua>%2$s<dark_aqua> additional seconds per equipped armor piece.</dark_aqua>\ + <br><dark_aqua>Traveler: You can also transform your ax at the altar with a few extra souls.</dark_aqua> +feature.dream.milestone.quest.cloud_castle.dialog=<gold>This castle is nothing like anything I know. How come it stays suspended in the clouds?</gold>\ + <br><dark_aqua>Traveler: As said before, these ancient people have tamed the power of the winds. But with what happened, I think the power turned in on itself to protect the treasure.</dark_aqua>\ + <br><gold>The Orb...</gold>\ + <br><dark_aqua>Traveler: Correct! This castle should remind you of </dark_aqua><light_purple>trial chambers</light_purple><dark_aqua> of your world.</dark_aqua>\ + <br><gold>So you know my world?</gold>\ + <br><dark_aqua>Traveler: ...</dark_aqua> +feature.dream.milestone.quest.cloud_valley.dialog=<gold>We are in a full... of clouds???</gold>\ + <br><dark_aqua>Traveler: This is a story of an ancient people who had tamed the forces of the wind.</dark_aqua>\ + <br><dark_aqua>Traveler: You should be able to find some </dark_aqua><light_purple>remains of their civilization</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>That's to say ?</gold>\ + <br><dark_aqua>Traveler: You have found the </dark_aqua>%1$s<dark_aqua> No ?</dark_aqua> +feature.dream.milestone.quest.craft_domination_orb.dialog=<gold>Here is the orb, what should I do with it?</gold>\ + <br><dark_aqua>Traveler: This orb is the first in a series of </dark_aqua><light_purple>5</light_purple><dark_aqua> scattered in this world. Each orb is unique and has the ability to move you forward in the world and in my...our quest!</dark_aqua>\ + <br><gold>So we need to explore the new area unlocked by the orb?</gold>\ + <br><dark_aqua>Traveler: That's right! We will have to find the </dark_aqua><light_purple>Temple </light_purple><dark_aqua>of the master of the place. You shouldn't miss it, I think...</dark_aqua> +feature.dream.milestone.quest.craft_eternal_fire.dialog=<dark_aqua>Traveler: Good! This fire will be useful to you.</dark_aqua>\ + <br><gold>It's a fire, will it allow me to cook something?</gold>\ + <br><dark_aqua>Traveler: In this world, this fire will serve you to limit the </dark_aqua><light_purple>effects of cold </light_purple><dark_aqua>depths. You're going to enter a freezing world, every second spent in it </dark_aqua><light_purple>will slow you down </light_purple><dark_aqua>and will end up </dark_aqua><light_purple>kill you</light_purple><dark_aqua>.</dark_aqua>\ + <br><dark_aqua>Traveler: By placing this fire on the ground and staying close to it, you will warm yourself and avoid this.</dark_aqua>\ + <br><gold>Like when you come out of powder snow.</gold>\ + <br><dark_aqua>Traveler: Yes. Now that you understand the principle, let's go looking for </dark_aqua><light_purple>camps </light_purple><dark_aqua>present in the </dark_aqua><light_purple>deep caves</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.craft_singularity.dialog=<gold>So ! What must we do to be able to turn back time now?</gold>\ + <br><dark_aqua>Traveler: ...</dark_aqua>\ + <br><dark_aqua>Traveler: I... I'm going to tell you something. It was never a question of going back in time in this dimension, but of being able to transfer myself to another dimension in order to escape the misfortunes of this world. My goal has always been to help people, but that has not been possible in this dimension.</dark_aqua>\ + <br><dark_aqua>Traveler: I didn't want to talk to you about it at the risk of appearing selfish.</dark_aqua>\ + <br><dark_aqua>Traveler: Unfortunately for me, the singularity we have is not powerful enough to be able to transfer life into your dimension in order to be able to make a fresh start and be able to help people.</dark_aqua>\ + <br><dark_aqua>Traveler: But that doesn't matter, I liked it to help you explore this world and especially to be able to recover objects that will undoubtedly be useful to you in your world.</dark_aqua>\ + <br><gold>...</gold>\ + <br><dark_aqua>Traveler: I failed to save this dimension, but I still managed to help "you" in this dimension.</dark_aqua>\ + <br><dark_aqua>Traveler: Whatever happens, you will be able to </dark_aqua><light_purple>recover enchantments </light_purple><dark_aqua>of this dimension thanks to the singularity and even the</dark_aqua><light_purple>armor </light_purple><dark_aqua>if you wish.</dark_aqua>\ + <br><dark_aqua>Traveler: The singularity is not powerful enough for me, but more than enough for new weapons or armor.</dark_aqua>\ + <br><dark_aqua>Traveler: Just like the previous orbs, you have the ability to craft new armor. This one, on the other hand, will require redoing all the orbs, but it's worth it, because it adds </dark_aqua>%1$s<dark_aqua> seconds more per piece worn, but also effects.</dark_aqua>\ + <br><gold>... THANKS !</gold>\ + <br><dark_aqua>Traveler: No! It's me who thanks you. Because one day, someone I respected as a person said to me: “Thank the person you helped, because they allowed you to do a good deed.”</dark_aqua>\ + <br><gold>Will you stay with me?</gold>\ + <br><dark_aqua>Traveler: No, I can't. Other players are getting lost here, and they need me. So I bid you farewell...</dark_aqua> +feature.dream.milestone.quest.crafting_table.dialog=<gold>Okay, now that I have the table, let's look for something to make some tools and... how come there are Crackers here!?</gold>\ + <br><dark_aqua>Traveler: You have a good eye. This world is full of amazing creatures that have one thing in common: they feed on </dark_aqua><light_purple>time</light_purple><dark_aqua>, in you </dark_aqua><light_purple>flying</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>So that’s that bar up there?</gold>\ + <br><dark_aqua>Traveler: Yes, and this time is not infinite, which is why we must act quickly. Let's take advantage of being among these creatures to recover their </dark_aqua><light_purple>hearts</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.crafts.dialog=<gold>Sounds like normal survival, right?</gold>\ + <br><dark_aqua>Traveler: Indeed, this world may be dark, new and complex, but it is not that different from the Overworld. But a dimension is added: the </dark_aqua><light_purple>time </light_purple><dark_aqua>! For the moment, you can only access the </dark_aqua>%1$s<dark_aqua>, but the other biomes will soon be accessible.</dark_aqua>\ + <br><gold>Hmmm, that intrigues me. But you said we're short on time, so let's not hang around. I need one </gold><light_purple>craft table</light_purple><gold>.</gold> +feature.dream.milestone.quest.creaking_heart.dialog=<gold>Ah! But it's true that they protect their hearts.</gold>\ + <br><dark_aqua>Traveler: Yes, and these will be useful to us later, the crafts of this world use a lot of them. Whether for tools, armor, or various objects of this world. Start by making yourself a </dark_aqua><light_purple>ax</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>But what is the purpose of this world??</gold>\ + <br><dark_aqua>Traveler: I'll explain to you soon, I don't want you to end up like me...</dark_aqua>\ + <br><gold>What does it mean to “end up like you”?</gold>\ + <br><dark_aqua>Traveler: You will understand. To avoid this, you must continue, make yourself an ax for the moment.</dark_aqua> +feature.dream.milestone.quest.crystallized_pickaxe.dialog=<dark_aqua>Traveler: This one will be your best friend in the </dark_aqua><light_purple>caves</light_purple><dark_aqua>, replacing your axe.</dark_aqua>\ + <br><dark_aqua>Traveler: From now on, you'll mainly have to mine. The depths of this world are full of </dark_aqua><light_purple>useful minerals </light_purple><dark_aqua>for the </dark_aqua><light_purple>last step </light_purple><dark_aqua>of this quest.</dark_aqua>\ + <br><gold>So let's not hang around, let's go to the cave.</gold>\ + <br><dark_aqua>Traveler: No! Before going to get the last orb, take a detour to the coordinates </dark_aqua><red>X: </red>%1$s <blue>Z: </blue>%2$s<dark_aqua>. As promised, I owe you an explanation.</dark_aqua> +feature.dream.milestone.quest.cube_temple.dialog=<dark_aqua>Traveler: Know that this is an altar that was erected to...</dark_aqua>\ + <br><gold>For ?</gold>\ + <br><dark_aqua>Traveler: ...</dark_aqua>\ + <br><dark_aqua>Traveler: Let's move on, now is not the time. Let's stick to the fact that he is the master of the place.</dark_aqua>\ + <br><gold>What does the master of the place mean?</gold>\ + <br><dark_aqua>Traveler: No matter, now that you understand the principle of this dimension, I will be able to talk to you about its </dark_aqua><light_purple>aim </light_purple><dark_aqua>and what we do here.</dark_aqua>\ + <br><dark_aqua>Traveler: Start by going to the </dark_aqua><light_purple>center of the temple</light_purple><dark_aqua> and drop the orb.</dark_aqua> +feature.dream.milestone.quest.ewenite.dialog=<gold>The beginning of wealth. Whether it's mining or trading them, I have a feeling it's going to be a long search.</gold>\ + <br><dark_aqua>Traveler: The ore is not common, but you can find several quickly.</dark_aqua>\ + <br><gold>Isn't there a way to go faster?</gold>\ + <br><dark_aqua>Traveler: You can make your own </dark_aqua><light_purple>Clockwork Pickaxe </light_purple><dark_aqua>If you want, it will be faster.</dark_aqua> +feature.dream.milestone.quest.find_cube.dialog=<dark_aqua>Traveler: This is the origin of the catastrophe of this world. This is the </dark_aqua><light_purple>"Cube"</light_purple><dark_aqua>, the master of the place. He was worshiped by the people of this dimension who built the temples you saw. His name: </dark_aqua><light_purple>Bobby</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>But what did he do and why is there no sculk around him?</gold>\ + <br><dark_aqua>Traveler: In the beginning, this one brought us peace and prosperity. But one day, a violent storm would have come, a lightning would have struck it and damaged it. </dark_aqua>\ + <br><dark_aqua>Traveler: The cube, after having regenerated for a long period of time, would have started to move and little by little, </dark_aqua><light_purple>corrupt </light_purple><dark_aqua>the world, but by installing a </dark_aqua><light_purple>self-sufficient ecosystem </light_purple><dark_aqua>for his new state. That is to say, it protects itself and propagates alone, feeding on the </dark_aqua><light_purple>life </light_purple><dark_aqua>of the world.</dark_aqua>\ + <br><dark_aqua>Traveler: This led to the </dark_aqua><light_purple>anhilation </light_purple><dark_aqua>or the </dark_aqua><light_purple>corruption </light_purple><dark_aqua>of all life in this place.</dark_aqua>\ + <br><gold>And you in all this, who are you? Since the beginning of our adventure, you have been talking to me, but you are not really there.</gold>\ + <br><dark_aqua>Traveler: It is very likely that I am no longer in this world, at least physically. When the cube corrupted the card, instead of fighting against it, I used it to </dark_aqua><light_purple>destroy my body</light_purple><dark_aqua>, by forcing the </dark_aqua><light_purple>survival </light_purple><dark_aqua>of my mind. Since I used the cube to survive, it can't take me out without killing itself.</dark_aqua>\ + <br><dark_aqua>Traveler: I am then here to help everyone </dark_aqua><light_purple>get back to your old life</light_purple><dark_aqua>. When I saw you coming, I followed you so that you could </dark_aqua><light_purple>realize </light_purple><dark_aqua>in my place, the quest I was supposed to carry out.</dark_aqua>\ + <br><gold>...</gold>\ + <br><dark_aqua>Traveler: Now that you know a little more, we must move forward in the quest that is now yours. Direction : </dark_aqua><light_purple>the caves</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.glacite_orb.dialog=<dark_aqua>Traveler: Finally, we have reached our goal. Much more than just one step to finally be free from this situation.</dark_aqua>\ + <br><gold>What should I do?</gold>\ + <br><dark_aqua>Traveler: They need to be </dark_aqua><light_purple>combine</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>Combine them? No incantation this time?</gold>\ + <br><dark_aqua>Traveler: No, I promise. Combine them in the </dark_aqua><light_purple>craft table </light_purple><dark_aqua>that we both made at the start of our adventure. We can then use the power of </dark_aqua><light_purple>singularity</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.grotto_camp.dialog=<gold>This is a camp.</gold>\ + <br><dark_aqua>Traveler: Let's see if we can find the last keeper of the orb. He must be around.</dark_aqua>\ + <br><gold>But if the Cube corrupted and killed everything, how can the merchant still be alive?</gold>\ + <br><dark_aqua>Traveler: The orb, my friend. Before, he was a traveling merchant who traveled the world to trade his goods.</dark_aqua>\ + <br><dark_aqua>Traveler: And each orb has a power, and I think that of the</dark_aqua><light_purple>Ice Orb </light_purple><dark_aqua>allowed this merchant to survive, but at what cost...</dark_aqua> +feature.dream.milestone.quest.illusionist.dialog=<gold>There's the merchant. He doesn't seem to want to move anymore.</gold>\ + <br><dark_aqua>Traveler: As I said before, corruption has </dark_aqua><light_purple>amended </light_purple><dark_aqua>deeply, even if the orb has it </dark_aqua><light_purple>protected </light_purple><dark_aqua>of death.</dark_aqua>\ + <br><dark_aqua>Traveler: I haven't told you about this until now, but haven't you noticed anything in each place where we found an orb?</dark_aqua>\ + <br><gold>...</gold>\ + <br><dark_aqua>Traveler: The orbs have </dark_aqua><light_purple>preserved </light_purple><dark_aqua>the lives around them. Creakings, Spiders, Souls, Breeze, Phantom, Wanderer, Frogs, Tadpoles, and here the merchant.</dark_aqua>\ + <br><dark_aqua>Traveler: But it's up to us to really bring her back. So go ahead, do it</dark_aqua><light_purple>exchange </light_purple><dark_aqua>for the Orb.</dark_aqua> +feature.dream.milestone.quest.kill_breezy.dialog=<gold>But this Breeze is crazy!!</gold>\ + <br><dark_aqua>Traveler: Yes, that's what I feared...even here, everything has been corrupted.</dark_aqua>\ + <br><gold>How is that corrupt?</gold>\ + <br><dark_aqua>Traveler: Explanations will arrive in due time. For now, come back down to earth, and head towards the </dark_aqua><light_purple>beaches</light_purple><dark_aqua>. I wish I could say fine sand...</dark_aqua>\ + <br><dark_aqua>Traveler: But before leaving, you can collect the</dark_aqua><light_purple>Cloud Armor</light_purple><dark_aqua>, who will give you </dark_aqua>%1$s<dark_aqua> seconds of extra time per piece of armor. You can also recover a </dark_aqua><light_purple>cloud fishing rod</light_purple><dark_aqua>, and a </dark_aqua><light_purple>enchanted book</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>A fishing rod? But to fish for what? Cloud droplets?!</gold>\ + <br><dark_aqua>Traveler: Exactly! This will allow you to fish in the clouds as if it were a lake. In particular, you will be able to recover </dark_aqua><light_purple>sleeping pills </light_purple><dark_aqua>which allow you to stay asleep longer, or to fall asleep effectively, if you are awake.</dark_aqua> +feature.dream.milestone.quest.metal_detector.dialog=<dark_aqua>Traveler: Ah, finally the detector. We will be able to search for the orb in this mud more easily.</dark_aqua>\ + <br><dark_aqua>Traveler: These beaches used to be sand and water. But with the disaster, </dark_aqua><light_purple>frogs </light_purple><dark_aqua>And </dark_aqua><light_purple>tadpoles </light_purple><dark_aqua>have transformed. This transformation resulted, for them, in a </dark_aqua><light_purple>great thirst</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>Hence the absence of water.</gold> +feature.dream.milestone.quest.mud_beach.dialog=<gold>Finally on the beach, and indeed, there is no warm sand, no radiant sun, just mud and... nothing else actually.</gold>\ + <br><dark_aqua>Traveler: Very well, sit there, I owe you an explanation.</dark_aqua>\ + <br><dark_aqua>Traveler: This world has undergone a </dark_aqua><light_purple>disaster</light_purple><dark_aqua>, hence its appearance. Before, he was so...if only I could see him again.</dark_aqua>\ + <br><gold>You told me about five orbs. Would these make it possible to bring back the old world, with the power of terraforming?</gold>\ + <br><dark_aqua>Traveler: No, it's much more powerful than that. They allow you to create a </dark_aqua><light_purple>wormhole </light_purple><dark_aqua>between this </dark_aqua><light_purple>dimension and yours</light_purple><dark_aqua>. We can then use part of the</dark_aqua><light_purple>energy </light_purple><dark_aqua>of your size for </dark_aqua><light_purple>go back in time </light_purple><dark_aqua>in it, and restore its balance.</dark_aqua>\ + <br><gold>Use part of the energy? But, is this without risk for my dimension??</gold>\ + <br><dark_aqua>Traveler: Yes, of course, otherwise I wouldn't take the risk. Each block of your world would give a small pearl of its energy.</dark_aqua>\ + <br><gold>What energy?</gold>\ + <br><dark_aqua>Traveler: We must move forward now. Looking for </dark_aqua><light_purple>frogs</light_purple><dark_aqua>, they will be useful to us.</dark_aqua> +feature.dream.milestone.quest.mud_orb.dialog=<gold>It reminds me of my vacation searching for treasures on the beach. Even if it's for a better cause. And now that the 4th orb is with us, what should I do?</gold>\ + <br><dark_aqua>Traveler: More than one. As we have done all the surface and the clouds, then all we have to do is search </dark_aqua><light_purple>underground</light_purple><dark_aqua>. You will need to prepare well, and in particular </dark_aqua><light_purple>good fire</light_purple><dark_aqua>. As for the detector, you should have seen that we obtained several things.</dark_aqua>\ + <br><gold>Yes, my inventory is full.</gold>\ + <br><dark_aqua>Traveler: Just like the fishing rod, you can obtain various items there like </dark_aqua><light_purple>chips</light_purple><dark_aqua>, even if some are very rare, </dark_aqua><light_purple>sleeping pills</light_purple><dark_aqua>, another </dark_aqua><light_purple>enchanted book</light_purple><dark_aqua>, or even a </dark_aqua><light_purple>pickaxe </light_purple><dark_aqua>which will be useful to you later... I'm going to check if you don't already have one.</dark_aqua> +feature.dream.milestone.quest.old_axe.dialog=<dark_aqua>Traveler: Good! This will be useful to us. The next objective is going to be to get the</dark_aqua><light_purple>Orb of Domination</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>What will it be used for?</gold>\ + <br><dark_aqua>Traveler: I'll explain it to you when you get it. It will be easy to recover with the axe.</dark_aqua>\ + <br><gold>Do I need anything else?</gold>\ + <br><dark_aqua>Traveler: It's not obligatory, but it would allow you to stay longer in this world. There is armor </dark_aqua><light_purple>“Creaking” </light_purple><dark_aqua>that you can make. This will give you </dark_aqua>%1$s<dark_aqua> additional seconds per equipped armor piece.</dark_aqua> +feature.dream.milestone.quest.sleep.dialog=<gold>ZZZzzz...what's happening!? Am I dreaming? This... world looks so different from the Overworld!</gold>\ + <br><dark_aqua>Traveler: What...? How is this possible??! I thought I was the only one here. And it's been so long since I've seen anyone...</dark_aqua>\ + <br><gold>But, who are you? Where are you? and why are you talking to me??</gold>\ + <br><dark_aqua>Traveler: Well, welcome. But everything in its time. Time which we will miss, we must act quickly, I will explain everything to you as we go along. For now, I suggest you discover what you will need to discover this world with the command </dark_aqua><light_purple>/crafts</light_purple><dark_aqua>.</dark_aqua>\ + <br><dark_aqua>Traveler: Please know that if you do not wish to stay until the end of time, you can wake up with the command </dark_aqua><light_purple>/leave</light_purple><dark_aqua>.\n<dark_aqua>Conversely, you can come back here more frequently by making yourself a </dark_aqua><light_purple>Pyjamas</light_purple><dark_aqua>. This allows you to increase your chances of passing into this world while sleeping.</dark_aqua> +feature.dream.milestone.quest.soul_orb.dialog=<gold>And two! On the other hand, I no longer have the Orb of Domination...</gold>\ + <br><dark_aqua>Traveler: Yes, you will have to do one again. But that's not the most complicated thing.</dark_aqua>\ + <br><dark_aqua>Traveler: Now that you have the Soul Orb, you will be able to access the </dark_aqua><light_purple>new area</light_purple><dark_aqua> which, you will see, does not at all resemble the current world...</dark_aqua>\ + <br><dark_aqua>Traveler: You must climb into the sky, into the </dark_aqua><light_purple>clouds</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>Can you tell me a little about the purpose of this quest?</gold>\ + <br><dark_aqua>Traveler: The orbs are numbered </dark_aqua><light_purple>5</light_purple><dark_aqua>, and each of them contains a </dark_aqua><light_purple>power</light_purple><dark_aqua>. Alone, they are of no use. But together they could help this world.</dark_aqua>\ + <br><gold>And... who are you anyway?</gold>\ + <br><dark_aqua>Traveler: I was...</dark_aqua>\ + <br><dark_aqua>Traveler: I'm a gamer just like you, but a gamer </dark_aqua><light_purple>this world</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.souls.dialog=<gold>And of </gold>%1$s<gold> ! What should I do now? Is there a specific orb craft to do?</gold>\ + <br><dark_aqua>Traveler: No, you simply have to repeat the following incantation twice: </dark_aqua><light_purple>Ashkara no thari fu laq to</light_purple>\ + <br><gold>Ashkara no thari fu laq to! Ashkara no thari fu laq to!</gold>\ + <br><gold>...not easy to say...</gold>\ + <br><dark_aqua>Traveler: Ahah, actually, you just need to interact with the</dark_aqua><light_purple>Orb of Domination on</light_purple><light_purple>Altar</light_purple><dark_aqua>.</dark_aqua> + +# * QUESTS +feature.dream.milestone.quest.transferable_object.reward=<green>There is a link between this dimension and the real world. And this is just the beginning of a new adventure!</green> + +feature.dream.loot_table.cloud_fishing=<white>Cloud Fishing Loots</white> +feature.dream.loot_table.cloud_vault=<white>Cloud Chest Loot</white> +feature.dream.loot_table.metal_detector=<white>Metal Detector Loot</white> diff --git a/src/main/resources/translations/en_GB/economy.properties b/src/main/resources/translations/en_GB/economy.properties new file mode 100644 index 000000000..74b61e86c --- /dev/null +++ b/src/main/resources/translations/en_GB/economy.properties @@ -0,0 +1,83 @@ +feature.economy.transactions.menu.title=Transactions menu %1$s +feature.economy.transaction.outgoing.name=Outgoing transaction +feature.economy.transaction.incoming.name=Incoming transaction +feature.economy.transaction.outgoing.lore=<gold>Destination :</gold> %1$s\ +<br><gold>Amount :</gold> %2$s\ +<br><gold>Reason :</gold> %3$s +feature.economy.transaction.incoming.lore=<gold>Sender:</gold> %1$s\ +<br><gold>Amount :</gold> %2$s\ +<br><gold>Reason :</gold> %3$s +feature.economy.bank.menu.title=Banks Menu +feature.economy.bank.menu.deposit.name=<gray>Drop off</gray><gold>money</gold> +feature.economy.bank.menu.deposit.lore=<gray>Your money will be placed in your bank</gray>\ +<br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.economy.bank.menu.need_city=To have a personal bank, you must belong to a minimum level 2 city! +feature.economy.bank.menu.balance.name=<gold>Your money</gold> +feature.economy.bank.menu.balance.lore=<gray>You currently have </gray>%1$s %2$s\ +<br><gray>Your money limit in your bank is </gray>%3$s %4$s\ +<br>\ +<br><gray>Your next interest is to </gray>%5$s<gray> In </gray>%6$s +feature.economy.bank.menu.withdraw.name=<gray>Remove from</gray><gold>money</gold> +feature.economy.bank.menu.withdraw.lore=<gray>The money will be taken from your bank</gray>\ +<br><yellow><bold>CLICK HERE TO WITHDRAW</bold></yellow> +feature.economy.bank.deposit.menu.title=Banks Menu - Deposit +feature.economy.bank.deposit.all.name=<gray>Drop off all your </gray><gold>money</gold> +feature.economy.bank.deposit.all.lore=<gray>All your money will be placed in </gray><gold>your bank</gold>\ +<br>\ +<br><gray>Amount that will be deposited: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.economy.bank.deposit.half.name=<gray>Deposit half of your </gray><gold>money</gold> +feature.economy.bank.deposit.half.lore=<gray>Half of your money will be placed in </gray><gold>your bank</gold>\ +<br>\ +<br><gray>Amount that will be deposited: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.economy.bank.deposit.input.name=<gray>Drop a </gray><gold>specific amount</gold> +feature.economy.bank.deposit.input.lore=<gray>Your money will be placed in </gray><gold>your bank</gold>\ +<br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.economy.bank.deposit.limit_reached=<red>Your bank's limit is </red><light_purple>%1$s</light_purple> +feature.economy.bank.deposit.partial=<red>Only </red>%1$s<red> have been deposited (ceiling reached).</red> +feature.economy.bank.deposit.success=<green>You filed </green>%1$s<green>.</green> +feature.economy.bank.deposit.input.prompt=Enter the amount you want to deposit +feature.economy.bank.withdraw.input.prompt=Enter the amount you want to withdraw +feature.economy.bank.withdraw.menu.title=Banks Menu - Withdraw +feature.economy.bank.withdraw.all.name=<gray>Take the</gray><gold>money from your bank</gold> +feature.economy.bank.withdraw.all.lore=<gray>All the money placed in </gray><gold>your bank</gold><gray> will be given to you</gray>\ +<br>\ +<br><gray>Amount that will be given to you: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> +feature.economy.bank.withdraw.half.name=<gray>Take half of the</gray><gold>money from your bank</gold> +feature.economy.bank.withdraw.half.lore=<gray>Half of the money will be taken from </gray><gold>your bank</gold><gray> to give it to you</gray>\ +<br>\ +<br><gray>Amount that will be given to you: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> +feature.economy.bank.withdraw.input.name=<gray>Take a </gray><gold>specific amount</gold> +feature.economy.bank.withdraw.input.lore=<gray>The money requested will be taken from </gray><gold>your bank</gold><gray> to give it to you</gray>\ +<br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.economy.bank.back.lore=<gray>You will return to your bank menu</gray>\ +<br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.economy.bank.withdraw.not_enough=<red>You don't have enough money in the bank</red> +feature.economy.bank.withdraw.transferred=<light_purple>%1$s</light_purple>%2$s<gray> have been transferred to your account</gray> +feature.economy.bank.interest.received=<gray>You have just noticed </gray>%1$s<gray> of interest, or </gray>%2$s%3$s +feature.economy.bank.command.not_unlocked=<red>You have not unlocked this feature! Please upgrade your city to the level %1$s !</red> +feature.economy.bank.command.balance=<gray>There is </gray><light_purple>%1$s</light_purple>%2$s<gray> in your bank</gray> +feature.economy.bank.interest.apply.start=<gray>Distribution of interests in progress...</gray> +feature.economy.bank.interest.apply.success=<green>Successful distribution of interests.</green> +feature.economy.money.self=<green>You have </green><yellow>%1$s</yellow> +feature.economy.money.others=<yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.set.success=<green>You have defined the money </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.set.target=<green>Your money has been set to </green><yellow>%1$s</yellow> +feature.economy.money.add.success=<green>You added </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.add.target=<green>You have received </green><yellow>%1$s</yellow> +feature.economy.money.remove.success=<green>You removed </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.remove.target=<red>You lost </red><yellow>%1$s</yellow> +feature.economy.money.remove.not_enough=<red>The player does not have enough money</red> +feature.economy.money.reset.success=<green>You have reset the money from </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.reset.target=<green>Your money has been reset to </green><yellow>%1$s</yellow> +feature.economy.pay.self=<red>You can't pay yourself</red> +feature.economy.pay.success=<green>You paid </green><yellow>%1$s</yellow><green> of </green><yellow>%2$s</yellow> +feature.economy.pay.received=<green>You have received </green><yellow>%1$s</yellow><green> of </green><yellow>%2$s</yellow> +feature.economy.pay.not_enough=<red>You don't have enough money</red> diff --git a/src/main/resources/translations/en_GB/events.properties b/src/main/resources/translations/en_GB/events.properties new file mode 100644 index 000000000..8c183a70a --- /dev/null +++ b/src/main/resources/translations/en_GB/events.properties @@ -0,0 +1,53 @@ +feature.events.menu.main_event.title=Events +feature.events.menu.main_event.title.calendar.lore=<gray>View the events calendar</gray>\ +<br><gray>you will be able to see the events that are scheduled</gray> +feature.events.menu.main_event.event.click_here=<yellow><bold>CLICK HERE TO LEARN MORE</bold></yellow> + +feature.events.calendar.unknown_name=<light_purple><bold>Event</bold></light_purple> +feature.events.calendar.daily_event_name=<aqua><bold>Daily Event</bold></aqua> + +feature.events.calendar.unknown_phase=Unknown +feature.events.calendar.title=Event Calendar +feature.events.calendar.weekend_event_name=<yellow><bold>Weekend Event</bold></yellow> +feature.events.calendar.start_in=<gray>Starts in</gray> %1$s +feature.events.calendar.start_date=<gray>Start date:</gray> %1$s <aqua>at</aqua> %2$s +feature.events.calendar.end_date=<gray>End date:</gray> %1$s <aqua>at</aqua> %2$s +feature.events.calendar.phases=<gold><bold>Phases:</bold></gold> +feature.events.calendar.phase.line=<gray>- </gray>%1$s<gray> THE </gray>%2$s<gray> has </gray>%3$s + +feature.events.contest.name=<gold><bold>Contest</bold></gold> +feature.events.contest.description=<gray>2 camps clash during the weekend</gray>\ +<br><gray>Vote for your side, and take part in the clash!</gray>\ +<br><gray>The winning side will win exclusive rewards!</gray> +feature.events.contest.command.settrade.updated=The trade of %1$s has been updated with %2$s For %3$s contest shells. +feature.events.contest.command.settrade.not_found=The trade does not exist.\ +<br><gray>/contest settrade <mat> <amount> <amount_shell></gray> + +feature.events.halloween.menu.deposit.title=Place your pumpkins +feature.events.halloween.menu.deposit.button.name=<#ff6b25>Place your pumpkins</#ff6b25> +feature.events.halloween.menu.deposit.button.lore=<gray>Click here to drop off your pumpkins and</gray>\ +<br><gray>get rewards!</gray> +feature.events.halloween.menu.deposit.no_pumpkin=<red>You don't have to drop any pumpkins!</red> +feature.events.halloween.menu.deposit.success=<gold>You filed </gold>%1$s<gold> pumpkins!</gold> +feature.events.halloween.reward.rank1.name=<#ff6b25><bold><underlined>Victory Pie (2025)</underlined></bold></#ff6b25> +feature.events.halloween.reward.rank1.lore=<gray>Reward for the player who collected the most pumpkins</gray>\ +<br><gray>during the Halloween 2025 event.</gray>\ +<br>\ +<br><gray>Obtained by </gray>%1$s +feature.events.halloween.reward.rank2.name=<#ff6b25><bold><underlined>The Pie of Excellence (2025)</underlined></bold></#ff6b25> +feature.events.halloween.reward.rank2.lore=<gray>Reward for the player who collected the second most</gray>\ +<br><gray>large quantity of pumpkins during the event</gray>\ +<br><gray>Halloween 2025.</gray>\ +<br>\ +<br><gray>Obtained by </gray>%1$s +feature.events.halloween.reward.rank3.name=<#ff6b25><bold><underlined>The Pie of Merit (2025)</underlined></bold></#ff6b25> +feature.events.halloween.reward.rank3.lore=<gray>Reward for the player who collected the third most</gray>\ +<br><gray>large quantity of pumpkins during the event</gray>\ +<br><gray>Halloween 2025.</gray>\ +<br>\ +<br><gray>Obtained by </gray>%1$s +feature.events.halloween.unknown_player=Unknown +feature.events.halloween.event.end.broadcast=<#ff6b25>The Halloween 2025 event is now over!</#ff6b25>\ +<br><#ff6b25>You can find your rewards in your</#ff6b25><#ff6b25><bold> mailbox</bold></#ff6b25><#ff6b25>.</#ff6b25>\ +<br><#ffd580>Thank you everyone for your participation!</#ffd580> + diff --git a/src/main/resources/translations/en_GB/friend.properties b/src/main/resources/translations/en_GB/friend.properties new file mode 100644 index 000000000..504386e5a --- /dev/null +++ b/src/main/resources/translations/en_GB/friend.properties @@ -0,0 +1,46 @@ +feature.friend.request.expired=<red>The friend request has expired.</red> +feature.friend.add.self=<red>You cannot add yourself as a friend.</red> +feature.friend.add.disabled=<red>This player has disabled friend requests.</red> +feature.friend.add.already_sent=<red>You have already sent a request to this player.</red> +feature.friend.add.already_friend=<red>You are already friends with this player.</red> +feature.friend.add.sent=<green>Friend request sent to </green>%1$s<green>.</green> +feature.friend.add.error=<red>An error occurred while sending the friend request.</red> +feature.friend.request.ignored=<red>You ignored friend request from </red>%1$s<red>.</red> +feature.friend.request.received=%1$s <green>sent you a friend request.</green> +feature.friend.player_not_found=<red>This player does not exist.</red> +feature.friend.remove.not_friend=<red>You are not friends with this player.</red> +feature.friend.remove.error=<red>An error occurred while deleting the friend.</red> +feature.friend.remove.success=<green>You deleted </green>%1$s<green> from your friends list.</green> +feature.friend.remove.removed_by=<red>You have been removed from the friends list of </red>%1$s<red>.</red> +feature.friend.list.none=<red>You don't have any friends at the moment.</red> +feature.friend.list.page_invalid=<red>The page </red>%1$s<red> does not exist. Total: </red>%2$s<red> pages</red> +feature.friend.list.hover=<gray>City : </gray>%1$s\ +<br><gray>Money : </gray>%2$s\ +<br><gray>Status : </gray>%3$s +feature.friend.list.error=<red>An error occurred while retrieving your friends.</red> +feature.friend.request.not_received=<red>You have not received a friend request from this player.</red> +feature.friend.request.accepted=<green>You are now friends with </green>%1$s<green>.</green> +feature.friend.request.accept_error=<red>An error occurred while accepting the friend request.</red> +feature.friend.request.denied=<red>You declined friend request from </red>%1$s<red>.</red> +feature.friend.request.denied_by=<red>Your friend request has been rejected by </red>%1$s<red>.</red> +feature.friend.request.deny_error=<red>An error occurred while declining the friend request.</red> +feature.friend.button.accept= [Accept] +feature.friend.button.accept_hover=Click to accept friend request +feature.friend.button.ignore= [Ignore] +feature.friend.button.ignore_hover=Click to ignore friend request +feature.friend.button.deny= [Refuse] +feature.friend.button.deny_hover=Click to decline friend request +feature.friend.list.header= ✦ Friends list (%1$s/%2$s) ✦ +feature.friend.list.city.none=None +feature.friend.status.online=Online +feature.friend.status.offline=Offline +feature.friend.list.date_since=Since the %1$s +feature.friend.list.action.remove= [✖] +feature.friend.list.action.remove_hover=Remove this friend +feature.friend.list.fetch_error=Error retrieving information from %1$s +feature.friend.list.navigation.previous= « Previous page +feature.friend.list.navigation.next=Next page » +feature.friend.list.navigation.separator= | +feature.friend.list.navigation.page=Page %1$s +feature.friend.unknown_player=Unknown + diff --git a/src/main/resources/translations/en_GB/homes.properties b/src/main/resources/translations/en_GB/homes.properties new file mode 100644 index 000000000..456b55968 --- /dev/null +++ b/src/main/resources/translations/en_GB/homes.properties @@ -0,0 +1,97 @@ +feature.homes.location.invalid=<red>Invalid rental</red> +feature.homes.location.format=%1$s <gray>(</gray>%2$s<gray>, </gray>%3$s<gray>, </gray>%4$s<gray>)</gray> +feature.homes.home.name=%1$s +feature.homes.home.lore=<gold>Position:</gold>\ +<br><gold> W: </gold>%1$s\ +<br><gold> X: </gold>%2$s\ +<br><gold> Y: </gold>%3$s\ +<br><gold> Z: </gold>%4$s +feature.homes.menu.title=Homes Menu +feature.homes.menu.item.lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to teleport you</green>\ +<br><gray>■ </gray><red>Click </red><dark_red>right</dark_red><red> to configure the home</red> +feature.homes.menu.teleport.success=<green>You have been teleported to your home </green>%1$s<green>.</green> +feature.homes.menu.error=<red>An error has occurred, please contact the staff</red> +feature.homes.menu.upgrade.name=<dark_gray>●</dark_gray> <gold>Improve homes</gold> <dark_gray>(Click here)</dark_gray> +feature.homes.menu.upgrade.lore=<gold>Click to improve your homes</gold> +feature.homes.upgrade.menu.title=Homes Menu - Improvement +feature.homes.upgrade.item.name=<dark_gray>●</dark_gray> <gold>Improve homes</gold> <dark_gray>(Left click)</dark_gray> +feature.homes.upgrade.lore.max=<gold>Current number of homes: </gold>%1$s\ +<br><red>You have reached the maximum number of homes</red> +feature.homes.upgrade.lore.available=<gold>Current number of homes: </gold>%1$s\ +<br><aqua>Price : </aqua>%2$s %3$s\ +<br><aqua>Aywenite: </aqua>%4$s\ +<br><gold>Number of homes on the next level: </gold>%5$s\ +<br><gray>→ Left click to improve</gray> +feature.homes.delete.menu.title=Homes Menu - Confirmation +feature.homes.delete.confirm.name=<red>Confirm deletion</red> +feature.homes.delete.confirm.lore=<gray>■ </gray><red>Click </red><dark_red>LEFT</dark_red><red> to confirm the deletion</red> +feature.homes.delete.success=<green>Home </green>%1$s<green> successfully deleted!</green> +feature.homes.delete.cancel.name=<green>Undo deletion</green> +feature.homes.command.player_not_found=<red>This player does not exist.</red> +feature.homes.command.other_no_home=<red>This player has no home.</red> +feature.homes.command.teleport.other.success=<green>You have been teleported home </green>%1$s<green> of </green>%2$s<green>.</green> +feature.homes.command.other_no_home_with_name=<red>This player does not have a home with this name.</red> +feature.homes.command.no_home=<red>You don't have a home.</red> +feature.homes.command.teleport.self.success=<green>You have been teleported to your home </green>%1$s<green>.</green> +feature.homes.command.no_home_with_name=<red>You don't have a home with that name.</red> +feature.homes.command.disabled_world=<red>You cannot define home in this world.</red> +feature.homes.command.invalid_name=<red>The home name must be valid.</red> +feature.homes.command.other_already_has=<red>This player already has a home with this name.</red> +feature.homes.command.set.other.success=<green>The home </green>%1$s<green> was defined for </green>%2$s<green>.</green> +feature.homes.command.set.by_admin=<green>An admin has defined a home for you </green>%1$s<green>.</green> +feature.homes.command.home_limit_reached=<red>You have reached the limit of homes.</red> +feature.homes.command.already_has=<red>You already have a home with this name.</red> +feature.homes.command.set.self.success=<green>Your home </green>%1$s<green> has been defined.</green> +feature.homes.command.rename.other.success=<green>The home </green>%1$s<green> was renamed to </green>%2$s<green>.</green> +feature.homes.command.rename.already_has=<red>You already have a home with that name.</red> +feature.homes.command.rename.self.success=<green>Your home </green>%1$s<green> was renamed to </green>%2$s<green>.</green> +feature.homes.command.self_no_home_with_name=<red>You don't have a man with that name.</red> +feature.homes.command.delete.other.success=<green>The home </green>%1$s<green> was deleted.</green> +feature.homes.command.delete.self.success=<green>Your home </green>%1$s<green> was deleted.</green> +feature.homes.command.relocate.other.success=<green>The home </green>%1$s<green> was moved.</green> +feature.homes.command.relocate.protected_region=<red>You can't define a home here, you are in a protected region.</red> +feature.homes.command.relocate.self.success=<green>Your home </green>%1$s<green> was moved.</green> +feature.homes.world.not_found=<red>This world does not exist.</red> +feature.homes.world.already_disabled=<red>The world </red>%1$s<red> is already in the list of worlds where homes are disabled.</red> +feature.homes.world.added=<green>The world </green>%1$s<green> has been added to the list of worlds where men are </green><red>disabled</red><green>.</green> +feature.homes.world.remove.not_found=<red>The world </red>%1$s<red> does not exist.</red> +feature.homes.world.removed=<green>The world </green>%1$s<green> has been removed from the list of worlds where men are </green><red>disabled</red><green>.</green> +feature.homes.world.not_disabled=<red>The world </red>%1$s<red> is not in the list of worlds where homes are disabled.</red> +feature.homes.world.list.empty=<red>No worlds are in the list of worlds where homes are disabled.</red> +feature.homes.world.list.title=<yellow>List of worlds where homes are disabled:</yellow> +feature.homes.world.list.item= <dark_gray>- </dark_gray>%1$s <dark_gray>(</dark_gray>%2$s<dark_gray>)</dark_gray> +feature.homes.world.info=<gray>Added by </gray>%1$s<gray> THE </gray>%2$s +feature.homes.upgrade.not_reached_limit=<red>You have not reached the house limit to purchase this improvement.</red> +feature.homes.upgrade.not_enough_aywenite=<red>You don't have enough Aywenite (</red>%1$s<red> necessary)</red> +feature.homes.upgrade.not_enough_money=<red>You don't have enough money on you! (</red>%1$s%2$s<red> necessary)</red> +feature.homes.upgrade.success=<green>You have improved your house limit to </green>%1$s<green> For </green>%2$s<green>$ and to </green>%3$s<green> of Aywenite</green> +feature.homes.upgrade.max=<red>You have reached the maximum limit of homes.</red> +feature.homes.icon.name=<green>%1$s</green> +feature.homes.icon.normal_lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to change the icon</green> +feature.homes.icon.selected_lore=<dark_gray>[</dark_gray><green>✔</green><dark_gray>] </dark_gray><gray>Current icon</gray> +feature.homes.icon.changed=<green>Your home icon </green>%1$s<green> was changed to </green>%2$s<green> !</green> +feature.homes.icon.menu.title=Homes Menu - Change icon +feature.homes.icon.search.name=<yellow>Research</yellow> +feature.homes.icon.search.current=<gray>Current search: </gray>%1$s +feature.homes.icon.search.left=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to search</green> +feature.homes.icon.search.right=<gray>■ </gray><red>Click </red><dark_red>right</dark_red><red> to reset</red> +feature.homes.icon.search.prompt=Enter your search for an item +feature.homes.icon.category.name=<green>Category</green> +feature.homes.icon.category.selection=<gray>Category selection</gray> +feature.homes.icon.category.available=<gray>Categories available:</gray> +feature.homes.icon.category.all=<yellow>All</yellow> +feature.homes.icon.category.vanilla=<green>Vanilla</green> +feature.homes.icon.category.custom=<light_purple>Customized</light_purple> +feature.homes.icon.category.left=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to go to the next category</green> +feature.homes.icon.category.right=<gray>■ </gray><red>Click </red><dark_red>right</dark_red><red> to go to the previous category</red> +feature.homes.icon.category.spam=<red>Please don't spam the category change.</red> +feature.homes.config.title=Homes Menu - Configuration +feature.homes.config.change_icon.name=<green>Change icon</green> +feature.homes.config.change_icon.lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to change your home icon</green> +feature.homes.config.rename.name=<green>Change name</green> +feature.homes.config.rename.lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to change the name of your home</green> +feature.homes.config.rename.prompt=Enter your new home name +feature.homes.config.rename.success=<green>Your home </green>%1$s<green> was renamed to </green>%2$s<green>.</green> +feature.homes.config.delete.name=<red>Delete home</red> +feature.homes.config.delete.lore=<gray>■ </gray><red>Click </red><dark_red>LEFT</dark_red><red> to delete your home</red> + diff --git a/src/main/resources/translations/en_GB/itemsadder.properties b/src/main/resources/translations/en_GB/itemsadder.properties new file mode 100644 index 000000000..bb6a45f7d --- /dev/null +++ b/src/main/resources/translations/en_GB/itemsadder.properties @@ -0,0 +1,5 @@ +feature.itemsadder.spawner_extractor.fail=<red>Extraction failed! The spawner broke.</red> +feature.itemsadder.spawner_extractor.display_name=<yellow>Spawner at </yellow>%1$s +feature.itemsadder.spawner_extractor.success_extract=<green>You have extracted a spawner at </green>%1$s ! +feature.itemsadder.spawner_extractor.success_place=<green>Spawner at </green>%1$s place ! + diff --git a/src/main/resources/translations/en_GB/leaderboards.properties b/src/main/resources/translations/en_GB/leaderboards.properties new file mode 100644 index 000000000..a6e92040f --- /dev/null +++ b/src/main/resources/translations/en_GB/leaderboards.properties @@ -0,0 +1,28 @@ +feature.leaderboards.empty.contributors=No contributors found yet. +feature.leaderboards.empty.players=No players found yet. +feature.leaderboards.empty.cities=No cities found yet. + +feature.leaderboards.header.contributors=--- GitHub Contributor Leaderboard --- +feature.leaderboards.header.money=--- Players Money Leaderboard --- +feature.leaderboards.header.city_money=--- Cities Money Leaderboard --- +feature.leaderboards.header.playtime=------- Game Time Leaderboard ------- +feature.leaderboards.header.pumpkin=--- Pumpkin Leaderboard --- + +feature.leaderboards.footer=----------------------------------------- + +feature.leaderboards.line.contributors=%1$s %2$s <green>+</green> %3$s <red>-</red> %4$s +feature.leaderboards.line.money=%1$s %2$s <gray>-</gray> %3$s +feature.leaderboards.line.city_money=%1$s %2$s <gray>-</gray> %3$s +feature.leaderboards.line.playtime=%1$s %2$s <gray>-</gray> %3$s +feature.leaderboards.line.pumpkin=%1$s %2$s <gray>-</gray> %3$s pumpkins + +feature.leaderboards.command.invalid=Please specify a valid leaderboard. (Ex: /leaderboard contributeurs) +feature.leaderboards.command.position_updated=<green>Leaderboard position </green>%1$s<green> update.</green> +feature.leaderboards.command.position_update_failed=<red>Error updating leaderboard position </red>%1$s<red> :</red> %2$s +feature.leaderboards.command.invalid_list=Please specify a valid leaderboard: contributors, money, city-money, playtime, pumpkin-count +feature.leaderboards.command.holograms_disabled=<red>Holograms successfully disabled.</red> +feature.leaderboards.command.holograms_enabled=<green>Holograms activated successfully.</green> +feature.leaderboards.command.holograms_updated=<green>Holograms updated successfully.</green> +feature.leaderboards.command.scale_changed=<green>Size of holograms changed to </green>%1$s +feature.leaderboards.command.scale_update_failed=<red>Error updating hologram size: </red>%1$s + diff --git a/src/main/resources/translations/en_GB/mailboxes.properties b/src/main/resources/translations/en_GB/mailboxes.properties new file mode 100644 index 000000000..667ad5b06 --- /dev/null +++ b/src/main/resources/translations/en_GB/mailboxes.properties @@ -0,0 +1,53 @@ +feature.mailboxes.player.unknown=Unknown +feature.mailboxes.letter=letter + +feature.mailboxes.menu.title.home=Mailbox +feature.mailboxes.menu.title.player=Mailbox +feature.mailboxes.menu.title.pending=Mail awaiting cancellation +feature.mailboxes.menu.title.players_list=List of players +feature.mailboxes.menu.title.letter=Letter from %1$s +feature.mailboxes.menu.title.sending=Send a letter to %1$s + +feature.mailboxes.menu.pending.item=On hold +feature.mailboxes.menu.player.item=My mailbox +feature.mailboxes.menu.send.item=Send + +feature.mailboxes.menu.button.cancel=Cancel +feature.mailboxes.menu.button.accept=Accept +feature.mailboxes.menu.button.send=Send +feature.mailboxes.menu.button.refuse=Refuse +feature.mailboxes.menu.button.home_arrow=⬅Home +feature.mailboxes.menu.button.next_page_arrow=Next page ➡ +feature.mailboxes.menu.button.previous_page_arrow=⬅ Previous page + +feature.mailboxes.menu.refuse_warning=<red><bold>If you do this, the items will be deleted</bold></red> +feature.mailboxes.menu.cancel.success=You have canceled the mailbox #%1$s +feature.mailboxes.menu.cancel.confirm=Confirm mailbox cancellation #%1$s +feature.mailboxes.menu.cancel.cancel=Undo mailbox cancellation #%1$s + +feature.mailboxes.message.letter_not_found=The letter with the id %1$s does not exist. +feature.mailboxes.message.cancel_success_sender=%1$s canceled the letter. You have received %2$s%3$s +feature.mailboxes.message.refuse_success=You refused the letter #%1$s. +feature.mailboxes.message.items_received=You have received %1$s %2$s +feature.mailboxes.message.cancel_letter=You canceled the letter #%1$s. +feature.mailboxes.message.empty_letter=You cannot send an empty letter +feature.mailboxes.message.player_not_found=The player %1$s does not exist or was never connected! +feature.mailboxes.message.send_to_self=You can't send it to yourself! +feature.mailboxes.message.cannot_send=You do not have the rights to send to %1$s ! + +feature.mailboxes.message.send_error=An error appeared while sending items to %1$s +feature.mailboxes.message.one_letter=a +feature.mailboxes.message.new_letters.line1=You have received %1$s %2$s. +feature.mailboxes.message.new_letters.click=Click here +feature.mailboxes.message.new_letters.suffix=to open letters +feature.mailboxes.message.new_letters.hover=Open my mailbox +feature.mailboxes.message.letter_received.line1=You have received %1$s%2$s from %3$s +feature.mailboxes.message.letter_received.click=Click here +feature.mailboxes.message.letter_received.suffix=to open the letter +feature.mailboxes.message.letter_received.hover=Open letter #%1$s +feature.mailboxes.message.sent_word=sent +feature.mailboxes.message.send_success=%1$s %2$s %3$s has %4$s + +feature.mailboxes.letter.contains=➤ Contains %1$s %2$s +feature.mailboxes.title.new_letter=New letter! +feature.mailboxes.title.new_letter.subtitle=%1$s sent you %2$s%3$s diff --git a/src/main/resources/translations/en_GB/main.properties b/src/main/resources/translations/en_GB/main.properties new file mode 100644 index 000000000..e17c2d836 --- /dev/null +++ b/src/main/resources/translations/en_GB/main.properties @@ -0,0 +1,39 @@ +# Language file for the plugin +# Native language: French +# Do not use color codes in this file if there is an agument +# * KEY DE TEST +test=TESTTTT +global.item=item +global.never=Never + +# ** UTILS ** +utils.world.overworld=<gray>the Overworld</gray> +utils.world.nether=<gray>the Nether</gray> +utils.world.end=<gray>the End</gray> +utils.world.dream=<gray>Dreams</gray> + +# ** MESSAGES ** +messages.global.cannot_do_this=<red>You have no right to do this.</red> +messages.global.missing_arg=<red>You must specify an argument.</red> +messages.global.player_not_found=<red>The player was not found.</red> +messages.global.invalid_input=<red>Please enter correct entry</red> + +messages.global.player_missing_money=<red>You don't have enough money.</red> +messages.global.cancel=<red>Cancel</red> +messages.global.accept=<green>Accept</green> +messages.menus.back=<green>Back</green> +messages.menus.back_lore=<gray>Return to previous menu</gray> +messages.menus.previous_page=<green>Previous page</green> +messages.menus.previous_page_lore=<gray>Click to go to previous page</gray> +messages.menus.next_page=<green>Next page</green> +messages.menus.next_page_lore=<gray>Click to go to the next page</gray> +messages.menus.close=<gray>Close</gray> +messages.menus.none=<gray>None</gray> + +registries.menu.lootbox.name=<gray>Lootbox</gray> +registries.menu.chance=<gray>Chance :</gray> %1$s +registries.menu.sub_loots.click_here=<yellow><bold>CLICK HERE TO VIEW THE SUBLOTS</bold></yellow> + +feature.tickets.loot.won=<green>You won: </green> +feature.tickets.loot.broadcast=<gold><bold>✦ </bold></gold><yellow><bold>CONGRATULATIONS </bold></yellow><gray>has </gray>%1$s<gray> who just won </gray>%2$s<gray> at the ball machine! </gray><gold><bold>✦</bold></gold> +feature.tickets.loot.gg=</bold></gold><yellow><bold>CONGRATULATIONS !</bold></yellow> diff --git a/src/main/resources/translations/en_GB/mainmenu.properties b/src/main/resources/translations/en_GB/mainmenu.properties new file mode 100644 index 000000000..e795e868c --- /dev/null +++ b/src/main/resources/translations/en_GB/mainmenu.properties @@ -0,0 +1,52 @@ +feature.mainmenu.item.city.lore=/city +feature.mainmenu.item.city.name=City : %1$s +feature.mainmenu.item.city.no_city=You are not part of a city. + +feature.mainmenu.item.advancements.name=Show progress + +feature.mainmenu.item.quests.name=Quests +feature.mainmenu.item.quests.lore=/quest + +feature.mainmenu.item.milestones.name=Milestones +feature.mainmenu.item.milestones.lore=Discover the features in progression routes! +feature.mainmenu.item.milestones.command=/milestones + +feature.mainmenu.item.contest.ends_in=End in %1$s +feature.mainmenu.item.contest.name=Competition +feature.mainmenu.item.contest.command=/contest + +feature.mainmenu.item.shop.name=Shop +feature.mainmenu.item.shop.command=/adminshop + +feature.mainmenu.item.home.name=Homes +feature.mainmenu.item.home.command=/home + +feature.mainmenu.item.profile.name=Profile +feature.mainmenu.item.profile.lore=In development + +feature.mainmenu.item.next_page=Next page +feature.mainmenu.item.previous_page=Previous page + +feature.mainmenu.item.settings.name=Settings +feature.mainmenu.item.settings.command=/settings + +feature.mainmenu.item.mailbox.name=Mailbox +feature.mainmenu.item.mailbox.command=/mailbox home + +feature.mainmenu.item.shops_disabled=Shops (Disabled) +feature.mainmenu.item.company_disabled=Businesses (Disabled) +feature.mainmenu.item.leaderboard.name=Leaderboard +feature.mainmenu.item.leaderboard.command=/leaderboard +feature.mainmenu.item.bank.name=Bank +feature.mainmenu.item.bank.command=/banque +feature.mainmenu.item.coming_soon.name=Future +feature.mainmenu.item.coming_soon.lore=This feature is under development. + +feature.mainmenu.message.dream_world=You cannot interact with the main menu from the dream world. +feature.mainmenu.message.profile_dev=Player profiles are still in development %1$s. +feature.mainmenu.message.advancements_hint=Press the ' key%1$s' to open the Advancements menu. +feature.mainmenu.message.shops_disabled=Businesses and shops have been disabled %1$s. +feature.mainmenu.message.leaderboard_dev=The leaderboard menu is still under development %1$s.\nYou can still use the /lb ou look at the holograms in the spawn. +feature.mainmenu.message.coming_soon=This feature is under development and will be available soon! +feature.mainmenu.advancements.loading=Loading... + diff --git a/src/main/resources/translations/en_GB/milestones.properties b/src/main/resources/translations/en_GB/milestones.properties new file mode 100644 index 000000000..7af1e1df0 --- /dev/null +++ b/src/main/resources/translations/en_GB/milestones.properties @@ -0,0 +1,96 @@ +feature.milestones.menu.title.main=Milestones menu - More info +feature.milestones.menu.title.milestone=Milestones menu - %1$s +feature.milestones.menu.page.previous=<yellow>◀ Previous page</yellow> +feature.milestones.menu.page.next=<yellow>Next page ▶</yellow> +feature.milestones.menu.close=<red>Close</red> +feature.milestones.menu.back=<green>Back</green> +feature.milestones.menu.coming_soon=<obfuscated>s</obfuscated> <red>Coming soon</red> <obfuscated>e</obfuscated> + +feature.milestones.menu.city.name=<dark_aqua>Cities Milestone</dark_aqua> +feature.milestones.menu.city.lore.intro_1=<gray>Discover the full <dark_aqua>cities</dark_aqua></gray> +feature.milestones.menu.city.lore.intro_2=<gray>Via this <dark_aqua>road of progression</dark_aqua> !</gray> +feature.milestones.menu.city.lore.details=<dark_gray><italic>Claims, Mascots, Mayors, Wars, ...</italic></dark_gray> +feature.milestones.menu.city.lore.need_city=<red>Create or join a city to access this!</red> +feature.milestones.menu.city.lore.level=<gray>Level of your city:</gray> %1$s +feature.milestones.menu.city.lore.click=<yellow><bold>CLICK HERE TO ACCESS YOUR MILESTONE</bold></yellow> + +feature.milestones.tutorial.name=OpenMC Tutorial +feature.milestones.tutorial.description.1=<gray>Discover <light_purple>OpenMC</light_purple> !</gray> +feature.milestones.tutorial.description.2=<gray>Review the <light_purple>features</light_purple></gray> +feature.milestones.tutorial.description.3=<dark_gray><italic>Cities, contests, the adminshop, quests, ...</italic></dark_gray> +feature.milestones.tutorial.description.4=<gray>Ideal for embarking on an adventure!</gray> + +feature.milestones.tutorial.hologram.icon=%1$s +feature.milestones.tutorial.hologram.welcome=<white>Welcome to </white><light_purple>OpenMC V2</light_purple><white>!</white> +feature.milestones.tutorial.hologram.based_on=<white>This version is based on the </white><dark_green>cities</dark_green> +feature.milestones.tutorial.hologram.how_to=<white>To access the tutorial, use the command </white><green>/milestones</green><white>.</white> +feature.milestones.tutorial.hologram.server=<white>It's your </white><light_purple>server</light_purple><white>!</white> +feature.milestones.tutorial.hologram.separator=<dark_gray><strikethrough> </strikethrough></dark_gray> +feature.milestones.tutorial.hologram.links=<white>Useful links: </white><dark_purple>/socials</dark_purple> + +feature.milestones.tutorial.quest.spare_bank.name=Deposit money in the bank +feature.milestones.tutorial.quest.spare_bank.description=<white>Type </white><light_purple>/bank</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>A competitive way to win big rewards!</italic></dark_gray> +feature.milestones.tutorial.quest.spare_bank.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><aqua>banks</aqua><white> can store an infinite amount of money and protect it if you die! Now let's personalize the gaming experience using settings!</white> + +feature.milestones.tutorial.quest.sell_buy.name=Buy or sell a resource in the adminshop +feature.milestones.tutorial.quest.sell_buy.description=<white>Type </white><red>/adminshop</red><white> or go to the </white><light_purple>main menu /menu</light_purple><white> to be able to sell or buy a resource</white>\ + <br><dark_gray><italic>This is the beginning of wealth!</italic></dark_gray> +feature.milestones.tutorial.quest.sell_buy.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! L'</white><red>adminshop</red><white> offers various items so you can build, or make money! However, when you die you lose </white>%2$s<white>% of your money! It is therefore important to pay attention to your skin, or else deposit money in your bank!</white> + +feature.milestones.tutorial.quest.open_settings.name=Open settings menu +feature.milestones.tutorial.quest.open_settings.description=<white>Type </white><light_purple>/settings</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>This will allow you to configure your gaming experience!</italic></dark_gray> +feature.milestones.tutorial.quest.open_settings.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><blue>settings</blue><white> customize your game, they can be useful in certain cases, such as blocking friend requests, ... On a separate subject, you can switch to competition mode thanks to the </white><gold>contests</gold><white>, a sort of weekly competition!</white> + +feature.milestones.tutorial.quest.open_quest.name=Open the quest menu +feature.milestones.tutorial.quest.open_quest.description=<white>Type </white><light_purple>/quests</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu and see what quests you can complete</white>\ + <br><dark_gray><italic>This will launch you into adventure and give you challenges in order to diversify!</italic></dark_gray> +feature.milestones.tutorial.quest.open_quest.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><blue>quests</blue><white> will help you get money easily for the </white><blue>start of game</blue><white> ! You can attempt to accomplish the </white><blue>stain</blue><white> whatever you want!</white> + +feature.milestones.tutorial.quest.open_contest.name=Open the contests menu +feature.milestones.tutorial.quest.open_contest.description=<white>Type </white><light_purple>/contest</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>A competitive way to win big rewards!</italic></dark_gray> +feature.milestones.tutorial.quest.open_contest.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><gold>contests</gold><white> pit 2 groups against each other on a theme, the winners win a big reward! And here the tutorial is now finished, go and collect your reward in the </white><blue>mailbox</blue><white>, a letter system for receiving or sending letters!</white> + +feature.milestones.tutorial.quest.open_adminshop.name=Open the adminshop menu +feature.milestones.tutorial.quest.open_adminshop.description=<white>Type </white><red>/adminshop</red><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>The market which varies according to supply and demand!</italic></dark_gray> +feature.milestones.tutorial.quest.open_adminshop.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! L'</white><red>adminshop</red><white> will help you get money and blocks! You can now sell or buy a resource in the adminshop!</white> + +feature.milestones.tutorial.quest.home_upgrade.name=Improve your house limit +feature.milestones.tutorial.quest.home_upgrade.description=<white>Type </white><light_purple>/upgradehome</light_purple><white> or go to the </white><light_purple>menu of the homes (/homes)</light_purple>\ + <br><white>to be able to improve your house limit</white>\ + <br><dark_gray><italic>This will allow you to have more homes!</italic></dark_gray> +feature.milestones.tutorial.quest.home_upgrade.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><dark_green>homes</dark_green><white> will be very useful for moving quickly between your bases! Now I think you need challenges! Open the menu of </white><blue>quests</blue><white>.</white> + +feature.milestones.tutorial.quest.home_create.name=Place a home +feature.milestones.tutorial.quest.home_create.description=<white>Type </white><light_purple>/sethome</light_purple><white> by being where you want to put your home</white>\ + <br><dark_gray><italic>It's very useful to make one to teleport to your base!</italic></dark_gray> +feature.milestones.tutorial.quest.home_create.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! Homes are often used to avoid losing your base! You are limited to only having 1 home at the start. We will have to think about improving them...</white> + +feature.milestones.tutorial.quest.finish_quest.name=Complete a quest +feature.milestones.tutorial.quest.finish_quest.description=<white>Complete a quest of your choice</white>\ + <br><dark_gray><italic>This will be able to give you money or certain resources!</italic></dark_gray> +feature.milestones.tutorial.quest.finish_quest.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! And here is a </white><blue>reward</blue><white> ! Practical, right? Let's discover another method of producing money and consuming it! Go into the</white><red>adminshop</red><white>, a place where several items can be purchased at varying prices depending on the</white><red>supply and demand</red><white> !</white> + +feature.milestones.tutorial.quest.claim_letter.name=Open the rewards letter +feature.milestones.tutorial.quest.claim_letter.description=<white>Type </white><light_purple>/mailbox</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the mailbox menu</white>\ + <br><dark_gray><italic>An efficient way to send items to other players!</italic></dark_gray> +feature.milestones.tutorial.quest.claim_letter.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! You have discovered the basics of OpenMC. And now, you're free to discover the features for yourself! With that, we wish you the best in your adventure on </white><light_purple>OpenMC</light_purple><white> !</white> + +feature.milestones.tutorial.quest.city_create.name=Create/Rejoindre une city +feature.milestones.tutorial.quest.city_create.description=<white>Do </white><light_purple>/city</light_purple><white> to start creating your city</white>\ + <br><white>or join a city using an invitation!</white> +feature.milestones.tutorial.quest.city_create.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! This version of OpenMC is centered around cities. There you will find a </white><yellow>special milestone for cities</yellow><white> (/city milestone) who will guide you in this unique adventure! And if you passed your city to </white><dark_aqua>level 2</dark_aqua><white> ?</white> + +feature.milestones.tutorial.quest.city_level_two.name=Have a level 2 city +feature.milestones.tutorial.quest.city_level_two.description=<white>Do </white><light_purple>/city milestone</light_purple><white> to find out more how</white>\ + <br><white>improve your city!</white> +feature.milestones.tutorial.quest.city_level_two.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! You're well on your way to discovering all the features hidden in cities! But before that, I would like you to ask a </white><dark_green>home</dark_green><white>.</white> + +feature.milestones.tutorial.quest.break_aywenite.name=Break 30 Aywenites +feature.milestones.tutorial.quest.break_aywenite.description=<white>The new ore of </white><light_purple>V2</light_purple><white>, found in caves</white>\ + <br><white>It will be to you </white><light_purple>useful</light_purple><white> in many features</white> +feature.milestones.tutorial.quest.break_aywenite.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! As said previously the</white><light_purple>Aywenite</light_purple><white> is an ore, valuable for features. Besides, you can use it to make your city!</white> + diff --git a/src/main/resources/translations/en_GB/privatemessage.properties b/src/main/resources/translations/en_GB/privatemessage.properties new file mode 100644 index 000000000..fb9483ca7 --- /dev/null +++ b/src/main/resources/translations/en_GB/privatemessage.properties @@ -0,0 +1,17 @@ +feature.privatemessage.msg.cannot_message_yourself=<red>You cannot send a private message to yourself.</red> +feature.privatemessage.msg.private_messages_disabled=<red>You have disabled private messages.</red> +feature.privatemessage.msg.player_private_messages_disabled=<red>The player %1$s Disabled private messages.</red> +feature.privatemessage.msg.format.sender=<gray>[</gray><yellow>You </yellow><gold><bold>→</bold></gold> %1$s<gray>]</gray> %2$s +feature.privatemessage.msg.format.receiver=<gray>[</gray>%1$s <gold><bold>→</bold></gold> <blue>You</blue><gray>]</gray> %2$s + +feature.privatemessage.socialspy.toggled_off=<green>Social Spy disabled.</green> +feature.privatemessage.socialspy.toggled_on=<green>Social Spy enabled.</green> +feature.privatemessage.socialspy.status_changed=<green>Social Spy %1$s For %2$s.</green> +feature.privatemessage.socialspy.status.enabled=activated +feature.privatemessage.socialspy.status.disabled=disabled +feature.privatemessage.socialspy.format=<dark_gray>[<gold>SPY</gold>]</dark_gray> %1$s <gold>→</gold> %2$s<dark_gray>:</dark_gray> %3$s +feature.privatemessage.socialspy.no_players=<red>No player has social spy enabled.</red> +feature.privatemessage.socialspy.list_title=<gold>Players with Social Spy enabled:</gold> +feature.privatemessage.socialspy.list_item=<gray>- <green>%1$s</green></gray> +feature.privatemessage.socialspy.list_total=<gold>Total: <yellow>%1$s</yellow> player(s)</gold> + diff --git a/src/main/resources/translations/en_GB/quests.properties b/src/main/resources/translations/en_GB/quests.properties new file mode 100644 index 000000000..a98c5e661 --- /dev/null +++ b/src/main/resources/translations/en_GB/quests.properties @@ -0,0 +1,72 @@ +feature.quests.menu.title=Quest menu +feature.quests.menu.page.previous=Previous page +feature.quests.menu.page.next=Next page +feature.quests.menu.tier_display=[%1$s/%2$s] +feature.quests.menu.quest_item.name=%1$s %2$s %3$s +feature.quests.menu.pending_rewards.title=Pending Rewards: +feature.quests.menu.pending_rewards.tier=Landing %1$s: +feature.quests.menu.rewards.title=Rewards: +feature.quests.menu.completed=Quest completed! +feature.quests.menu.progress=Progress: %1$s/%2$s (%3$s%%) +feature.quests.menu.current_objective=Current goal: +feature.quests.menu.steps.title=Advancement: +feature.quests.menu.next_tier.title=Next tier: + +feature.quests.actionbar.progress_label=Quest progress + +feature.quests.title.completed=Quest complete! +feature.quests.title.tier_completed=Landing %1$s finished ! + +feature.quests.message.money_reward=You have received %1$s +feature.quests.message.inventory_full_reward=You don't have enough space in your inventory to receive the reward! +feature.quests.message.completed=★ Quest complete! %1$s is now complete! +feature.quests.message.tier_completed=★ Bearing %1$s of %2$s valid ! +feature.quests.message.rewards_claimed=You have collected all the rewards of the tier %1$s of the quest %2$s ! +feature.quests.message.inventory_full_claim=You don't have enough space in your inventory to collect all the rewards. Free up some space and try again. +feature.quests.message.step_completed=✓ Step %1$s of %2$s validated! + +feature.quests.break_log.lore.line=%1$s : %2$s points + +feature.quests.break_diamond.name=Richou +feature.quests.break_diamond.description=Break diamond {target} ore{s} +feature.quests.break_log.name=Extreme lumberjack +feature.quests.break_log.description=Break {target} logs +feature.quests.break_stone.name=Stone Breaker +feature.quests.break_stone.description=Miner {target} stone blocks +feature.quests.break_wheat.name=Dedicated farmer +feature.quests.break_wheat.description=Harvest {target} wheat +feature.quests.chicken_thrower.name=Chicken thrower +feature.quests.chicken_thrower.description=Throw {target} eggs +feature.quests.consume_kebab.name=Yum yum +feature.quests.consume_kebab.description=Eat {target} kebab{s} +feature.quests.craft_cake.name=The pastry chef +feature.quests.craft_cake.description=Craft {target} cakes +feature.quests.craft_diamond_armor.name=Precious armor +feature.quests.craft_diamond_armor.description=Craft Full Diamond Armor +feature.quests.craft_diamond_armor.step.helmet=Diamond Helmet +feature.quests.craft_diamond_armor.step.chestplate=Diamond breastplate +feature.quests.craft_diamond_armor.step.leggings=Diamond pants +feature.quests.craft_diamond_armor.step.boots=Diamond Boots +feature.quests.craft_the_mixture.name=The Mixture +feature.quests.craft_the_mixture.description=Make {target} The Mixture{s} +feature.quests.enchant_first_item.name=Abracadabra +feature.quests.enchant_first_item.description=Enchant an item for the first time +feature.quests.fishing.name=Experienced fisherman +feature.quests.fishing.description=Catch {target} fish +feature.quests.kill_players.name=Hitman +feature.quests.kill_players.description=Kill {target} players +feature.quests.kill_super_creeper.name=The creeper boss +feature.quests.kill_super_creeper.description=Kill {target} Super Charged Creepers +feature.quests.kill_zombie.name=Zombie Apocalypse? +feature.quests.kill_zombie.description=Kill {target} zombies +feature.quests.mine_aywenite.name=Ohhh... is that precious? +feature.quests.mine_aywenite.description=Miner {target} Aywenite{s} +feature.quests.save_the_earth.name=Let's save the planet +feature.quests.save_the_earth.description=Plant {target} trees and make them grow with bone meal +feature.quests.smelt_iron.name=Hot in front! +feature.quests.smelt_iron.description=Melt {target} iron ingots +feature.quests.walk.name=The hiker +feature.quests.walk.description=Walk {target} blocks +feature.quests.win_contest.name=Choose your side +feature.quests.win_contest.description=Win {target} contest + diff --git a/src/main/resources/translations/en_GB/settings.properties b/src/main/resources/translations/en_GB/settings.properties new file mode 100644 index 000000000..6106bb8ab --- /dev/null +++ b/src/main/resources/translations/en_GB/settings.properties @@ -0,0 +1,55 @@ +feature.settings.menu.title=Settings menu +feature.settings.reset.title=<red>Reset settings</red> +feature.settings.reset.confirm_message=<red>Are you sure you want to reset all settings?</red> +feature.settings.reset.warning=<yellow>This action is irreversible.</yellow> +feature.settings.reset.cancel=<gray>Click to cancel</gray> +feature.settings.reset.success=<green>All settings have been reset.</green> + +feature.settings.item.status_enabled=<green>Enabled</green> +feature.settings.item.status_disabled=<red>Disabled</red> +feature.settings.item.change=<gray>Click to change</gray> +feature.settings.item.changed=<green>%1$s %2$s</green> +feature.settings.item.updated=<green>%1$s updated.</green> + +feature.settings.error.set=<red>Error :</red> %1$s +feature.settings.error.parse=<red>Error during parsing:</red> %1$s + +feature.settings.type.friend_requests.name=Friend Request Policy +feature.settings.type.friend_requests.description=Who can send you friend requests: +feature.settings.type.city_join_requests.name=City Join Request Policy +feature.settings.type.city_join_requests.description=Who can ask you to join a city: +feature.settings.type.mascot_play_sound.name=Receive sounds from mascots +feature.settings.type.mascot_play_sound.description=Turn pet sounds on or off +feature.settings.type.mailbox_receive.name=Mailbox reception policy +feature.settings.type.mailbox_receive.description=Who can send you mailboxes: +feature.settings.type.private_message.name=Receive private messages +feature.settings.type.private_message.description=Who can send you private messages: +feature.settings.type.notifications_sound.name=Message sounds +feature.settings.type.notifications_sound.description=Turn private message sounds on or off +feature.settings.type.teleport_title_fade.name=Title fade during teleports +feature.settings.type.teleport_title_fade.description=Enable or disable title fading during teleports +feature.settings.type.join_animation.name=Connection animation +feature.settings.type.join_animation.description=Enable or disable login animation + +feature.settings.policy.global.everyone.name=<green>Everyone</green> +feature.settings.policy.global.everyone.description=Visible to all players +feature.settings.policy.global.friends.name=<light_purple>Friends only</light_purple> +feature.settings.policy.global.friends.description=Visible only to my friends +feature.settings.policy.global.city_members.name=<gold>Members of my city</gold> +feature.settings.policy.global.city_members.description=Visible to members of my city +feature.settings.policy.global.nobody.name=<red>Person</red> +feature.settings.policy.global.nobody.description=Information hidden from everyone + +feature.settings.policy.friend.everyone.name=<green>Everyone</green> +feature.settings.policy.friend.everyone.description=Accept friend requests from all players +feature.settings.policy.friend.city_members_only.name=<gold>Members of my city</gold> +feature.settings.policy.friend.city_members_only.description=Only accept requests from members in my city +feature.settings.policy.friend.nobody.name=<red>Person</red> +feature.settings.policy.friend.nobody.description=Decline all friend requests + +feature.settings.policy.city.everyone.name=<green>Everyone</green> +feature.settings.policy.city.everyone.description=Accept requests from all players +feature.settings.policy.city.friends.name=<light_purple>Friends only</light_purple> +feature.settings.policy.city.friends.description=Only accept requests from my friends +feature.settings.policy.city.nobody.name=<red>Person</red> +feature.settings.policy.city.nobody.description=Refuse all requests diff --git a/src/main/resources/translations/en_GB/shop.properties b/src/main/resources/translations/en_GB/shop.properties new file mode 100644 index 000000000..4a5953b8a --- /dev/null +++ b/src/main/resources/translations/en_GB/shop.properties @@ -0,0 +1,113 @@ +# ** SHOPS ** +# * COMMANDS +# - Global Player Messages +feature.shop.player.is_not_him_shop=<red>This is not your shop.</red> +feature.shop.player.is_not_empty=<red>Your shop is not empty</red> +feature.shop.player.barrel_is_not_empty=<red>Your shop barrel is not empty</red> + +# - Player Commands +feature.shop.player.not_enough_money=<red>You do not have enough money to create a shop (</red>%1$s <red>required).</red> +feature.shop.player.creating_begin=<gold>You received a barrel to place your shop.</gold> +feature.shop.player.creating_cancel=<red>Shop creation cancelled.</red> +feature.shop.player.cancelling_pay=<green>You have been refunded</green> %1$s <green>for cancelling your shop creation.</green> +feature.shop.player.chunk_claimed=<red>This chunk is claimed by the enemy, you cannot place a shop here</red> +feature.shop.player.cant_create_barrel=<red>Cannot create a shop here, the barrel space must be free.</red> +feature.shop.player.cant_create_cash=<red>Cannot create a shop here, the space above the barrel must be free.</red> +feature.shop.player.deleted=<green>Your shop has been deleted!</green> +feature.shop.player.success_created=<green>Your shop has been created successfully! You can now add items to it.</green> +feature.shop.player.withdraw_money=%1$s <red>withdrawn from your personal account.</red> +feature.shop.player.pay_back=%1$s <green>refunded to your personal account</green> + +# * ERRORS +feature.shop.error.shop_is_null=<red>Error while opening the shop (the shop is null): call an admin.</red> +feature.shop.error.entity_is_null=<red>Error while opening the shop (the entity is null): call an admin.</red> +feature.shop.error.cannot_save_location=<red>Error while creating the shop (could not save the shop position): trying to delete the shop. Call an admin</red> +feature.shop.error.cannot_delete=<red>Cannot delete the shop: call an admin</red> +feature.shop.error.cannot_remove_furniture=<red>Error while deleting the shop (could not remove the furniture): call an admin</red> +feature.shop.error.not_found=<red>Shop not found</red> +feature.shop.error.pay_back=<gold>Since shop creation was not possible,</gold> %1$s <gold>has been refunded to you</gold> +feature.shop.error.multiblock=<red>Error while creating the shop (multiblock is null): call an admin</red> +feature.shop.error.barrel=<red>Barrel not detected, please contact staff</red> + +# * SHOP +feature.shop.get_turnover=<gold>You collected</gold> %1$s <gold>from your shop.</gold> +feature.shop.is_owner=<red>You cannot buy items from your own shop.</red> +feature.shop.not_enough_items=<red>The number of items purchased exceeds the number of items available in the shop</red> +feature.shop.not_enough_space=<red>You do not have enough space in your inventory to buy this number of items</red> +feature.shop.not_enough_money=<red>You do not have enough money to buy this number of items</red> +feature.shop.no_item=<red>This shop has no item</red> + +# * MENUS +feature.shop.menu.already_opened=<red>This menu is already open.</red> + +# - Main Shop Menu +feature.shop.menu.main.title=%1$s's shop menu +feature.shop.menu.main.delete.btn.title=<dark_red>Delete shop</dark_red> +feature.shop.menu.main.delete.btn.lore=<gold>Removing all money and items is required to delete the shop.</gold> \ +<br><dark_red><bold>WARNING, YOU WILL NOT BE ABLE TO GO BACK!</bold></dark_red> +feature.shop.menu.main.delete.confirm.accept=<dark_red>PERMANENTLY delete the shop.</dark_red> +feature.shop.menu.main.delete.confirm.refuse=<dark_green>Return to the shop menu</dark_green> +feature.shop.menu.main.remove_item.btn.title=<dark_red>Remove the shop item</dark_red> +feature.shop.menu.main.remove_item.btn.lore=<gold>Removing all stock of the item is required to delete it.</gold>\ +<br><dark_red><bold>WARNING, YOU WILL NOT BE ABLE TO GO BACK</bold></dark_red> +feature.shop.menu.main.remove_item.confirm.accept=<dark_red>PERMANENTLY delete the item.</dark_red> +feature.shop.menu.main.remove_item.confirm.refuse=<dark_green>Return to the shop menu</dark_green> +feature.shop.menu.main.sells.title=<light_purple>Open shop sales</light_purple> +feature.shop.menu.main.sells.lore.success=%1$s<dark_purple> sales completed</dark_purple> +feature.shop.menu.main.stats.title=<yellow>Open shop statistics</yellow> +feature.shop.menu.main.stats.lore.error=<red>No statistics available, because no item is for sale</red> +feature.shop.menu.main.stats.lore.success=<gold>Revenue: </gold>%1$s +feature.shop.menu.main.stocks.title=<aqua>Open shop stocks</aqua> +feature.shop.menu.main.stocks.lore.error=<red>Cannot open stocks, because no item is for sale.</red> +feature.shop.menu.main.stocks.lore.success=%1$s<blue> item(s) in stock</blue> +feature.shop.menu.main.modify_price.title=<yellow>Change item price</yellow> +feature.shop.menu.main.modify_price.message=<green>Price changed</green> +feature.shop.menu.main.remove.title=<red>Remove %1$s</red> +feature.shop.menu.main.remove.lore=<yellow><bold>CLICK HERE TO REMOVE %1$s</bold></yellow> +feature.shop.menu.main.add.title=<green>Add %1$s</green> +feature.shop.menu.main.add.lore=<yellow><bold>CLICK HERE TO ADD %1$s</bold></yellow> +feature.shop.menu.main.refuse.title=<red>Refuse purchase</red> +feature.shop.menu.main.refuse.lore=<gold>You refuse to buy</gold> %1$s <gold>item(s)</gold> \ +<br><yellow><bold>CLICK HERE TO REFUSE THE PURCHASE</bold></yellow> +feature.shop.menu.main.accept.title=<green>Accept purchase</green> +feature.shop.menu.main.accept.lore=<gold>It will cost you</gold> %1$s <gold>for</gold> %2$s <gold>item(s)</gold> \ +<br><yellow><bold>CLICK HERE TO ACCEPT THE PURCHASE</bold></yellow> +feature.shop.menu.main.yours=<green>This shop is yours.</green> + +# - Selling Menu +feature.shop.menu.selling.title=Selling menu +feature.shop.menu.selling.item_lore=<yellow><bold>CLICK HERE TO SELECT THIS ITEM FOR SALE</bold></yellow> +feature.shop.menu.selling.price_input=<gold>Enter the price at which you want to sell your item <bold>(commas must be replaced with periods)</bold>:</gold> +feature.shop.menu.selling.invalid_enter=<red>Invalid input, remember to replace commas with periods</red> +feature.shop.menu.selling.added_item=<green>Item added to the shop. Remember to fill the stocks in the stocks menu before you start selling.</green> +feature.shop.menu.selling.info.title=<dark_green>Shop information</dark_green> +feature.shop.menu.selling.info.lore=<green>Place the items you want to sell in the shop barrel,</green> \ +<br><green>then return to this menu to select the item to sell.</green> + +# - Stats Menu +feature.shop.menu.stats.title=Statistics +feature.shop.menu.stats.sells.title=<green>Total sales: %1$s</green> +feature.shop.menu.stats.sales.title=<dark_green>Total items sold: %1$s</dark_green> +feature.shop.menu.stats.turnover.title=<gold>Revenue: %1$s</gold> +feature.shop.menu.stats.buyers.title=<light_purple>Total unique buyers: %1$s</light_purple> +feature.shop.menu.stats.stocks.title=<aqua>Items remaining in stocks: %1$s</aqua> + +# - Sales Menu +feature.shop.menu.sales.title=Shop sales +feature.shop.menu.sales.item.name=<gold>Purchase of %1$s</gold> +feature.shop.menu.sales.item.lore=<green>On %1$s</green> \ +<br>%2$s<aqua> item(s) bought for </aqua>%3$s +feature.shop.menu.sales.get_turnover.name=<gold>Collect profits</gold> +feature.shop.menu.sales.get_turnover.lore=%1$s <gray>to collect from the shop (excluding taxes).</gray> \ +<br><gray>VAT is <light_purple>20%</light_purple></gray> \ +<br><gray>Last withdrawal:</gray> %2$s + +# - Stocks Menu +feature.shop.menu.stocks.title=Stocks Menu +feature.shop.menu.stocks.fill.name.not_full=<green>Fill from the barrel (</green>%1$s <green>item(s) available)</green> +feature.shop.menu.stocks.fill.name.full=<red>Cannot fill any more, the limit of 1792 items has been reached.</red> +feature.shop.menu.stocks.fill.success=<green>Stocks refilled.</green> +feature.shop.menu.stocks.empty.name=<red>Empty stocks</red> +feature.shop.menu.stocks.empty.lore=<gray>This will give you</gray> %1$s <gray>items</gray> +feature.shop.menu.stocks.empty.not_enough_space=<red>You do not have enough space in your inventory to collect all items from the shop!</red> +feature.shop.menu.stocks.empty.success=<green>You have collected the shop items</green> diff --git a/src/main/resources/translations/en_GB/tickets.properties b/src/main/resources/translations/en_GB/tickets.properties new file mode 100644 index 000000000..bd46a1056 --- /dev/null +++ b/src/main/resources/translations/en_GB/tickets.properties @@ -0,0 +1,33 @@ +feature.tickets.machine.title=<gold><bold>Ball machine</bold></gold> +feature.tickets.machine.hologram_line1=<gold><bold>Ball machine V1</bold></gold> +feature.tickets.machine.hologram_line2=<yellow>Click to play!</yellow> +feature.tickets.machine.hologram_line3=<aqua>Good luck !</aqua> + +feature.tickets.menu.get_tickets.title=<yellow>Collect my tickets</yellow> +feature.tickets.menu.get_tickets.lore1=<gray>Collect the tickets that</gray> +feature.tickets.menu.get_tickets.lore2=<gray>you have collected thanks to your</gray> +feature.tickets.menu.get_tickets.lore3=<gray>playing time on OpenMC V1.</gray> +feature.tickets.menu.no_stats=<red>You do not have statistics to recover tickets.</red> +feature.tickets.menu.already_claimed=<red>You have already collected your tickets!</red> +feature.tickets.menu.no_tickets=<red>You don't have any tickets to collect!</red> +feature.tickets.menu.claimed=<green>You have received <yellow>%1$s</yellow> <green>tickets!</green> + +feature.tickets.menu.open_ticket.title=<yellow>Open a ticket</yellow> +feature.tickets.menu.open_ticket.lore1=<gray>Open a box with 1 ticket.</gray> +feature.tickets.menu.open_ticket.lore2=<gray>You currently have <yellow>%1$s</yellow> <gray>tickets.</gray> +feature.tickets.menu.not_enough_tickets=<red>You don't have enough tickets!</red> +feature.tickets.loot.limit_reached=<red>You have already reached the limit of this item: </red> +feature.tickets.loot.machine_ball.seinyy.name=<light_purple><bold>Seinyy plush</bold></light_purple> +feature.tickets.loot.machine_ball.seinyy.lore=<gray>A little plush like Seinyy!</gray> +feature.tickets.loot.machine_ball.diamond.name=<aqua><bold>Diamonds</bold></aqua> +feature.tickets.loot.machine_ball.diamond.lore=<gray>Ohhhh but how precious is this thing!?</gray> +feature.tickets.loot.machine_ball.iron.name=<gray><bold>Iron Ingots</bold></gray> +feature.tickets.loot.machine_ball.iron.lore=<gray>Just iron, nothing crazy...</gray> +feature.tickets.loot.machine_ball.netherite.name=<dark_red><bold>Netherite Ingot</bold></dark_red> +feature.tickets.loot.machine_ball.netherite.lore=<gray>The rarest thing in the game!</gray> +feature.tickets.loot.machine_ball.oak_log.name=<gold><bold>Oak Logs</bold></gold> +feature.tickets.loot.machine_ball.oak_log.lore=<gray>Enough to make you a little house hehe</gray> +feature.tickets.loot.machine_ball.steak.name=<red><bold>Steaks</bold></red> +feature.tickets.loot.machine_ball.steak.lore=<gray>Yum yum, good meat!</gray> +feature.tickets.loot.machine_ball.coal.name=<dark_gray><bold>Coal</bold></dark_gray> +feature.tickets.loot.machine_ball.coal.lore=<gray>Something to make a fire</gray> diff --git a/src/main/resources/translations/en_GB/tpa.properties b/src/main/resources/translations/en_GB/tpa.properties new file mode 100644 index 000000000..88810f6a1 --- /dev/null +++ b/src/main/resources/translations/en_GB/tpa.properties @@ -0,0 +1,36 @@ +feature.tpa.already_pending=<dark_red>You already have a pending teleport request</dark_red> +feature.tpa.already_pending_usage=<dark_red>Type <gold>/tpacancel</gold> <dark_red>to cancel your current TP request</dark_red> +feature.tpa.player_not_found=<dark_red>The player does not exist or is not online</dark_red> +feature.tpa.cannot_tp_yourself=<dark_red>You cannot send a teleport request to yourself</dark_red> +feature.tpa.already_have_pending=<dark_red>You already have a teleport request awaiting your acceptance</dark_red> + +feature.tpa.request.target_message=<dark_aqua>The player</dark_aqua> %1$s <dark_aqua>wants to teleport to you</dark_aqua> +feature.tpa.request.target_accept=<dark_aqua>Type <dark_purple>/tpaccept</dark_purple> <dark_aqua>to accept</dark_aqua> +feature.tpa.request.target_deny=<dark_aqua>And <dark_purple>/tpadeny</dark_purple> <dark_aqua>to refuse</dark_aqua> +feature.tpa.request.sender_message=<dark_green>You sent a teleport request to %1$s</dark_green> +feature.tpa.request.sender_cancel=<dark_aqua>Type <dark_purple>/tpacancel</dark_purple> <dark_aqua>to cancel your tp request</dark_aqua> +feature.tpa.request.hover.accept=Accept the TP request +feature.tpa.request.hover.deny=Refuse the TP request +feature.tpa.request.hover.cancel=Cancel the TP request + +feature.tpa.accept.no_pending=<dark_red>You have no current teleport requests</dark_red> +feature.tpa.accept.multiple_requests=<dark_red>You have several teleport requests in progress, use <gold>/tpaccept <joueur></gold></dark_red> +feature.tpa.accept.no_request_from=<dark_red>You do not have a teleport request from %1$s</dark_red> +feature.tpa.accept.falling=<dark_red>The player is falling, teleportation impossible</dark_red> +feature.tpa.accept.you_falling=<dark_red>You are falling, teleportation impossible</dark_red> +feature.tpa.accept.player_not_online=<dark_red>The player is not online or does not exist</dark_red> +feature.tpa.accept.success=<dark_green>Teleport successful</dark_green> + +feature.tpa.deny.no_pending=<dark_red>You have no current teleport requests</dark_red> +feature.tpa.deny.multiple_requests=<dark_red>You have several teleport requests in progress, use <gold>/tpadeny <joueur></gold></dark_red> +feature.tpa.deny.no_request_from=<dark_red>You do not have a teleport request from %1$s</dark_red> +feature.tpa.deny.success=<dark_green>You refused the teleport request from %1$s</dark_green> +feature.tpa.deny.denied=%1$s <dark_red>refused your teleport request</dark_red> + +feature.tpa.cancel.no_pending=<dark_red>You have no current teleport requests</dark_red> +feature.tpa.cancel.player_not_online=<dark_red>The player is not online or does not exist</dark_red> +feature.tpa.cancel.success=<dark_green>You canceled your teleport request to %1$s</dark_green> +feature.tpa.cancel.cancelled=%1$s <dark_red>canceled his teleport request</dark_red> + +feature.tpa.expire.sender=<dark_red>Your teleport request to</dark_red> %1$s <dark_red>expired</dark_red> +feature.tpa.expire.target=<dark_aqua>The request for teleportation</dark_aqua> %1$s <dark_aqua>expired</dark_aqua> diff --git a/src/main/resources/translations/en_GB/updates.properties b/src/main/resources/translations/en_GB/updates.properties new file mode 100644 index 000000000..dbcbeaf46 --- /dev/null +++ b/src/main/resources/translations/en_GB/updates.properties @@ -0,0 +1,6 @@ +feature.updates.message.broadcast_version=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gray>You are currently playing on the version</gray> %1$s <gray>of the plugin <light_purple><bold>OpenMC</bold></light_purple>.</gray> \ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + diff --git a/src/main/resources/translations/en_GB/utils.properties b/src/main/resources/translations/en_GB/utils.properties new file mode 100644 index 000000000..a48eee6bc --- /dev/null +++ b/src/main/resources/translations/en_GB/utils.properties @@ -0,0 +1,3 @@ +core.utils.fade_title.teleporting=<bold><green>Teleport...</green></bold> +core.utils.aywenite.not_enough=You don't have enough%1$s <white>(%2$s necessary)</white> +core.utils.aywenite.not_enough_space=You do not have enough space in your inventory to receive %1$s of%2$s<white>. Aywenite is available in your mailbox</white> diff --git a/src/main/resources/translations/en_US/adminshop.properties b/src/main/resources/translations/en_US/adminshop.properties new file mode 100644 index 000000000..867cf25fe --- /dev/null +++ b/src/main/resources/translations/en_US/adminshop.properties @@ -0,0 +1,41 @@ +# ** ADMINSHOP ** +feature.adminshop.menu.category.name=Menu of an adminshop category +feature.adminshop.right_click_choice=<dark_gray>■</dark_gray> <gray>Left click to choose the item</gray> +feature.adminshop.lore_item.buy=Buy : %1$s +feature.adminshop.lore_item.sell=Sell : %1$s +feature.adminshop.right_click_buy=<dark_gray>■</dark_gray> <green>Left click to <dark_green>buy</dark_green></green> +feature.adminshop.left_click_sell=<dark_gray>■</dark_gray> <red>Right click to <dark_red>sell</dark_red></red> + +feature.adminshop.menu.main.name=AdminShop Main Menu + +feature.adminshop.menu.color_variants.name=Color variants menu for %1$s + +feature.adminshop.menu.confirm.name=AdminShop Confirmation Menu +feature.adminshop.menu.confirm.lore=<dark_gray>■</dark_gray> <yellow>Quantity :</yellow> <white>%1$s</white> <gray>(<white>%2$s <gray>stack</gray>%3$s</white>)</gray>\ + <br><dark_gray>■</dark_gray> <yellow>Unit price:</yellow> <green>%4$s</green>%5$s \ + <br><dark_gray>■</dark_gray> <yellow>Total price:</yellow> <green>%6$s</green>%7$s \ + <br> \ + <br><dark_gray>■</dark_gray> <green>Click the wheel to <dark_green>define</dark_green> the quantity manually</green> +feature.adminshop.menu.confirm.input=<yellow>Please enter the desired quantity:</yellow> +feature.adminshop.menu.confirm.quantity=%1$s %2$s +feature.adminshop.menu.confirm.add=Add +feature.adminshop.menu.confirm.remove=Withdraw + +feature.adminshop.menu.leaves_variants.name=Leaf Variants Menu +feature.adminshop.menu.leaves_variants.leaves=<gray>Leaves</gray> + +feature.adminshop.menu.log_variants.name=Menu of log variations +feature.adminshop.menu.log_variants.log=<gray>Logs</gray> + +feature.adminshop.have_enough_item=<red>You do not have this item in your inventory!</red> +feature.adminshop.have_enough_money=<red>You don't have enough money!</red> +feature.adminshop.inventory_full=<red>Your inventory is full!</red> +feature.adminshop.item_not_sellable=<red>This product is not for sale!</red> +feature.adminshop.item_not_buyable=<red>This product is not purchasable!</red> +feature.adminshop.player_not_enough_item=<red>You don't have enough of this item in your inventory!</red> +feature.adminshop.item_not_found=<red>This product does not exist!</red> +feature.adminshop.isnt_in_category=<red>Please open a store category first!</red> + +feature.adminshop.player_buy_item=You bought %1$s %2$s For %3$s +feature.adminshop.player_sell_item=You sold %1$s %2$s For %3$s + diff --git a/src/main/resources/translations/en_US/api.properties b/src/main/resources/translations/en_US/api.properties index 2236c4fce..faae7390a 100644 --- a/src/main/resources/translations/en_US/api.properties +++ b/src/main/resources/translations/en_US/api.properties @@ -1,2 +1,46 @@ -api.dialoginput.type_string=input english +# ** API ** +api.chronometer.chronometer_not_found=No timers found for the group %1$s +api.chronometer.chronometer_on=<green>Active stopwatches:</green> +api.chronometer.chronometer_on_list= - %1$s: %2$ss +api.chronometer.none_chronometer_player=<red>This player has no active timer.</red> + +# <arg:0> | Le temps restant en secondes +# <arg:1> | Le temps restant en millisecondes +api.cooldown.must_wait=You have to wait %s + +api.iteminteraction.not_egnough_space=<red>You don't have enough space in your inventory! The action was canceled</red> +api.iteminteraction.have_already_item=<red>You already have this item in your inventory! The action was canceled</red> +api.iteminteraction.cant_move_item=<red>You cannot move this object here</red> +api.iteminteraction.cant_move_item_by_shiftclick=<red>You cannot move this object by shift-click</red> +api.iteminteraction.cant_throw_item=<red>You cannot throw this item away</red> + +api.chatinput.cancel=You canceled the action + +api.dialoginput.type_string=Enter text +api.dialoginput.type_string.here=Enter text here + +api.dialoginput.type_float=Enter a number +api.dialoginput.type_float.here=Enter a number here + +api.dialoginput.button.save=Save +api.dialoginput.button.confirm=Confirm +api.dialoginput.button.cancel=Cancel +api.dialoginput.button.back=Back +api.dialoginput.button.next=Next +api.dialoginput.button.previous=Previous +api.dialoginput.button.finish=Finish +api.dialoginput.button.ignore=Ignore + +api.menulib.an_error_occurred=<red>An error has occurred, please contact the Staff</red> +api.menulib.no_permission=<red>You do not have permission to open this menu.</red> + +api.menulib.menu.back.title=<green>Back</green> +api.menulib.menu.back=Previous Menu +api.menulib.menu.back.lore=<grey>You will return to <green>%1$s</green>.</grey>\ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +api.menulib.menu.confirm.title=Confirmation Menu +api.menulib.menu.confirm.accept.title=<green>Accept</green> +api.menulib.menu.confirm.accept.lore=<yellow><bold>CLICK HERE TO VALIDATE</bold></yellow> +api.menulib.menu.confirm.deny.title=<red>Refuse</red> +api.menulib.menu.confirm.deny.lore=<yellow><bold>CLICK HERE TO REFUSE</bold></yellow> diff --git a/src/main/resources/translations/en_US/city.properties b/src/main/resources/translations/en_US/city.properties new file mode 100644 index 000000000..67629df8b --- /dev/null +++ b/src/main/resources/translations/en_US/city.properties @@ -0,0 +1,1390 @@ +# ** CITY ** +# * COMMANDS +# - Global / Shared +messages.city.player_no_in_city=<red>You're not in a city.</red> +messages.city.player_already_in_city=<red>You are already in a city.</red> +messages.city.target_in_other_city=<red>This player is not in your city.</red> +messages.city.target_no_city=<red>This player is not in a city.</red> +messages.city.player_no_permission_access=<red>You do not have permission to access the permissions of this city.</red> +messages.city.not_found=<red>This city does not exist.</red> +messages.city.havent_unlocked_feature=You have not unlocked this feature! Please upgrade your city to the level %1$s! +messages.city.city_not_enough_money=Your city doesn't have enough money (%1$s necessary) + +# - Player Commands +feature.city.commands.menu.must_place_mascot=You cannot open the cities menu without having placed the mascot +feature.city.commands.create.enter_city_name=Enter the city name +feature.city.commands.rename.invalid_name=The city name is invalid, it must contain only alphanumeric characters and maximum %1$s characters. +feature.city.commands.rename.success=The city was renamed to %1$s +feature.city.commands.list.empty=No city exists +feature.city.commands.top.empty=No cities are created at the moment + +# - Admin Commands +feature.city.admin.commands.delete.success=The city was deleted +feature.city.admin.commands.list.header=—— Cities (page %1$s / %2$s) —— +feature.city.admin.commands.list.copy_label= [copy] +feature.city.admin.commands.list.copy_uuid_hover=Click to copy the UUID +feature.city.admin.commands.list.nav.prev=« Previous +feature.city.admin.commands.list.nav.next=Next » +feature.city.admin.commands.info.not_found=This city does not exist +feature.city.admin.commands.rename.name_already_used=A city already has the name you want to put +feature.city.admin.commands.rename.success=The city was renamed +feature.city.admin.commands.balance.set_success=City balance has been changed +feature.city.admin.commands.balance.get_success=The city's balance is %1$s +feature.city.admin.commands.add_player.already_in_city=This player is already in a city +feature.city.admin.commands.add_player.success=The player has been added +feature.city.admin.commands.remove_player.not_in_city=This player is not in a city +feature.city.admin.commands.remove_player.is_owner=This player is the owner of the city +feature.city.admin.commands.remove_player.success=The player has been removed +feature.city.admin.commands.getcity.not_in_city=The player is not in a city +feature.city.admin.commands.getcity.success=The player is in the city %1$s (%2$s) +feature.city.admin.commands.claim_bypass.disabled=You have disabled claims bypass +feature.city.admin.commands.claim_bypass.enabled=You have activated claims bypass + +# - Invite Commands +feature.city.invite.commands.invite.success=You invited %1$s in your city +feature.city.invite.commands.invite.received=You have been invited by %1$s in the city %2$s +feature.city.invite.commands.invite.accept=<dark_gray>Do <green>/city accept</green> to accept</dark_gray> +feature.city.invite.commands.invite.deny=<dark_gray>Do <red>/city deny</red> to refuse</dark_gray> +feature.city.invite.commands.invite.accept_hover=Accept the invitation +feature.city.invite.commands.invite.deny_hover=Refuse the invitation +feature.city.invite.commands.accept.none_pending=You have no pending invitations +feature.city.invite.commands.accept.not_invited=%1$s didn't invite you +feature.city.invite.commands.accept.joined=You joined %1$s +feature.city.invite.commands.accept.inviter_notified=%1$s accepted your invitation! +feature.city.invite.commands.deny.inviter_notified=%1$s refused your invitation + +# - Permissions Commands +feature.city.perms.commands.switch.removed=%1$s lost permission "%2$s" +feature.city.perms.commands.switch.added=%1$s received permission "%2$s" +feature.city.perms.commands.add.already_has=%1$s already has this permission +feature.city.perms.commands.remove.does_not_have=%1$s does not have this permission +feature.city.perms.commands.modified=The permissions of %1$s have been modified + +# - City View Command +feature.city.view.commands.no_city=No towns were found in the surrounding area. +feature.city.view.commands.visiualizing=Viewing current city claims for 30 seconds + +# * ACTIONS +# - Type Change +feature.city.type.in_peace=in peace +feature.city.type.in_war=at war +feature.city.type.confirm_change=<red>Are you sure you want to change the type of your <light_purple>city</light_purple></red> +feature.city.type.change_type_to_type=<gray>You will go from one <light_purple>city</light_purple> %1$s <gray>to a</gray> <light_purple>city</light_purple> %2$s</gray> +feature.city.type.warning_war=<red>⚠ You may be exposed to wars against other cities at any time!</red> +feature.city.type.mascot_losing_level=<red>⚠ Your mascot <bold><dark_red>will lose 1 level!</dark_red></bold></red> +feature.city.type.not_change_type=<gray>Do not change the</gray> <light_purple>type of city</light_purple> +feature.city.type.mascot_not_exist_change_type=You do not have a mascot to change the type of your city (contact the staff) +feature.city.type.mascot_must_by_alive_change_type=Your mascot must be alive to change the city type +feature.city.type.must_wait_before_change_type=You have to wait %1$s before changing city type +feature.city.type.change_type_success=You have changed the type of your city from %1$s has %2$s + +# - Chest +feature.city.chest.upgraded=The trunk has been improved + +# - Claim +feature.city.claim.cant_claim_here=You can't expand your city here +feature.city.claim.isnt_adjacent=This chunk is not adjacent to your city +feature.city.claim.is_in_region=This chunk is in a protected region +feature.city.claim.already_claim=This chunk is already claimed by %1$s. +feature.city.claim.claim_success=Your city has been expanded +feature.city.claim.already_claim_in_adjacent=One of the plots around this chunk is claim + +# - Create +feature.city.create.success=Your city has been created: %1$s +feature.city.create.free_claim=<gray>+</gray> %1$s <gray>free chunks</gray> + +# - Delete +feature.city.delete.confirm.lore=<gray>Do you really want to dissolve the city?</gray> %1$s <gray>?</gray> +feature.city.delete.confirm.warning=<red>This action is <dark_red><bold>IRREVERSIBLE</bold></dark_red></red> +feature.city.delete.confirm.deny=<gray>Don't delete the city</gray> +feature.city.delete.success=Your city has been deleted + +# - Kick +feature.city.kick.success=You excluded %1$s of the city %2$s +feature.city.kick.info=You were kicked out of town %1$s + +# - Leave +feature.city.leave.success=You left %1$s +feature.city.leave.info=%1$s left town %2$s + +# - Transfer +feature.city.transfer.confirm.accept=<gray>Do you really want to give the city to</gray> %1$s <gray>?</gray> +feature.city.transfer.confirm.deny=<gray>You are not going to give the city to</gray> %1$s +feature.city.transfer.success=The new owner is %1$s +feature.city.transfer.info=You became the owner of the city + +# - Unclaim +feature.city.unclaim.must_own_claim=You must own this claim for unclaim +feature.city.unclaim.cant_unclaim_mascot_claim=You cannot unclaim the mascot's claim +feature.city.unclaim.success=You have just shrunk your city by deleting this claim + +# * CONDITIONS +# - Permissions / Access +feature.city.player_cannot_claim=<red>You don't have permission to expand your city.</red> +feature.city.player_cannot_kick=<red>You do not have permission to exclude this member.</red> +feature.city.player_cannot_kick_himself=<red>You can't exclude yourself.</red> + +feature.city.player_isnt_owner=<red>You are not the owner of the city</red> +feature.city.player_is_owner=The owner has all the powers. +feature.city.only_owner_can_do_this=<red>Only the city owner can do this.</red> +feature.city.cant_do_this=You do not have permission to do this! + + +# - Manage +feature.city.conditions.manage.rename.no_permission=You don't have permission to rename your city. +feature.city.conditions.manage.transfer.self=You can't transfer the city to yourself +feature.city.conditions.manage.transfer.already_owner=This player is already the owner of the city +feature.city.conditions.manage.delete.must_wait=You have to wait before you can delete your city (%1$s seconds) +feature.city.conditions.manage.delete.cant_in_war=You cannot delete your city during a war + +# - Claim / Unclaim +feature.city.conditions.claim.no_permission=You don't have permission to claim +feature.city.conditions.unclaim.no_permission=You do not have permission to unclaim +feature.city.conditions.claim.not_enough_city_money=You don't have enough money in your bank to claim (%1$s necessary) + +# - Create +feature.city.conditions.create.must_wait=You have to wait before you can create your city (%1$s seconds) +feature.city.conditions.create.not_enough_player_money=You don't have enough money to create your city (%1$s necessary) + +# - Resources +feature.city.conditions.resource.not_enough_aywenite=You don't have enough Aywenite (%1$s necessary) + +# - Chest +feature.city.conditions.chest.open.no_permission=You do not have permissions to view the vault +feature.city.conditions.chest.open.already_opened_by=The trunk is already opened by %1$s +feature.city.conditions.chest.upgrade.no_permission=You do not have permissions to upgrade the city chest +feature.city.conditions.chest.upgrade.max_level=The city chest is already at the maximum level (%1$s maximum page(s). To improve this limit, upgrade to a higher city level + +# - Invite +feature.city.conditions.invite.no_permission=You don't have permission to invite players into the city +feature.city.conditions.invite.target_already_in_city=This person is already in a city +feature.city.conditions.invite.target_cant_receive=This person cannot receive an invitation +feature.city.conditions.invite.member_limit_reached=You have reached the member limit which is %1$s. Upgrade your city to the next level! +feature.city.conditions.invite.expired=The invitation has expired +feature.city.conditions.invite.city_member_limit_reached=The city has reached its membership limit + +# - Type +feature.city.conditions.type.no_permission=You do not have permission to change the status of your city +feature.city.conditions.type.already_in_type=You are already in %1$s +feature.city.conditions.type.must_wait=You have to wait %1$s to change city type +feature.city.conditions.type.not_enough_city_money=You must have at least %1$s in your bank to change the type of your city + +# - Leave +feature.city.conditions.leave.owner_cant_leave=You cannot leave the city because you own it, delete the city or transfer ownership + +# * LISTENERS +feature.city.listeners.tnt_explode=You took a TNT in your city by the city %1$s and posed by %2$s ! <dark_gray>(</dark_gray>%3$s<dark_gray>/</dark_gray>%4$s daily tnt<dark_gray>)</dark_gray> + +# * MENUS +feature.city.menus.main.name=Cities Menu +feature.city.menus.main.bank.title=<gold>The bank</gold> +feature.city.menus.main.bank.lore.unlocked=<gray>Store your money and that of your city</gray> \ + <br><gray>Contribute to the development of your city</gray> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE ACCOUNTS</bold></yellow> +feature.city.menus.main.bank.lore.locked=<gray>Store your money and that of your city</gray> \ + <br><gray>Contribute to the development of your city</gray> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.map.title=<green>Size of your city</green> +feature.city.menus.main.map.no_permission=<red>You do not have permission to view the claims</red> +feature.city.menus.main.map.lore.access=<gray>Your city has an area of</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MAP</bold></yellow> +feature.city.menus.main.map.lore.view=<gray>Your city has an area of</gray> %1$s +feature.city.menus.main.leave.title=<red>Leave the city</red> +feature.city.menus.main.leave.confirm.accept=<gray>Do you really want to leave</gray> %1$s <gray>?</gray> +feature.city.menus.main.leave.confirm.deny=<gray>Stay in the city</gray> %1$s +feature.city.menus.main.leave.lore.leave=<gray>You go <red>to leave</red></gray> %1$s \ + <br><yellow><bold>CLICK HERE TO GO</bold></yellow> +feature.city.menus.main.leave.lore.owner_cant=<gray>You can't <red>to leave</red></gray> %1$s <gray>because you are <red>owner</red></gray> +feature.city.menus.main.chest.title=<green>The city chest</green> +feature.city.menus.main.chest.lore.locked=<gray>Access your city's vault to</gray> \ + <br><gray>store items in common</gray> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.chest.lore.opened=<gray>Access your city's vault to</gray> \ + <br><gray>store items in common</gray> \ + <br><gray>This chest is already opened by</gray> %1$s +feature.city.menus.main.chest.lore.click=<gray>Access your city's vault to</gray> \ + <br><gray>store items in common</gray> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE CHEST</bold></yellow> +feature.city.menus.main.chest.lore.no_permission=<gray>You do not have the right to view the chest!</gray> +feature.city.menus.main.milestone.title=<dark_aqua>Milestone of your city</dark_aqua> +feature.city.menus.main.milestone.lore=<dark_gray><italic>Access the city progression route!</italic></dark_gray> \ + <br><dark_gray><italic>Important for unlocking the different city features!</italic></dark_gray> \ + <br><gray>Level:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MILESTONE</bold></yellow> +feature.city.menus.main.notation.title=<dark_aqua>The rating of your city</dark_aqua> +feature.city.menus.main.notation.lore=<gray>City rating:</gray> %1$s<gray>/</gray>%2$s \ + <br><gray>Money won:</gray> %3$s %4$s \ + <br><yellow><bold>CLICK HERE TO VIEW RATING</bold></yellow> +feature.city.menus.main.notation.lore.none=<red>You have no rating</red> +feature.city.menus.main.notation.lore.locked=<red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.notation.dialog.title=Ranking of Cities - Week %1$s of %2$s +feature.city.notation.header.city=City +feature.city.notation.header.activity=Activ. +feature.city.notation.header.economy=Econo. +feature.city.notation.header.military=Milit. +feature.city.notation.header.architectural=Arch. +feature.city.notation.header.coherence=Oh. +feature.city.notation.header.total=Total +feature.city.notation.header.money=Money +feature.city.notation.table.none=No rating +feature.city.notation.hover.city.mascot_level=Mascot level: %1$s +feature.city.notation.hover.city.status=Status : %1$s +feature.city.notation.hover.city.members=Members: %1$s +feature.city.notation.hover.city.more_info=Click here for more information about the city +feature.city.notation.hover.total.none=No total for you +feature.city.notation.hover.total.title=Details +feature.city.notation.hover.total.activity=Activity %1$s +feature.city.notation.hover.total.economy=Economy %1$s +feature.city.notation.hover.total.military=Military %1$s +feature.city.notation.hover.total.architecture=Architecture %1$s +feature.city.notation.hover.total.coherence=Consistency %1$s +feature.city.notation.hover.total.justification=Rationale for rating +feature.city.notation.hover.activity=Rating ranging from 0 to %1$s points, which includes, the number of active players in the city per a city's playing time. \ + <br>Note on %1$s points +feature.city.notation.hover.economy=Note which includes, the wealth of the city and the GDP per capita of the city. \ + <br>Note on %1$s points +feature.city.notation.hover.military=Rating which is based on the quantity of power points in your city, recoverable through wars \ + <br>Note on %1$s points +feature.city.notation.hover.coherence=Coherence note which includes, the coherence of the constructions between them, the harmony of the colors, the transition between 2 themes, ... \ + <br>Note on %1$s points +feature.city.notation.hover.architectural=Architectural note which includes the diversity of blocks used, the architecture of the builds as well as the vegetation. \ + <br>Note on %1$s points +feature.city.notation.join.title=RATING! +feature.city.notation.join.message=Your city has been rated and is placed no.%1$s of the best cities! +feature.city.notation.join.hover=Click to see your city's rating! +feature.city.notation.command.none=No ratings have been posted for this week! +feature.city.notation.admin.edit.example=Example: this week we are %1$s and next week, the %2$s +feature.city.notation.admin.edit.prompt=Enter the week format (%1$s) +feature.city.notation.admin.edit.invalid=Wrong entry! %1$s +feature.city.notation.admin.edit.none=No city to edit +feature.city.notation.admin.edit.error=Error opening menu +feature.city.notation.admin.publish.missing=You must do <gold>/admcity notation edit</gold> and edit the week %1$s +feature.city.notation.admin.publish.success=The week %1$s was published, the savings and activity scores as well as the gains were calculated and given +feature.city.notation.edit.teleport=Teleport to the city in question. +feature.city.notation.edit.teleport.success=You have been teleported to the city %1$s. Click on the message to continue editing. +feature.city.notation.edit.input.architectural=Architectural Note +feature.city.notation.edit.input.architectural.hover=Note on %1$s points \ + <br>which takes into account the buildings, infrastructure and aesthetics of the city +feature.city.notation.edit.input.coherence=Rating Consistency +feature.city.notation.edit.input.coherence.hover=Note on %1$s points \ + <br>which takes into account the consistency of builds and the gradual change of theme. +feature.city.notation.edit.input.justification=Rationale for rating +feature.city.notation.edit.input.justification.hover=A justification of the grade is mandatory +feature.city.notation.edit.title=Ranking of weekly ratings %1$s - City Edition: %2$s (%3$s/%4$s) +feature.city.notation.edit.completed=The ratings for the %1$s were completely done +feature.city.menus.main.ranks.title=<gold>City Ranks</gold> +feature.city.menus.main.ranks.lore.unlocked=<gray>Manage your city's ranks</gray> \ + <br><gray>Your Rank:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE GRADES</bold></yellow> +feature.city.menus.main.ranks.lore.locked=<gray>Manage your city's ranks</gray> \ + <br><red>You must be Level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.type.title=<dark_purple>The status of your city</dark_purple> +feature.city.menus.main.type.lore.status=<gray>Your city is in</gray> %1$s +feature.city.menus.main.type.lore.war_command=<gray>You can start a war with <red>/war</red></gray> +feature.city.menus.main.type.lore.cooldown=<red>Cooldown</red> <gray>:</gray> %1$s +feature.city.menus.main.type.lore.click=<yellow><bold>CLICK HERE TO CHANGE IT</bold></yellow> +feature.city.menus.main.mayor.title=<blue>The elections</blue> +feature.city.menus.main.mayor.locked.phase2=<gray>At the moment, the mayors are all diligent in the cities!</gray> \ + <br><gray>Except yours!</gray> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.mayor.locked.phase1=<gray>The elections are currently <blue>open</blue></gray> \ + <br><red>Closure in</red> %1$s \ + <br><gray>But you can't access it!</gray> \ + <br><red>You must be level </red>%2$s<red> to unlock this</red> +feature.city.menus.main.mayor.locked.error=<red>Error</red> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.main.mayor.election.phase2=<gray>Your city has a <blue>mayor</blue> !</gray> \ + <br><gray>Mayor:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE INFORMATION</bold></yellow> +feature.city.menus.main.mayor.election.phase1=<gray>The elections are currently <blue>open</blue></gray> \ + <br><red>Closure in</red> %1$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE ELECTIONS</bold></yellow> +feature.city.menus.main.mayor.election.error=<red>Error</red> +feature.city.menus.main.mayor.owner.phase2=<gray>Your city has a <blue>mayor</blue> !</gray> \ + <br><gray>Mayor:</gray> %1$s \ + <br><red>Opening of elections in</red> %2$s \ + <br><yellow><bold>CLICK HERE TO ACCESS THE INFORMATION</bold></yellow> +feature.city.menus.main.mayor.owner.phase1.has_mayor=<gray>The elections are <blue>disabled</blue></gray> \ + <br><red>You need at least</red> %1$s <red>members</red> \ + <br><gray>You have already chosen your <dark_aqua>reforms</dark_aqua> !</gray> \ + <br><gray>However you can change your color!</gray> \ + <br><red>Closure in</red> %2$s +feature.city.menus.main.mayor.owner.phase1.no_mayor=<gray>The elections are <blue>disabled</blue></gray> \ + <br><red>You need at least</red> %1$s <red>members</red> \ + <br><gray>Only the owner can choose <dark_aqua>the reforms</dark_aqua> that he wants.</gray> \ + <br><red>Closure in</red> %2$s \ + <br><yellow><bold>CLICK HERE TO CHOOSE YOUR REFORMS</bold></yellow> +feature.city.menus.main.mayor.owner.phase1.viewer=<gray>The elections are <blue>disabled</blue></gray> \ + <br><red>You need at least</red> %1$s <red>members</red> \ + <br><gray>Only the owner can choose <dark_aqua>the reforms</dark_aqua> that he wants.</gray> \ + <br><red>Closure in</red> %2$s +feature.city.menus.main.mayor.owner.error=<red>Error</red> +feature.city.menus.main.mascots.title=<red>Your Mascot</red> +feature.city.menus.main.mascots.lore.dead=<gray>Life :</gray> %1$s<dark_red>/</dark_red>%2$s \ + <br><gray>Status :</gray> <red>Dead</red> \ + <br><gray>Reappears in:</gray> %3$s \ + <br><gray>Level :</gray> %4$s \ + <br><yellow><bold>CLICK HERE TO INTERACT WITH</bold></yellow> +feature.city.menus.main.mascots.lore.alive=<gray>Life :</gray> %1$s<dark_red>/</dark_red>%2$s \ + <br><gray>Status :</gray> <green>Envy</green> \ + <br><gray>Level :</gray> %3$s \ + <br><yellow><bold>CLICK HERE TO INTERACT WITH</bold></yellow> +feature.city.menus.main.mascots.lore.not_found=<red>Mascot not found</red> +feature.city.menus.main.mascots.lore.missing=<red>Mascot non-existent (contact the staff)</red> +feature.city.menus.main.manage.title=%1$s +feature.city.menus.main.manage.lore.edit=<gray>City owner:</gray> %1$s \ + <br><gray>Mayor of the city:</gray> %2$s \ + <br><gray>Member(s):</gray> %3$s/%4$s \ + <br><yellow><bold>CLICK HERE TO CHANGE THE CITY</bold></yellow> +feature.city.menus.main.manage.lore.view=<gray>City owner:</gray> %1$s \ + <br><gray>Mayor of the city:</gray> %2$s \ + <br><gray>Member(s):</gray> %3$s/%4$s +feature.city.menus.main.members.title=<light_purple>List of Members</light_purple> +feature.city.menus.main.members.lore=<gray>There is currently</gray> %1$s <gray>member(s) in your city</gray> \ + <br><gray>You have a member limit of</gray> %2$s <gray>member(s)</gray> \ + <br><yellow><bold>CLICK HERE TO SEE THE LIST OF PLAYERS</bold></yellow> +feature.city.menus.no_city.name=Cities Menu - None +feature.city.menus.no_city.invitations.none.title=<gray>You have no <gold>invitation</gold></gray> +feature.city.menus.no_city.invitations.none.lore=<gray>An inhabitant of a city owes you <gold>invite</gold></gray> \ + <br><gold>via /city invite</gold> +feature.city.menus.no_city.invitations.count.title=<gray>You have</gray> %1$s <gray>invitation</gray>%2$s +feature.city.menus.no_city.invitations.count.lore=<yellow><bold>CLICK HERE TO SEE YOUR INVITATIONS</bold></yellow> +feature.city.menus.no_city.create.title=<gray>Create <light_purple>your city</light_purple></gray> +feature.city.menus.no_city.create.lore.cooldown=<gray>You can also create <light_purple>your city</light_purple></gray> \ + <br><gray>Do <light_purple>/city create [name]</light_purple> or click here!</gray> \ + <br><gray>You have to wait</gray> %1$s <gray>before you can create a city</gray> +feature.city.menus.no_city.create.lore.ready=<gray>You can also create <light_purple>your city</light_purple></gray> \ + <br><gray>Do <light_purple>/city create [name]</light_purple> or click here!</gray> \ + <br><red>Costs:</red> \ + <br><dark_gray>-</dark_gray> %1$s %2$s \ + <br><dark_gray>-</dark_gray> %3$s <gray>of Aywenite</gray> \ + <br><yellow><bold>CLICK HERE TO CREATE YOUR CITY</bold></yellow> +feature.city.menus.invitations.name=Menu of cities - Invitations +feature.city.menus.invitations.item.name=%1$s invited you to %2$s +feature.city.menus.invitations.item.lore=<yellow><bold>CLICK HERE TO JOIN THE CITY</bold></yellow> +feature.city.menus.invitations.confirm.deny=<gray>Refuse</gray> %1$s +feature.city.menus.type.name=Cities Menu - Type +feature.city.menus.type.peace.title=<green>City at peace</green> +feature.city.menus.type.peace.lore=<gray>Your safety is assured!</gray> \ + <br><gold><bold>TIPS: Perfect for building, and trading with complete peace of mind!</bold></gold> +feature.city.menus.type.war.title=<red>City at war</red> +feature.city.menus.type.war.lore=<gray>A world of war and competition.</gray> \ + <br><red><bold>⚠ WARNING</bold></red> \ + <br><dark_gray>-</dark_gray> <red>Cities being in the same status as you can declare war on you!</red> \ + <br><gold><bold>TIPS: Ideal for tryhards and competitive riders</bold></gold> +feature.city.menus.type.war.lore.locked=<gray>A world of war and competition.</gray> \ + <br><red><bold>⚠ WARNING</bold></red> \ + <br><dark_gray>-</dark_gray> <red>Cities being in the same status as you can declare war on you!</red> \ + <br><gold><bold>TIPS: Ideal for tryhards and competitive riders</bold></gold> \ + <br><red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.menus.transfer.name=Cities Menu - Transfer +feature.city.menus.transfer.item.lore=<gray>Do you want to transfer the city to</gray> %1$s <gray>?</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.menus.modify.name=Cities Menu - Edit +feature.city.menus.modify.rename.title=<gray>Rename your <light_purple>city</light_purple></gray> +feature.city.menus.modify.rename.lore=<gray>You can rename your <light_purple>city</light_purple>.</gray> \ + <br><gray>Current name:</gray> %1$s \ + <br><yellow><bold>CLICK HERE TO EDIT IT</bold></yellow> +feature.city.menus.modify.rename.invalid=<red>Please enter correct entry</red> +feature.city.menus.modify.transfer.title=<gray>Transfer the <light_purple>city</light_purple></gray> +feature.city.menus.modify.transfer.lore=<light_purple>The City</light_purple> <gray>will be transferred to the person you select</gray> \ + <br><yellow><bold>CLICK HERE TO CHOOSE</bold></yellow> +feature.city.menus.modify.transfer.no_member=<red>There is no member to whom you can transfer the city</red> +feature.city.menus.modify.delete.title=<gray>Delete city</gray> +feature.city.menus.modify.delete.lore.wait=<gray>You will definitely delete the city!</gray> \ + <br><gray>You have to wait</gray> %1$s <gray>before you can delete your city</gray> +feature.city.menus.modify.delete.lore.click=<gray>You will definitely delete the city!</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.menus.perms.name=Permissions %1$s +feature.city.menus.perms.permission.remove=Withdraw %1$s +feature.city.menus.perms.permission.add=Add %1$s +feature.city.menus.perms.permission=%1$s +feature.city.menus.perms.permission.lore.remove=<yellow><bold>CLICK TO REMOVE THIS PERMISSION</bold></yellow> +feature.city.menus.perms.permission.lore.add=<yellow><bold>CLICK TO ADD THIS PERMISSION</bold></yellow> +feature.city.menus.perms.bulk.title=Manage all member permissions +feature.city.menus.perms.bulk.lore=<red>Left click to remove everything</red> \ + <br><green>Right click to add all</green> +feature.city.menus.chest.name=Safe menu %1$s - Page %2$s +feature.city.menus.chest.upgrade.title=<green>Upgrade the trunk</green> +feature.city.menus.chest.upgrade.lore.click=<gray>Your city must have:</gray> \ + <br><dark_gray>-</dark_gray> %1$s %2$s \ + <br><dark_gray>-</dark_gray> %3$s <dark_gray>of Aywenite</dark_gray> \ + <br><yellow><bold>CLICK HERE TO IMPROVE THE CHEST</bold></yellow> +feature.city.menus.chest.upgrade.lore.max=<gray>Your city must have:</gray> \ + <br><dark_gray>-</dark_gray> %1$s %2$s \ + <br><dark_gray>-</dark_gray> %3$s <dark_gray>of Aywenite</dark_gray> \ + <br><red>Limit reached</red> +feature.city.menus.chunks.name=Cities menu - The map +feature.city.menus.chunks.loading.title=<yellow>Loading...</yellow> +feature.city.menus.chunks.loading.lore=<gray>Loading chunk data in progress</gray> +feature.city.menus.chunks.free_claim.title=<gold>Claim free</gold> +feature.city.menus.chunks.free_claim.lore=<gray>You have</gray> %1$s <gray>free claim!</gray> +feature.city.menus.chunks.refresh.title=<gold>Refresh map</gold> +feature.city.menus.chunks.refresh.lore=<gray>To update <gold>claims displayed</gold></gray> +feature.city.menus.chunks.protected.title=<red>Claim in a protected region</red> +feature.city.menus.chunks.protected.lore=<red>This area is protected by a WorldGuard region</red> \ + <br><gray>Position :</gray> %1$s +feature.city.menus.chunks.player_claim.title=<blue>Claim your city</blue> +feature.city.menus.chunks.player_claim.lore.reward=<gray>City :</gray> %1$s \ + <br><gray>Position :</gray> %2$s \ + <br><red>Brings you:</red> \ + <br><dark_gray>-</dark_gray> %3$s %4$s \ + <br><dark_gray>-</dark_gray> %5$s <dark_gray>of Aywenite</dark_gray> \ + <br><yellow><bold>CLICK TO UNCLAIM</bold></yellow> +feature.city.menus.chunks.player_claim.lore.basic=<gray>City :</gray> %1$s \ + <br><gray>Position :</gray> %2$s \ + <br><yellow><bold>CLICK TO UNCLAIM</bold></yellow> +feature.city.menus.chunks.other_claim.title=<red>Claim from an opposing city</red> +feature.city.menus.chunks.other_claim.lore=<gray>City :</gray> %1$s \ + <br><gray>Position :</gray> %2$s +feature.city.menus.chunks.unclaimed.title=<red>Free claim</red> +feature.city.menus.chunks.unclaimed.lore.free=<gray>Position :</gray> %1$s \ + <br><red>Costs:</red> \ + <br><dark_gray>-</dark_gray> Claim free \ + <br><yellow><bold>CLICK TO CLAIM</bold></yellow> +feature.city.menus.chunks.unclaimed.lore.cost=<gray>Position :</gray> %1$s \ + <br><red>Costs:</red> \ + <br><dark_gray>-</dark_gray> %2$s %3$s \ + <br><dark_gray>-</dark_gray> %4$s <dark_gray>of Aywenite</dark_gray> \ + <br><yellow><bold>CLICK TO CLAIM</bold></yellow> +feature.city.menus.chunks.confirm_claim.accept=<gray>Do you really want to claim this chunk?</gray> +feature.city.menus.chunks.confirm_claim.deny=<gray>Cancel the claim procedure</gray> +feature.city.menus.chunks.confirm_unclaim.accept=<gray>Do you really want to unclaim this chunk?</gray> +feature.city.menus.chunks.confirm_unclaim.deny=<gray>Cancel the unclaim procedure</gray> +feature.city.menus.top.name=City ranking menu +feature.city.menus.top.sort.title=Sort +feature.city.menus.top.sort.header=<gray>Click to sort by</gray> +feature.city.menus.top.sort.selected_prefix=<gold>➢ </gold> +feature.city.menus.top.sort.unselected_prefix=<aqua> </aqua> +feature.city.menus.top.sort.global=Overall +feature.city.menus.top.sort.power=Powers +feature.city.menus.top.sort.money=Riches +feature.city.menus.top.sort.claim=Area +feature.city.menus.top.sort.population=Population +feature.city.menus.top.item.title=no.%1$s %2$s +feature.city.menus.top.item.lore=<gray>Owner :</gray> %1$s \ + <br><gray>Level :</gray> %2$s \ + <br><gray>Members:</gray> %3$s/%4$s \ + <br><gray>Area:</gray> %5$s <gray>chunks</gray> \ + <br><gray>Riches:</gray> %6$s %7$s \ + <br><gray>Power points:</gray> %8$s +feature.city.menus.top.item.lore.with_mayor=<gray>Owner :</gray> %1$s \ + <br><gray>Mayor:</gray> %2$s \ + <br><gray>Level :</gray> %3$s \ + <br><gray>Members:</gray> %4$s/%5$s \ + <br><gray>Area:</gray> %6$s <gray>chunks</gray> \ + <br><gray>Riches:</gray> %7$s %8$s \ + <br><gray>Power points:</gray> %9$s +feature.city.menus.list.name=City list menu +feature.city.menus.list.sort.title=Sort +feature.city.menus.list.sort.header=<gray>Click to sort by</gray> +feature.city.menus.list.sort.selected_prefix=<gold>➢ </gold> +feature.city.menus.list.sort.unselected_prefix=<aqua> </aqua> +feature.city.menus.list.sort.name=Name +feature.city.menus.list.sort.wealth=Riches +feature.city.menus.list.sort.population=Population +feature.city.menus.list.sort.peace_war=Peace/Guerre +feature.city.menus.list.item.title=%1$s +feature.city.menus.list.item.lore=<gray>Owner :</gray> %1$s \ + <br><gray>Level :</gray> %2$s \ + <br><gray>Members:</gray> %3$s/%4$s member%5$s \ + <br><yellow>Kind :</yellow> %6$s \ + <br><gold>Riches:</gold> %7$s %8$s +feature.city.menus.list.item.lore.with_mayor=<gray>Owner :</gray> %1$s \ + <br><gray>Mayor:</gray> %2$s \ + <br><gray>Level :</gray> %3$s \ + <br><gray>Members:</gray> %4$s/%5$s member%6$s \ + <br><yellow>Kind :</yellow> %7$s \ + <br><gold>Riches:</gold> %8$s %9$s +feature.city.menus.list.details.name=City details menu %1$s +feature.city.menus.list.details.level=<gray>Level :</gray> %1$s +feature.city.menus.list.details.owner=<gray>Owner :</gray> %1$s +feature.city.menus.list.details.mayor=<gray>Mayor:</gray> %1$s +feature.city.menus.list.details.mascot.level=<light_purple>Mascot Level:</light_purple> %1$s +feature.city.menus.list.details.mascot.missing=<red>No mascot found (bug)</red> +feature.city.menus.list.details.size=<aqua>Size :</aqua> %1$s <aqua>chunks</aqua> +feature.city.menus.list.details.wealth=<gold>Riches:</gold> %1$s %2$s +feature.city.menus.list.details.population=<aqua>Population :</aqua> %1$s/%2$s player%3$s +feature.city.menus.list.details.population.lore=<yellow><bold>CLICK HERE TO VIEW MEMBERS</bold></yellow> +feature.city.menus.list.details.type=<yellow>Kind :</yellow> %1$s +feature.city.menus.list.members.name=Member detail menu %1$s +feature.city.menus.list.members.back_lore=<yellow><bold>CLICK HERE TO RETURN</bold></yellow> +feature.city.menus.members.name=Cities Menu - Members +feature.city.menus.members.owner.lore=<gray>The owner of the city.</gray> +feature.city.menus.members.cant_edit_owner.lore=<gray>You cannot edit the owner</gray> +feature.city.menus.members.manage.lore=<gray>You can manage this player like<red>expel</red> <gray>or modify</gray> <green>his permissions</green></gray> \ + <br><yellow><bold>CLICK HERE TO MANAGE THIS PLAYER</bold></yellow> +feature.city.menus.members.perms.lore=<gray>You can modify the permissions of this player</gray> \ + <br><yellow><bold>CLICK HERE TO MODIFY YOUR PERMISSIONS</bold></yellow> +feature.city.menus.members.cant_self_kick.lore=<gray>You can't <green>exclude</green> yourself</gray> +feature.city.menus.members.cant_kick_owner.lore=<gray>You can't <green>exclude</green> the owner</gray> +feature.city.menus.members.kick.lore=<gray>You can exclude this player</gray> \ + <br><yellow><bold>CLICK HERE TO EXCLUDE IT</bold></yellow> +feature.city.menus.members.member.lore=<gray>A member like you</gray> +feature.city.menus.members.kick.confirm=<gray>Do you really want to evict?</gray> %1$s <gray>?</gray> +feature.city.menus.members.kick.deny=<gray>Do not expel</gray> %1$s +feature.city.menus.members.invite.title=<gray>Invite <light_purple>people</light_purple></gray> +feature.city.menus.members.invite.lore=<gray>You can invite people to your city to fill it</gray> \ + <br><gray>You are at</gray> %1$s<gray>/</gray>%2$s +feature.city.menus.members.invite.prompt=Enter player name +feature.city.menus.members.invite.invalid=<red>Please enter correct entry</red> +feature.city.menus.members.manage.name=Cities Menu - Edit Player +feature.city.menus.members.manage.kick.self=<red>You can't deport yourself</red> +feature.city.menus.members.manage.kick.owner=<red>You can't evict the owner</red> +feature.city.menus.members.manage.kick.info=<gray>You can expel</gray> %1$s <gray>of your <light_purple>city</light_purple>.</gray> \ + <br><yellow><bold>CLICK HERE TO EXPEL</bold></yellow> +feature.city.menus.members.manage.kick.title=<red>Expel</red> %1$s +feature.city.menus.members.manage.target.lore=<gray>You are modifying its status in the <light_purple>city</light_purple></gray> +feature.city.menus.members.manage.target.title=<yellow>Player</yellow> %1$s +feature.city.menus.members.manage.perms.lore=<gray>You will modify <green>his permissions</green></gray> \ + <br><yellow><bold>CLICK HERE TO EDIT</bold></yellow> +feature.city.menus.members.manage.perms.title=<red>Change permissions</red> +feature.city.menus.members.manage.back_lore=<gray>You will return to the previous menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> + +# * SUB FEATURES +# - Bank +feature.city.bank.menu.name=<yellow>Cities menu - Bank</yellow> +feature.city.bank.menu.deposit.title=<gray>Deposit money</gray> +feature.city.bank.menu.deposit.lore=<gray>Your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> + +feature.city.bank.menu.withdraw.title=<gray>Withdraw money</gray> +feature.city.bank.menu.withdraw.lore=<gray>The money will be taken from the <gold>bank</gold> of the city</gray> \ + <br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> + +feature.city.bank.menu.balance.title=<gold>Your city's money</gold> +feature.city.bank.menu.balance.lore=<gray>The city currently has</gray> %1$s %2$s \ + <br><gray>Your next interest is to</gray> %3$s<aqua>%</aqua> <gray>In</gray> %4$s +feature.city.bank.menu.back_lore=<gray>You will return to the previous menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> + +feature.city.bank.menu.deposit.name=City Bank Menu - Fill +feature.city.bank.menu.deposit.all.title=<gray>Drop off all your <gold>money</gold></gray> +feature.city.bank.menu.deposit.all.lore=<gray>All your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><gray>Amount that will be deposited:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> + +feature.city.bank.menu.deposit.half.title=<gray>Deposit half of your <gold>money</gold></gray> +feature.city.bank.menu.deposit.half.lore=<gray>Half of your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><gray>Amount that will be deposited:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> + +feature.city.bank.menu.deposit.input.title=<gray>Drop a <gold>specific amount</gold></gray> +feature.city.bank.menu.deposit.input.lore=<gray>Your money will be placed in the <gold>bank</gold> of the city</gray> \ + <br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.city.bank.menu.deposit.input.prompt=Enter the amount you want to deposit + +feature.city.bank.menu.withdraw.name=City Bank Menu - Withdraw +feature.city.bank.menu.withdraw.all.title=<gray>Take the<gold>money</gold> from your city</gray> +feature.city.bank.menu.withdraw.all.lore=<gray>All the money placed in the <gold>bank</gold> of the city will be given to you</gray> \ + <br><gray>Amount that will be given to you:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> + +feature.city.bank.menu.withdraw.half.title=<gray>Take half of the<gold>money</gold> of the city</gray> +feature.city.bank.menu.withdraw.half.lore=<gray>Half of the money will be taken from the <gold>bank</gold> from your city to give it to you</gray> \ + <br><gray>Amount that will be given to you:</gray> %1$s %2$s \ + <br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> + +feature.city.bank.menu.withdraw.input.title=<gray>Take a <gold>specific amount</gold></gray> +feature.city.bank.menu.withdraw.input.lore=<gray>The money requested will be taken from the <gold>bank</gold> from the city to give it to you</gray> \ + <br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.city.bank.menu.withdraw.input.prompt=Enter the amount you want to withdraw + +feature.city.bank.errors.feature_locked=<red>You have not unlocked this feature! Please upgrade your city to the level </red>%1$s<red> !</red> +feature.city.bank.errors.no_permission_deposit=<red>You don't have permission to give money to your city</red> +feature.city.bank.errors.no_permission_balance=<red>You don't have permission to look at the city's money</red> +feature.city.bank.errors.no_permission_withdraw=<red>You don't have permission to take money from your city</red> +feature.city.bank.errors.war_blocked=<red>Your city is in a war situation, you cannot do this</red> +feature.city.bank.errors.min_level=<red>To use the city bank, your city must be level 2 minimum!</red> +feature.city.bank.errors.not_enough_city_money=<red>Your town bank doesn't have enough money.</red> +feature.city.bank.deposit.success=You filed %1$s in your city bank. +feature.city.bank.withdraw.success=%1$s %2$s <gray>have been transferred to your account.</gray> + +# - City Chat +feature.city.chat.entered=You have joined the city chat +feature.city.chat.leaved=You left the town chat +feature.city.chat.prefix=#city + +# - City Permission +feature.city.permission.owner=Owner +feature.city.permission.invite=Invite +feature.city.permission.kick=Expel +feature.city.permission.place=Place blocks +feature.city.permission.break=Break blocks +feature.city.permission.open_chest=Open chests +feature.city.permission.interact=Interact with blocks (except chests) +feature.city.permission.claim=Claim +feature.city.permission.see_claim=View claims +feature.city.permission.rename=Rename +feature.city.permission.money_deposit=Deposit money in the city bank +feature.city.permission.money_see=See the city money +feature.city.permission.money_withdraw=Withdraw money from the city bank +feature.city.permission.manage_perm=Manage member permissions +feature.city.permission.access_city_chest=Access the city vault +feature.city.permission.upgrade_chest=Upgrade the Town Chest +feature.city.permission.change_type=Change city type +feature.city.permission.move_mascot=Move the mascot +feature.city.permission.change_mascot_skin=Change the mascot skin +feature.city.permission.upgrade_mascot=Improve the mascot +feature.city.permission.heal_mascot=Take care of the mascot +feature.city.permission.launch_war=Starting wars +feature.city.permission.manage_grade=Manage grades +feature.city.permission.assign_grade=Assign grades + +# - City Grades +feature.city.grade.cannot_exist=<red>This grade does not exist.</red> +feature.city.grade.name_cannot_be_null=Rank name cannot be empty +feature.city.grade.priority_must_be_0_17=The priority must be contained between 0 and 17 +feature.city.grade.icon_cannot_be_null=The grade icon cannot be zero (notify the staff) +feature.city.grade.cannot_assign=<red>You don't have permission to assign ranks.</red> +feature.city.grade.cannot_modify_sup_role=<red>You cannot modify a rank greater than or equal to yours.</red> +feature.city.grade.max_reach=<red>The maximum number of ranks has been reached, you cannot add more.</red> +feature.city.grade.already_exist=<red>This grade already exists.</red> +feature.city.grade.remove_grade=<red>You removed the rank</red> %1$s <red>of</red> %2$s +feature.city.grade.assign_grade=<green>You have assigned the rank</green> %1$s <green>has</green> %2$s +feature.city.rank.menu.list.title=City Menu - Grades +feature.city.rank.menu.list.rank.title=Grade %1$s +feature.city.rank.menu.list.rank.lore.priority=<gray>Priority :</gray> %1$s +feature.city.rank.menu.list.rank.lore.permissions=<gray>Permissions:</gray> %1$s +feature.city.rank.menu.list.rank.lore.click_edit=<yellow><bold>CLICK TO EDIT ROLE</bold></yellow> +feature.city.rank.menu.list.rank.lore.click_info=<yellow><bold>CLICK FOR INFORMATION</bold></yellow> +feature.city.rank.menu.list.assign.title=<green>Assign grades</green> +feature.city.rank.menu.list.assign.lore.empty=<red>No grades have been created in this city.</red> \ + <br><gray>Create a rank so you can assign it to members.</gray> +feature.city.rank.menu.list.assign.lore.available=<white>You can assign ranks to town members.</white> \ + <br> \ + <br><yellow><bold>CLICK TO ASSIGN A GRADE</bold></yellow> +feature.city.rank.menu.list.create.title=<green>Add a rank</green> +feature.city.rank.menu.list.create.lore=<white>You can make a rank, a set of permissions!</white> \ + <br> \ + <br><yellow><bold>CLICK TO CREATE A GRADE</bold></yellow> +feature.city.rank.menu.details.title.edit=Rank details menu %1$s +feature.city.rank.menu.details.title.create=Rank creation menu %1$s +feature.city.rank.menu.details.priority.title.create=<light_purple>Insert grade priority</light_purple> +feature.city.rank.menu.details.priority.lore.create=<gray>Priority determines rank order</gray> \ + <br><gold><bold>Lower priority means higher grade</bold></gold> \ + <br><gray>Editable later</gray> \ + <br><gray>Current priority:</gray> %1$s +feature.city.rank.menu.details.name.title=<dark_aqua>Rank name</dark_aqua> +feature.city.rank.menu.details.name.undefined=<italic>Undefined</italic> +feature.city.rank.menu.details.name.lore.create=<gray>The name of the grade is given when it is created</gray> \ + <br><gray>Editable later</gray> \ + <br><gray>Current name:</gray> %1$s +feature.city.rank.menu.details.icon.title=<blue>Rank icon</blue> +feature.city.rank.menu.details.icon.lore.create=<gray>Click to change an icon</gray> \ + <br><gray>Editable later</gray> +feature.city.rank.menu.details.perms.title=<aqua>Rank permissions</aqua> +feature.city.rank.menu.details.perms.none=<italic>None</italic> +feature.city.rank.menu.details.perms.lore.create=<gray>Click to select permissions</gray> \ + <br><gray>Editable later</gray> \ + <br><gray>Current permissions:</gray> %1$s +feature.city.rank.menu.details.cancel_create.title=<red>Cancel and delete</red> +feature.city.rank.menu.details.cancel_create.lore=<gray>Click to cancel the creation of the grade</gray> +feature.city.rank.menu.details.create.title=<green>Create the grade</green> +feature.city.rank.menu.details.create.lore=<gray>Click to create the grade with the defined parameters</gray> +feature.city.rank.menu.details.priority.lore.current=<gray>Current priority:</gray> %1$s +feature.city.rank.menu.details.priority.lore.add=<yellow><bold>LEFT CLICK TO ADD 1</bold></yellow> +feature.city.rank.menu.details.priority.lore.remove=<yellow><bold>RIGHT CLICK TO REMOVE 1</bold></yellow> +feature.city.rank.menu.details.priority.title.edit=<light_purple>Priority</light_purple> +feature.city.rank.menu.details.name.lore.current=<gray>Current name:</gray> %1$s +feature.city.rank.menu.details.name.lore.edit=<yellow><bold>CLICK TO EDIT NAME</bold></yellow> +feature.city.rank.menu.details.icon.lore.current=<gray>Here is your current icon:</gray> %1$s +feature.city.rank.menu.details.icon.lore.edit=<yellow><bold>CLICK TO CHANGE ICON</bold></yellow> +feature.city.rank.menu.details.perms.lore.current=<gray>Current permissions:</gray> %1$s +feature.city.rank.menu.details.perms.lore.edit_manage=<yellow><bold>CLICK TO MANAGE PERMISSIONS</bold></yellow> +feature.city.rank.menu.details.perms.lore.edit_view=<yellow><bold>CLICK TO VIEW PERMISSIONS</bold></yellow> +feature.city.rank.menu.details.cancel_edit.title=<red>Cancel</red> +feature.city.rank.menu.details.cancel_edit.lore=<gray>Click to cancel changes</gray> \ + <br><dark_red>No changes will be saved</dark_red> +feature.city.rank.menu.details.delete.title=<red>Remove grade</red> +feature.city.rank.menu.details.delete.lore=<gray>Click to remove this rank</gray> \ + <br><dark_red>This action is irreversible</dark_red> +feature.city.rank.menu.details.save.title=<green>Save changes</green> +feature.city.rank.menu.details.save.lore=<gray>Click to save rank changes</gray> +feature.city.rank.menu.perms.item.add=Add %1$s +feature.city.rank.menu.perms.item.remove=Withdraw %1$s +feature.city.rank.menu.perms.item.lore.add=<yellow><bold>CLICK TO ADD THIS PERMISSION</bold></yellow> +feature.city.rank.menu.perms.item.lore.remove=<yellow><bold>CLICK TO REMOVE THIS PERMISSION</bold></yellow> +feature.city.rank.menu.perms.manage_all.title=<gold>Manage all grade permissions</gold> +feature.city.rank.menu.perms.manage_all.lore=<red>Left click to remove everything</red> \ + <br><green>Right click to add all</green> +feature.city.rank.menu.perms.title=Rank Permissions %1$s +feature.city.rank.menu.icon.item.lore=<gray>Click to select this icon</gray> +feature.city.rank.menu.icon.search.title=<aqua>Find an icon</aqua> +feature.city.rank.menu.icon.search.lore=<gray>Click to enter a keyword</gray> +feature.city.rank.menu.icon.search.prompt=Enter a keyword name for the icon +feature.city.rank.menu.icon.clear.title=<red>Clear filter</red> +feature.city.rank.menu.icon.clear.lore=<yellow><bold>CLICK TO CLEAR FILTER</bold></yellow> +feature.city.rank.menu.icon.title=Menu for choosing an icon - Page %1$s +feature.city.rank.menu.members.item.rank=<gray>Grade :</gray> %1$s +feature.city.rank.menu.members.item.click_assign=<yellow><bold>CLICK HERE TO ASSIGN A GRADE</bold></yellow> +feature.city.rank.menu.members.item.name_unknown=<red><italic>Unknown player</italic></red> +feature.city.rank.menu.members.title=Members' Choice Menu - Ranks +feature.city.rank.menu.assign.title=Cities Menu - Assign a rank +feature.city.rank.menu.assign.item.lore.count=<gray>Permissions:</gray> %1$s<gray> permission(s)</gray> +feature.city.rank.menu.assign.item.lore.none=None +feature.city.rank.prompt.create=Enter your rank name +feature.city.rank.prompt.rename=Enter your new rank name +feature.city.rank.rename.success=The rank name has been updated: %1$s → %2$s +feature.city.rank.create.success=Grade %1$s created successfully! +feature.city.rank.update.cancelled=Changes canceled, no changes were saved. +feature.city.rank.update.success=Grade %1$s modified successfully! +feature.city.rank.delete.confirm.lore=<red>This action is irreversible</red> +feature.city.rank.delete.success=Grade %1$s successfully deleted! +feature.city.rank.delete.error=Unable to delete rank: %1$s + +# - Mascots +# Menus +feature.city.mascots.menu.main.name=Pet Menu (Lvl. %1$s) +feature.city.mascots.menu.main.skin.title=<gray>The skin of the <red>mascot</red></gray> +feature.city.mascots.menu.main.skin.lore=<gray>You can change the appearance of your <red>mascot</red></gray> \ + <br><yellow><bold>CLICK HERE TO CHANGE SKIN</bold></yellow> + +feature.city.mascots.menu.main.move.title=<gray>Move your <red>mascot</red></gray> +feature.city.mascots.menu.main.move.lore.ready=<gray>You can change the position of your <red>mascot</red></gray> \ + <br><yellow><bold>CLICK HERE TO CHANGE IT POSITION</bold></yellow> +feature.city.mascots.menu.main.move.lore.cooldown=<gray>You cannot change the position of your <red>mascot</red></gray> \ + <br><red>Cooldown:</red> %1$s +feature.city.mascots.menu.main.move.item.title=<gray>Move your <bold>mascot</bold></gray> +feature.city.mascots.menu.main.move.item.lore=<red>Your mascot will be placed in the location of the chest</red> \ + <br><red>This safe is not removable</red> +feature.city.mascots.menu.main.move.interaction.remaining=Time remaining: %%sdry%%s +feature.city.mascots.menu.main.move.interaction.cancelled=<red>Mascot move canceled</red> +feature.city.mascots.menu.main.move.error.inventory_space=<red>Free up space in your inventory</red> +feature.city.mascots.menu.main.move.error.invalid_chunk=<red>Cannot move the mascot here because this chunk does not belong to you or is adjacent to another city</red> + +feature.city.mascots.menu.main.upgrade.title=<gray>Improve your <red>Mascot</red></gray> +feature.city.mascots.menu.main.upgrade.max_level=<gray>Max level reached</gray> +feature.city.mascots.menu.main.upgrade.level_required=<red>You must be level </red>%1$s<red> to improve the mascot</red> +feature.city.mascots.menu.main.upgrade.cost=<gray>Need </gray>%1$s<gray> of Aywenites</gray> +feature.city.mascots.menu.main.upgrade.success=<gray>You have improved your mascot to the level </gray>%1$s +feature.city.mascots.menu.main.upgrade.not_enough_aywenite=<red>You don't have enough Aywenite</red> + +feature.city.mascots.menu.main.immunity.title=<gray>Your <red>mascot</red> East <aqua>immune</aqua> !</gray> +feature.city.mascots.menu.main.immunity.lore=<gray>You have a <aqua>immunity</aqua> on your <red>mascot</red></gray> \ + <br><red>Time remaining:</red> %1$s \ + <br><gray>To reduce the time by 1 hour, you must have:</gray> \ + <br><dark_gray>-</dark_gray> %2$s <gray>of Aywenite</gray> \ + <br><yellow><bold>CLICK HERE TO REDUCE IMMUNITY TIME</bold></yellow> +feature.city.mascots.menu.main.immunity.reduce.success=<gray>You just spent </gray>%1$s<gray> of Aywenite to reduce the cooldown by one hour</gray> + +feature.city.mascots.menu.dead.name=Mascot menu [DEAD] +feature.city.mascots.menu.dead.title=<gray>Your <red>mascot</red> is dead</gray> +feature.city.mascots.menu.dead.lore=<gray>Your pet is dead, you can reduce the reanimation time</gray> \ + <br><gray>which is currently:</gray> %1$s \ + <br><gray>To reduce the time by 1 hour, you must have:</gray> \ + <br><dark_gray>-</dark_gray> %2$s <gray>of Aywenite</gray> \ + <br><yellow><bold>CLICK HERE TO REDUCE RESUSCITATION TIME</bold></yellow> +feature.city.mascots.menu.dead.reduce.success=<gray>You just spent </gray>%1$s<gray> of Aywenite to reduce the cooldown by one hour</gray> + +feature.city.mascots.menu.skin.name=Pet Skin Menu +feature.city.mascots.menu.skin.lore.level_required=<red>You must be level </red>%1$s<red> to unlock this skin</red> +feature.city.mascots.menu.skin.lore.price_required=<red>You must have </red>%1$s<red> Aywenite</red> +feature.city.mascots.menu.skin.error.level_required=<red>You do not have the required city level to put on this skin</red> +feature.city.mascots.menu.skin.error.not_enough_aywenite=<red>You don't have enough Aywenite</red> + +feature.city.mascots.skin.requirement=<gray>Need </gray>%1$s<gray> of Aywenites</gray> + +feature.city.mascots.skin.error.space_above=<red>Free up space above the mascot to change its skin</red> +feature.city.mascots.skin.error.space_around=<red>Free up space around the mascot to change its skin</red> + +feature.city.mascots.interaction.error.not_found=<red>No mascots found - Please contact the staff</red> +feature.city.mascots.interaction.error.not_owner=<red>This mascot does not belong to you</red> +feature.city.mascots.rename.error=<red>You cannot rename this mascot</red> + +feature.city.mascots.name.alive=%1$s %2$s%3$s +feature.city.mascots.name.dead=<dark_red>☠</dark_red> <red>Dead Mascot</red> + +feature.city.mascots.admin.remove.success=<green>Mascot removed</green> + +feature.city.mascots.damage.error.enemy_city_unknown=<red>Error: The enemy city was not recognized</red> +feature.city.mascots.damage.error.city_type_unknown=<red>Error: Your city type was not recognized</red> +feature.city.mascots.damage.error.enemy_city_type_unknown=<red>Error: The enemy city type was not recognized</red> +feature.city.mascots.damage.error.self_mascot=<red>You cannot attack your mascot</red> +feature.city.mascots.damage.error.enemy_city_peace=<red>This city is in peace</red> +feature.city.mascots.damage.error.city_peace=<red>Your city is in peace</red> +feature.city.mascots.damage.error.immune=<red>This mascot is immune for the moment</red> +feature.city.mascots.damage.error.not_in_war=<red>You are not at war with </red>%1$s +feature.city.mascots.damage.error.not_in_combat=<red>You can only attack the pet during the combat phase</red> +feature.city.mascots.damage.error.not_selected_for_war=<red>You cannot attack the mascot because you have not been selected for war</red> + +## Mascot Wand +feature.city.mascot.mascot_wand.claim_mascot_wand=You received a stick to pose your mascot +feature.city.mascot.mascot_wand.create_cancelled=<red>Creation canceled</red> + +feature.city.mascot.mascot_wand.lore=<red>Your mascot will be placed in the location of the chest</red>\ + <br><red>This stick is not removable</red> + +feature.city.mascot.mascot_wand.can_only_place_mascot=<red>You can only pose your pet in the main world</red> +feature.city.mascot.mascot_wand.hasnot_block_above=<red>No block should be above the mascot</red> + +feature.city.mascot.mascot=Mascot + +# - War +feature.city.war.peace=<green>Peace</green> +feature.city.war.war=<red>War</red> +feature.city.war.command.type_required=<red>Your city is not in a war status! Change the type of your city with</red> <red>/city type</red> <red>or from the main cities menu</red> +feature.city.war.command.city_immune=<red>Your city is currently in immunity period, you cannot start a war at this time.</red> \ + <br><gray>Time remaining:</gray> %1$s +feature.city.war.command.no_permission_launch=<red>You do not have permission to start a war for the city</red> +feature.city.war.command.already_declared=<red>You have already been declared at war!</red> +feature.city.war.command.already_in_war=<red>You are already at war!</red> +feature.city.war.command.defense.none=<red>No war being prepared.</red> +feature.city.war.command.defense.full=<red>The maximum number of defenders has been reached.</red> +feature.city.war.command.defense.accepted=<red>You are now participating in the defense! No more going back possible.</red> +feature.city.war.begin.type_required=<red>Your city is not in a war status! Change the type of your city with</red> <red>/city type</red> <red>or in the main menu of cities</red> +feature.city.war.begin.target_not_war=<red>The city you are trying to attack is not in war status!</red> +feature.city.war.begin.no_permission_launch=<red>You do not have permission to start a war for the city</red> +feature.city.war.begin.already_declared=<red>You have already been declared at war!</red> +feature.city.war.begin.already_in_war=<red>Your city is already at war!</red> +feature.city.war.begin.target_preparing=<red>The city you are trying to attack is already preparing troops</red> +feature.city.war.begin.target_in_war=<red>The city you are trying to attack is already at war!</red> +feature.city.war.begin.target_immune=<red>The city you are trying to attack is in immunity period!</red> +feature.city.war.begin.city_immune=<red>Your city is in immunity period!</red> +feature.city.war.begin.target_no_online=<red>The city you are trying to attack has no members connected!</red> +feature.city.war.begin.no_combat=<red>No combat possible (not enough players connected)</red> +feature.city.war.begin.not_enough_members=<red>Not enough members connected to start a fight</red> %1$s <red>vs.</red> %1$s +feature.city.war.begin.city_already_in_war=<red>One of the cities is already at war!</red> +feature.city.war.begin.confirm.lore=<red><bold>ATTENTION</bold></red> \ + <br><gray>You are about to start a war against</gray> %1$s \ + <br><gray>with</gray> %2$s <gray>players from your city.</gray> +feature.city.war.begin.confirm.cancel=<gray>Do not start a war against</gray> %1$s +feature.city.war.begin.defense.attacked=<red>⚔ Your city is attacked by</red> %1$s <red>, you need</red> %2$s <red>player(s)!</red> +feature.city.war.begin.defense.click_to_join=<green>Click here to join the defense!</green> +feature.city.war.begin.defense.hover_join=<green>Click to join the war</green> +feature.city.war.begin.attacker.chosen=<red>⚔ You have been chosen to fight against</red> %1$s +feature.city.war.begin.waiting_defense=<dark_gray><italic>Please wait until</italic></dark_gray> %1$s <dark_gray><italic>react, the game will still be started in 2 min</italic></dark_gray> +feature.city.war.begin.cancel_not_enough_defenders=<red>The war was called off because the enemy city did not have enough required defenders.</red> +feature.city.war.preparation.message=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>Preparation for war begins</gray> \ + <br><dark_gray><italic>Prepare yourself for the fight against</italic></dark_gray> %1$s \ + <br><dark_gray><italic>You have</italic></dark_gray> %2$s <dark_gray><italic>minutes to equip yourself.</italic></dark_gray> \ + <br><dark_gray><italic>You will be in</italic></dark_gray> %3$s <dark_gray><italic>VS</italic></dark_gray> %4$s \ + <br><dark_gray><italic>When the fight begins you will be teleported to your pet.</italic></dark_gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.combat.message=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>The fight is imminent!</gray> \ + <br><dark_gray><italic>Fight against</italic></dark_gray> %1$s \ + <br><dark_gray><italic>You have</italic></dark_gray> %2$s <dark_gray><italic>minutes of combat.</italic></dark_gray> \ + <br><dark_gray><italic>If you kill the opposing city's mascot, you win the war.</italic></dark_gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.draw=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>It's the end of the fighting!</gray> \ + <br><dark_gray><italic>There was a tie!</italic></dark_gray> \ + <br> \ + <br><gray>Overall statistics:</gray> \ + <br><gray> -</gray> <red>Kills %3$s :</red> %4$s \ + <br><gray> -</gray> <blue>Kills %5$s :</blue> %6$s \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.reason.win.mascot_death=You have killed the opposing mascot! +feature.city.war.result.reason.win.mascot_hp=Your mascot had the most life points! +feature.city.war.result.reason.win.kills=Your city has killed the most opponents! +feature.city.war.result.reason.win.draw=It's a tie! +feature.city.war.result.reason.lose.mascot_death=Your mascot has been killed! +feature.city.war.result.reason.lose.mascot_hp=Your mascot had the fewest life points! +feature.city.war.result.reason.lose.kills=The opponent has killed the most people! +feature.city.war.result.reason.lose.draw=It's a tie! +feature.city.war.result.winner=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>It's the end of the fighting!</gray> \ + <br><dark_gray><italic>You won against</italic></dark_gray> %1$s <dark_gray><italic>!</italic></dark_gray> \ + <br><dark_gray><italic>%2$s</italic></dark_gray> \ + <br> \ + <br><gray>Overall statistics:</gray> \ + <br><gray> -</gray> <red>Kills %3$s :</red> %4$s \ + <br><gray> -</gray> <blue>Kills %5$s :</blue> %6$s \ + <br> \ + <br><gold><bold>Awards</bold></gold> \ + <br><gray>%7$s</gray> \ + <br><gray>%8$s</gray> \ + <br><gray>%9$s</gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.loser=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br> \ + <br><red><bold>WAR !</bold></red> <gray>It's the end of the fighting!</gray> \ + <br><dark_gray><italic>You lost to</italic></dark_gray> %1$s <dark_gray><italic>!</italic></dark_gray> \ + <br><dark_gray><italic>%2$s</italic></dark_gray> \ + <br> \ + <br><gray>Overall statistics:</gray> \ + <br><gray> -</gray> <red>Kills %3$s :</red> %4$s \ + <br><gray> -</gray> <blue>Kills %5$s :</blue> %6$s \ + <br> \ + <br><red><bold>Losses</bold></red> \ + <br><gray>%7$s</gray> \ + <br><gray>%8$s</gray> \ + <br><gray>%9$s</gray> \ + <br> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.war.result.reward.power=+ %1$s power points +feature.city.war.result.reward.money=+ %1$s stolen from the adversary +feature.city.war.result.reward.money_bonus=+ %1$s stolen from the opponent + %2$s bonuses +feature.city.war.result.reward.claims=+ %1$s conquered territory(ies) +feature.city.war.result.loss.power=- %1$s power points +feature.city.war.result.loss.money=- %1$s lost +feature.city.war.result.loss.claims=- %1$s lost territory(ies) +feature.city.war.admin.not_in_preparation=<red>This city is not preparing for war!</red> +feature.city.war.tnt.limit_reached=<red>The city</red> %1$s <red>has reached its daily TNT limit!</red> <dark_gray>(</dark_gray><red>%2$s</red><dark_gray>/</dark_gray><red>%3$s</red> <dark_gray>daily TNT)</dark_gray> +feature.city.war.menu.main.title=Menu of Wars +feature.city.war.menu.main.owner=<gray>Owner :</gray> %1$s +feature.city.war.menu.main.population_online=<gray>Population (online):</gray> %1$s +feature.city.war.menu.main.mascot_level=<gray>Mascot:</gray> <gray>lv.</gray> %1$s +feature.city.war.menu.main.mascot_location=<gray>Location:</gray> %1$s +feature.city.war.menu.main.reforms=<gray>Reforms:</gray> +feature.city.war.menu.main.wealth=<gray>Riches:</gray> %1$s +feature.city.war.menu.main.click_details=<yellow><bold>RIGHT CLICK FOR MORE INFORMATION ABOUT THE CITY</bold></yellow> +feature.city.war.menu.main.click_launch=<yellow><bold>LEFT CLICK TO START A WAR</bold></yellow> +feature.city.war.menu.more_info.title=<green>More info!</green> +feature.city.war.menu.more_info.lore=<gray>Learn more about the Wars!</gray> \ + <br><gray>The preparation, the fight,...</gray> \ + <br><yellow><bold>CLICK HERE TO LEARN MORE!</bold></yellow> +feature.city.war.menu.more_info.menu_title=Menu des Guerres - More info +feature.city.war.menu.more_info.prep.title=<gold>The preparation -</gold> %1$s <gold>min</gold> +feature.city.war.menu.more_info.prep.lore=<gray>Choose a city to attack!</gray> \ + <br><gray>The number of fighters will be the same everywhere!</gray> \ + <br><dark_gray><italic>ex. If you are 5 players connected and 2 opposite,</italic></dark_gray> \ + <br><dark_gray><italic>then you will have the choice to do a 1vs1 or a 2vs2</italic></dark_gray> \ + <br> \ + <br><gray>When you come to declare war on a city, the people affected will be informed</gray> \ + <br><gray>You will have</gray> %1$s <gray>min preparation</gray> \ + <br><gray>which gives you time to equip yourself and go to the front!</gray> +feature.city.war.menu.more_info.combat.title=<red>The fight -</red> %1$s <red>min</red> +feature.city.war.menu.more_info.combat.lore=<gray>The fight begins, the game will end</gray> %1$s <gray>min after the start.</gray> \ + <br><gray>It can be finished before if the enemy pet is killed.</gray> \ + <br><gray>And during this time you can do everything in the enemy city.</gray> +feature.city.war.menu.more_info.result.title=<white>The results</white> +feature.city.war.menu.more_info.result.lore=<gray>The end of the war, peace is imposed between the two camps.</gray> \ + <br><gray>The winner is chosen, the reward is given.</gray> \ + <br><gray>And both cities get 2 days immunity!</gray> +feature.city.war.menu.details.title=War Menu - Details %1$s +feature.city.war.menu.details.mascot.level=<gray>Mascot level:</gray> %1$s +feature.city.war.menu.details.mascot.location=<gray>Mascot location:</gray> %1$s +feature.city.war.menu.details.size=<gray>Size :</gray> %1$s <gray>chunks</gray> +feature.city.war.menu.details.wealth=<gray>Riches:</gray> %1$s +feature.city.war.menu.details.population=<gray>Population :</gray> %1$s %2$s +feature.city.war.menu.details.population_online=<gray>Connected population:</gray> %1$s %2$s +feature.city.war.menu.details.population.player=player +feature.city.war.menu.details.population.players=players +feature.city.war.menu.details.type=<gray>Kind :</gray> %1$s +feature.city.war.menu.players.title=War Menu - Members +feature.city.war.menu.players.role.owner=Owner +feature.city.war.menu.players.role.mayor=Mayor +feature.city.war.menu.players.role.member=Member +feature.city.war.menu.players.back_lore=<gray>You will return to the details menu of the city at war</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.war.menu.size.menu_title=Menu of Wars - Selection +feature.city.war.menu.size.title=%1$s vs. %1$s +feature.city.war.menu.size.lore=<gray>Clash between</gray> %1$s <gray>players from each city.</gray> \ + <br> \ + <br><yellow><bold>CLICK TO CONTINUE</bold></yellow> +feature.city.war.menu.participants.title=Wars Menu - Participants +feature.city.war.menu.participants.selected_prefix=<green>✔ </green> +feature.city.war.menu.participants.click_remove=<red><bold>CLICK TO REMOVE</bold></red> +feature.city.war.menu.participants.click_select=<green><bold>CLICK TO SELECT</bold></green> +feature.city.war.menu.participants.already_selected=<red>You have already selected</red> %1$s <red>player(s).</red> +feature.city.war.menu.participants.confirm.title=Validate selection +feature.city.war.menu.participants.confirm.lore=<gray>Selected participants:</gray> %1$s<gray>/</gray>%2$s +feature.city.war.menu.participants.must_select=<red>You must select</red> %1$s <red>player(s).</red> + +# - Mayor +feature.city.mayor.perk.category.military=<dark_gray><italic>Military reforms</italic></dark_gray> +feature.city.mayor.perk.category.strategy=<dark_gray><italic>Strategy reforms</italic></dark_gray> +feature.city.mayor.perk.category.agricultural=<dark_gray><italic>Agricultural reforms</italic></dark_gray> +feature.city.mayor.perk.category.economic=<dark_gray><italic>Economic reforms</italic></dark_gray> +feature.city.mayor.perk.category.onirique=<dark_gray><italic>Dream Reforms</italic></dark_gray> +feature.city.mayor.perk.none.name=<dark_gray>Empty Reform</dark_gray> +feature.city.mayor.perk.fou_de_rage.name=<yellow><bold>Mad with rage</bold></yellow> +feature.city.mayor.perk.fou_de_rage.lore=<gray>In your city:</gray> <dark_aqua>Resistance</dark_aqua> \ + <br><gray>Outside your city:</gray> <dark_aqua>Strength</dark_aqua> +feature.city.mayor.perk.impot.name=<yellow><bold>Tax Withholding</bold></yellow> +feature.city.mayor.perk.impot.lore=<gray>Collectors levy tax on players</gray> \ + <br><dark_gray>Fixed amount per attack</dark_gray> +feature.city.mayor.perk.miner.name=<yellow><bold>Dedicated Minor</bold></yellow> +feature.city.mayor.perk.miner.lore=<gray>Grants a mining bonus</gray> \ + <br><dark_gray>Permanent speed</dark_gray> +feature.city.mayor.perk.demon_fruit.name=<yellow><bold>Devil Fruit</bold></yellow> +feature.city.mayor.perk.demon_fruit.lore=<gray>Increases interaction range</gray> \ + <br><dark_gray>Blocks and entities</dark_gray> +feature.city.mayor.perk.business_man.name=<yellow><bold>Businessman</bold></yellow> +feature.city.mayor.perk.business_man.lore=<gray>Increases the bank's interest</gray> \ + <br><dark_gray>Interest bonus</dark_gray> +feature.city.mayor.perk.iron_man.name=<yellow><bold>Iron in the Blood</bold></yellow> +feature.city.mayor.perk.iron_man.lore=<gray>A golem defends the mascot in case of attack</gray> +feature.city.mayor.perk.city_hunter.name=<yellow><bold>Urban Hunter</bold></yellow> +feature.city.mayor.perk.city_hunter.lore=<gray>Increases your damage against players and monsters</gray> \ + <br><dark_gray>Bonuses outside of opposing cities</dark_gray> +feature.city.mayor.perk.ayweniter.name=<yellow><bold>Ayweniteur</bold></yellow> +feature.city.mayor.perk.ayweniter.lore=<gray>Chance of finding Aywenite by mining stone</gray> +feature.city.mayor.perk.gps_tracker.name=<yellow><bold>GPS tracker</bold></yellow> +feature.city.mayor.perk.gps_tracker.lore=<gray>Intruders are highlighted in your city</gray> \ + <br><dark_gray>Alert on entry</dark_gray> +feature.city.mayor.perk.symbiosis.name=<yellow><bold>Symbiosis</bold></yellow> +feature.city.mayor.perk.symbiosis.lore=<gray>Reduces damage near your pet</gray> \ + <br><dark_gray>10 block radius</dark_gray> +feature.city.mayor.perk.agricultural_essor.name=<yellow><bold>Agricultural Boom</bold></yellow> +feature.city.mayor.perk.agricultural_essor.lore=<gray>Double the harvests during the event</gray> \ + <br><dark_gray>Limited time</dark_gray> +feature.city.mayor.perk.mineral_rush.name=<yellow><bold>Mining Rush/bold></yellow> +feature.city.mayor.perk.mineral_rush.lore=<gray>Double the minerals during the event</gray> \ + <br><dark_gray>Bonuses on rare ores</dark_gray> +feature.city.mayor.perk.military_dissuasion.name=<yellow><bold>Military Deterrence</bold></yellow> +feature.city.mayor.perk.military_dissuasion.lore=<gray>Spawn golems in your town</gray> \ + <br><dark_gray>Temporary effect</dark_gray> +feature.city.mayor.perk.idyllic_rain.name=<yellow><bold>Idyllic rain</bold></yellow> +feature.city.mayor.perk.idyllic_rain.lore=<gray>Makes it rain Aywenite in your city</gray> \ + <br><dark_gray>Reserved for members</dark_gray> +feature.city.mayor.perk.mascots_friendly.name=<yellow><bold>Company Mascot</bold></yellow> +feature.city.mayor.perk.mascots_friendly.lore=<gray>Grants pet level bonuses to members</gray> +feature.city.mayor.perk.great_sleeper.name=<yellow><bold>Big Sleeper</bold></yellow> +feature.city.mayor.perk.great_sleeper.lore=<gray>Increases the chance of entering a dream</gray> \ + <br><dark_gray>Significant bonus</dark_gray> +feature.city.mayor.perk.great_dream.name=<yellow><bold>Big Dreamer</bold></yellow> +feature.city.mayor.perk.great_dream.lore=<gray>Increases time spent in dreams</gray> \ + <br><dark_gray>Time bonus</dark_gray> +feature.city.mayor.perk.chaos_dream.name=<yellow><bold>Chaotic Dream</bold></yellow> +feature.city.mayor.perk.chaos_dream.lore=<gray>Teleport the limbs into the dream</gray> \ + <br><dark_gray>City event</dark_gray> + +feature.city.menus.common.error=<red>Error of reform</red> +feature.city.mayor.menu.common.back.name=<green>Back</green> +feature.city.mayor.menu.common.back.lore=<gray>You will return to the previous menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.common.more_info.name=<green>More info!</green> +feature.city.mayor.menu.common.more_info.lore=<gray>Learn more about mayors!</gray> \ + <br><gray>The course..., the elections,...</gray> \ + <br><yellow><bold>CLICK HERE TO SEE MORE!</bold></yellow> + +feature.city.mayor.label.mayor=mayor +feature.city.mayor.label.color=color +feature.city.mayor.label.this_one=this one + +feature.city.mayor.error.not_in_city=<dark_gray><italic>This object is not in a city</italic></dark_gray> +feature.city.mayor.error.feature_locked=<red>You have not unlocked this feature! Please upgrade your city to the level </red>%1$s<red> !</red> + +feature.city.mayor.urne.interact.mysterious=<dark_gray><italic>*Mysterious object... This must surely be used for elections...*</italic></dark_gray> +feature.city.mayor.urne.interact.not_your_urne=<dark_gray><italic>*Mhh... It's not your urn*</italic></dark_gray> +feature.city.mayor.urne.interact.need_members=<dark_gray><italic>*you must have at least</italic></dark_gray> %1$s <dark_gray><italic>members in order to be able to make an election*</italic></dark_gray> +feature.city.mayor.urne.interact.election_already=<dark_gray><italic>*The elections have already taken place!*</italic></dark_gray> +feature.city.mayor.urne.interact.no_candidate=<dark_gray><italic>*no one showed up! Introduce yourself! /city*</italic></dark_gray> +feature.city.mayor.urne.place.must_be_overworld=You must be in overworld to pose this! +feature.city.mayor.urne.place.need_city=You must have a city to post this! +feature.city.mayor.urne.place.must_be_in_city=You need to put this in your city! +feature.city.mayor.urne.place.require_level=You must be level %1$s of town to place the urn +feature.city.mayor.urne.place.not_owner=You are not the owner! +feature.city.mayor.urne.place.already_has_npc=You can't put this down because you already have NPCs +feature.city.mayor.urne.break.not_owner=You cannot post this because you are not the owner + +feature.city.mayor.npc.display.mayor=Mayor %1$s +feature.city.mayor.npc.display.unknown=Unknown +feature.city.mayor.npc.display.owner=Owner %1$s +feature.city.mayor.npc.error.feature_locked=<red>You have not unlocked this feature! Please upgrade your city to the level </red>%1$s<red> !</red> +feature.city.mayor.npc.info.no_mayor_yet=<dark_gray><italic>*mhh this city has not yet elected a mayor*</italic></dark_gray> +feature.city.mayor.npc.info.no_election_unlocked=<dark_gray><italic>*mhh this city has not yet unblocked the elections*</italic></dark_gray> +feature.city.mayor.npc.move.prompt=<dark_gray><italic>*Good morning ? Do you want to move me? Click here!*</italic></dark_gray> +feature.city.mayor.npc.move.hover=Move this NPC +feature.city.mayor.npc.move.item.lore=<gray>Click on where you want to move the </gray><blue>NPC</blue> +feature.city.mayor.npc.move.item.name=<gray>Location of </gray><blue>NPC</blue> +feature.city.mayor.npc.move.interaction.remaining=<gray>You have</gray> %1$s <gray>to select your location</gray> +feature.city.mayor.npc.move.interaction.timeout=<gray>You didn't have time to move your NPC</gray> +feature.city.mayor.npc.move.error.outside_city=<red>Cannot put NPC outside your city</red> + +feature.city.mayor.menu.more_info.name=Mayors' menu - More info +feature.city.mayor.menu.more_info.elections.title=<gold>Elections - Wednesday</gold> +feature.city.mayor.menu.more_info.reforms.title=<dark_aqua>Reforms - Thursday</dark_aqua> +feature.city.mayor.menu.more_info.elections.lore=<gray>All the <gold>Wednesdays</gold>, THE <gold>elections</gold> begin</gray> \ + <br><gray>If you have more than </gray>%1$s<gray> members,</gray> \ + <br><gray>you can elect a </gray><gold>mayor</gold><gray> for your city</gray> \ + <br><gray>Otherwise, the owner will choose the </gray><dark_aqua>reforms</dark_aqua><gray> what he wants!</gray> +feature.city.mayor.menu.more_info.reforms.lore=<gray>All the <dark_aqua>Thursdays</dark_aqua>, the mayor is elected!</gray> \ + <br><gray>THE <dark_aqua>reforms</dark_aqua> chosen by the mayor are applied</gray> \ + <br><gray>You can take a look at </gray><dark_aqua>/city mayor</dark_aqua> + +feature.city.mayor.menu.owner.name=Mayors' menu - Owner's mandate +feature.city.mayor.menu.owner.lore.header=<dark_gray><italic>Owner of %1$s</italic></dark_gray> +feature.city.mayor.menu.owner.title=Owner %1$s +feature.city.mayor.menu.mayor.name=Mayors' Menu - Mayor's Mandate +feature.city.mayor.menu.mayor.lore.header=<dark_gray><italic>Mayor of %1$s</italic></dark_gray> +feature.city.mayor.menu.mayor.title=Mayor %1$s +feature.city.mayor.menu.npc.move.name=Move this NPC +feature.city.mayor.menu.npc.move.lore=<gray>You will be able to move this NPC</gray> \ + <br><yellow><bold>CLICK HERE TO CONTINUE</bold></yellow> + +feature.city.mayor.menu.mandate.name=Mayors Menu - Mandate +feature.city.mayor.menu.mandate.mayor.lore.header=<dark_gray><italic>Mayor of %1$s</italic></dark_gray> +feature.city.mayor.menu.mandate.owner.lore.header=<dark_gray><italic>Owner of %1$s</italic></dark_gray> +feature.city.mayor.menu.mandate.mayor.title=Mayor %1$s +feature.city.mayor.menu.mandate.owner.title=Owner %1$s +feature.city.mayor.menu.mandate.law.lore=<gray>You are the </gray>%1$s<gray>!</gray> \ + <br><br><gray>You can change the </gray><dark_blue>laws</dark_blue><gray> and launch </gray><gold>events</gold><gray>!</gray> \ + <br><br><yellow><bold>CLICK HERE TO OPEN A MENU</bold></yellow> +feature.city.mayor.menu.mandate.law.name=<dark_blue>The Laws</dark_blue> + +feature.city.mayor.command.warp.not_set.phase2=<gray>The city warp is not yet defined! Ask the </gray><gold>mayor</gold><gray> current to put one!</gray> \ + <br><dark_gray><italic>*via /city setwarp or with the menu of laws*</italic></dark_gray> +feature.city.mayor.command.warp.not_set.no_mayor=<gray>The city warp is not yet defined! You have to wait until a mayor is elected to put a warp</gray> + +feature.city.mayor.warp.error.not_mayor=<red>You are not the mayor of the city</red> +feature.city.mayor.warp.interaction.remaining=<gray>You have %1$s to select your spawn point</gray> +feature.city.mayor.warp.interaction.timeout=<gray>You didn't have time to place your warp</gray> +feature.city.mayor.warp.error.outside_city=<red>Can't warp here because it's not in your city</red> +feature.city.mayor.warp.success=<gray>You just put the </gray><blue>warp</blue><gray> from your city in:</gray> \ + <br><dark_gray>-</dark_gray> <gray>x=%1$s</gray> \ + <br><dark_gray>-</dark_gray> <gray>y=%2$s</gray> \ + <br><dark_gray>-</dark_gray> <gray>z=%3$s</gray> +feature.city.mayor.warp.wand.lore=<gray>Click on where you want to put the </gray><blue>warp</blue> +feature.city.mayor.warp.wand.name=<gray>Selection of </gray><blue>warp</blue> + +feature.city.mayor.broadcast.phase1=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MAYOR!</bold></aqua> <gray>The elections are open!</gray> \ + <br><dark_gray><italic>Introduce yourself, vote for mayors,...</italic></dark_gray> \ + <br><dark_gray><italic>See if you have enough members!</italic></dark_gray> \ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.city.mayor.broadcast.phase2=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MAYOR!</bold></aqua> <gray>Your reforms are active!</gray> \ + <br><dark_gray><italic>Make your strategies, farm, and lots of other things!</italic></dark_gray> \ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +feature.city.mayor.menu.law.name=Menu of laws +feature.city.mayor.menu.law.pvp.name.disable=<red>Disable</red> <gray>PVP</gray> +feature.city.mayor.menu.law.pvp.name.enable=<dark_red>Enable</dark_red> <gray>PVP</gray> +feature.city.mayor.menu.law.pvp.lore.active=<gray>This </gray><dark_blue>law</dark_blue> <dark_red>active</dark_red> <gray>PVP throughout</gray> <light_purple>city</light_purple> +feature.city.mayor.menu.law.pvp.lore.inactive=<gray>This </gray><dark_blue>law</dark_blue> <red>disabled</red> <gray>PVP throughout</gray> <light_purple>city</light_purple> +feature.city.mayor.menu.law.pvp.lore.members=<gray>between the members!</gray> +feature.city.mayor.menu.law.pvp.click.enable=<yellow><bold>CLICK HERE TO ACTIVATE PVP</bold></yellow> +feature.city.mayor.menu.law.pvp.click.disable=<yellow><bold>CLICK HERE TO DISABLE PVP</bold></yellow> +feature.city.mayor.menu.law.pvp.message.enable=<gray>You have </gray><dark_red>activated</dark_red> <gray>PVP in your city</gray> +feature.city.mayor.menu.law.pvp.message.disable=<gray>You have </gray><red>disabled</red> <gray>PVP in your city</gray> +feature.city.mayor.menu.law.warp.name=<gray>Change sound </gray><blue>warp</blue> +feature.city.mayor.menu.law.warp.lore.unset=<gray>This </gray><dark_blue>law</dark_blue> <gray>is not effective!</gray> \ + <br><gray>You need to choose a location where members can</gray> \ + <br><gray>arrive</gray> +feature.city.mayor.menu.law.warp.lore.set=<gray>Members can teleport to your </gray><blue>warp</blue><gray>!</gray> \ + <br><gray>Here is the position of </gray><blue>warp</blue><gray> :</gray> +feature.city.mayor.menu.law.warp.lore.x=<dark_gray>-</dark_gray> <gray>x=%1$s</gray> +feature.city.mayor.menu.law.warp.lore.y=<dark_gray>-</dark_gray> <gray>y=%1$s</gray> +feature.city.mayor.menu.law.warp.lore.z=<dark_gray>-</dark_gray> <gray>z=%1$s</gray> +feature.city.mayor.menu.law.warp.click=<yellow><bold>CLICK HERE TO CHOOSE A LOCATION</bold></yellow> +feature.city.mayor.menu.law.announce.name=<gray>Make an announcement</gray> +feature.city.mayor.menu.law.announce.lore=<gray>This </gray><dark_blue>law</dark_blue> <gray>allows you to send a message throughout the city!</gray> +feature.city.mayor.menu.law.announce.click=<yellow><bold>CLICK HERE TO WRITE THE MESSAGE</bold></yellow> +feature.city.mayor.menu.law.announce.prompt=<yellow>You can enter your message that you want to spread throughout the city! Type cancel to cancel the action</yellow> +feature.city.mayor.menu.law.announce.header=<dark_gray>-- </dark_gray><gold>Mayor's announcement</gold><dark_gray> --</dark_gray> +feature.city.mayor.menu.law.announce.success=You sent the message to everyone in town +feature.city.mayor.menu.law.cooldown=<red>Cooldown:</red> %1$s +feature.city.mayor.menu.law.perk_event.click=<yellow><bold>CLICK HERE TO USE THE REFORM</bold></yellow> +feature.city.mayor.menu.law.perk_event.wait=<red>You must wait before you can use this </red><dark_aqua>reform</dark_aqua> +feature.city.mayor.menu.law.perk_event.impot.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Tax Withholding</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.agricultural.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the</gray><yellow>Agricultural Boom</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.mineral.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Mining Rush</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.military.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Military Deterrence</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.idyllic.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Idyllic rain</yellow><gray> !</gray> +feature.city.mayor.menu.law.perk_event.dream.trigger=<gray>THE </gray><gold>mayor</gold><gray> triggered the </gray><yellow>Chaotic Dream</yellow><gray> !</gray> + +feature.city.mayor.menu.vote.name=Mayors' menu - Votes +feature.city.mayor.menu.vote.lore.header=<dark_gray>Candidate for mayor of %1$s</dark_gray> +feature.city.mayor.menu.vote.lore.votes=<gray>Votes:</gray> %1$s +feature.city.mayor.menu.vote.lore.progress=<dark_gray>[</dark_gray>%1$s<dark_gray>]</dark_gray> <gray>(%2$s%%)</gray> +feature.city.mayor.menu.vote.lore.click=<yellow><bold>CLICK HERE TO VOTE</bold></yellow> +feature.city.mayor.menu.vote.mayor.title=Mayor %1$s +feature.city.mayor.menu.vote.message.already_voted=<gray>You have already voted for this </gray><gold>mayor</gold> +feature.city.mayor.menu.vote.message.voted=<gray>You voted for the </gray>%1$s + +feature.city.mayor.menu.election.name=Elections menu +feature.city.mayor.menu.election.item.name=<gold>The elections</gold> +feature.city.mayor.menu.election.item.lore.voted=<gray>The elections are </gray><gold>open</gold><gray>!</gray> \ + <br><gray>You can change your vote!</gray> \ + <br> \ + <br><gray>Current vote:</gray> %1$s \ + <br><red>Closure in %2$s</red> \ + <br> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MENU</bold></yellow> +feature.city.mayor.menu.election.item.lore.not_voted=<gray>The elections are </gray><gold>open</gold><gray>!</gray> \ + <br><gray>Choose the mayor you like!</gray> \ + <br> \ + <br><red>Closure in %1$s</red> \ + <br> \ + <br><yellow><bold>CLICK HERE TO REGISTER</bold></yellow> +feature.city.mayor.menu.election.error.no_candidate=There are no volunteers to be mayor +feature.city.mayor.menu.election.candidature.lore.already=<gray>You have already </gray><dark_aqua>presented</dark_aqua><gray> !</gray> \ + <br><gray>Change your color and watch </gray><dark_aqua>the reforms</dark_aqua><gray> that you have chosen</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO ACCESS THE MENU</bold></yellow> +feature.city.mayor.menu.election.candidature.lore.new=<gray>You can </gray><dark_aqua>register</dark_aqua><gray> to be mayor!</gray> \ + <br><gray>Select </gray><dark_aqua>your reforms</dark_aqua><gray> and your color!</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO REGISTER</bold></yellow> +feature.city.mayor.menu.election.candidature.name=<gray>Your </gray><dark_aqua>candidacy</dark_aqua> +feature.city.mayor.menu.election.owner_reform.name=<gray>Choice of one </gray><dark_aqua>reform</dark_aqua> +feature.city.mayor.menu.election.owner_reform.lore.chosen=<gray>You have already chosen </gray><dark_aqua>your reform</dark_aqua><gray> !</gray> +feature.city.mayor.menu.election.owner_reform.lore.choice=<gray>You are the owner of the </gray><light_purple>city</light_purple><gray> !</gray> \ + <br><gray>You can choose a </gray><dark_aqua>event reform</dark_aqua><gray> !</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CHOOSE THE REFORM</bold></yellow> + +feature.city.mayor.menu.create.name=Mayors' menu - Creation +feature.city.mayor.menu.create.perk.choose.lore=<gray>Choose </gray><dark_aqua>your reform</dark_aqua><gray> that you want to see!</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CHOOSE THE REFORM</bold></yellow> +feature.city.mayor.menu.create.perk.change.lore=<yellow><bold>CLICK HERE TO CHANGE THE REFORM</bold></yellow> +feature.city.mayor.menu.create.back.election=<gray>You will return to the elections menu</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.create.back.city=<gray>You will return to the menu of your city</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.create.confirm.name.ready=Confirm +feature.city.mayor.menu.create.confirm.name.blocked=Confirm +feature.city.mayor.menu.create.confirm.lore.ready=<gray>You have chosen all </gray><green>the reforms</green><gray> necessary</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CONTINUE THE APPLICATION</bold></yellow> +feature.city.mayor.menu.create.confirm.lore.blocked=<gray>You didn't choose all </gray><red>the reforms</red><gray> necessary</gray> +feature.city.mayor.menu.create.confirm.owner.success=<gray>You added the Reformation: </gray>%1$s + +feature.city.mayor.menu.modify.name=Mayors' menu - Modification +feature.city.mayor.menu.modify.color.lore=<gray>You can change the color of your name!</gray> \ + <br> \ + <br><yellow><bold>CLICK HERE TO CHANGE COLOR</bold></yellow> +feature.city.mayor.menu.modify.color.name=<gray>Change your </gray>%1$s +feature.city.mayor.menu.modify.back.lore=<gray>You will return to the menu of your city</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> + +feature.city.mayor.menu.color.name=Mayors Menu - Color +feature.city.mayor.menu.color.option.lore=<gray>Your name will be displayed in %1$s</gray> \ + <br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.city.mayor.menu.color.option.name=<gray>Put some %1$s</gray> +feature.city.mayor.menu.color.confirm.lore=<gray>You will introduce yourself as </gray><gold>mayor</gold><gray> of %1$s</gray> +feature.city.mayor.menu.color.confirm.final=<red><bold>NO RETURN POSSIBLE!</bold></red> +feature.city.mayor.menu.color.confirm.cancel=<gray>Do not present yourself as </gray><gold>Mayor</gold><gray> of %1$s</gray> +feature.city.mayor.menu.color.candidate.announce=%1$s <gray>introduced himself as </gray><gold>mayor</gold><gray>!</gray> +feature.city.mayor.menu.color.candidate.success=<gray>You introduced yourself with </gray><green>success</green><gray>!</gray> +feature.city.mayor.menu.color.error.no_mayor=<red>Your city has no mayor!</red> +feature.city.mayor.menu.color.change.success=<gray>You changed your </gray>%1$s<gray> in </gray>%2$s +feature.city.mayor.menu.color.change.confirm=<gray>Change your </gray>%1$s<gray> in </gray>%2$s +feature.city.mayor.menu.color.change.cancel=<gray>Don't change it </gray>%1$s<gray> in </gray>%2$s + +feature.city.mayor.menu.perk_choice.name=Mayors' menu - Reforms +feature.city.mayor.menu.perk_choice.locked=<red>You must be level </red>%1$s<red> to unlock this</red> +feature.city.mayor.menu.perk_choice.error.event_duplicate=You cannot choose 2 event-type reforms! +feature.city.mayor.menu.perk_choice.button.back=<gray>Go back</gray> +feature.city.mayor.menu.perk_choice.button.prev=<red>Previous page</red> +feature.city.mayor.menu.perk_choice.button.next=<green>Next page</green> + +feature.city.mayor.perk.basic.ayweniter.blessing=<dark_gray><italic>*the blessing!*</italic></dark_gray> +feature.city.mayor.perk.basic.iron_blood.tremor=<dark_gray><italic>*tremor* Something seems to be happening...</italic></dark_gray> +feature.city.mayor.perk.basic.gps_tracker.entered=<red>You just entered the city </red>%1$s<red> who has the </red><yellow><bold>GPS Tracker</bold></yellow><red> ! Be on your guard.</red> +feature.city.mayor.perk.event.agricultural.start=The Essor Agricole event reform has been launched and all that remains is %1$s +feature.city.mayor.perk.event.agricultural.end=The Essor Agricole event reform is complete! +feature.city.mayor.perk.event.mineral.start=The Ruée Minière event reform has been launched and all that remains is %1$s +feature.city.mayor.perk.event.mineral.end=The Mining Rush event reform is complete! +feature.city.mayor.perk.event.impot.zombie.name=Servant of %1$s +feature.city.mayor.perk.event.impot.victim.lucky=<dark_gray><italic>*grr you're lucky!*</italic></dark_gray> +feature.city.mayor.perk.event.impot.victim.lost=You lost %1$s because of the mayor %2$s +feature.city.mayor.perk.event.impot.mayor.collected=You have just taken %1$s has %2$s +feature.city.mayor.perk.event.impot.zombies.done=<dark_gray><italic>*the zombies got everything they wanted*</italic></dark_gray> +feature.city.mayor.perk.event.military.golem.name=Defendant of %1$s + +feature.city.mayor.admin.changeelection.usage=/adminmayor changeelection cityUUID electionType<owner_choose/election> +feature.city.mayor.admin.changeelection.success=You just put: %1$s in the city %2$s + +# ** CITY LEVELS ** +feature.city.levels.menu.title=Cities Menu - Levels +feature.city.levels.menu.requirements.header=<dark_aqua><bold>Required :</bold></dark_aqua> +feature.city.levels.menu.rewards.header=<gold><bold>Rewards:</bold></gold> +feature.city.levels.menu.rewards.item=<gold>Awards</gold> +feature.city.levels.menu.status.unlocked=<green><bold>UNBLOCKED</bold></green> +feature.city.levels.menu.unlock.remaining=<white>He's staying</white> %1$s <white>unlocking</white> +feature.city.levels.menu.unlock.duration=%1$s <white>unlocking</white> +feature.city.levels.menu.click.start_upgrade=<yellow><bold>CLICK HERE TO START IMPROVEMENT</bold></yellow> +feature.city.levels.menu.click.contribute=<yellow><bold>CLICK HERE TO CONTRIBUTE</bold></yellow> +feature.city.levels.menu.deposit.click_one=<yellow><bold>CLICK TO DEPOSIT A</bold></yellow> +feature.city.levels.menu.deposit.click_all=<yellow><bold>SHIFT-CLICK TO DROP ALL</bold></yellow> + +feature.city.levels.rewards.none=<gray>None</gray> +feature.city.levels.rewards.unlock=<gray>Unblocked</gray> %1$s +feature.city.levels.rewards.list.separator=<gray>,</gray> +feature.city.levels.rewards.list.last_separator=<gray>And</gray> +feature.city.levels.rewards.feature.chest=<green>/city chest</green> +feature.city.levels.rewards.feature.city_bank=<gold>/city bank</gold> +feature.city.levels.rewards.feature.player_bank=<aqua>/bank</aqua> +feature.city.levels.rewards.feature.notation=<dark_aqua>/city notation</dark_aqua> +feature.city.levels.rewards.feature.rank=<gold>/city ranks</gold> +feature.city.levels.rewards.feature.mayor=<gold>/city mayor</gold> +feature.city.levels.rewards.feature.perk_agricultural=<dark_aqua>agricultural reforms</dark_aqua> +feature.city.levels.rewards.feature.perk_economy=<dark_aqua>economic reforms</dark_aqua> +feature.city.levels.rewards.feature.type_war=<red>the type of war city</red> +feature.city.levels.rewards.feature.war=<red>/war</red> +feature.city.levels.rewards.feature.perk_dream=<dark_aqua>dreamlike reforms</dark_aqua> +feature.city.levels.rewards.feature.perk_military=<dark_aqua>military reforms</dark_aqua> +feature.city.levels.rewards.feature.perk_strategy=<dark_aqua>strategy reforms</dark_aqua> +feature.city.levels.rewards.mascot_level_max=<red>Level</red> %1$s maximum for the mascot +feature.city.levels.rewards.member_limit=%1$s maximum members +feature.city.levels.rewards.rank_limit=%1$s maximum grades +feature.city.levels.rewards.chest_page_limit=%1$s maximum vault pages +feature.city.levels.rewards.player_bank_limit=Limit to %1$s money in the %2$s +feature.city.levels.rewards.player_bank_label=personal bank +feature.city.levels.rewards.interest=+ %1$s%% interest +feature.city.levels.rewards.mascot_skin.single=the mascot %1$s +feature.city.levels.rewards.mascot_skin.multiple=the mascots %1$s + +feature.city.levels.requirements.deposit=Deposit %1$s %2$s +feature.city.levels.requirements.deposit.progress=Deposit %1$s %2$s (%3$s/%1$s) +feature.city.levels.requirements.deposit.description=<yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.city.levels.requirements.deposit.success=You filed %1$s %2$s +feature.city.levels.requirements.command=Execute %1$s times %2$s +feature.city.levels.requirements.command.progress=Execute %1$s times %2$s (%3$s/%1$s) + +feature.city.levels.upgrade.broadcast=The city %1$s has moved to the Level %2$s ! Maximum GG! +feature.city.levels.admin.skip_upgrade.success=Skip Level Upgrade +feature.city.levels.admin.set_level.success=Level %1$s applied to the city +feature.city.levels.level_1.name=Level 1 +feature.city.levels.level_1.description=Urban era +feature.city.levels.level_2.name=Level 2 +feature.city.levels.level_2.description=The foundations +feature.city.levels.level_3.name=Level 3 +feature.city.levels.level_3.description=Undeveloped city +feature.city.levels.level_4.name=Level 4 +feature.city.levels.level_4.description=Democracy +feature.city.levels.level_5.name=Level 5 +feature.city.levels.level_5.description=Economic development +feature.city.levels.level_6.name=Level 6 +feature.city.levels.level_6.description=Capital +feature.city.levels.level_7.name=Level 7 +feature.city.levels.level_7.description=Kingdom? +feature.city.levels.level_8.name=Level 8 +feature.city.levels.level_8.description=Empire? +feature.city.levels.level_9.name=Level 9 +feature.city.levels.level_9.description=Military power +feature.city.levels.level_10.name=Level 10 +feature.city.levels.level_10.description=Metropolis + +feature.city.levels.rewards.free_claims=%1$s <gold>claims</gold> <gray>free</gray> + +feature.city.levels.requirements.claims=To have %1$s claims +feature.city.levels.requirements.claims.progress=To have %1$s claims (%2$s/%1$s) +feature.city.levels.requirements.setwarp=Ask a /city setwarp +feature.city.levels.requirements.bank=To have %1$s in the bank +feature.city.levels.requirements.bank.progress=To have %1$s in the bank (%2$s/%1$s) +feature.city.levels.requirements.members=To have %1$s members +feature.city.levels.requirements.members.progress=To have %1$s members (%2$s/%1$s) +feature.city.levels.requirements.mascot_level=Have the mascot level %1$s +feature.city.levels.requirements.notation.receive=Receive a rating +feature.city.levels.requirements.ranks=To have %1$s grades (/city rank) +feature.city.levels.requirements.ranks.progress=To have %1$s grades (%2$s/%1$s) +feature.city.levels.requirements.craft_urne=Craft an urn +feature.city.levels.requirements.place_urne=Place the urn +feature.city.levels.requirements.notation.points=Minimum credit %1$s points on one of the ratings +feature.city.levels.requirements.war.count=Have done %1$s wars +feature.city.levels.requirements.war.count.progress=Have done %1$s wars (%2$s/%1$s) +feature.city.levels.requirements.war.win=Win a war +feature.city.levels.requirements.war.win.count=Earn %1$s wars +feature.city.levels.requirements.war.win.count.progress=Earn %1$s wars (%2$s/%1$s) +feature.city.levels.requirements.notation.top10=Be in the top 10 of the ratings on one of the ratings diff --git a/src/main/resources/translations/en_US/commands.properties b/src/main/resources/translations/en_US/commands.properties index 9c99899e7..cfb9370ba 100644 --- a/src/main/resources/translations/en_US/commands.properties +++ b/src/main/resources/translations/en_US/commands.properties @@ -1,2 +1,68 @@ -command.fun.playtime.success=You have <light_purple>%s</light_purple> of playtime. +command.fun.playtime.success=You have %1$s of playing time. +command.fun.diceroll.success=The result is: %1$s +command.admin.freeze.title=<dark_red>You are frozen</dark_red> +command.admin.freeze.subtitle=<dark_purple>If you log out you will be banned</dark_purple> +command.admin.freeze.player_freezed=<dark_red>You have been freezing</dark_red> +command.admin.freeze.player_not_found=<dark_red>Player not found</dark_red> +command.admin.freeze.player_unfreeze=<dark_green>You have unfreeze %1$s</dark_green> +command.admin.freeze.target_unfreeze=<dark_green>You've been unfreeze</dark_green> +command.admin.freeze.player_freeze=<dark_green>You have frozen %1$s</dark_green> +command.admin.freeze.target_freeze=<dark_green>You have been freezing</dark_green> +command.admin.freeze.quit_reason.kicked=<dark_green>The player was kicked</dark_green> +command.admin.freeze.quit_reason.timeout=<dark_green>The player was timed out</dark_green> +command.admin.freeze.quit_reason.error=<dark_green>The player had a connection error</dark_green> +command.admin.freeze.quit_reason.default=<dark_green>The player has been disconnected</dark_green> + +command.debug.chronometer.cant_90s_chronometer=<red>Do not exceed more than 90s for debugging</red> + +command.debug.cooldown.success=<green>Success, cooldown is activated</green> +command.debug.cooldown.error=<red>Error, you can redo the order</red> + +command.registry.custom_ambient.apply.null=<red>Error, the id entered is null</red> +command.registry.custom_ambient.apply.success=<green>The atmosphere</green> %1$s <green>has been correctly applied to</green> %2$s <green>!</green> +command.registry.custom_ambient.reset.player_havnt_ambient=<red>Error, the player has no atmosphere applied</red> +command.registry.custom_ambient.reset.success=<green>The ambiance was correctly removed on</green> %1$s <green>!</green> + +command.registry.custom_mobs.summon.not_found=<red>This mob does not exist</red> + +command.registry.custom_items_debug.test=Test %1$s: %2$s +command.registry.custom_items_debug.test.passed=<green>pass</green> +command.registry.custom_items_debug.test.failed=<red>failed</red> +command.registry.custom_items_debug.hand.empty=<red>You don't hold anything in your hand.</red> +command.registry.custom_items_debug.hand.not_custom=<red>The item in hand is not a custom item.</red> +command.registry.custom_items_debug.list.title=<yellow>List of custom items:</yellow> +command.registry.custom_items_debug.list.item=<yellow>- </yellow>%1$s +command.registry.custom_items_debug.get.not_found=<red>This item does not exist.</red> + +command.utils.cooldowns.no_cooldown=<red>You have no active cooldown.</red> +command.utils.cooldowns.list_cooldowns=List of active cooldowns: +command.utils.cooldowns.list=- %1$s : %2$s + +command.utils.restart.cannot_open_city_chest=The vault is inaccessible during a scheduled reboot +command.utils.restart.redem=🔄 Server restart 🔄 \ + <br> +command.utils.restart.server_restarting=The server is restarting. \ + <br> +command.utils.restart.thanks=Thank you for your patience! +command.utils.restart.restarting_in=Restarting the server in %1$s second%2$s +command.utils.restart.restart=Reboot +command.utils.restart.in=%1$s second%2$s + +command.utils.rtp.must_wait=You have to wait before you can rtp (%3$s) +command.utils.rtp.fail=RTP failed. Try again later... +command.utils.rtp.try=RTP: Attempt %1$s/%2$s <red>Failure</red>... +command.utils.rtp.success=You have been teleported to <gold>X:</gold> %1$s, <gold>Y:</gold> %2$s, <gold>Z:</gold> %3$s + +command.utils.setspawn.success=You changed the spawn point to <gold>X:</gold> %1$s, <gold>Y:</gold> %2$s, <gold>Z:</gold> %3$s + +command.utils.spawn.got_sent=<light_green>You have been sent to spawn</light_green> +command.utils.spawn.have_sent=<light_green>You sent %1$s at spawn</light_green> +command.utils.spawn.have_sent_by=<light_green>You were sent to spawn by %1$s</light_green> + +command.utils.socials.hover_access=Click to access +command.utils.socials.discord=<blue>Discord</blue> <dark_gray>:</dark_gray> +command.utils.socials.site=<light_purple>Site</light_purple> <dark_gray>:</dark_gray> +command.utils.socials.wiki=<dark_purple>Wiki</dark_purple> <dark_gray>:</dark_gray> +command.utils.socials.github=<black>Github</black> <dark_gray>:</dark_gray> +command.utils.socials.blog=<black>Blog</black> <dark_gray>:</dark_gray> diff --git a/src/main/resources/translations/en_US/contest.properties b/src/main/resources/translations/en_US/contest.properties new file mode 100644 index 000000000..040300810 --- /dev/null +++ b/src/main/resources/translations/en_US/contest.properties @@ -0,0 +1,247 @@ +feature.events.contest.vote.menu.title=Contests Menu - Voting +feature.events.contest.vote.lore.vote_team=<gray>Vote for the team </gray>%1$s +feature.events.contest.vote.lore.win=<gray>Win it by depositing the most points</gray> +feature.events.contest.vote.lore.warning_choice=<red><bold>ATTENTION ! The choice is final!</bold></red> +feature.events.contest.vote.lore.voted_for=<gray>You voted for the team </gray>%1$s +feature.events.contest.vote.lore.win_exclaim=<gray>Win it by depositing the most points!</gray> +feature.events.contest.vote.lore.lose_team=<gray>Make the team lose </gray>%1$s +feature.events.contest.vote.lore.lose_detail=<gray>By bringing in as many points as you can!</gray> +feature.events.contest.vote.info.lore=<gray>Learn more about contests!</gray>\ +<br><gray>The process, the results, ...</gray>\ +<br><yellow><bold>CLICK HERE TO SEE MORE!</bold></yellow> +feature.events.contest.vote.confirm.join.lore=<gray>You will join </gray>%1$s\ +<br><red><bold>ATTENTION ! You will not be able to change your choice!</bold></red> +feature.events.contest.vote.confirm.cancel.lore=<gray>You will cancel your choice: </gray>%1$s\ +<br><red><bold>ATTENTION ! You will not be able to change your choice!</bold></red> +feature.events.contest.vote.joined=<gray>You have successfully joined: </gray>%1$s +feature.events.contest.vote.info.name=<green>More info!</green> +feature.events.contest.team.label=<gray>Team</gray> %1$s +feature.events.contest.trade.menu.title=Contests Menu - Exchanges +feature.events.contest.trade.main.name=<gray>The exchanges</gray> +feature.events.contest.trade.main.lore=<gray>Sell as many resources as possible</gray>\ +<br><gray>Against </gray><aqua>contest shells</aqua>\ +<br><gray>To win the </gray>%1$s +feature.events.contest.trade.info.lore=<gray>Learn more about contests!</gray>\ +<br><gray>The process, the results, ...</gray>\ +<br><yellow><bold>CLICK HERE TO SEE MORE!</bold></yellow> +feature.events.contest.trade.offer.lore=<gray>Sell </gray><yellow>%1$s</yellow><gray> For </gray><aqua>%2$s</aqua><gray> shell(s)</gray>\ +<br><yellow><bold>LEFT CLICK TO SELL ONCE</bold></yellow>\ +<br><yellow><bold>SHIFT-LEFT-CLICK TO SELL ALL THIS RESOURCE</bold></yellow> +feature.events.contest.trade.unavailable=<red>Functionality blocked. Contact the administration.</red> +feature.events.contest.trade.success=<gray>You exchanged </gray>%1$s %2$s<gray> against </gray>%3$s<gray> contest shell(s)</gray> +feature.events.contest.trade.not_enough=<red>You don't have enough of this resource to exchange it!</red> +feature.events.contest.phase.vote.name=The votes +feature.events.contest.phase.vote.lore=<gray>Every Friday, the contest begins</gray>\ +<br><gray>And the votes open, and you have to choose</gray>\ +<br><gray>Between 2 camps, an atmosphere is created in the spawn...</gray> +feature.events.contest.phase.trade.name=The confrontation +feature.events.contest.phase.trade.lore=<gray>Night falls on the spawn for 2 days</gray>\ +<br><gray>Let the party begin!</gray>\ +<br><gray>Trades are available</gray>\ +<br><gray>Giving away contest shells!</gray> +feature.events.contest.phase.end.name=The results +feature.events.contest.phase.end.lore=<gray>Sunrise over the spawn!</gray>\ +<br><gray>The results fall, and a camp</gray>\ +<br><gray>will be a winner. And rewards will be awarded</gray>\ +<br><gray>to everyone.</gray> +feature.events.contest.command.no_event=<red>There is no Contest! Come back in </red>%1$s<red> days).</red> +feature.events.contest.command.ended_phase=<red>The Contest is in its finished phase, please contact the staff.</red> +feature.events.contest.command.setcontest.not_active=<red>You cannot define a contest when it is not active</red> +feature.events.contest.command.setcontest.started=<red>You cannot define a contest when it has started</red> +feature.events.contest.command.setcontest.saved=<green>The Contest: </green>%1$s<green> VS </green>%2$s<green> has been successfully saved</green>\ +<gray>Please wait for the cached data to refresh.</gray> +feature.events.contest.command.setcontest.invalid_color=<red>/contest setcontest <camp1> <color1> <camp2> <color2> and color must be valid</red> +feature.events.contest.command.addpoints.not_started=<red>You cannot give points when the contest has not started</red> +feature.events.contest.command.addpoints.not_registered=<red>You cannot give points to this player because he did not register</red> +feature.events.contest.command.addpoints.invalid=<red>You cannot give negative points or equal to 0</red> +feature.events.contest.command.addpoints.success=<green>You added </green>%1$s<green> point(s) to </green>%2$s +feature.events.contest.more_info.title=Contests Menu - More info +feature.events.contest.more_info.vote.name=<dark_blue>Votes - Friday</dark_blue> +feature.events.contest.more_info.trade.name=<red>The clash - Saturday-Sunday</red> +feature.events.contest.more_info.end.name=<yellow>Results - Monday</yellow> +feature.events.contest.broadcast.phase1=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gold><bold>CONTEST!</bold></gold><gray> Votes are open!</gray>\ + <br><dark_gray><italic>*we meet at the spawn to be able to vote or /contest...*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.events.contest.broadcast.phase2=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \<br><gold><bold>CONTEST!</bold></gold><gray> The contributions have started!</gray>\ + <br><gray>Exchange resources for Contest Shells. Collect as many as possible and place them</gray>\ + <br><dark_gray><italic>via the contest terminal or /contest</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.events.contest.broadcast.phase3=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \<br><gold><bold>CONTEST!</bold></gold><gray> Time over!</gray>\ + <br><gray>End of the contest, find your rewards and the results of this Contest</gray>\ + <br><gray>in book form</gray>\ + <br><dark_gray><italic>*/contest pour see when the next contest is coming*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.events.contest.contribution.title=Contests Menu - Contributions +feature.events.contest.contribution.lore.contribute=<gray>Give your </gray><aqua>contest shells</aqua>\ +<br><gray>To win your </gray>%1$s\ +<br><yellow><bold>Click to pour all your shellfish</bold></yellow> +feature.events.contest.contribution.lore.trade=<gray>Trade for </gray><aqua>contest shells</aqua>\ +<br><gray>Useful to win your </gray>%1$s\ +<br><yellow><bold>Click to access the exchanges menu</bold></yellow> +feature.events.contest.contribution.lore.rank=%1$s\ +<br><gray>Progress </gray><dark_gray>:</dark_gray> %2$s<dark_gray>/</dark_gray>%3$s\ +<br><yellow><bold>INCREASE TITLE TO GET BETTER REWARDS</bold></yellow> +feature.events.contest.contribution.title.name=<gold><bold>Your title</bold></gold> +feature.events.contest.contribution.button.name=<gray>Contribute for the</gray> %1$s +feature.events.contest.contribution.unavailable=<red>Functionality blocked. Please contact the administration</red> +feature.events.contest.contribution.success=<gray>You filed </gray>%1$s<gray> contest shell(s) for your team!</gray> +feature.events.contest.contribution.no_shells=<red>You don't have a contest shell</red> +feature.events.contest.book.title=The results of the contest +feature.events.contest.book.author=The contests +feature.events.contest.book.lore=%1$s <dark_gray>VS</dark_gray> %2$s\ +<br><yellow><bold>Open this book to learn more!</bold></yellow> +feature.events.contest.book.page.global=<dark_gray><bold>Overall statistics</bold></dark_gray>\ +<br>Winner: %1$s\ +<br>Voting rate: %2$s\ +<br>Point rate: %3$s\ +<br>\ +<br>Loser: %4$s\ +<br>Voting rate: %5$s\ +<br>Point rate: %6$s\ +<br>Inferiority multiplier: <aqua>x</aqua>%7$s\ +<br><dark_gray><italic>Next page: ranking of the 10 best contributors</italic></dark_gray> +feature.events.contest.book.page.ranking.title=<dark_gray><bold>The ranking of the contest (up to 10th)</bold></dark_gray> +feature.events.contest.mail.received=<dark_green>You have received the contest letter</dark_green> +feature.events.contest.mail.click=<yellow>Click here</yellow> +feature.events.contest.mail.hover=Open mailbox +feature.events.contest.mail.open_mailbox=<gold> to open the mailbox</gold> +feature.events.contest.book.page.personal=<dark_gray><bold>Personal statistics</bold></dark_gray>\ +<br>Your side: %1$s\ +<br>Your title on the contest: %2$s\ +<br>Your rank in the contest: #%3$s\ +<br>Points submitted: %4$s +feature.events.contest.book.page.rewards.title=<dark_gray><bold>Awards</bold></dark_gray> +feature.events.contest.book.page.rewards.money.prefix=\ +<dark_gray>+ </dark_gray> +feature.events.contest.book.page.rewards.money.suffix=<gold>$ </gold> +feature.events.contest.book.page.rewards.aywenite.prefix=\ +<blue>+ </blue> +feature.events.contest.book.page.rewards.aywenite.suffix=<light_purple> of Aywenite</light_purple> +feature.events.contest.book.page.rewards.boost.prefix=\ +<gray>Boost </gray> +feature.events.contest.camp.mayonnaise=Mayonnaise +feature.events.contest.camp.ketchup=Ketchup +feature.events.contest.camp.heroes=Heroes +feature.events.contest.camp.villain=Villain +feature.events.contest.camp.chaos=Chaos +feature.events.contest.camp.order=Order +feature.events.contest.camp.pasta=Pasta +feature.events.contest.camp.rice=Rice +feature.events.contest.camp.samsung=Samsung +feature.events.contest.camp.apple=Apple +feature.events.contest.camp.mountain=Mountain +feature.events.contest.camp.sea=Sea +feature.events.contest.camp.dog=Dog +feature.events.contest.camp.cat=Cat +feature.events.contest.camp.past=Past +feature.events.contest.camp.future=Future +feature.events.contest.camp.pain_au_chocolat=Pain au chocolat +feature.events.contest.camp.chocolatine=Chocolatine +feature.events.contest.camp.day=Day +feature.events.contest.camp.night=Night +feature.events.contest.camp.pizza=Pizza +feature.events.contest.camp.burger=Burger +feature.events.contest.camp.summer=Summer +feature.events.contest.camp.winter=Winter +feature.events.contest.camp.sweet=Sweet +feature.events.contest.camp.salty=Salty +feature.events.contest.camp.rain=Rain +feature.events.contest.camp.sun=Sun +feature.events.contest.camp.city=City +feature.events.contest.camp.countryside=Countryside +feature.events.contest.camp.football=Football +feature.events.contest.camp.basketball=Basketball +feature.events.contest.camp.tea=Tea +feature.events.contest.camp.coffee=Coffee +feature.events.contest.camp.dark_chocolate=Dark Chocolate +feature.events.contest.camp.milk_chocolate=Milk Chocolate +feature.events.contest.camp.dc=DC +feature.events.contest.camp.marvel=Marvel +feature.events.contest.camp.wolf=Wolf +feature.events.contest.camp.fox=Fox +feature.events.contest.camp.morning=Morning +feature.events.contest.camp.evening=Evening +feature.events.contest.camp.netflix=Netflix +feature.events.contest.camp.disney_plus=Disney+ +feature.events.contest.camp.camping=Camping +feature.events.contest.camp.hotel=Hotel +feature.events.contest.camp.plane=Plane +feature.events.contest.camp.train=Train +feature.events.contest.camp.playstation=PlayStation +feature.events.contest.camp.xbox=Xbox +feature.events.contest.camp.spring=Spring +feature.events.contest.camp.manga=Manga +feature.events.contest.camp.anime=Anime +feature.events.contest.camp.beach=Beach +feature.events.contest.camp.forest=Forest +feature.events.contest.camp.cinema=Cinema +feature.events.contest.camp.theater=Theater +feature.events.contest.camp.car=Car +feature.events.contest.camp.motorcycle=Motorcycle + +feature.events.contest.camp.mayonnaise.to_small=true +feature.events.contest.camp.ketchup.to_small=true +feature.events.contest.camp.heroes.to_small=true +feature.events.contest.camp.villain.to_small=true +feature.events.contest.camp.chaos.to_small=true +feature.events.contest.camp.order.to_small=true +feature.events.contest.camp.pasta.to_small=true +feature.events.contest.camp.rice.to_small=true +feature.events.contest.camp.samsung.to_small=true +feature.events.contest.camp.apple.to_small=true +feature.events.contest.camp.mountain.to_small=true +feature.events.contest.camp.sea.to_small=true +feature.events.contest.camp.dog.to_small=true +feature.events.contest.camp.cat.to_small=true +feature.events.contest.camp.past.to_small=true +feature.events.contest.camp.future.to_small=true +feature.events.contest.camp.pain_au_chocolat.to_small=true +feature.events.contest.camp.chocolatine.to_small=true +feature.events.contest.camp.day.to_small=true +feature.events.contest.camp.night.to_small=true +feature.events.contest.camp.pizza.to_small=true +feature.events.contest.camp.burger.to_small=true +feature.events.contest.camp.summer.to_small=true +feature.events.contest.camp.winter.to_small=true +feature.events.contest.camp.sweet.to_small=true +feature.events.contest.camp.salty.to_small=true +feature.events.contest.camp.rain.to_small=true +feature.events.contest.camp.sun.to_small=true +feature.events.contest.camp.city.to_small=true +feature.events.contest.camp.countryside.to_small=true +feature.events.contest.camp.football.to_small=true +feature.events.contest.camp.basketball.to_small=true +feature.events.contest.camp.tea.to_small=true +feature.events.contest.camp.coffee.to_small=true +feature.events.contest.camp.dark_chocolate.to_small=true +feature.events.contest.camp.milk_chocolate.to_small=true +feature.events.contest.camp.dc.to_small=true +feature.events.contest.camp.marvel.to_small=true +feature.events.contest.camp.wolf.to_small=true +feature.events.contest.camp.fox.to_small=true +feature.events.contest.camp.morning.to_small=true +feature.events.contest.camp.evening.to_small=true +feature.events.contest.camp.netflix.to_small=true +feature.events.contest.camp.disney_plus.to_small=true +feature.events.contest.camp.camping.to_small=true +feature.events.contest.camp.hotel.to_small=true +feature.events.contest.camp.plane.to_small=true +feature.events.contest.camp.train.to_small=true +feature.events.contest.camp.playstation.to_small=true +feature.events.contest.camp.xbox.to_small=true +feature.events.contest.camp.spring.to_small=true +feature.events.contest.camp.manga.to_small=true +feature.events.contest.camp.anime.to_small=true +feature.events.contest.camp.beach.to_small=true +feature.events.contest.camp.forest.to_small=true +feature.events.contest.camp.cinema.to_small=true +feature.events.contest.camp.theater.to_small=true +feature.events.contest.camp.car.to_small=true +feature.events.contest.camp.motorcycle.to_small=true \ No newline at end of file diff --git a/src/main/resources/translations/en_US/core.properties b/src/main/resources/translations/en_US/core.properties new file mode 100644 index 000000000..f89d392d1 --- /dev/null +++ b/src/main/resources/translations/en_US/core.properties @@ -0,0 +1,42 @@ +core.player.death.message=<red>You just died with</red> %1$s, <red>you lost</red> %2$s\n<dark_gray>*consider putting your money in the bank*</dark_gray> + +core.player.join.welcome=<gray>Welcome to OpenMC!</gray> +core.player.join.friend_online=<green>Your friend</green> %1$s <green>logged in</green> +core.player.join.quest_reward=<green>You have</green> %1$s <green>Pending quest reward(s).</green> +core.player.join.quest_reward_click=<gold>Click here to collect them.</gold> + +core.player.quit.friend_offline=<red>Your friend</red> %1$s <red>disconnected</red> + +core.player.tpa.expired_target=<dark_aqua>The request for teleportation</dark_aqua> %1$s <dark_aqua>was canceled because he disconnected</dark_aqua> +core.player.tpa.expired_requester=<dark_red>Your teleport request to</dark_red> %1$s <dark_red>was canceled because he disconnected</dark_red> + +core.color.name.black=<black>Black</black> +core.color.name.dark_blue=<dark_blue>Dark blue</dark_blue> +core.color.name.dark_green=<dark_green>Dark green</dark_green> +core.color.name.dark_aqua=<dark_aqua>Dark Aqua</dark_aqua> +core.color.name.dark_red=<dark_red>Dark red</dark_red> +core.color.name.dark_purple=<dark_purple>Purple</dark_purple> +core.color.name.gold=<gold>Orange</gold> +core.color.name.gray=<gray>Gray</gray> +core.color.name.dark_gray=<dark_gray>Dark gray</dark_gray> +core.color.name.blue=<blue>Blue</blue> +core.color.name.green=<green>Light green</green> +core.color.name.aqua=<aqua>Light blue</aqua> +core.color.name.red=<red>Red</red> +core.color.name.light_purple=<light_purple>Pink</light_purple> +core.color.name.yellow=<yellow>YELLOW</yellow> +core.color.name.white=<white>White</white> +core.color.name.none=<gray>None</gray> + +core.date.relative.just_now=Right now +core.date.relative.minute=There is %1$s minute +core.date.relative.minutes=There is %1$s minutes +core.date.relative.hour=There is %1$s hour +core.date.relative.hours=There is %1$s hours +core.date.relative.day=There is %1$s day +core.date.relative.days=There is %1$s days +core.date.relative.absolute=THE %1$s has %2$s + + + + diff --git a/src/main/resources/translations/en_US/credits.properties b/src/main/resources/translations/en_US/credits.properties new file mode 100644 index 000000000..ffdfe3dab --- /dev/null +++ b/src/main/resources/translations/en_US/credits.properties @@ -0,0 +1,47 @@ +feature.credits.menu.title=<yellow>Server credits</yellow> +feature.credits.menu.lore.developers=<gray>Developer(s):</gray> %1$s +feature.credits.menu.lore.graphists=<gray>Graphic designer(s):</gray> %1$s +feature.credits.menu.lore.builders=<gray>Builder(s):</gray> %1$s +feature.credits.menu.close=<red>Close menu</red> +feature.credits.feature.adminshop=Adminshop +feature.credits.feature.animations=Entertainment +feature.credits.feature.cube=The Cube +feature.credits.feature.city=Cities +feature.credits.feature.dream=The Dimension of Dreams +feature.credits.feature.dream_milestone=The Milestone of Dreams +feature.credits.feature.mascots=Mascots +feature.credits.feature.mayor=The Mayors +feature.credits.feature.city_milestone=The Cities Milestone +feature.credits.feature.war=Wars +feature.credits.feature.notation=Ratings +feature.credits.feature.rank=The Ranks +feature.credits.feature.contest=The Contests +feature.credits.feature.weekly_events=Weekly Events +feature.credits.feature.holograms=Holograms +feature.credits.feature.economy=Economy +feature.credits.feature.friends=The friend system +feature.credits.feature.homes=The Home System +feature.credits.feature.leaderboard=Rankings +feature.credits.feature.mailbox=The Mailbox +feature.credits.feature.mainmenu=The Main Menu +feature.credits.feature.milestones=The Milestones +feature.credits.feature.privatemessage=Private messages +feature.credits.feature.quest=Quests +feature.credits.feature.settings=Settings +feature.credits.feature.shops=Shops +feature.credits.feature.tickets=V1 Tickets +feature.credits.feature.tpa=The Tpa +feature.credits.feature.rtp=The RTP +feature.credits.feature.versionning=Versioning +feature.credits.feature.omcregistry=WTO Registers +feature.credits.feature.customitems=Custom Items +feature.credits.feature.customlootbox=Custom Lootboxes +feature.credits.feature.chronometer=Stopwatch +feature.credits.feature.cooldown=Cooldown +feature.credits.feature.menu_lib=Menu System +feature.credits.feature.packet_menu_lib=Packet Menu System +feature.credits.feature.errorhandler=The error handling system +feature.credits.feature.unittest=Unit tests +feature.credits.feature.orm=Database system + + diff --git a/src/main/resources/translations/en_US/cube.properties b/src/main/resources/translations/en_US/cube.properties new file mode 100644 index 000000000..4877c656e --- /dev/null +++ b/src/main/resources/translations/en_US/cube.properties @@ -0,0 +1,14 @@ +feature.cube.bossbar.title=The Cube +feature.cube.command.start_shock=Electro-magnetic shock launched +feature.cube.command.start_bubble=Corrupted bubble launched +feature.cube.command.stop_shock=Electro-magnetic shock stopped +feature.cube.command.stop_bubble=Corrupt bubble stopped +feature.cube.command.reproduce=Reproduction of the cube launched! +feature.cube.command.reproduce_force.unavailable=Reproduction is not in progress, use %1$s +feature.cube.command.reproduce_force.success=Forced reproduction of the cube! +feature.cube.command.invalid_format=Invalid format! +feature.cube.command.world_not_found=World not found +feature.cube.command.invalid_coords=Invalid coordinates +feature.cube.command.not_found=No cubes found +feature.cube.command.not_cube=It's not a cube + diff --git a/src/main/resources/translations/en_US/dailyevents.properties b/src/main/resources/translations/en_US/dailyevents.properties new file mode 100644 index 000000000..610370f93 --- /dev/null +++ b/src/main/resources/translations/en_US/dailyevents.properties @@ -0,0 +1,102 @@ +feature.dailyevents.bloodynight.name=<dark_red><bold>Bloody Night</bold></dark_red> +feature.dailyevents.goldenharvest.name=<gold><bold>Golden Harvest</bold></gold> +feature.dailyevents.miraculousfishing.name=<dark_aqua><bold>Miraculous fishing</bold></dark_aqua> + +feature.dailyevents.bloodynight.lore=<gray>The night remains to be <dark_red>bloody</dark_red>...</gray> \ + <br><gray>Protect yourself, fight, you will experience different waves</gray> \ + <br><gray>and you will surely have a <dark_red>big boss</dark_red> to beat with several</gray> +feature.dailyevents.goldenharvest.lore=<gray>It risks being <gold>sporty</gold></gray> \ + <br><gray>Expect farms to be running at full capacity!</gray> \ + <br><gray>Benefit from <gold>several new resources</gold> and many surprises</gray> +feature.dailyevents.miraculousfishing.lore=<gray>Live a <dark_aqua>great fishing session</dark_aqua> !</gray> \ + <br><gray>Be careful <aqua>Sea Monsters</aqua> we will wait for you impatiently</gray> \ + <br><gray>for you to jump on!</gray> \ + <br><gray>But you risk having several good surprises if you are <dark_aqua>lucky</dark_aqua></gray> + +feature.dailyevents.bloodynight.toast.start=<gray>There </gray><dark_red><bold>Bloody Night</bold></dark_red><gray> has started!</gray> +feature.dailyevents.bloodynight.toast.end=<gray>The ordeal of the </gray><dark_red><bold>Bloody Night</bold></dark_red><gray> stopped</gray> + +feature.dailyevents.goldenharvest.toast.start=<gray>There</gray> <gold><bold>Golden Harvest</bold></gold> <gray>is coming to your barns!</gray> +feature.dailyevents.goldenharvest.toast.end=<gray>There</gray> <gold><bold>Golden Harvest</bold></gold> <gray>has stopped!</gray> + +feature.dailyevents.miraculousfishing.toast.start=<gray>There</gray> <dark_aqua><bold>Miraculous fishing</bold></dark_aqua> <gray>is open!</gray> +feature.dailyevents.miraculousfishing.toast.end=<gray>There</gray> <dark_aqua><bold>Miraculous fishing</bold></dark_aqua> <gray>left</gray> + +feature.dailyevents.toast.beginning_event_in_world=<gray>An event will begin in your world in %1$ss!</gray> +feature.dailyevents.toast.beginning_event_out_world=<gray>An event will start in %1$ss!</gray> + +feature.dailyevents.broadcast.soon=<dark_gray><italic>*an event begins to come closer to our world...*</italic></dark_gray> + +feature.dailyevents.miraculousfishing.broadcast.start=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MIRACLE FISHING!</bold></aqua><gray> The big session has begun!</gray>\ + <br><dark_gray><italic>*take out your fishing rod and discover the mysteries of the lakes*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><gray>Effects:</gray>\ + <br><dark_gray>+</dark_gray> %1$s<aqua>%</aqua> <gray>fishing speed</gray>\ + <br><dark_gray>+</dark_gray> <aqua>Special and rare loots</qua>\ + <br><dark_gray>+</dark_gray> <dark_aqua>Sea Monsters</dark_aqua>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.dailyevents.miraculousfishing.broadcast.end=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><aqua><bold>MIRACLE FISHING!</bold></aqua><gray> The blessing is over! </gray>\ + <br><dark_gray><italic>*rejoice in your captures!*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +feature.dailyevents.bloodynight.broadcast.start=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><dark_red><bold>BLOODY NIGHT!</bold></dark_red><gray> The bloodbath begins!</gray>\ + <br><dark_gray><italic>*take out your weapons and fight the waves of monsters*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.dailyevents.bloodynight.broadcast.end=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><dark_red><bold>BLOODY NIGHT!</bold></dark_red><gray> The calamity has ended! </gray>\ + <br><dark_gray><italic>*return to a calm and peaceful world*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +feature.dailyevents.goldenharvest.broadcast.start=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gold><bold>GOLDEN HARVEST!</bold></gold><gray> Crops are now blessed!</gray>\ + <br><dark_gray><italic>*find crop mutations, and other surprises...*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> +feature.dailyevents.goldenharvest.broadcast.end=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gold><bold>GOLDEN HARVEST!</bold></gold><gray> Crop productivity stops! </gray>\ + <br><dark_gray><italic>*store, sell your resources that you could farm with*</italic></dark_gray>\ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + +# ** Pêche miraculeuse ** +feature.dailyevents.miraculousfishing.lootbox.fishing_furniture.name=<dark_aqua><bold>Fishing equipment box</bold></dark_aqua> +feature.dailyevents.miraculousfishing.lootbox.rare_fishing_treasure.name=<blue><bold>Rare fishing treasure</bold></blue> +feature.dailyevents.miraculousfishing.lootbox.epic_fishing_treasure.name=<dark_purple><bold>Epic Fishing Treasure</bold></dark_purple> +feature.dailyevents.miraculousfishing.lootbox.legendary_fishing_treasure.name=<gold><bold>Legendary fishing treasure</bold></gold> + +feature.dailyevents.miraculousfishing.loot_table.get=<gray>You fished</gray> %1$s <gray>objects!</gray> +feature.dailyevents.miraculousfishing.loot_table.get.double_hook=<blue><italic>*Double grip applied*</italic></blue> +feature.dailyevents.miraculousfishing.loot_table.basic_fishing=<gray>Basic Fishing Loot</gray> +feature.dailyevents.miraculousfishing.loot_table.miraculous_fishing=<dark_aqua>Miraculous Catch Loots</dark_aqua> +feature.dailyevents.miraculousfishing.loot_table.sea_creature=<dark_aqua>Sea Monsters</dark_aqua> + +feature.dailyevents.miraculousfishing.eat_kebab_fermented.smelt=<green>Ugh, it stinks!</green> +feature.dailyevents.miraculousfishing.eat_kebab_fermented.boat=Your boat has sunk. +feature.dailyevents.miraculousfishing.eat_kebab_fermented.broadcast=[<red><bold><obf>has</obf></bold></red>] <bold>PROUT</bold> !!! %1$s has <bold>farted</bold>. <green><bold>Yuck</bold></green> ! + +feature.dailyevents.miraculousfishing.menu.info.fishing_speed.name=<aqua>Fishing Speed Boost</aqua> +feature.dailyevents.miraculousfishing.menu.info.fishing_speed.lore=<gray>Fishing speed is reduced by</gray> %1$s<aqua>%</aqua> + +feature.dailyevents.miraculousfishing.menu.loot_info.sea_creature=<dark_aqua>Sea Monster Loots</dark_aqua> +feature.dailyevents.miraculousfishing.menu.info.sea_creature.name=<dark_aqua>Sea Monsters</dark_aqua> +feature.dailyevents.miraculousfishing.menu.info.sea_creature.lore=<dark_gray><italic>Sea monsters are rare creatures and </italic></dark_gray>\ + <br><dark_gray><italic>powerful, which can give you quite special loots</italic></dark_gray>\ + <br><yellow><bold>CLICK HERE TO VIEW SPAWNABLE CREATURES</bold></yellow> + +feature.dailyevents.miraculousfishing.menu.info.loot_table.name=<light_purple>Unique and special loots</light_purple> +feature.dailyevents.miraculousfishing.menu.info.loot_table.lore=<dark_gray><italic>Benefit from a miraculous blessing </italic></dark_gray>\ + <br><dark_gray><italic>leaving you with new rewards and loot</italic></dark_gray>\ + <br><yellow><bold>CLICK HERE TO SEE SINABLE ITEMS</bold></yellow> \ No newline at end of file diff --git a/src/main/resources/translations/en_US/displays.properties b/src/main/resources/translations/en_US/displays.properties new file mode 100644 index 000000000..6e0b8d379 --- /dev/null +++ b/src/main/resources/translations/en_US/displays.properties @@ -0,0 +1,64 @@ +feature.displays.tablist.header.default=\n\n\n\n\n\n\n%1$s\n\n <yellow>Online players</yellow> <gray>:</gray> %2$s<gray>/</gray>%3$s \n +feature.displays.tablist.header.dream=\n\n\n\n\n\n\n%1$s\n\n +feature.displays.tablist.footer.default=\n<light_purple>play.openmc.fr</light_purple>\n +feature.displays.tablist.footer.dream=\n<dark_blue>play.openmc.fr</dark_blue>\n +feature.displays.scoreboard.title.text=<light_purple>OPEN™</light_purple> +feature.displays.scoreboard.footer.text=play.openmc.fr +feature.displays.scoreboard.footer.text.to_small=true +feature.displays.scoreboard.contest.title=contest +feature.displays.scoreboard.contest.title.to_small=true +feature.displays.scoreboard.contest.vs= VS +feature.displays.scoreboard.contest.vs.to_small=true +feature.displays.scoreboard.contest.ends=END: +feature.displays.scoreboard.contest.ends.to_small=true +feature.displays.scoreboard.rank.label=rank: +feature.displays.scoreboard.rank.label.to_small=true +feature.displays.scoreboard.rank.none=none +feature.displays.scoreboard.rank.none.to_small=true +feature.displays.scoreboard.city.label=city: +feature.displays.scoreboard.city.label.to_small=true +feature.displays.scoreboard.city.none=None +feature.displays.scoreboard.city.none.to_small=true +feature.displays.scoreboard.balance.label=money: +feature.displays.scoreboard.balance.label.to_small=true +feature.displays.scoreboard.location.label=rental: +feature.displays.scoreboard.location.label.to_small=true +feature.displays.scoreboard.location.wilderness=Nature +feature.displays.scoreboard.location.wilderness.to_small=true +feature.displays.scoreboard.location.protected=Protected Region +feature.displays.scoreboard.location.protected.to_small=true +feature.displays.scoreboard.pumpkins.label=pumpkins: +feature.displays.scoreboard.pumpkins.label.to_small=true +feature.displays.scoreboard.citywar.title=ONGOING WAR +feature.displays.scoreboard.citywar.title.to_small=true +feature.displays.scoreboard.citywar.enemy.label=enemy: +feature.displays.scoreboard.citywar.enemy.label.to_small=true +feature.displays.scoreboard.citywar.phase.label=phase: +feature.displays.scoreboard.citywar.phase.label.to_small=true +feature.displays.scoreboard.citywar.distance.label=distance: +feature.displays.scoreboard.citywar.distance.label.to_small=true +feature.displays.scoreboard.citywar.starts_in.label=start in: +feature.displays.scoreboard.citywar.starts_in.label.to_small=true +feature.displays.scoreboard.citywar.mascot.label=mascot: +feature.displays.scoreboard.citywar.mascot.label.to_small=true +feature.displays.scoreboard.citywar.ends_in.label=end in: +feature.displays.scoreboard.citywar.ends_in.label.to_small=true +feature.displays.scoreboard.citywar.state.label=state: +feature.displays.scoreboard.citywar.state.label.to_small=true +feature.displays.scoreboard.citywar.state.ended=finished +feature.displays.scoreboard.citywar.state.ended.to_small=true +feature.displays.scoreboard.citywar.mascot.dead=%1$s DEAD +feature.displays.scoreboard.citywar.mascot.dead.to_small=true +feature.displays.scoreboard.restart.in=Reboot in +feature.displays.scoreboard.restart.in.to_small=true +feature.displays.holograms.command.setpos.success=Hologram position %1$s update. +feature.displays.holograms.command.setpos.error=Error updating hologram position %1$s : %2$s +feature.displays.holograms.command.setpos.invalid=Please specify a valid hologram: %1$s +feature.displays.holograms.command.disable=Holograms successfully disabled. +feature.displays.holograms.command.enable=Holograms activated successfully. +feature.displays.bossbar.help.welcome=<bold><gold>Welcome to <light_purple>OpenMC</light_purple> !</gold></bold> +feature.displays.bossbar.help.leaderboard=<bold><aqua>Tip:</aqua></bold> <white>Use <green>/leaderboard</green> to view the <yellow>leaderboards</yellow>! +feature.displays.bossbar.help.update=<bold><light_purple>Current event:</light_purple></bold> <red>UPDATE V2.5 !</red> +feature.displays.bossbar.help.toggle=<bold><aqua>Tip:</aqua></bold> <white>Use <light_purple>/omcbossbar ou /bb</light_purple> to enable/disable the <yellow>bossbar</yellow>! +feature.displays.bossbar.help.discord=<blue>Join the <bold><aqua>Discord</aqua></bold> to contribute to <green>development</green>! + diff --git a/src/main/resources/translations/en_US/dream.properties b/src/main/resources/translations/en_US/dream.properties new file mode 100644 index 000000000..d2db0db45 --- /dev/null +++ b/src/main/resources/translations/en_US/dream.properties @@ -0,0 +1,395 @@ +# ** DREAM ** + +# * COMMANDS +feature.dream.commands.leave.not_in_dream=<red>You are not in a dream</red> +feature.dream.commands.leave.success=<green>You have successfully left your dream.</green> +feature.dream.commands.item.not_found=<red>This item does not exist</red> +feature.dream.admin.commands.showdialog.invalid_step=<red>The step name is invalid!</red> +feature.dream.admin.commands.showdialog.no_dialogs=<red>This step has no dialogs!</red> + +# * MESSAGES +feature.dream.message.time_lost_damage=<white>You lost </white>%1$s <white>because you took damage!</white> +feature.dream.message.great_dream_bonus=<white>You received <dark_aqua>60%</dark_aqua> extra time!</white> + +feature.dream.scoreboard.time=time: +feature.dream.scoreboard.time.to_small=true +feature.dream.scoreboard.cold=cold: +feature.dream.scoreboard.cold.to_small=true +feature.dream.scoreboard.biome=biome: +feature.dream.scoreboard.biome.to_small=true +feature.dream.scoreboard.location=location: +feature.dream.scoreboard.location.to_small=true + +# * ITEMS +feature.dream.item.ame_orb.name=Soul Orb +feature.dream.item.cloud_orb.name=Cloud Orb +feature.dream.item.glacite_orb.name=Frozen Orb +feature.dream.item.mud_orb.name=Mud Orb +feature.dream.item.unknown_orb.name=Unknown orb + +feature.dream.item.message.cannot_drop=<red>You cannot throw this item away!</red> + +feature.dream.item.rarity.common=<white><bold>COMMON ITEM</bold></white> +feature.dream.item.rarity.rare=<blue><bold>RARE ITEM</bold></blue> +feature.dream.item.rarity.epic=<dark_purple><bold>EPIC ITEM</bold></dark_purple> +feature.dream.item.rarity.legendary=<gold><bold>LEGENDARY ITEM</bold></gold> +feature.dream.item.rarity.onirisme=<aqua><bold>ITEM ONIRISM</bold></aqua> + +feature.dream.item.metal_detector.message.must_be_dream=<red>You have to be in a dream to use the metal detector!</red> +feature.dream.item.metal_detector.message.reset_cooldown=<red>The cooldown was reset because you changed world or you are no longer in a dream.</red> +feature.dream.item.meteo_wand.message.must_be_overworld=<red>You must be in the Overworld to use the Weather Wand!</red> +feature.dream.item.meteo_wand.message.cooldown=<red>You have to wait </red>%1$s <red>before using the weather wand!</red> +feature.dream.item.meteo_wand.message.success=<green>You have successfully changed the weather!</green> + +# * BIOMES +feature.dream.biome.sculk_plains=<dark_aqua>Sculk Plain</dark_aqua> +feature.dream.biome.sculk_plains.to_small=true +feature.dream.biome.soul_forest=<dark_purple>Forest of Souls</dark_purple> +feature.dream.biome.soul_forest.to_small=true +feature.dream.biome.mud_beach=<dark_gray>Mud beach</dark_gray> +feature.dream.biome.mud_beach.to_small=true +feature.dream.biome.cloud_land=<white>Valley of Clouds</white> +feature.dream.biome.cloud_land.to_small=true +feature.dream.biome.glacite_grotto=<aqua>Frozen cave</aqua> +feature.dream.biome.glacite_grotto.to_small=true +feature.dream.biome.message.not_unlocked=<yellow>Warning, you are in a biome you have not unlocked yet, you need </yellow>%1$s +feature.dream.biome.progression.soul_forest=the Forest of Souls +feature.dream.biome.progression.cloud_land=Cloud Castle +feature.dream.biome.progression.mud_beach=Mud Beach +feature.dream.biome.progression.glacite_grotto=the Glacite Cave +feature.dream.biome.progression.unknown=Unknown +feature.dream.biome.message.unlocked=<green>You have unlocked </green>%1$s <green>!</green> + +# * STRUCTURES +feature.dream.structure.base_camp=<aqua>Cave Camp</aqua> +feature.dream.structure.cube_temple=<dark_purple>Temple of the Cube</dark_purple> +feature.dream.structure.cloud_castle=<gray>Cloud Castle</gray> +feature.dream.structure.message.exit=<gray>You come out of: </gray>%1$s +feature.dream.structure.message.enter=<gray>You enter: </gray>%1$s + +# * MOBS +feature.dream.mob.breezy=Breezy +feature.dream.mob.corrupted_tadpole=Corrupted tadpole +feature.dream.mob.crazy_frog=Crazy Frog +feature.dream.mob.dream_creaking=Dream Creaking +feature.dream.mob.dream_phantom=Phantom Awakened +feature.dream.mob.dream_spider=Dream Spider +feature.dream.mob.dream_stray=Dream Stray +feature.dream.mob.soul=Soul +feature.dream.mob.soul.display=<dark_purple><bold>Soul</bold></dark_purple> +feature.dream.mob.soul.skull=<gold><bold>Soul</bold></gold> + +# * ENCHANTMENTS +feature.dream.enchantment.dream_sleeper.name=Sleepy +feature.dream.enchantment.experientastic.name=Experientastic +feature.dream.enchantment.soulbound.name=Soulbound +feature.dream.enchantment.soulbound.message.effect=<green>Your Soulbound enchantment has taken effect! Next use in </green>%1$s + +# * MECHANISMS +feature.dream.altar.message.must_hold_item=<red>You must hold an item in your hand!</red> +feature.dream.altar.message.unusable_item=<red>This item cannot be used on the altar!</red> +feature.dream.altar.message.no_recipe=<red>No recipe was found for this item!</red> +feature.dream.altar.message.bound=<green>The item has been linked to the altar.</green> +feature.dream.altar.message.already_bound=<red>This item is already linked to the altar!</red> +feature.dream.altar.message.must_hold_bound_item=<red>You must hold the linked item in your hand!</red> +feature.dream.altar.message.soul_not_found=<red>No souls bound to this altar have been found!</red> +feature.dream.altar.message.not_enough_souls=<red>You need </red>%1$s <red>souls to perform this ritual!</red> +feature.dream.altar.message.ritual_complete=<green>The ritual is complete!</green> + +feature.dream.cold.message.level_1=<aqua>You start to feel the cold...</aqua> +feature.dream.cold.message.level_2=<aqua>The cold is becoming difficult to bear...</aqua> +feature.dream.cold.message.level_3=<red>You are frozen!</red> +feature.dream.cold.message.level_4=<dark_red>The cold is killing you!</dark_red> + +feature.dream.rng.prefix.crazy_rare=<dark_purple><bold>INCREDIBLY RARE!</bold></dark_purple> +feature.dream.rng.prefix.wow=<gold><bold>WOW!</bold></gold> +feature.dream.rng.prefix.pretty_nice=<aqua><bold>PRETTY NICE!</bold></aqua> +feature.dream.rng.prefix.nice=<green><bold>NICE !</bold></green> +feature.dream.rng.prefix.good=<gray><bold>GOOD !</bold></gray> +feature.dream.rng.message.chance=<gray>(</gray>%1$s<gray>)</gray> +feature.dream.rng.message.loot=%1$s %2$s <gray>got </gray>%3$s %4$s + +feature.dream.actionbar.distance=<gray>Distance : </gray>%1$s +feature.dream.actionbar.cube_distance=<gray>Cube Distance: </gray>%1$s + +feature.dream.orb.message.obtained=%1$s <gray>got </gray>%2$s + +# * TRADER +feature.dream.trader.npc.name=<aqua>Frozen Wanderer</aqua> +feature.dream.trader.menu.name=Wanderer's Trades +feature.dream.trader.time.one_minute=1 minute of time +feature.dream.trader.menu.time.name=<green>1 min Time</green> +feature.dream.trader.menu.time.lore=<gray>Buy time so you can stay longer!</gray>\ + <br><gray>Cost :</gray>\ + <br>%1$s <dark_purple>Ewenite</dark_purple> +feature.dream.trader.menu.trade.lore.cost=<gray>Cost :</gray> +feature.dream.trader.menu.trade.lore.glacite= %1$s <aqua>Glacite</aqua> +feature.dream.trader.menu.trade.lore.ewenite= %1$s <dark_purple>Ewenite</dark_purple> +feature.dream.trader.menu.trade.lore.click=<yellow><bold>LEFT CLICK TO BUY</bold></yellow> +feature.dream.trader.message.not_enough_resources=<red>You don't have enough resources to make this purchase!</red> +feature.dream.trader.message.time_trade_success=<green>You exchanged </green>%1$s<dark_purple> of Ewenite</dark_purple> <green>against </green>%2$s +feature.dream.trader.message.cost.glacite=%1$s of Glacite +feature.dream.trader.message.cost.ewenite=%1$s of Ewenite +feature.dream.trader.message.cost.separator=And +feature.dream.trader.message.trade_success=<green>You exchanged </green>%1$s<green> against </green>%2$s +feature.dream.trader.trade.glacite_orb=<aqua>Glacite Orb</aqua> +feature.dream.trader.trade.soulbound_book=<gold>Soulbound II Book</gold> +feature.dream.trader.trade.somnifere=<green>Sleeping pill</green> +feature.dream.trader.trade.eternal_campfire=<gold>Eternal Campfire</gold> +feature.dream.trader.trade.ewenite=<dark_purple>Ewenite</dark_purple> + +# * SINGULARITY +feature.dream.singularity.menu.name=Singularity +feature.dream.singularity.message.crafted=%1$s <gray>made the </gray>%2$s + +# * MILESTONES +feature.dream.milestone.name=Dream +feature.dream.milestone.description=<gray>Explore the dimension of dreams,</gray>\ + <br><gray>collect the orbs and break through</gray>\ + <br><gray>the mystery of this world.</gray>\ + <br><gray>Good night.</gray> + +feature.dream.milestone.quest.altar.name=Start of the ritual +feature.dream.milestone.quest.cloud_castle.name=Laputa +feature.dream.milestone.quest.cloud_valley.name=Rise to seventh heaven +feature.dream.milestone.quest.craft_domination_orb.name=Dominating is cool +feature.dream.milestone.quest.craft_eternal_fire.name=The Ice Age +feature.dream.milestone.quest.crafting_table.name=A new survival? +feature.dream.milestone.quest.craft_singularity.name=The purpose? +feature.dream.milestone.quest.crafts.name=Learn new crafts +feature.dream.milestone.quest.creaking_heart.name=Resin has no heart +feature.dream.milestone.quest.crystallized_pickaxe.name=Good pick +feature.dream.milestone.quest.cube_temple.name=Worship the Soul Cube +feature.dream.milestone.quest.ewenite.name=Aywenite, Awyenito or Ewenite? +feature.dream.milestone.quest.find_cube.name=A little detour +feature.dream.milestone.quest.glacite_orb.name=Finally the last one? +feature.dream.milestone.quest.grotto_camp.name=Survival in end-of-the-world mode? +feature.dream.milestone.quest.illusionist.name=Is there anyone? +feature.dream.milestone.quest.kill_breezy.name=The air of the wind +feature.dream.milestone.quest.metal_detector.name=Cooooooooaaaaaaa +feature.dream.milestone.quest.mud_beach.name=I prefer the beach +feature.dream.milestone.quest.mud_orb.name=Beep Beep Beep +feature.dream.milestone.quest.old_axe.name=The first tool! Finally ! +feature.dream.milestone.quest.sleep.name=Sleep is life +feature.dream.milestone.quest.soul_orb.name=A sacrifice is necessary! +feature.dream.milestone.quest.souls.name=My friends come from beyond +feature.dream.milestone.quest.transferable_object.name=Was it just a dream? +feature.dream.milestone.quest.altar.description=<white>Drop the</white><light_purple>Orb of Domination </light_purple><white>on the</white><light_purple>Altar</light_purple>\ + <br><dark_gray><italic>Let's begin the orb conversion ritual</italic></dark_gray> +feature.dream.milestone.quest.cloud_castle.description=<white>Enter the </white>%1$s\ + <br><dark_gray><italic>A new castle to conquer?</italic></dark_gray> +feature.dream.milestone.quest.cloud_valley.description=<white>Discover the </white>%1$s\ + <br><dark_gray><italic>These clouds in this dream must be hiding something...</italic></dark_gray> +feature.dream.milestone.quest.craft_domination_orb.description=<white>Make the</white><light_purple>Orb of Domination</light_purple>\ + <br><dark_gray><italic>1 in 5 to dominate them all!</italic></dark_gray> +feature.dream.milestone.quest.craft_eternal_fire.description=<white>Make it </white><light_purple>eternal fire</light_purple>\ + <br><dark_gray><italic>Will we find fossilized dinosaurs or Sid?</italic></dark_gray> +feature.dream.milestone.quest.craft_singularity.description=<white>Craft it </white><light_purple>Singularity</light_purple>\ + <br><dark_gray><italic>Wouldn't the orbs have a final use?</italic></dark_gray> +feature.dream.milestone.quest.crafting_table.description=<white>Make a </white><light_purple>craft table</light_purple>\ + <br><dark_gray><italic>Strange this night survival...</italic></dark_gray>\ + <br><dark_gray><italic>we don't see except the full of sculks</italic></dark_gray> +feature.dream.milestone.quest.crafts.description=<white>Do </white><light_purple>/crafts </light_purple><white>to see the available crafts</white>\ + <br><dark_gray><italic>This dimension has its own rules,</italic></dark_gray>\ + <br><dark_gray><italic>I have to learn them to survive</italic></dark_gray> +feature.dream.milestone.quest.creaking_heart.description=<white>Recover a </white><light_purple>Creaking Heart</light_purple>\ + <br><dark_gray><italic>Are we looking for the resin or the heart?</italic></dark_gray> +feature.dream.milestone.quest.crystallized_pickaxe.description=<white>Get the </white><light_purple>Crystallized Pickaxe</light_purple>\ + <br><dark_gray><italic>Sometimes you have to rack your brains</italic></dark_gray> +feature.dream.milestone.quest.cube_temple.description=<white>Enter the </white>%1$s\ + <br><dark_gray><italic>In search of the Cube of Souls monument...</italic></dark_gray>\ + <br><dark_gray><italic>we are still in Minecraft, even in a dream!</italic></dark_gray> +feature.dream.milestone.quest.ewenite.description=<white>Get</white><light_purple>Ewenite</light_purple>\ + <br><dark_gray><italic>A new ore to exploit.</italic></dark_gray>\ + <br><dark_gray><italic>Strange, this name is familiar to me.</italic></dark_gray> +feature.dream.milestone.quest.find_cube.description=<white>Find the </white><light_purple>Cube</light_purple>\ + <br><dark_gray><italic>Mystery and explanations</italic></dark_gray> +feature.dream.milestone.quest.glacite_orb.description=<white>Exchange the</white><light_purple>Ice Orb</light_purple>\ + <br><dark_gray><italic>Final stretch to collect them all.</italic></dark_gray> +feature.dream.milestone.quest.grotto_camp.description=<white>Find a </white><light_purple>cave camp</light_purple>\ + <br><dark_gray><italic>There is no Transperceneige but,</italic></dark_gray>\ + <br><dark_gray><italic>Would there be a protected area?</italic></dark_gray> +feature.dream.milestone.quest.illusionist.description=<white>Find and see the </white><light_purple>merchant</light_purple>\ + <br><dark_gray><italic>If there are fires lit,</italic></dark_gray>\ + <br><dark_gray><italic>there is life in the area.</italic></dark_gray> +feature.dream.milestone.quest.kill_breezy.description=<white>Beat </white><light_purple>Breezy</light_purple>\ + <br><dark_gray><italic>We're going to tame one of the mountain spirits</italic></dark_gray>\ + <br><dark_gray><italic>from Poncahontas, or is it Elsa?</italic></dark_gray> +feature.dream.milestone.quest.metal_detector.description=<white>Recover the </white><light_purple>metal detector</light_purple>\ + <br><dark_gray><italic>Why are tadpoles so big?</italic></dark_gray> +feature.dream.milestone.quest.mud_beach.description=<white>Enter the </white>%1$s\ + <br><dark_gray><italic>Let's take advantage of this dream to go and bask in the Sun.</italic></dark_gray>\ + <br><dark_gray><italic>Hey, why is there no water, but only mud?</italic></dark_gray>\ + <br><dark_gray><italic>And still no Sun!? So this place is only night?</italic></dark_gray> +feature.dream.milestone.quest.mud_orb.description=<white>Find the</white><light_purple>Mud Orb</light_purple>\ + <br><dark_gray><italic>Well, not sand, but mud.</italic></dark_gray>\ + <br><dark_gray><italic>Possible that people still lose</italic></dark_gray>\ + <br><dark_gray><italic>things. Oh hey, 6 blocks to the right.</italic></dark_gray> +feature.dream.milestone.quest.old_axe.description=<white>Make a </white><light_purple>Old Creaking Ax</light_purple>\ + <br><dark_gray><italic>Our best friend in this world!</italic></dark_gray> +feature.dream.milestone.quest.sleep.description=<white>Enter the </white><light_purple>dimension of dreams</light_purple>\ + <br><dark_gray><italic>How good it is to sleep for</italic></dark_gray>\ + <br><dark_gray><italic>rest from the hard life of the cities...</italic></dark_gray> +feature.dream.milestone.quest.soul_orb.description=<white>Get the</white><light_purple>Soul Orb</light_purple>\ + <br><dark_gray><italic>Souls in the pocket, allow me, by your power,</italic></dark_gray>\ + <br><dark_gray><italic>to obtain your orb with the sacrifice of the Orb of Domination.</italic></dark_gray> +feature.dream.milestone.quest.souls.description=<white>To recover </white>%1$s <white>souls</white>\ + <br><dark_gray><italic>I seem to have seen creatures</italic></dark_gray>\ + <br><dark_gray><italic>flies prowling towards the tall dark trees.</italic></dark_gray> +feature.dream.milestone.quest.transferable_object.description=<white>Retrieve an item </white><light_purple>transferable </light_purple><white>in the Overworld</white>\ + <br><dark_gray><italic>This world still seems real to me.</italic></dark_gray>\ + <br><dark_gray><italic>Wouldn't the singularity be a portal?</italic></dark_gray>\ + <br><dark_gray><italic>dimensional for loot?</italic></dark_gray> + +feature.dream.milestone.quest.altar.dialog=<dark_aqua>Traveler: To obtain the Soul Orb, you will need...</dark_aqua>\ + <br><gold>Souls?!</gold>\ + <br><dark_aqua>Traveler: Yes! That's it! You will need some </dark_aqua>%1$s\ + <br><dark_aqua>Traveler: But be careful, they love the weather even more than the creakings</dark_aqua>\ + <br><gold>How can I find them, and how do I recognize them?</gold>\ + <br><dark_aqua>Traveler: Look around the altar, towards the </dark_aqua><light_purple>trees</light_purple><dark_aqua>. Souls wander outside the building.</dark_aqua>\ + <br><dark_aqua>Traveler: Just like the "Creaking" armor, it is possible to have the armor of </dark_aqua><light_purple>"Souls"</light_purple><dark_aqua>. This will give you </dark_aqua>%2$s<dark_aqua> additional seconds per equipped armor piece.</dark_aqua>\ + <br><dark_aqua>Traveler: You can also transform your ax at the altar with a few extra souls.</dark_aqua> +feature.dream.milestone.quest.cloud_castle.dialog=<gold>This castle is nothing like anything I know. How come it stays suspended in the clouds?</gold>\ + <br><dark_aqua>Traveler: As said before, these ancient people have tamed the power of the winds. But with what happened, I think the power turned in on itself to protect the treasure.</dark_aqua>\ + <br><gold>The Orb...</gold>\ + <br><dark_aqua>Traveler: Correct! This castle should remind you of </dark_aqua><light_purple>trial chambers</light_purple><dark_aqua> of your world.</dark_aqua>\ + <br><gold>So you know my world?</gold>\ + <br><dark_aqua>Traveler: ...</dark_aqua> +feature.dream.milestone.quest.cloud_valley.dialog=<gold>We are in a full... of clouds???</gold>\ + <br><dark_aqua>Traveler: This is a story of an ancient people who had tamed the forces of the wind.</dark_aqua>\ + <br><dark_aqua>Traveler: You should be able to find some </dark_aqua><light_purple>remains of their civilization</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>That's to say ?</gold>\ + <br><dark_aqua>Traveler: You have found the </dark_aqua>%1$s<dark_aqua> No ?</dark_aqua> +feature.dream.milestone.quest.craft_domination_orb.dialog=<gold>Here is the orb, what should I do with it?</gold>\ + <br><dark_aqua>Traveler: This orb is the first in a series of </dark_aqua><light_purple>5</light_purple><dark_aqua> scattered in this world. Each orb is unique and has the ability to move you forward in the world and in my...our quest!</dark_aqua>\ + <br><gold>So we need to explore the new area unlocked by the orb?</gold>\ + <br><dark_aqua>Traveler: That's right! We will have to find the </dark_aqua><light_purple>Temple </light_purple><dark_aqua>of the master of the place. You shouldn't miss it, I think...</dark_aqua> +feature.dream.milestone.quest.craft_eternal_fire.dialog=<dark_aqua>Traveler: Good! This fire will be useful to you.</dark_aqua>\ + <br><gold>It's a fire, will it allow me to cook something?</gold>\ + <br><dark_aqua>Traveler: In this world, this fire will serve you to limit the </dark_aqua><light_purple>effects of cold </light_purple><dark_aqua>depths. You're going to enter a freezing world, every second spent in it </dark_aqua><light_purple>will slow you down </light_purple><dark_aqua>and will end up </dark_aqua><light_purple>kill you</light_purple><dark_aqua>.</dark_aqua>\ + <br><dark_aqua>Traveler: By placing this fire on the ground and staying close to it, you will warm yourself and avoid this.</dark_aqua>\ + <br><gold>Like when you come out of powder snow.</gold>\ + <br><dark_aqua>Traveler: Yes. Now that you understand the principle, let's go looking for </dark_aqua><light_purple>camps </light_purple><dark_aqua>present in the </dark_aqua><light_purple>deep caves</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.craft_singularity.dialog=<gold>So ! What must we do to be able to turn back time now?</gold>\ + <br><dark_aqua>Traveler: ...</dark_aqua>\ + <br><dark_aqua>Traveler: I... I'm going to tell you something. It was never a question of going back in time in this dimension, but of being able to transfer myself to another dimension in order to escape the misfortunes of this world. My goal has always been to help people, but that has not been possible in this dimension.</dark_aqua>\ + <br><dark_aqua>Traveler: I didn't want to talk to you about it at the risk of appearing selfish.</dark_aqua>\ + <br><dark_aqua>Traveler: Unfortunately for me, the singularity we have is not powerful enough to be able to transfer life into your dimension in order to be able to make a fresh start and be able to help people.</dark_aqua>\ + <br><dark_aqua>Traveler: But that doesn't matter, I liked it to help you explore this world and especially to be able to recover objects that will undoubtedly be useful to you in your world.</dark_aqua>\ + <br><gold>...</gold>\ + <br><dark_aqua>Traveler: I failed to save this dimension, but I still managed to help "you" in this dimension.</dark_aqua>\ + <br><dark_aqua>Traveler: Whatever happens, you will be able to </dark_aqua><light_purple>recover enchantments </light_purple><dark_aqua>of this dimension thanks to the singularity and even the</dark_aqua><light_purple>armor </light_purple><dark_aqua>if you wish.</dark_aqua>\ + <br><dark_aqua>Traveler: The singularity is not powerful enough for me, but more than enough for new weapons or armor.</dark_aqua>\ + <br><dark_aqua>Traveler: Just like the previous orbs, you have the ability to craft new armor. This one, on the other hand, will require redoing all the orbs, but it's worth it, because it adds </dark_aqua>%1$s<dark_aqua> seconds more per piece worn, but also effects.</dark_aqua>\ + <br><gold>... THANKS !</gold>\ + <br><dark_aqua>Traveler: No! It's me who thanks you. Because one day, someone I respected as a person said to me: “Thank the person you helped, because they allowed you to do a good deed.”</dark_aqua>\ + <br><gold>Will you stay with me?</gold>\ + <br><dark_aqua>Traveler: No, I can't. Other players are getting lost here, and they need me. So I bid you farewell...</dark_aqua> +feature.dream.milestone.quest.crafting_table.dialog=<gold>Okay, now that I have the table, let's look for something to make some tools and... how come there are Crackers here!?</gold>\ + <br><dark_aqua>Traveler: You have a good eye. This world is full of amazing creatures that have one thing in common: they feed on </dark_aqua><light_purple>time</light_purple><dark_aqua>, in you </dark_aqua><light_purple>flying</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>So that’s that bar up there?</gold>\ + <br><dark_aqua>Traveler: Yes, and this time is not infinite, which is why we must act quickly. Let's take advantage of being among these creatures to recover their </dark_aqua><light_purple>hearts</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.crafts.dialog=<gold>Sounds like normal survival, right?</gold>\ + <br><dark_aqua>Traveler: Indeed, this world may be dark, new and complex, but it is not that different from the Overworld. But a dimension is added: the </dark_aqua><light_purple>time </light_purple><dark_aqua>! For the moment, you can only access the </dark_aqua>%1$s<dark_aqua>, but the other biomes will soon be accessible.</dark_aqua>\ + <br><gold>Hmmm, that intrigues me. But you said we're short on time, so let's not hang around. I need one </gold><light_purple>craft table</light_purple><gold>.</gold> +feature.dream.milestone.quest.creaking_heart.dialog=<gold>Ah! But it's true that they protect their hearts.</gold>\ + <br><dark_aqua>Traveler: Yes, and these will be useful to us later, the crafts of this world use a lot of them. Whether for tools, armor, or various objects of this world. Start by making yourself a </dark_aqua><light_purple>ax</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>But what is the purpose of this world??</gold>\ + <br><dark_aqua>Traveler: I'll explain to you soon, I don't want you to end up like me...</dark_aqua>\ + <br><gold>What does it mean to “end up like you”?</gold>\ + <br><dark_aqua>Traveler: You will understand. To avoid this, you must continue, make yourself an ax for the moment.</dark_aqua> +feature.dream.milestone.quest.crystallized_pickaxe.dialog=<dark_aqua>Traveler: This one will be your best friend in the </dark_aqua><light_purple>caves</light_purple><dark_aqua>, replacing your axe.</dark_aqua>\ + <br><dark_aqua>Traveler: From now on, you'll mainly have to mine. The depths of this world are full of </dark_aqua><light_purple>useful minerals </light_purple><dark_aqua>for the </dark_aqua><light_purple>last step </light_purple><dark_aqua>of this quest.</dark_aqua>\ + <br><gold>So let's not hang around, let's go to the cave.</gold>\ + <br><dark_aqua>Traveler: No! Before going to get the last orb, take a detour to the coordinates </dark_aqua><red>X: </red>%1$s <blue>Z: </blue>%2$s<dark_aqua>. As promised, I owe you an explanation.</dark_aqua> +feature.dream.milestone.quest.cube_temple.dialog=<dark_aqua>Traveler: Know that this is an altar that was erected to...</dark_aqua>\ + <br><gold>For ?</gold>\ + <br><dark_aqua>Traveler: ...</dark_aqua>\ + <br><dark_aqua>Traveler: Let's move on, now is not the time. Let's stick to the fact that he is the master of the place.</dark_aqua>\ + <br><gold>What does the master of the place mean?</gold>\ + <br><dark_aqua>Traveler: No matter, now that you understand the principle of this dimension, I will be able to talk to you about its </dark_aqua><light_purple>aim </light_purple><dark_aqua>and what we do here.</dark_aqua>\ + <br><dark_aqua>Traveler: Start by going to the </dark_aqua><light_purple>center of the temple</light_purple><dark_aqua> and drop the orb.</dark_aqua> +feature.dream.milestone.quest.ewenite.dialog=<gold>The beginning of wealth. Whether it's mining or trading them, I have a feeling it's going to be a long search.</gold>\ + <br><dark_aqua>Traveler: The ore is not common, but you can find several quickly.</dark_aqua>\ + <br><gold>Isn't there a way to go faster?</gold>\ + <br><dark_aqua>Traveler: You can make your own </dark_aqua><light_purple>Clockwork Pickaxe </light_purple><dark_aqua>If you want, it will be faster.</dark_aqua> +feature.dream.milestone.quest.find_cube.dialog=<dark_aqua>Traveler: This is the origin of the catastrophe of this world. This is the </dark_aqua><light_purple>"Cube"</light_purple><dark_aqua>, the master of the place. He was worshiped by the people of this dimension who built the temples you saw. His name: </dark_aqua><light_purple>Bobby</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>But what did he do and why is there no sculk around him?</gold>\ + <br><dark_aqua>Traveler: In the beginning, this one brought us peace and prosperity. But one day, a violent storm would have come, a lightning would have struck it and damaged it. </dark_aqua>\ + <br><dark_aqua>Traveler: The cube, after having regenerated for a long period of time, would have started to move and little by little, </dark_aqua><light_purple>corrupt </light_purple><dark_aqua>the world, but by installing a </dark_aqua><light_purple>self-sufficient ecosystem </light_purple><dark_aqua>for his new state. That is to say, it protects itself and propagates alone, feeding on the </dark_aqua><light_purple>life </light_purple><dark_aqua>of the world.</dark_aqua>\ + <br><dark_aqua>Traveler: This led to the </dark_aqua><light_purple>anhilation </light_purple><dark_aqua>or the </dark_aqua><light_purple>corruption </light_purple><dark_aqua>of all life in this place.</dark_aqua>\ + <br><gold>And you in all this, who are you? Since the beginning of our adventure, you have been talking to me, but you are not really there.</gold>\ + <br><dark_aqua>Traveler: It is very likely that I am no longer in this world, at least physically. When the cube corrupted the card, instead of fighting against it, I used it to </dark_aqua><light_purple>destroy my body</light_purple><dark_aqua>, by forcing the </dark_aqua><light_purple>survival </light_purple><dark_aqua>of my mind. Since I used the cube to survive, it can't take me out without killing itself.</dark_aqua>\ + <br><dark_aqua>Traveler: I am then here to help everyone </dark_aqua><light_purple>get back to your old life</light_purple><dark_aqua>. When I saw you coming, I followed you so that you could </dark_aqua><light_purple>realize </light_purple><dark_aqua>in my place, the quest I was supposed to carry out.</dark_aqua>\ + <br><gold>...</gold>\ + <br><dark_aqua>Traveler: Now that you know a little more, we must move forward in the quest that is now yours. Direction : </dark_aqua><light_purple>the caves</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.glacite_orb.dialog=<dark_aqua>Traveler: Finally, we have reached our goal. Much more than just one step to finally be free from this situation.</dark_aqua>\ + <br><gold>What should I do?</gold>\ + <br><dark_aqua>Traveler: They need to be </dark_aqua><light_purple>combine</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>Combine them? No incantation this time?</gold>\ + <br><dark_aqua>Traveler: No, I promise. Combine them in the </dark_aqua><light_purple>craft table </light_purple><dark_aqua>that we both made at the start of our adventure. We can then use the power of </dark_aqua><light_purple>singularity</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.grotto_camp.dialog=<gold>This is a camp.</gold>\ + <br><dark_aqua>Traveler: Let's see if we can find the last keeper of the orb. He must be around.</dark_aqua>\ + <br><gold>But if the Cube corrupted and killed everything, how can the merchant still be alive?</gold>\ + <br><dark_aqua>Traveler: The orb, my friend. Before, he was a traveling merchant who traveled the world to trade his goods.</dark_aqua>\ + <br><dark_aqua>Traveler: And each orb has a power, and I think that of the</dark_aqua><light_purple>Ice Orb </light_purple><dark_aqua>allowed this merchant to survive, but at what cost...</dark_aqua> +feature.dream.milestone.quest.illusionist.dialog=<gold>There's the merchant. He doesn't seem to want to move anymore.</gold>\ + <br><dark_aqua>Traveler: As I said before, corruption has </dark_aqua><light_purple>amended </light_purple><dark_aqua>deeply, even if the orb has it </dark_aqua><light_purple>protected </light_purple><dark_aqua>of death.</dark_aqua>\ + <br><dark_aqua>Traveler: I haven't told you about this until now, but haven't you noticed anything in each place where we found an orb?</dark_aqua>\ + <br><gold>...</gold>\ + <br><dark_aqua>Traveler: The orbs have </dark_aqua><light_purple>preserved </light_purple><dark_aqua>the lives around them. Creakings, Spiders, Souls, Breeze, Phantom, Wanderer, Frogs, Tadpoles, and here the merchant.</dark_aqua>\ + <br><dark_aqua>Traveler: But it's up to us to really bring her back. So go ahead, do it</dark_aqua><light_purple>exchange </light_purple><dark_aqua>for the Orb.</dark_aqua> +feature.dream.milestone.quest.kill_breezy.dialog=<gold>But this Breeze is crazy!!</gold>\ + <br><dark_aqua>Traveler: Yes, that's what I feared...even here, everything has been corrupted.</dark_aqua>\ + <br><gold>How is that corrupt?</gold>\ + <br><dark_aqua>Traveler: Explanations will arrive in due time. For now, come back down to earth, and head towards the </dark_aqua><light_purple>beaches</light_purple><dark_aqua>. I wish I could say fine sand...</dark_aqua>\ + <br><dark_aqua>Traveler: But before leaving, you can collect the</dark_aqua><light_purple>Cloud Armor</light_purple><dark_aqua>, who will give you </dark_aqua>%1$s<dark_aqua> seconds of extra time per piece of armor. You can also recover a </dark_aqua><light_purple>cloud fishing rod</light_purple><dark_aqua>, and a </dark_aqua><light_purple>enchanted book</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>A fishing rod? But to fish for what? Cloud droplets?!</gold>\ + <br><dark_aqua>Traveler: Exactly! This will allow you to fish in the clouds as if it were a lake. In particular, you will be able to recover </dark_aqua><light_purple>sleeping pills </light_purple><dark_aqua>which allow you to stay asleep longer, or to fall asleep effectively, if you are awake.</dark_aqua> +feature.dream.milestone.quest.metal_detector.dialog=<dark_aqua>Traveler: Ah, finally the detector. We will be able to search for the orb in this mud more easily.</dark_aqua>\ + <br><dark_aqua>Traveler: These beaches used to be sand and water. But with the disaster, </dark_aqua><light_purple>frogs </light_purple><dark_aqua>And </dark_aqua><light_purple>tadpoles </light_purple><dark_aqua>have transformed. This transformation resulted, for them, in a </dark_aqua><light_purple>great thirst</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>Hence the absence of water.</gold> +feature.dream.milestone.quest.mud_beach.dialog=<gold>Finally on the beach, and indeed, there is no warm sand, no radiant sun, just mud and... nothing else actually.</gold>\ + <br><dark_aqua>Traveler: Very well, sit there, I owe you an explanation.</dark_aqua>\ + <br><dark_aqua>Traveler: This world has undergone a </dark_aqua><light_purple>disaster</light_purple><dark_aqua>, hence its appearance. Before, he was so...if only I could see him again.</dark_aqua>\ + <br><gold>You told me about five orbs. Would these make it possible to bring back the old world, with the power of terraforming?</gold>\ + <br><dark_aqua>Traveler: No, it's much more powerful than that. They allow you to create a </dark_aqua><light_purple>wormhole </light_purple><dark_aqua>between this </dark_aqua><light_purple>dimension and yours</light_purple><dark_aqua>. We can then use part of the</dark_aqua><light_purple>energy </light_purple><dark_aqua>of your size for </dark_aqua><light_purple>go back in time </light_purple><dark_aqua>in it, and restore its balance.</dark_aqua>\ + <br><gold>Use part of the energy? But, is this without risk for my dimension??</gold>\ + <br><dark_aqua>Traveler: Yes, of course, otherwise I wouldn't take the risk. Each block of your world would give a small pearl of its energy.</dark_aqua>\ + <br><gold>What energy?</gold>\ + <br><dark_aqua>Traveler: We must move forward now. Looking for </dark_aqua><light_purple>frogs</light_purple><dark_aqua>, they will be useful to us.</dark_aqua> +feature.dream.milestone.quest.mud_orb.dialog=<gold>It reminds me of my vacation searching for treasures on the beach. Even if it's for a better cause. And now that the 4th orb is with us, what should I do?</gold>\ + <br><dark_aqua>Traveler: More than one. As we have done all the surface and the clouds, then all we have to do is search </dark_aqua><light_purple>underground</light_purple><dark_aqua>. You will need to prepare well, and in particular </dark_aqua><light_purple>good fire</light_purple><dark_aqua>. As for the detector, you should have seen that we obtained several things.</dark_aqua>\ + <br><gold>Yes, my inventory is full.</gold>\ + <br><dark_aqua>Traveler: Just like the fishing rod, you can obtain various items there like </dark_aqua><light_purple>chips</light_purple><dark_aqua>, even if some are very rare, </dark_aqua><light_purple>sleeping pills</light_purple><dark_aqua>, another </dark_aqua><light_purple>enchanted book</light_purple><dark_aqua>, or even a </dark_aqua><light_purple>pickaxe </light_purple><dark_aqua>which will be useful to you later... I'm going to check if you don't already have one.</dark_aqua> +feature.dream.milestone.quest.old_axe.dialog=<dark_aqua>Traveler: Good! This will be useful to us. The next objective is going to be to get the</dark_aqua><light_purple>Orb of Domination</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>What will it be used for?</gold>\ + <br><dark_aqua>Traveler: I'll explain it to you when you get it. It will be easy to recover with the axe.</dark_aqua>\ + <br><gold>Do I need anything else?</gold>\ + <br><dark_aqua>Traveler: It's not obligatory, but it would allow you to stay longer in this world. There is armor </dark_aqua><light_purple>“Creaking” </light_purple><dark_aqua>that you can make. This will give you </dark_aqua>%1$s<dark_aqua> additional seconds per equipped armor piece.</dark_aqua> +feature.dream.milestone.quest.sleep.dialog=<gold>ZZZzzz...what's happening!? Am I dreaming? This... world looks so different from the Overworld!</gold>\ + <br><dark_aqua>Traveler: What...? How is this possible??! I thought I was the only one here. And it's been so long since I've seen anyone...</dark_aqua>\ + <br><gold>But, who are you? Where are you? and why are you talking to me??</gold>\ + <br><dark_aqua>Traveler: Well, welcome. But everything in its time. Time which we will miss, we must act quickly, I will explain everything to you as we go along. For now, I suggest you discover what you will need to discover this world with the command </dark_aqua><light_purple>/crafts</light_purple><dark_aqua>.</dark_aqua>\ + <br><dark_aqua>Traveler: Please know that if you do not wish to stay until the end of time, you can wake up with the command </dark_aqua><light_purple>/leave</light_purple><dark_aqua>.\n<dark_aqua>Conversely, you can come back here more frequently by making yourself a </dark_aqua><light_purple>Pyjamas</light_purple><dark_aqua>. This allows you to increase your chances of passing into this world while sleeping.</dark_aqua> +feature.dream.milestone.quest.soul_orb.dialog=<gold>And two! On the other hand, I no longer have the Orb of Domination...</gold>\ + <br><dark_aqua>Traveler: Yes, you will have to do one again. But that's not the most complicated thing.</dark_aqua>\ + <br><dark_aqua>Traveler: Now that you have the Soul Orb, you will be able to access the </dark_aqua><light_purple>new area</light_purple><dark_aqua> which, you will see, does not at all resemble the current world...</dark_aqua>\ + <br><dark_aqua>Traveler: You must climb into the sky, into the </dark_aqua><light_purple>clouds</light_purple><dark_aqua>.</dark_aqua>\ + <br><gold>Can you tell me a little about the purpose of this quest?</gold>\ + <br><dark_aqua>Traveler: The orbs are numbered </dark_aqua><light_purple>5</light_purple><dark_aqua>, and each of them contains a </dark_aqua><light_purple>power</light_purple><dark_aqua>. Alone, they are of no use. But together they could help this world.</dark_aqua>\ + <br><gold>And... who are you anyway?</gold>\ + <br><dark_aqua>Traveler: I was...</dark_aqua>\ + <br><dark_aqua>Traveler: I'm a gamer just like you, but a gamer </dark_aqua><light_purple>this world</light_purple><dark_aqua>.</dark_aqua> +feature.dream.milestone.quest.souls.dialog=<gold>And of </gold>%1$s<gold> ! What should I do now? Is there a specific orb craft to do?</gold>\ + <br><dark_aqua>Traveler: No, you simply have to repeat the following incantation twice: </dark_aqua><light_purple>Ashkara no thari fu laq to</light_purple>\ + <br><gold>Ashkara no thari fu laq to! Ashkara no thari fu laq to!</gold>\ + <br><gold>...not easy to say...</gold>\ + <br><dark_aqua>Traveler: Ahah, actually, you just need to interact with the</dark_aqua><light_purple>Orb of Domination on</light_purple><light_purple>Altar</light_purple><dark_aqua>.</dark_aqua> + +# * QUESTS +feature.dream.milestone.quest.transferable_object.reward=<green>There is a link between this dimension and the real world. And this is just the beginning of a new adventure!</green> + +feature.dream.loot_table.cloud_fishing=<white>Cloud Fishing Loots</white> +feature.dream.loot_table.cloud_vault=<white>Cloud Chest Loot</white> +feature.dream.loot_table.metal_detector=<white>Metal Detector Loot</white> diff --git a/src/main/resources/translations/en_US/economy.properties b/src/main/resources/translations/en_US/economy.properties new file mode 100644 index 000000000..74b61e86c --- /dev/null +++ b/src/main/resources/translations/en_US/economy.properties @@ -0,0 +1,83 @@ +feature.economy.transactions.menu.title=Transactions menu %1$s +feature.economy.transaction.outgoing.name=Outgoing transaction +feature.economy.transaction.incoming.name=Incoming transaction +feature.economy.transaction.outgoing.lore=<gold>Destination :</gold> %1$s\ +<br><gold>Amount :</gold> %2$s\ +<br><gold>Reason :</gold> %3$s +feature.economy.transaction.incoming.lore=<gold>Sender:</gold> %1$s\ +<br><gold>Amount :</gold> %2$s\ +<br><gold>Reason :</gold> %3$s +feature.economy.bank.menu.title=Banks Menu +feature.economy.bank.menu.deposit.name=<gray>Drop off</gray><gold>money</gold> +feature.economy.bank.menu.deposit.lore=<gray>Your money will be placed in your bank</gray>\ +<br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.economy.bank.menu.need_city=To have a personal bank, you must belong to a minimum level 2 city! +feature.economy.bank.menu.balance.name=<gold>Your money</gold> +feature.economy.bank.menu.balance.lore=<gray>You currently have </gray>%1$s %2$s\ +<br><gray>Your money limit in your bank is </gray>%3$s %4$s\ +<br>\ +<br><gray>Your next interest is to </gray>%5$s<gray> In </gray>%6$s +feature.economy.bank.menu.withdraw.name=<gray>Remove from</gray><gold>money</gold> +feature.economy.bank.menu.withdraw.lore=<gray>The money will be taken from your bank</gray>\ +<br><yellow><bold>CLICK HERE TO WITHDRAW</bold></yellow> +feature.economy.bank.deposit.menu.title=Banks Menu - Deposit +feature.economy.bank.deposit.all.name=<gray>Drop off all your </gray><gold>money</gold> +feature.economy.bank.deposit.all.lore=<gray>All your money will be placed in </gray><gold>your bank</gold>\ +<br>\ +<br><gray>Amount that will be deposited: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.economy.bank.deposit.half.name=<gray>Deposit half of your </gray><gold>money</gold> +feature.economy.bank.deposit.half.lore=<gray>Half of your money will be placed in </gray><gold>your bank</gold>\ +<br>\ +<br><gray>Amount that will be deposited: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO DEPOSIT</bold></yellow> +feature.economy.bank.deposit.input.name=<gray>Drop a </gray><gold>specific amount</gold> +feature.economy.bank.deposit.input.lore=<gray>Your money will be placed in </gray><gold>your bank</gold>\ +<br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.economy.bank.deposit.limit_reached=<red>Your bank's limit is </red><light_purple>%1$s</light_purple> +feature.economy.bank.deposit.partial=<red>Only </red>%1$s<red> have been deposited (ceiling reached).</red> +feature.economy.bank.deposit.success=<green>You filed </green>%1$s<green>.</green> +feature.economy.bank.deposit.input.prompt=Enter the amount you want to deposit +feature.economy.bank.withdraw.input.prompt=Enter the amount you want to withdraw +feature.economy.bank.withdraw.menu.title=Banks Menu - Withdraw +feature.economy.bank.withdraw.all.name=<gray>Take the</gray><gold>money from your bank</gold> +feature.economy.bank.withdraw.all.lore=<gray>All the money placed in </gray><gold>your bank</gold><gray> will be given to you</gray>\ +<br>\ +<br><gray>Amount that will be given to you: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> +feature.economy.bank.withdraw.half.name=<gray>Take half of the</gray><gold>money from your bank</gold> +feature.economy.bank.withdraw.half.lore=<gray>Half of the money will be taken from </gray><gold>your bank</gold><gray> to give it to you</gray>\ +<br>\ +<br><gray>Amount that will be given to you: </gray>%1$s %2$s\ +<br>\ +<br><yellow><bold>CLICK HERE TO TAKE</bold></yellow> +feature.economy.bank.withdraw.input.name=<gray>Take a </gray><gold>specific amount</gold> +feature.economy.bank.withdraw.input.lore=<gray>The money requested will be taken from </gray><gold>your bank</gold><gray> to give it to you</gray>\ +<br><yellow><bold>CLICK HERE TO INDICATE THE AMOUNT</bold></yellow> +feature.economy.bank.back.lore=<gray>You will return to your bank menu</gray>\ +<br><yellow><bold>CLICK HERE TO CONFIRM</bold></yellow> +feature.economy.bank.withdraw.not_enough=<red>You don't have enough money in the bank</red> +feature.economy.bank.withdraw.transferred=<light_purple>%1$s</light_purple>%2$s<gray> have been transferred to your account</gray> +feature.economy.bank.interest.received=<gray>You have just noticed </gray>%1$s<gray> of interest, or </gray>%2$s%3$s +feature.economy.bank.command.not_unlocked=<red>You have not unlocked this feature! Please upgrade your city to the level %1$s !</red> +feature.economy.bank.command.balance=<gray>There is </gray><light_purple>%1$s</light_purple>%2$s<gray> in your bank</gray> +feature.economy.bank.interest.apply.start=<gray>Distribution of interests in progress...</gray> +feature.economy.bank.interest.apply.success=<green>Successful distribution of interests.</green> +feature.economy.money.self=<green>You have </green><yellow>%1$s</yellow> +feature.economy.money.others=<yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.set.success=<green>You have defined the money </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.set.target=<green>Your money has been set to </green><yellow>%1$s</yellow> +feature.economy.money.add.success=<green>You added </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.add.target=<green>You have received </green><yellow>%1$s</yellow> +feature.economy.money.remove.success=<green>You removed </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.remove.target=<red>You lost </red><yellow>%1$s</yellow> +feature.economy.money.remove.not_enough=<red>The player does not have enough money</red> +feature.economy.money.reset.success=<green>You have reset the money from </green><yellow>%1$s</yellow><green> has </green><yellow>%2$s</yellow> +feature.economy.money.reset.target=<green>Your money has been reset to </green><yellow>%1$s</yellow> +feature.economy.pay.self=<red>You can't pay yourself</red> +feature.economy.pay.success=<green>You paid </green><yellow>%1$s</yellow><green> of </green><yellow>%2$s</yellow> +feature.economy.pay.received=<green>You have received </green><yellow>%1$s</yellow><green> of </green><yellow>%2$s</yellow> +feature.economy.pay.not_enough=<red>You don't have enough money</red> diff --git a/src/main/resources/translations/en_US/events.properties b/src/main/resources/translations/en_US/events.properties new file mode 100644 index 000000000..8c183a70a --- /dev/null +++ b/src/main/resources/translations/en_US/events.properties @@ -0,0 +1,53 @@ +feature.events.menu.main_event.title=Events +feature.events.menu.main_event.title.calendar.lore=<gray>View the events calendar</gray>\ +<br><gray>you will be able to see the events that are scheduled</gray> +feature.events.menu.main_event.event.click_here=<yellow><bold>CLICK HERE TO LEARN MORE</bold></yellow> + +feature.events.calendar.unknown_name=<light_purple><bold>Event</bold></light_purple> +feature.events.calendar.daily_event_name=<aqua><bold>Daily Event</bold></aqua> + +feature.events.calendar.unknown_phase=Unknown +feature.events.calendar.title=Event Calendar +feature.events.calendar.weekend_event_name=<yellow><bold>Weekend Event</bold></yellow> +feature.events.calendar.start_in=<gray>Starts in</gray> %1$s +feature.events.calendar.start_date=<gray>Start date:</gray> %1$s <aqua>at</aqua> %2$s +feature.events.calendar.end_date=<gray>End date:</gray> %1$s <aqua>at</aqua> %2$s +feature.events.calendar.phases=<gold><bold>Phases:</bold></gold> +feature.events.calendar.phase.line=<gray>- </gray>%1$s<gray> THE </gray>%2$s<gray> has </gray>%3$s + +feature.events.contest.name=<gold><bold>Contest</bold></gold> +feature.events.contest.description=<gray>2 camps clash during the weekend</gray>\ +<br><gray>Vote for your side, and take part in the clash!</gray>\ +<br><gray>The winning side will win exclusive rewards!</gray> +feature.events.contest.command.settrade.updated=The trade of %1$s has been updated with %2$s For %3$s contest shells. +feature.events.contest.command.settrade.not_found=The trade does not exist.\ +<br><gray>/contest settrade <mat> <amount> <amount_shell></gray> + +feature.events.halloween.menu.deposit.title=Place your pumpkins +feature.events.halloween.menu.deposit.button.name=<#ff6b25>Place your pumpkins</#ff6b25> +feature.events.halloween.menu.deposit.button.lore=<gray>Click here to drop off your pumpkins and</gray>\ +<br><gray>get rewards!</gray> +feature.events.halloween.menu.deposit.no_pumpkin=<red>You don't have to drop any pumpkins!</red> +feature.events.halloween.menu.deposit.success=<gold>You filed </gold>%1$s<gold> pumpkins!</gold> +feature.events.halloween.reward.rank1.name=<#ff6b25><bold><underlined>Victory Pie (2025)</underlined></bold></#ff6b25> +feature.events.halloween.reward.rank1.lore=<gray>Reward for the player who collected the most pumpkins</gray>\ +<br><gray>during the Halloween 2025 event.</gray>\ +<br>\ +<br><gray>Obtained by </gray>%1$s +feature.events.halloween.reward.rank2.name=<#ff6b25><bold><underlined>The Pie of Excellence (2025)</underlined></bold></#ff6b25> +feature.events.halloween.reward.rank2.lore=<gray>Reward for the player who collected the second most</gray>\ +<br><gray>large quantity of pumpkins during the event</gray>\ +<br><gray>Halloween 2025.</gray>\ +<br>\ +<br><gray>Obtained by </gray>%1$s +feature.events.halloween.reward.rank3.name=<#ff6b25><bold><underlined>The Pie of Merit (2025)</underlined></bold></#ff6b25> +feature.events.halloween.reward.rank3.lore=<gray>Reward for the player who collected the third most</gray>\ +<br><gray>large quantity of pumpkins during the event</gray>\ +<br><gray>Halloween 2025.</gray>\ +<br>\ +<br><gray>Obtained by </gray>%1$s +feature.events.halloween.unknown_player=Unknown +feature.events.halloween.event.end.broadcast=<#ff6b25>The Halloween 2025 event is now over!</#ff6b25>\ +<br><#ff6b25>You can find your rewards in your</#ff6b25><#ff6b25><bold> mailbox</bold></#ff6b25><#ff6b25>.</#ff6b25>\ +<br><#ffd580>Thank you everyone for your participation!</#ffd580> + diff --git a/src/main/resources/translations/en_US/friend.properties b/src/main/resources/translations/en_US/friend.properties new file mode 100644 index 000000000..504386e5a --- /dev/null +++ b/src/main/resources/translations/en_US/friend.properties @@ -0,0 +1,46 @@ +feature.friend.request.expired=<red>The friend request has expired.</red> +feature.friend.add.self=<red>You cannot add yourself as a friend.</red> +feature.friend.add.disabled=<red>This player has disabled friend requests.</red> +feature.friend.add.already_sent=<red>You have already sent a request to this player.</red> +feature.friend.add.already_friend=<red>You are already friends with this player.</red> +feature.friend.add.sent=<green>Friend request sent to </green>%1$s<green>.</green> +feature.friend.add.error=<red>An error occurred while sending the friend request.</red> +feature.friend.request.ignored=<red>You ignored friend request from </red>%1$s<red>.</red> +feature.friend.request.received=%1$s <green>sent you a friend request.</green> +feature.friend.player_not_found=<red>This player does not exist.</red> +feature.friend.remove.not_friend=<red>You are not friends with this player.</red> +feature.friend.remove.error=<red>An error occurred while deleting the friend.</red> +feature.friend.remove.success=<green>You deleted </green>%1$s<green> from your friends list.</green> +feature.friend.remove.removed_by=<red>You have been removed from the friends list of </red>%1$s<red>.</red> +feature.friend.list.none=<red>You don't have any friends at the moment.</red> +feature.friend.list.page_invalid=<red>The page </red>%1$s<red> does not exist. Total: </red>%2$s<red> pages</red> +feature.friend.list.hover=<gray>City : </gray>%1$s\ +<br><gray>Money : </gray>%2$s\ +<br><gray>Status : </gray>%3$s +feature.friend.list.error=<red>An error occurred while retrieving your friends.</red> +feature.friend.request.not_received=<red>You have not received a friend request from this player.</red> +feature.friend.request.accepted=<green>You are now friends with </green>%1$s<green>.</green> +feature.friend.request.accept_error=<red>An error occurred while accepting the friend request.</red> +feature.friend.request.denied=<red>You declined friend request from </red>%1$s<red>.</red> +feature.friend.request.denied_by=<red>Your friend request has been rejected by </red>%1$s<red>.</red> +feature.friend.request.deny_error=<red>An error occurred while declining the friend request.</red> +feature.friend.button.accept= [Accept] +feature.friend.button.accept_hover=Click to accept friend request +feature.friend.button.ignore= [Ignore] +feature.friend.button.ignore_hover=Click to ignore friend request +feature.friend.button.deny= [Refuse] +feature.friend.button.deny_hover=Click to decline friend request +feature.friend.list.header= ✦ Friends list (%1$s/%2$s) ✦ +feature.friend.list.city.none=None +feature.friend.status.online=Online +feature.friend.status.offline=Offline +feature.friend.list.date_since=Since the %1$s +feature.friend.list.action.remove= [✖] +feature.friend.list.action.remove_hover=Remove this friend +feature.friend.list.fetch_error=Error retrieving information from %1$s +feature.friend.list.navigation.previous= « Previous page +feature.friend.list.navigation.next=Next page » +feature.friend.list.navigation.separator= | +feature.friend.list.navigation.page=Page %1$s +feature.friend.unknown_player=Unknown + diff --git a/src/main/resources/translations/en_US/homes.properties b/src/main/resources/translations/en_US/homes.properties new file mode 100644 index 000000000..456b55968 --- /dev/null +++ b/src/main/resources/translations/en_US/homes.properties @@ -0,0 +1,97 @@ +feature.homes.location.invalid=<red>Invalid rental</red> +feature.homes.location.format=%1$s <gray>(</gray>%2$s<gray>, </gray>%3$s<gray>, </gray>%4$s<gray>)</gray> +feature.homes.home.name=%1$s +feature.homes.home.lore=<gold>Position:</gold>\ +<br><gold> W: </gold>%1$s\ +<br><gold> X: </gold>%2$s\ +<br><gold> Y: </gold>%3$s\ +<br><gold> Z: </gold>%4$s +feature.homes.menu.title=Homes Menu +feature.homes.menu.item.lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to teleport you</green>\ +<br><gray>■ </gray><red>Click </red><dark_red>right</dark_red><red> to configure the home</red> +feature.homes.menu.teleport.success=<green>You have been teleported to your home </green>%1$s<green>.</green> +feature.homes.menu.error=<red>An error has occurred, please contact the staff</red> +feature.homes.menu.upgrade.name=<dark_gray>●</dark_gray> <gold>Improve homes</gold> <dark_gray>(Click here)</dark_gray> +feature.homes.menu.upgrade.lore=<gold>Click to improve your homes</gold> +feature.homes.upgrade.menu.title=Homes Menu - Improvement +feature.homes.upgrade.item.name=<dark_gray>●</dark_gray> <gold>Improve homes</gold> <dark_gray>(Left click)</dark_gray> +feature.homes.upgrade.lore.max=<gold>Current number of homes: </gold>%1$s\ +<br><red>You have reached the maximum number of homes</red> +feature.homes.upgrade.lore.available=<gold>Current number of homes: </gold>%1$s\ +<br><aqua>Price : </aqua>%2$s %3$s\ +<br><aqua>Aywenite: </aqua>%4$s\ +<br><gold>Number of homes on the next level: </gold>%5$s\ +<br><gray>→ Left click to improve</gray> +feature.homes.delete.menu.title=Homes Menu - Confirmation +feature.homes.delete.confirm.name=<red>Confirm deletion</red> +feature.homes.delete.confirm.lore=<gray>■ </gray><red>Click </red><dark_red>LEFT</dark_red><red> to confirm the deletion</red> +feature.homes.delete.success=<green>Home </green>%1$s<green> successfully deleted!</green> +feature.homes.delete.cancel.name=<green>Undo deletion</green> +feature.homes.command.player_not_found=<red>This player does not exist.</red> +feature.homes.command.other_no_home=<red>This player has no home.</red> +feature.homes.command.teleport.other.success=<green>You have been teleported home </green>%1$s<green> of </green>%2$s<green>.</green> +feature.homes.command.other_no_home_with_name=<red>This player does not have a home with this name.</red> +feature.homes.command.no_home=<red>You don't have a home.</red> +feature.homes.command.teleport.self.success=<green>You have been teleported to your home </green>%1$s<green>.</green> +feature.homes.command.no_home_with_name=<red>You don't have a home with that name.</red> +feature.homes.command.disabled_world=<red>You cannot define home in this world.</red> +feature.homes.command.invalid_name=<red>The home name must be valid.</red> +feature.homes.command.other_already_has=<red>This player already has a home with this name.</red> +feature.homes.command.set.other.success=<green>The home </green>%1$s<green> was defined for </green>%2$s<green>.</green> +feature.homes.command.set.by_admin=<green>An admin has defined a home for you </green>%1$s<green>.</green> +feature.homes.command.home_limit_reached=<red>You have reached the limit of homes.</red> +feature.homes.command.already_has=<red>You already have a home with this name.</red> +feature.homes.command.set.self.success=<green>Your home </green>%1$s<green> has been defined.</green> +feature.homes.command.rename.other.success=<green>The home </green>%1$s<green> was renamed to </green>%2$s<green>.</green> +feature.homes.command.rename.already_has=<red>You already have a home with that name.</red> +feature.homes.command.rename.self.success=<green>Your home </green>%1$s<green> was renamed to </green>%2$s<green>.</green> +feature.homes.command.self_no_home_with_name=<red>You don't have a man with that name.</red> +feature.homes.command.delete.other.success=<green>The home </green>%1$s<green> was deleted.</green> +feature.homes.command.delete.self.success=<green>Your home </green>%1$s<green> was deleted.</green> +feature.homes.command.relocate.other.success=<green>The home </green>%1$s<green> was moved.</green> +feature.homes.command.relocate.protected_region=<red>You can't define a home here, you are in a protected region.</red> +feature.homes.command.relocate.self.success=<green>Your home </green>%1$s<green> was moved.</green> +feature.homes.world.not_found=<red>This world does not exist.</red> +feature.homes.world.already_disabled=<red>The world </red>%1$s<red> is already in the list of worlds where homes are disabled.</red> +feature.homes.world.added=<green>The world </green>%1$s<green> has been added to the list of worlds where men are </green><red>disabled</red><green>.</green> +feature.homes.world.remove.not_found=<red>The world </red>%1$s<red> does not exist.</red> +feature.homes.world.removed=<green>The world </green>%1$s<green> has been removed from the list of worlds where men are </green><red>disabled</red><green>.</green> +feature.homes.world.not_disabled=<red>The world </red>%1$s<red> is not in the list of worlds where homes are disabled.</red> +feature.homes.world.list.empty=<red>No worlds are in the list of worlds where homes are disabled.</red> +feature.homes.world.list.title=<yellow>List of worlds where homes are disabled:</yellow> +feature.homes.world.list.item= <dark_gray>- </dark_gray>%1$s <dark_gray>(</dark_gray>%2$s<dark_gray>)</dark_gray> +feature.homes.world.info=<gray>Added by </gray>%1$s<gray> THE </gray>%2$s +feature.homes.upgrade.not_reached_limit=<red>You have not reached the house limit to purchase this improvement.</red> +feature.homes.upgrade.not_enough_aywenite=<red>You don't have enough Aywenite (</red>%1$s<red> necessary)</red> +feature.homes.upgrade.not_enough_money=<red>You don't have enough money on you! (</red>%1$s%2$s<red> necessary)</red> +feature.homes.upgrade.success=<green>You have improved your house limit to </green>%1$s<green> For </green>%2$s<green>$ and to </green>%3$s<green> of Aywenite</green> +feature.homes.upgrade.max=<red>You have reached the maximum limit of homes.</red> +feature.homes.icon.name=<green>%1$s</green> +feature.homes.icon.normal_lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to change the icon</green> +feature.homes.icon.selected_lore=<dark_gray>[</dark_gray><green>✔</green><dark_gray>] </dark_gray><gray>Current icon</gray> +feature.homes.icon.changed=<green>Your home icon </green>%1$s<green> was changed to </green>%2$s<green> !</green> +feature.homes.icon.menu.title=Homes Menu - Change icon +feature.homes.icon.search.name=<yellow>Research</yellow> +feature.homes.icon.search.current=<gray>Current search: </gray>%1$s +feature.homes.icon.search.left=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to search</green> +feature.homes.icon.search.right=<gray>■ </gray><red>Click </red><dark_red>right</dark_red><red> to reset</red> +feature.homes.icon.search.prompt=Enter your search for an item +feature.homes.icon.category.name=<green>Category</green> +feature.homes.icon.category.selection=<gray>Category selection</gray> +feature.homes.icon.category.available=<gray>Categories available:</gray> +feature.homes.icon.category.all=<yellow>All</yellow> +feature.homes.icon.category.vanilla=<green>Vanilla</green> +feature.homes.icon.category.custom=<light_purple>Customized</light_purple> +feature.homes.icon.category.left=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to go to the next category</green> +feature.homes.icon.category.right=<gray>■ </gray><red>Click </red><dark_red>right</dark_red><red> to go to the previous category</red> +feature.homes.icon.category.spam=<red>Please don't spam the category change.</red> +feature.homes.config.title=Homes Menu - Configuration +feature.homes.config.change_icon.name=<green>Change icon</green> +feature.homes.config.change_icon.lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to change your home icon</green> +feature.homes.config.rename.name=<green>Change name</green> +feature.homes.config.rename.lore=<gray>■ </gray><green>Click </green><dark_green>LEFT</dark_green><green> to change the name of your home</green> +feature.homes.config.rename.prompt=Enter your new home name +feature.homes.config.rename.success=<green>Your home </green>%1$s<green> was renamed to </green>%2$s<green>.</green> +feature.homes.config.delete.name=<red>Delete home</red> +feature.homes.config.delete.lore=<gray>■ </gray><red>Click </red><dark_red>LEFT</dark_red><red> to delete your home</red> + diff --git a/src/main/resources/translations/en_US/itemsadder.properties b/src/main/resources/translations/en_US/itemsadder.properties new file mode 100644 index 000000000..bb6a45f7d --- /dev/null +++ b/src/main/resources/translations/en_US/itemsadder.properties @@ -0,0 +1,5 @@ +feature.itemsadder.spawner_extractor.fail=<red>Extraction failed! The spawner broke.</red> +feature.itemsadder.spawner_extractor.display_name=<yellow>Spawner at </yellow>%1$s +feature.itemsadder.spawner_extractor.success_extract=<green>You have extracted a spawner at </green>%1$s ! +feature.itemsadder.spawner_extractor.success_place=<green>Spawner at </green>%1$s place ! + diff --git a/src/main/resources/translations/en_US/leaderboards.properties b/src/main/resources/translations/en_US/leaderboards.properties new file mode 100644 index 000000000..a6e92040f --- /dev/null +++ b/src/main/resources/translations/en_US/leaderboards.properties @@ -0,0 +1,28 @@ +feature.leaderboards.empty.contributors=No contributors found yet. +feature.leaderboards.empty.players=No players found yet. +feature.leaderboards.empty.cities=No cities found yet. + +feature.leaderboards.header.contributors=--- GitHub Contributor Leaderboard --- +feature.leaderboards.header.money=--- Players Money Leaderboard --- +feature.leaderboards.header.city_money=--- Cities Money Leaderboard --- +feature.leaderboards.header.playtime=------- Game Time Leaderboard ------- +feature.leaderboards.header.pumpkin=--- Pumpkin Leaderboard --- + +feature.leaderboards.footer=----------------------------------------- + +feature.leaderboards.line.contributors=%1$s %2$s <green>+</green> %3$s <red>-</red> %4$s +feature.leaderboards.line.money=%1$s %2$s <gray>-</gray> %3$s +feature.leaderboards.line.city_money=%1$s %2$s <gray>-</gray> %3$s +feature.leaderboards.line.playtime=%1$s %2$s <gray>-</gray> %3$s +feature.leaderboards.line.pumpkin=%1$s %2$s <gray>-</gray> %3$s pumpkins + +feature.leaderboards.command.invalid=Please specify a valid leaderboard. (Ex: /leaderboard contributeurs) +feature.leaderboards.command.position_updated=<green>Leaderboard position </green>%1$s<green> update.</green> +feature.leaderboards.command.position_update_failed=<red>Error updating leaderboard position </red>%1$s<red> :</red> %2$s +feature.leaderboards.command.invalid_list=Please specify a valid leaderboard: contributors, money, city-money, playtime, pumpkin-count +feature.leaderboards.command.holograms_disabled=<red>Holograms successfully disabled.</red> +feature.leaderboards.command.holograms_enabled=<green>Holograms activated successfully.</green> +feature.leaderboards.command.holograms_updated=<green>Holograms updated successfully.</green> +feature.leaderboards.command.scale_changed=<green>Size of holograms changed to </green>%1$s +feature.leaderboards.command.scale_update_failed=<red>Error updating hologram size: </red>%1$s + diff --git a/src/main/resources/translations/en_US/mailboxes.properties b/src/main/resources/translations/en_US/mailboxes.properties new file mode 100644 index 000000000..c29635f50 --- /dev/null +++ b/src/main/resources/translations/en_US/mailboxes.properties @@ -0,0 +1,53 @@ +feature.mailboxes.player.unknown=Unknown +feature.mailboxes.letter=lettre + +feature.mailboxes.menu.title.home=Mailbox +feature.mailboxes.menu.title.player=Mailbox +feature.mailboxes.menu.title.pending=Mail awaiting cancellation +feature.mailboxes.menu.title.players_list=List of players +feature.mailboxes.menu.title.letter=Letter from %1$s +feature.mailboxes.menu.title.sending=Send a letter to %1$s + +feature.mailboxes.menu.pending.item=On hold +feature.mailboxes.menu.player.item=My mailbox +feature.mailboxes.menu.send.item=Send + +feature.mailboxes.menu.button.cancel=Cancel +feature.mailboxes.menu.button.accept=Accept +feature.mailboxes.menu.button.send=Send +feature.mailboxes.menu.button.refuse=Refuse +feature.mailboxes.menu.button.home_arrow=⬅Home +feature.mailboxes.menu.button.next_page_arrow=Next page ➡ +feature.mailboxes.menu.button.previous_page_arrow=⬅ Previous page + +feature.mailboxes.menu.refuse_warning=<red><bold>If you do this, the items will be deleted</bold></red> +feature.mailboxes.menu.cancel.success=You have canceled the mailbox #%1$s +feature.mailboxes.menu.cancel.confirm=Confirm mailbox cancellation #%1$s +feature.mailboxes.menu.cancel.cancel=Undo mailbox cancellation #%1$s + +feature.mailboxes.message.letter_not_found=The letter with the id %1$s does not exist. +feature.mailboxes.message.cancel_success_sender=%1$s canceled the letter. You have received %2$s%3$s +feature.mailboxes.message.refuse_success=You refused the letter #%1$s. +feature.mailboxes.message.items_received=You have received %1$s %2$s +feature.mailboxes.message.cancel_letter=You canceled the letter #%1$s. +feature.mailboxes.message.empty_letter=You cannot send an empty letter +feature.mailboxes.message.player_not_found=The player %1$s does not exist or was never connected! +feature.mailboxes.message.send_to_self=You can't send it to yourself! +feature.mailboxes.message.cannot_send=You do not have the rights to send to %1$s ! + +feature.mailboxes.message.send_error=An error appeared while sending items to %1$s +feature.mailboxes.message.one_letter=a +feature.mailboxes.message.new_letters.line1=You have received %1$s %2$s. +feature.mailboxes.message.new_letters.click=Click here +feature.mailboxes.message.new_letters.suffix=to open letters +feature.mailboxes.message.new_letters.hover=Open my mailbox +feature.mailboxes.message.letter_received.line1=You have received %1$s%2$s from %3$s +feature.mailboxes.message.letter_received.click=Click here +feature.mailboxes.message.letter_received.suffix=to open the letter +feature.mailboxes.message.letter_received.hover=Open letter #%1$s +feature.mailboxes.message.sent_word=sent +feature.mailboxes.message.send_success=%1$s %2$s %3$s has %4$s + +feature.mailboxes.letter.contains=➤ Contains %1$s %2$s +feature.mailboxes.title.new_letter=New letter! +feature.mailboxes.title.new_letter.subtitle=%1$s sent you %2$s%3$s diff --git a/src/main/resources/translations/en_US/main.properties b/src/main/resources/translations/en_US/main.properties new file mode 100644 index 000000000..e17c2d836 --- /dev/null +++ b/src/main/resources/translations/en_US/main.properties @@ -0,0 +1,39 @@ +# Language file for the plugin +# Native language: French +# Do not use color codes in this file if there is an agument +# * KEY DE TEST +test=TESTTTT +global.item=item +global.never=Never + +# ** UTILS ** +utils.world.overworld=<gray>the Overworld</gray> +utils.world.nether=<gray>the Nether</gray> +utils.world.end=<gray>the End</gray> +utils.world.dream=<gray>Dreams</gray> + +# ** MESSAGES ** +messages.global.cannot_do_this=<red>You have no right to do this.</red> +messages.global.missing_arg=<red>You must specify an argument.</red> +messages.global.player_not_found=<red>The player was not found.</red> +messages.global.invalid_input=<red>Please enter correct entry</red> + +messages.global.player_missing_money=<red>You don't have enough money.</red> +messages.global.cancel=<red>Cancel</red> +messages.global.accept=<green>Accept</green> +messages.menus.back=<green>Back</green> +messages.menus.back_lore=<gray>Return to previous menu</gray> +messages.menus.previous_page=<green>Previous page</green> +messages.menus.previous_page_lore=<gray>Click to go to previous page</gray> +messages.menus.next_page=<green>Next page</green> +messages.menus.next_page_lore=<gray>Click to go to the next page</gray> +messages.menus.close=<gray>Close</gray> +messages.menus.none=<gray>None</gray> + +registries.menu.lootbox.name=<gray>Lootbox</gray> +registries.menu.chance=<gray>Chance :</gray> %1$s +registries.menu.sub_loots.click_here=<yellow><bold>CLICK HERE TO VIEW THE SUBLOTS</bold></yellow> + +feature.tickets.loot.won=<green>You won: </green> +feature.tickets.loot.broadcast=<gold><bold>✦ </bold></gold><yellow><bold>CONGRATULATIONS </bold></yellow><gray>has </gray>%1$s<gray> who just won </gray>%2$s<gray> at the ball machine! </gray><gold><bold>✦</bold></gold> +feature.tickets.loot.gg=</bold></gold><yellow><bold>CONGRATULATIONS !</bold></yellow> diff --git a/src/main/resources/translations/en_US/mainmenu.properties b/src/main/resources/translations/en_US/mainmenu.properties new file mode 100644 index 000000000..e795e868c --- /dev/null +++ b/src/main/resources/translations/en_US/mainmenu.properties @@ -0,0 +1,52 @@ +feature.mainmenu.item.city.lore=/city +feature.mainmenu.item.city.name=City : %1$s +feature.mainmenu.item.city.no_city=You are not part of a city. + +feature.mainmenu.item.advancements.name=Show progress + +feature.mainmenu.item.quests.name=Quests +feature.mainmenu.item.quests.lore=/quest + +feature.mainmenu.item.milestones.name=Milestones +feature.mainmenu.item.milestones.lore=Discover the features in progression routes! +feature.mainmenu.item.milestones.command=/milestones + +feature.mainmenu.item.contest.ends_in=End in %1$s +feature.mainmenu.item.contest.name=Competition +feature.mainmenu.item.contest.command=/contest + +feature.mainmenu.item.shop.name=Shop +feature.mainmenu.item.shop.command=/adminshop + +feature.mainmenu.item.home.name=Homes +feature.mainmenu.item.home.command=/home + +feature.mainmenu.item.profile.name=Profile +feature.mainmenu.item.profile.lore=In development + +feature.mainmenu.item.next_page=Next page +feature.mainmenu.item.previous_page=Previous page + +feature.mainmenu.item.settings.name=Settings +feature.mainmenu.item.settings.command=/settings + +feature.mainmenu.item.mailbox.name=Mailbox +feature.mainmenu.item.mailbox.command=/mailbox home + +feature.mainmenu.item.shops_disabled=Shops (Disabled) +feature.mainmenu.item.company_disabled=Businesses (Disabled) +feature.mainmenu.item.leaderboard.name=Leaderboard +feature.mainmenu.item.leaderboard.command=/leaderboard +feature.mainmenu.item.bank.name=Bank +feature.mainmenu.item.bank.command=/banque +feature.mainmenu.item.coming_soon.name=Future +feature.mainmenu.item.coming_soon.lore=This feature is under development. + +feature.mainmenu.message.dream_world=You cannot interact with the main menu from the dream world. +feature.mainmenu.message.profile_dev=Player profiles are still in development %1$s. +feature.mainmenu.message.advancements_hint=Press the ' key%1$s' to open the Advancements menu. +feature.mainmenu.message.shops_disabled=Businesses and shops have been disabled %1$s. +feature.mainmenu.message.leaderboard_dev=The leaderboard menu is still under development %1$s.\nYou can still use the /lb ou look at the holograms in the spawn. +feature.mainmenu.message.coming_soon=This feature is under development and will be available soon! +feature.mainmenu.advancements.loading=Loading... + diff --git a/src/main/resources/translations/en_US/milestones.properties b/src/main/resources/translations/en_US/milestones.properties new file mode 100644 index 000000000..7af1e1df0 --- /dev/null +++ b/src/main/resources/translations/en_US/milestones.properties @@ -0,0 +1,96 @@ +feature.milestones.menu.title.main=Milestones menu - More info +feature.milestones.menu.title.milestone=Milestones menu - %1$s +feature.milestones.menu.page.previous=<yellow>◀ Previous page</yellow> +feature.milestones.menu.page.next=<yellow>Next page ▶</yellow> +feature.milestones.menu.close=<red>Close</red> +feature.milestones.menu.back=<green>Back</green> +feature.milestones.menu.coming_soon=<obfuscated>s</obfuscated> <red>Coming soon</red> <obfuscated>e</obfuscated> + +feature.milestones.menu.city.name=<dark_aqua>Cities Milestone</dark_aqua> +feature.milestones.menu.city.lore.intro_1=<gray>Discover the full <dark_aqua>cities</dark_aqua></gray> +feature.milestones.menu.city.lore.intro_2=<gray>Via this <dark_aqua>road of progression</dark_aqua> !</gray> +feature.milestones.menu.city.lore.details=<dark_gray><italic>Claims, Mascots, Mayors, Wars, ...</italic></dark_gray> +feature.milestones.menu.city.lore.need_city=<red>Create or join a city to access this!</red> +feature.milestones.menu.city.lore.level=<gray>Level of your city:</gray> %1$s +feature.milestones.menu.city.lore.click=<yellow><bold>CLICK HERE TO ACCESS YOUR MILESTONE</bold></yellow> + +feature.milestones.tutorial.name=OpenMC Tutorial +feature.milestones.tutorial.description.1=<gray>Discover <light_purple>OpenMC</light_purple> !</gray> +feature.milestones.tutorial.description.2=<gray>Review the <light_purple>features</light_purple></gray> +feature.milestones.tutorial.description.3=<dark_gray><italic>Cities, contests, the adminshop, quests, ...</italic></dark_gray> +feature.milestones.tutorial.description.4=<gray>Ideal for embarking on an adventure!</gray> + +feature.milestones.tutorial.hologram.icon=%1$s +feature.milestones.tutorial.hologram.welcome=<white>Welcome to </white><light_purple>OpenMC V2</light_purple><white>!</white> +feature.milestones.tutorial.hologram.based_on=<white>This version is based on the </white><dark_green>cities</dark_green> +feature.milestones.tutorial.hologram.how_to=<white>To access the tutorial, use the command </white><green>/milestones</green><white>.</white> +feature.milestones.tutorial.hologram.server=<white>It's your </white><light_purple>server</light_purple><white>!</white> +feature.milestones.tutorial.hologram.separator=<dark_gray><strikethrough> </strikethrough></dark_gray> +feature.milestones.tutorial.hologram.links=<white>Useful links: </white><dark_purple>/socials</dark_purple> + +feature.milestones.tutorial.quest.spare_bank.name=Deposit money in the bank +feature.milestones.tutorial.quest.spare_bank.description=<white>Type </white><light_purple>/bank</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>A competitive way to win big rewards!</italic></dark_gray> +feature.milestones.tutorial.quest.spare_bank.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><aqua>banks</aqua><white> can store an infinite amount of money and protect it if you die! Now let's personalize the gaming experience using settings!</white> + +feature.milestones.tutorial.quest.sell_buy.name=Buy or sell a resource in the adminshop +feature.milestones.tutorial.quest.sell_buy.description=<white>Type </white><red>/adminshop</red><white> or go to the </white><light_purple>main menu /menu</light_purple><white> to be able to sell or buy a resource</white>\ + <br><dark_gray><italic>This is the beginning of wealth!</italic></dark_gray> +feature.milestones.tutorial.quest.sell_buy.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! L'</white><red>adminshop</red><white> offers various items so you can build, or make money! However, when you die you lose </white>%2$s<white>% of your money! It is therefore important to pay attention to your skin, or else deposit money in your bank!</white> + +feature.milestones.tutorial.quest.open_settings.name=Open settings menu +feature.milestones.tutorial.quest.open_settings.description=<white>Type </white><light_purple>/settings</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>This will allow you to configure your gaming experience!</italic></dark_gray> +feature.milestones.tutorial.quest.open_settings.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><blue>settings</blue><white> customize your game, they can be useful in certain cases, such as blocking friend requests, ... On a separate subject, you can switch to competition mode thanks to the </white><gold>contests</gold><white>, a sort of weekly competition!</white> + +feature.milestones.tutorial.quest.open_quest.name=Open the quest menu +feature.milestones.tutorial.quest.open_quest.description=<white>Type </white><light_purple>/quests</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu and see what quests you can complete</white>\ + <br><dark_gray><italic>This will launch you into adventure and give you challenges in order to diversify!</italic></dark_gray> +feature.milestones.tutorial.quest.open_quest.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><blue>quests</blue><white> will help you get money easily for the </white><blue>start of game</blue><white> ! You can attempt to accomplish the </white><blue>stain</blue><white> whatever you want!</white> + +feature.milestones.tutorial.quest.open_contest.name=Open the contests menu +feature.milestones.tutorial.quest.open_contest.description=<white>Type </white><light_purple>/contest</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>A competitive way to win big rewards!</italic></dark_gray> +feature.milestones.tutorial.quest.open_contest.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><gold>contests</gold><white> pit 2 groups against each other on a theme, the winners win a big reward! And here the tutorial is now finished, go and collect your reward in the </white><blue>mailbox</blue><white>, a letter system for receiving or sending letters!</white> + +feature.milestones.tutorial.quest.open_adminshop.name=Open the adminshop menu +feature.milestones.tutorial.quest.open_adminshop.description=<white>Type </white><red>/adminshop</red><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the menu</white>\ + <br><dark_gray><italic>The market which varies according to supply and demand!</italic></dark_gray> +feature.milestones.tutorial.quest.open_adminshop.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! L'</white><red>adminshop</red><white> will help you get money and blocks! You can now sell or buy a resource in the adminshop!</white> + +feature.milestones.tutorial.quest.home_upgrade.name=Improve your house limit +feature.milestones.tutorial.quest.home_upgrade.description=<white>Type </white><light_purple>/upgradehome</light_purple><white> or go to the </white><light_purple>menu of the homes (/homes)</light_purple>\ + <br><white>to be able to improve your house limit</white>\ + <br><dark_gray><italic>This will allow you to have more homes!</italic></dark_gray> +feature.milestones.tutorial.quest.home_upgrade.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! THE </white><dark_green>homes</dark_green><white> will be very useful for moving quickly between your bases! Now I think you need challenges! Open the menu of </white><blue>quests</blue><white>.</white> + +feature.milestones.tutorial.quest.home_create.name=Place a home +feature.milestones.tutorial.quest.home_create.description=<white>Type </white><light_purple>/sethome</light_purple><white> by being where you want to put your home</white>\ + <br><dark_gray><italic>It's very useful to make one to teleport to your base!</italic></dark_gray> +feature.milestones.tutorial.quest.home_create.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! Homes are often used to avoid losing your base! You are limited to only having 1 home at the start. We will have to think about improving them...</white> + +feature.milestones.tutorial.quest.finish_quest.name=Complete a quest +feature.milestones.tutorial.quest.finish_quest.description=<white>Complete a quest of your choice</white>\ + <br><dark_gray><italic>This will be able to give you money or certain resources!</italic></dark_gray> +feature.milestones.tutorial.quest.finish_quest.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! And here is a </white><blue>reward</blue><white> ! Practical, right? Let's discover another method of producing money and consuming it! Go into the</white><red>adminshop</red><white>, a place where several items can be purchased at varying prices depending on the</white><red>supply and demand</red><white> !</white> + +feature.milestones.tutorial.quest.claim_letter.name=Open the rewards letter +feature.milestones.tutorial.quest.claim_letter.description=<white>Type </white><light_purple>/mailbox</light_purple><white> or go to the </white><light_purple>main menu (/menu)</light_purple><white> to be able to open the mailbox menu</white>\ + <br><dark_gray><italic>An efficient way to send items to other players!</italic></dark_gray> +feature.milestones.tutorial.quest.claim_letter.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! You have discovered the basics of OpenMC. And now, you're free to discover the features for yourself! With that, we wish you the best in your adventure on </white><light_purple>OpenMC</light_purple><white> !</white> + +feature.milestones.tutorial.quest.city_create.name=Create/Rejoindre une city +feature.milestones.tutorial.quest.city_create.description=<white>Do </white><light_purple>/city</light_purple><white> to start creating your city</white>\ + <br><white>or join a city using an invitation!</white> +feature.milestones.tutorial.quest.city_create.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! This version of OpenMC is centered around cities. There you will find a </white><yellow>special milestone for cities</yellow><white> (/city milestone) who will guide you in this unique adventure! And if you passed your city to </white><dark_aqua>level 2</dark_aqua><white> ?</white> + +feature.milestones.tutorial.quest.city_level_two.name=Have a level 2 city +feature.milestones.tutorial.quest.city_level_two.description=<white>Do </white><light_purple>/city milestone</light_purple><white> to find out more how</white>\ + <br><white>improve your city!</white> +feature.milestones.tutorial.quest.city_level_two.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! You're well on your way to discovering all the features hidden in cities! But before that, I would like you to ask a </white><dark_green>home</dark_green><white>.</white> + +feature.milestones.tutorial.quest.break_aywenite.name=Break 30 Aywenites +feature.milestones.tutorial.quest.break_aywenite.description=<white>The new ore of </white><light_purple>V2</light_purple><white>, found in caves</white>\ + <br><white>It will be to you </white><light_purple>useful</light_purple><white> in many features</white> +feature.milestones.tutorial.quest.break_aywenite.reward=<white>Well done! You finished the</white><gold>stage </gold>%1$s<white> ! As said previously the</white><light_purple>Aywenite</light_purple><white> is an ore, valuable for features. Besides, you can use it to make your city!</white> + diff --git a/src/main/resources/translations/en_US/privatemessage.properties b/src/main/resources/translations/en_US/privatemessage.properties new file mode 100644 index 000000000..fb9483ca7 --- /dev/null +++ b/src/main/resources/translations/en_US/privatemessage.properties @@ -0,0 +1,17 @@ +feature.privatemessage.msg.cannot_message_yourself=<red>You cannot send a private message to yourself.</red> +feature.privatemessage.msg.private_messages_disabled=<red>You have disabled private messages.</red> +feature.privatemessage.msg.player_private_messages_disabled=<red>The player %1$s Disabled private messages.</red> +feature.privatemessage.msg.format.sender=<gray>[</gray><yellow>You </yellow><gold><bold>→</bold></gold> %1$s<gray>]</gray> %2$s +feature.privatemessage.msg.format.receiver=<gray>[</gray>%1$s <gold><bold>→</bold></gold> <blue>You</blue><gray>]</gray> %2$s + +feature.privatemessage.socialspy.toggled_off=<green>Social Spy disabled.</green> +feature.privatemessage.socialspy.toggled_on=<green>Social Spy enabled.</green> +feature.privatemessage.socialspy.status_changed=<green>Social Spy %1$s For %2$s.</green> +feature.privatemessage.socialspy.status.enabled=activated +feature.privatemessage.socialspy.status.disabled=disabled +feature.privatemessage.socialspy.format=<dark_gray>[<gold>SPY</gold>]</dark_gray> %1$s <gold>→</gold> %2$s<dark_gray>:</dark_gray> %3$s +feature.privatemessage.socialspy.no_players=<red>No player has social spy enabled.</red> +feature.privatemessage.socialspy.list_title=<gold>Players with Social Spy enabled:</gold> +feature.privatemessage.socialspy.list_item=<gray>- <green>%1$s</green></gray> +feature.privatemessage.socialspy.list_total=<gold>Total: <yellow>%1$s</yellow> player(s)</gold> + diff --git a/src/main/resources/translations/en_US/quests.properties b/src/main/resources/translations/en_US/quests.properties new file mode 100644 index 000000000..a98c5e661 --- /dev/null +++ b/src/main/resources/translations/en_US/quests.properties @@ -0,0 +1,72 @@ +feature.quests.menu.title=Quest menu +feature.quests.menu.page.previous=Previous page +feature.quests.menu.page.next=Next page +feature.quests.menu.tier_display=[%1$s/%2$s] +feature.quests.menu.quest_item.name=%1$s %2$s %3$s +feature.quests.menu.pending_rewards.title=Pending Rewards: +feature.quests.menu.pending_rewards.tier=Landing %1$s: +feature.quests.menu.rewards.title=Rewards: +feature.quests.menu.completed=Quest completed! +feature.quests.menu.progress=Progress: %1$s/%2$s (%3$s%%) +feature.quests.menu.current_objective=Current goal: +feature.quests.menu.steps.title=Advancement: +feature.quests.menu.next_tier.title=Next tier: + +feature.quests.actionbar.progress_label=Quest progress + +feature.quests.title.completed=Quest complete! +feature.quests.title.tier_completed=Landing %1$s finished ! + +feature.quests.message.money_reward=You have received %1$s +feature.quests.message.inventory_full_reward=You don't have enough space in your inventory to receive the reward! +feature.quests.message.completed=★ Quest complete! %1$s is now complete! +feature.quests.message.tier_completed=★ Bearing %1$s of %2$s valid ! +feature.quests.message.rewards_claimed=You have collected all the rewards of the tier %1$s of the quest %2$s ! +feature.quests.message.inventory_full_claim=You don't have enough space in your inventory to collect all the rewards. Free up some space and try again. +feature.quests.message.step_completed=✓ Step %1$s of %2$s validated! + +feature.quests.break_log.lore.line=%1$s : %2$s points + +feature.quests.break_diamond.name=Richou +feature.quests.break_diamond.description=Break diamond {target} ore{s} +feature.quests.break_log.name=Extreme lumberjack +feature.quests.break_log.description=Break {target} logs +feature.quests.break_stone.name=Stone Breaker +feature.quests.break_stone.description=Miner {target} stone blocks +feature.quests.break_wheat.name=Dedicated farmer +feature.quests.break_wheat.description=Harvest {target} wheat +feature.quests.chicken_thrower.name=Chicken thrower +feature.quests.chicken_thrower.description=Throw {target} eggs +feature.quests.consume_kebab.name=Yum yum +feature.quests.consume_kebab.description=Eat {target} kebab{s} +feature.quests.craft_cake.name=The pastry chef +feature.quests.craft_cake.description=Craft {target} cakes +feature.quests.craft_diamond_armor.name=Precious armor +feature.quests.craft_diamond_armor.description=Craft Full Diamond Armor +feature.quests.craft_diamond_armor.step.helmet=Diamond Helmet +feature.quests.craft_diamond_armor.step.chestplate=Diamond breastplate +feature.quests.craft_diamond_armor.step.leggings=Diamond pants +feature.quests.craft_diamond_armor.step.boots=Diamond Boots +feature.quests.craft_the_mixture.name=The Mixture +feature.quests.craft_the_mixture.description=Make {target} The Mixture{s} +feature.quests.enchant_first_item.name=Abracadabra +feature.quests.enchant_first_item.description=Enchant an item for the first time +feature.quests.fishing.name=Experienced fisherman +feature.quests.fishing.description=Catch {target} fish +feature.quests.kill_players.name=Hitman +feature.quests.kill_players.description=Kill {target} players +feature.quests.kill_super_creeper.name=The creeper boss +feature.quests.kill_super_creeper.description=Kill {target} Super Charged Creepers +feature.quests.kill_zombie.name=Zombie Apocalypse? +feature.quests.kill_zombie.description=Kill {target} zombies +feature.quests.mine_aywenite.name=Ohhh... is that precious? +feature.quests.mine_aywenite.description=Miner {target} Aywenite{s} +feature.quests.save_the_earth.name=Let's save the planet +feature.quests.save_the_earth.description=Plant {target} trees and make them grow with bone meal +feature.quests.smelt_iron.name=Hot in front! +feature.quests.smelt_iron.description=Melt {target} iron ingots +feature.quests.walk.name=The hiker +feature.quests.walk.description=Walk {target} blocks +feature.quests.win_contest.name=Choose your side +feature.quests.win_contest.description=Win {target} contest + diff --git a/src/main/resources/translations/en_US/settings.properties b/src/main/resources/translations/en_US/settings.properties new file mode 100644 index 000000000..6106bb8ab --- /dev/null +++ b/src/main/resources/translations/en_US/settings.properties @@ -0,0 +1,55 @@ +feature.settings.menu.title=Settings menu +feature.settings.reset.title=<red>Reset settings</red> +feature.settings.reset.confirm_message=<red>Are you sure you want to reset all settings?</red> +feature.settings.reset.warning=<yellow>This action is irreversible.</yellow> +feature.settings.reset.cancel=<gray>Click to cancel</gray> +feature.settings.reset.success=<green>All settings have been reset.</green> + +feature.settings.item.status_enabled=<green>Enabled</green> +feature.settings.item.status_disabled=<red>Disabled</red> +feature.settings.item.change=<gray>Click to change</gray> +feature.settings.item.changed=<green>%1$s %2$s</green> +feature.settings.item.updated=<green>%1$s updated.</green> + +feature.settings.error.set=<red>Error :</red> %1$s +feature.settings.error.parse=<red>Error during parsing:</red> %1$s + +feature.settings.type.friend_requests.name=Friend Request Policy +feature.settings.type.friend_requests.description=Who can send you friend requests: +feature.settings.type.city_join_requests.name=City Join Request Policy +feature.settings.type.city_join_requests.description=Who can ask you to join a city: +feature.settings.type.mascot_play_sound.name=Receive sounds from mascots +feature.settings.type.mascot_play_sound.description=Turn pet sounds on or off +feature.settings.type.mailbox_receive.name=Mailbox reception policy +feature.settings.type.mailbox_receive.description=Who can send you mailboxes: +feature.settings.type.private_message.name=Receive private messages +feature.settings.type.private_message.description=Who can send you private messages: +feature.settings.type.notifications_sound.name=Message sounds +feature.settings.type.notifications_sound.description=Turn private message sounds on or off +feature.settings.type.teleport_title_fade.name=Title fade during teleports +feature.settings.type.teleport_title_fade.description=Enable or disable title fading during teleports +feature.settings.type.join_animation.name=Connection animation +feature.settings.type.join_animation.description=Enable or disable login animation + +feature.settings.policy.global.everyone.name=<green>Everyone</green> +feature.settings.policy.global.everyone.description=Visible to all players +feature.settings.policy.global.friends.name=<light_purple>Friends only</light_purple> +feature.settings.policy.global.friends.description=Visible only to my friends +feature.settings.policy.global.city_members.name=<gold>Members of my city</gold> +feature.settings.policy.global.city_members.description=Visible to members of my city +feature.settings.policy.global.nobody.name=<red>Person</red> +feature.settings.policy.global.nobody.description=Information hidden from everyone + +feature.settings.policy.friend.everyone.name=<green>Everyone</green> +feature.settings.policy.friend.everyone.description=Accept friend requests from all players +feature.settings.policy.friend.city_members_only.name=<gold>Members of my city</gold> +feature.settings.policy.friend.city_members_only.description=Only accept requests from members in my city +feature.settings.policy.friend.nobody.name=<red>Person</red> +feature.settings.policy.friend.nobody.description=Decline all friend requests + +feature.settings.policy.city.everyone.name=<green>Everyone</green> +feature.settings.policy.city.everyone.description=Accept requests from all players +feature.settings.policy.city.friends.name=<light_purple>Friends only</light_purple> +feature.settings.policy.city.friends.description=Only accept requests from my friends +feature.settings.policy.city.nobody.name=<red>Person</red> +feature.settings.policy.city.nobody.description=Refuse all requests diff --git a/src/main/resources/translations/en_US/shop.properties b/src/main/resources/translations/en_US/shop.properties new file mode 100644 index 000000000..4a5953b8a --- /dev/null +++ b/src/main/resources/translations/en_US/shop.properties @@ -0,0 +1,113 @@ +# ** SHOPS ** +# * COMMANDS +# - Global Player Messages +feature.shop.player.is_not_him_shop=<red>This is not your shop.</red> +feature.shop.player.is_not_empty=<red>Your shop is not empty</red> +feature.shop.player.barrel_is_not_empty=<red>Your shop barrel is not empty</red> + +# - Player Commands +feature.shop.player.not_enough_money=<red>You do not have enough money to create a shop (</red>%1$s <red>required).</red> +feature.shop.player.creating_begin=<gold>You received a barrel to place your shop.</gold> +feature.shop.player.creating_cancel=<red>Shop creation cancelled.</red> +feature.shop.player.cancelling_pay=<green>You have been refunded</green> %1$s <green>for cancelling your shop creation.</green> +feature.shop.player.chunk_claimed=<red>This chunk is claimed by the enemy, you cannot place a shop here</red> +feature.shop.player.cant_create_barrel=<red>Cannot create a shop here, the barrel space must be free.</red> +feature.shop.player.cant_create_cash=<red>Cannot create a shop here, the space above the barrel must be free.</red> +feature.shop.player.deleted=<green>Your shop has been deleted!</green> +feature.shop.player.success_created=<green>Your shop has been created successfully! You can now add items to it.</green> +feature.shop.player.withdraw_money=%1$s <red>withdrawn from your personal account.</red> +feature.shop.player.pay_back=%1$s <green>refunded to your personal account</green> + +# * ERRORS +feature.shop.error.shop_is_null=<red>Error while opening the shop (the shop is null): call an admin.</red> +feature.shop.error.entity_is_null=<red>Error while opening the shop (the entity is null): call an admin.</red> +feature.shop.error.cannot_save_location=<red>Error while creating the shop (could not save the shop position): trying to delete the shop. Call an admin</red> +feature.shop.error.cannot_delete=<red>Cannot delete the shop: call an admin</red> +feature.shop.error.cannot_remove_furniture=<red>Error while deleting the shop (could not remove the furniture): call an admin</red> +feature.shop.error.not_found=<red>Shop not found</red> +feature.shop.error.pay_back=<gold>Since shop creation was not possible,</gold> %1$s <gold>has been refunded to you</gold> +feature.shop.error.multiblock=<red>Error while creating the shop (multiblock is null): call an admin</red> +feature.shop.error.barrel=<red>Barrel not detected, please contact staff</red> + +# * SHOP +feature.shop.get_turnover=<gold>You collected</gold> %1$s <gold>from your shop.</gold> +feature.shop.is_owner=<red>You cannot buy items from your own shop.</red> +feature.shop.not_enough_items=<red>The number of items purchased exceeds the number of items available in the shop</red> +feature.shop.not_enough_space=<red>You do not have enough space in your inventory to buy this number of items</red> +feature.shop.not_enough_money=<red>You do not have enough money to buy this number of items</red> +feature.shop.no_item=<red>This shop has no item</red> + +# * MENUS +feature.shop.menu.already_opened=<red>This menu is already open.</red> + +# - Main Shop Menu +feature.shop.menu.main.title=%1$s's shop menu +feature.shop.menu.main.delete.btn.title=<dark_red>Delete shop</dark_red> +feature.shop.menu.main.delete.btn.lore=<gold>Removing all money and items is required to delete the shop.</gold> \ +<br><dark_red><bold>WARNING, YOU WILL NOT BE ABLE TO GO BACK!</bold></dark_red> +feature.shop.menu.main.delete.confirm.accept=<dark_red>PERMANENTLY delete the shop.</dark_red> +feature.shop.menu.main.delete.confirm.refuse=<dark_green>Return to the shop menu</dark_green> +feature.shop.menu.main.remove_item.btn.title=<dark_red>Remove the shop item</dark_red> +feature.shop.menu.main.remove_item.btn.lore=<gold>Removing all stock of the item is required to delete it.</gold>\ +<br><dark_red><bold>WARNING, YOU WILL NOT BE ABLE TO GO BACK</bold></dark_red> +feature.shop.menu.main.remove_item.confirm.accept=<dark_red>PERMANENTLY delete the item.</dark_red> +feature.shop.menu.main.remove_item.confirm.refuse=<dark_green>Return to the shop menu</dark_green> +feature.shop.menu.main.sells.title=<light_purple>Open shop sales</light_purple> +feature.shop.menu.main.sells.lore.success=%1$s<dark_purple> sales completed</dark_purple> +feature.shop.menu.main.stats.title=<yellow>Open shop statistics</yellow> +feature.shop.menu.main.stats.lore.error=<red>No statistics available, because no item is for sale</red> +feature.shop.menu.main.stats.lore.success=<gold>Revenue: </gold>%1$s +feature.shop.menu.main.stocks.title=<aqua>Open shop stocks</aqua> +feature.shop.menu.main.stocks.lore.error=<red>Cannot open stocks, because no item is for sale.</red> +feature.shop.menu.main.stocks.lore.success=%1$s<blue> item(s) in stock</blue> +feature.shop.menu.main.modify_price.title=<yellow>Change item price</yellow> +feature.shop.menu.main.modify_price.message=<green>Price changed</green> +feature.shop.menu.main.remove.title=<red>Remove %1$s</red> +feature.shop.menu.main.remove.lore=<yellow><bold>CLICK HERE TO REMOVE %1$s</bold></yellow> +feature.shop.menu.main.add.title=<green>Add %1$s</green> +feature.shop.menu.main.add.lore=<yellow><bold>CLICK HERE TO ADD %1$s</bold></yellow> +feature.shop.menu.main.refuse.title=<red>Refuse purchase</red> +feature.shop.menu.main.refuse.lore=<gold>You refuse to buy</gold> %1$s <gold>item(s)</gold> \ +<br><yellow><bold>CLICK HERE TO REFUSE THE PURCHASE</bold></yellow> +feature.shop.menu.main.accept.title=<green>Accept purchase</green> +feature.shop.menu.main.accept.lore=<gold>It will cost you</gold> %1$s <gold>for</gold> %2$s <gold>item(s)</gold> \ +<br><yellow><bold>CLICK HERE TO ACCEPT THE PURCHASE</bold></yellow> +feature.shop.menu.main.yours=<green>This shop is yours.</green> + +# - Selling Menu +feature.shop.menu.selling.title=Selling menu +feature.shop.menu.selling.item_lore=<yellow><bold>CLICK HERE TO SELECT THIS ITEM FOR SALE</bold></yellow> +feature.shop.menu.selling.price_input=<gold>Enter the price at which you want to sell your item <bold>(commas must be replaced with periods)</bold>:</gold> +feature.shop.menu.selling.invalid_enter=<red>Invalid input, remember to replace commas with periods</red> +feature.shop.menu.selling.added_item=<green>Item added to the shop. Remember to fill the stocks in the stocks menu before you start selling.</green> +feature.shop.menu.selling.info.title=<dark_green>Shop information</dark_green> +feature.shop.menu.selling.info.lore=<green>Place the items you want to sell in the shop barrel,</green> \ +<br><green>then return to this menu to select the item to sell.</green> + +# - Stats Menu +feature.shop.menu.stats.title=Statistics +feature.shop.menu.stats.sells.title=<green>Total sales: %1$s</green> +feature.shop.menu.stats.sales.title=<dark_green>Total items sold: %1$s</dark_green> +feature.shop.menu.stats.turnover.title=<gold>Revenue: %1$s</gold> +feature.shop.menu.stats.buyers.title=<light_purple>Total unique buyers: %1$s</light_purple> +feature.shop.menu.stats.stocks.title=<aqua>Items remaining in stocks: %1$s</aqua> + +# - Sales Menu +feature.shop.menu.sales.title=Shop sales +feature.shop.menu.sales.item.name=<gold>Purchase of %1$s</gold> +feature.shop.menu.sales.item.lore=<green>On %1$s</green> \ +<br>%2$s<aqua> item(s) bought for </aqua>%3$s +feature.shop.menu.sales.get_turnover.name=<gold>Collect profits</gold> +feature.shop.menu.sales.get_turnover.lore=%1$s <gray>to collect from the shop (excluding taxes).</gray> \ +<br><gray>VAT is <light_purple>20%</light_purple></gray> \ +<br><gray>Last withdrawal:</gray> %2$s + +# - Stocks Menu +feature.shop.menu.stocks.title=Stocks Menu +feature.shop.menu.stocks.fill.name.not_full=<green>Fill from the barrel (</green>%1$s <green>item(s) available)</green> +feature.shop.menu.stocks.fill.name.full=<red>Cannot fill any more, the limit of 1792 items has been reached.</red> +feature.shop.menu.stocks.fill.success=<green>Stocks refilled.</green> +feature.shop.menu.stocks.empty.name=<red>Empty stocks</red> +feature.shop.menu.stocks.empty.lore=<gray>This will give you</gray> %1$s <gray>items</gray> +feature.shop.menu.stocks.empty.not_enough_space=<red>You do not have enough space in your inventory to collect all items from the shop!</red> +feature.shop.menu.stocks.empty.success=<green>You have collected the shop items</green> diff --git a/src/main/resources/translations/en_US/tickets.properties b/src/main/resources/translations/en_US/tickets.properties new file mode 100644 index 000000000..bd46a1056 --- /dev/null +++ b/src/main/resources/translations/en_US/tickets.properties @@ -0,0 +1,33 @@ +feature.tickets.machine.title=<gold><bold>Ball machine</bold></gold> +feature.tickets.machine.hologram_line1=<gold><bold>Ball machine V1</bold></gold> +feature.tickets.machine.hologram_line2=<yellow>Click to play!</yellow> +feature.tickets.machine.hologram_line3=<aqua>Good luck !</aqua> + +feature.tickets.menu.get_tickets.title=<yellow>Collect my tickets</yellow> +feature.tickets.menu.get_tickets.lore1=<gray>Collect the tickets that</gray> +feature.tickets.menu.get_tickets.lore2=<gray>you have collected thanks to your</gray> +feature.tickets.menu.get_tickets.lore3=<gray>playing time on OpenMC V1.</gray> +feature.tickets.menu.no_stats=<red>You do not have statistics to recover tickets.</red> +feature.tickets.menu.already_claimed=<red>You have already collected your tickets!</red> +feature.tickets.menu.no_tickets=<red>You don't have any tickets to collect!</red> +feature.tickets.menu.claimed=<green>You have received <yellow>%1$s</yellow> <green>tickets!</green> + +feature.tickets.menu.open_ticket.title=<yellow>Open a ticket</yellow> +feature.tickets.menu.open_ticket.lore1=<gray>Open a box with 1 ticket.</gray> +feature.tickets.menu.open_ticket.lore2=<gray>You currently have <yellow>%1$s</yellow> <gray>tickets.</gray> +feature.tickets.menu.not_enough_tickets=<red>You don't have enough tickets!</red> +feature.tickets.loot.limit_reached=<red>You have already reached the limit of this item: </red> +feature.tickets.loot.machine_ball.seinyy.name=<light_purple><bold>Seinyy plush</bold></light_purple> +feature.tickets.loot.machine_ball.seinyy.lore=<gray>A little plush like Seinyy!</gray> +feature.tickets.loot.machine_ball.diamond.name=<aqua><bold>Diamonds</bold></aqua> +feature.tickets.loot.machine_ball.diamond.lore=<gray>Ohhhh but how precious is this thing!?</gray> +feature.tickets.loot.machine_ball.iron.name=<gray><bold>Iron Ingots</bold></gray> +feature.tickets.loot.machine_ball.iron.lore=<gray>Just iron, nothing crazy...</gray> +feature.tickets.loot.machine_ball.netherite.name=<dark_red><bold>Netherite Ingot</bold></dark_red> +feature.tickets.loot.machine_ball.netherite.lore=<gray>The rarest thing in the game!</gray> +feature.tickets.loot.machine_ball.oak_log.name=<gold><bold>Oak Logs</bold></gold> +feature.tickets.loot.machine_ball.oak_log.lore=<gray>Enough to make you a little house hehe</gray> +feature.tickets.loot.machine_ball.steak.name=<red><bold>Steaks</bold></red> +feature.tickets.loot.machine_ball.steak.lore=<gray>Yum yum, good meat!</gray> +feature.tickets.loot.machine_ball.coal.name=<dark_gray><bold>Coal</bold></dark_gray> +feature.tickets.loot.machine_ball.coal.lore=<gray>Something to make a fire</gray> diff --git a/src/main/resources/translations/en_US/tpa.properties b/src/main/resources/translations/en_US/tpa.properties new file mode 100644 index 000000000..88810f6a1 --- /dev/null +++ b/src/main/resources/translations/en_US/tpa.properties @@ -0,0 +1,36 @@ +feature.tpa.already_pending=<dark_red>You already have a pending teleport request</dark_red> +feature.tpa.already_pending_usage=<dark_red>Type <gold>/tpacancel</gold> <dark_red>to cancel your current TP request</dark_red> +feature.tpa.player_not_found=<dark_red>The player does not exist or is not online</dark_red> +feature.tpa.cannot_tp_yourself=<dark_red>You cannot send a teleport request to yourself</dark_red> +feature.tpa.already_have_pending=<dark_red>You already have a teleport request awaiting your acceptance</dark_red> + +feature.tpa.request.target_message=<dark_aqua>The player</dark_aqua> %1$s <dark_aqua>wants to teleport to you</dark_aqua> +feature.tpa.request.target_accept=<dark_aqua>Type <dark_purple>/tpaccept</dark_purple> <dark_aqua>to accept</dark_aqua> +feature.tpa.request.target_deny=<dark_aqua>And <dark_purple>/tpadeny</dark_purple> <dark_aqua>to refuse</dark_aqua> +feature.tpa.request.sender_message=<dark_green>You sent a teleport request to %1$s</dark_green> +feature.tpa.request.sender_cancel=<dark_aqua>Type <dark_purple>/tpacancel</dark_purple> <dark_aqua>to cancel your tp request</dark_aqua> +feature.tpa.request.hover.accept=Accept the TP request +feature.tpa.request.hover.deny=Refuse the TP request +feature.tpa.request.hover.cancel=Cancel the TP request + +feature.tpa.accept.no_pending=<dark_red>You have no current teleport requests</dark_red> +feature.tpa.accept.multiple_requests=<dark_red>You have several teleport requests in progress, use <gold>/tpaccept <joueur></gold></dark_red> +feature.tpa.accept.no_request_from=<dark_red>You do not have a teleport request from %1$s</dark_red> +feature.tpa.accept.falling=<dark_red>The player is falling, teleportation impossible</dark_red> +feature.tpa.accept.you_falling=<dark_red>You are falling, teleportation impossible</dark_red> +feature.tpa.accept.player_not_online=<dark_red>The player is not online or does not exist</dark_red> +feature.tpa.accept.success=<dark_green>Teleport successful</dark_green> + +feature.tpa.deny.no_pending=<dark_red>You have no current teleport requests</dark_red> +feature.tpa.deny.multiple_requests=<dark_red>You have several teleport requests in progress, use <gold>/tpadeny <joueur></gold></dark_red> +feature.tpa.deny.no_request_from=<dark_red>You do not have a teleport request from %1$s</dark_red> +feature.tpa.deny.success=<dark_green>You refused the teleport request from %1$s</dark_green> +feature.tpa.deny.denied=%1$s <dark_red>refused your teleport request</dark_red> + +feature.tpa.cancel.no_pending=<dark_red>You have no current teleport requests</dark_red> +feature.tpa.cancel.player_not_online=<dark_red>The player is not online or does not exist</dark_red> +feature.tpa.cancel.success=<dark_green>You canceled your teleport request to %1$s</dark_green> +feature.tpa.cancel.cancelled=%1$s <dark_red>canceled his teleport request</dark_red> + +feature.tpa.expire.sender=<dark_red>Your teleport request to</dark_red> %1$s <dark_red>expired</dark_red> +feature.tpa.expire.target=<dark_aqua>The request for teleportation</dark_aqua> %1$s <dark_aqua>expired</dark_aqua> diff --git a/src/main/resources/translations/en_US/updates.properties b/src/main/resources/translations/en_US/updates.properties new file mode 100644 index 000000000..dbcbeaf46 --- /dev/null +++ b/src/main/resources/translations/en_US/updates.properties @@ -0,0 +1,6 @@ +feature.updates.message.broadcast_version=<dark_gray><strikethrough> </strikethrough></dark_gray> \ + <br><gray> </gray> \ + <br><gray>You are currently playing on the version</gray> %1$s <gray>of the plugin <light_purple><bold>OpenMC</bold></light_purple>.</gray> \ + <br><gray> </gray> \ + <br><dark_gray><strikethrough> </strikethrough></dark_gray> + diff --git a/src/main/resources/translations/en_US/utils.properties b/src/main/resources/translations/en_US/utils.properties new file mode 100644 index 000000000..a48eee6bc --- /dev/null +++ b/src/main/resources/translations/en_US/utils.properties @@ -0,0 +1,3 @@ +core.utils.fade_title.teleporting=<bold><green>Teleport...</green></bold> +core.utils.aywenite.not_enough=You don't have enough%1$s <white>(%2$s necessary)</white> +core.utils.aywenite.not_enough_space=You do not have enough space in your inventory to receive %1$s of%2$s<white>. Aywenite is available in your mailbox</white>