diff --git a/CLAUDE.md b/CLAUDE.md index c027fb1..3a30d42 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -65,6 +65,12 @@ mvn verify + SonarCloud), Jenkins at ci.codemc.org builds release jars on master - Locale keys live under `chunkblock.chunks.*` for gating messages (en-US.yml is the source of truth; other locales lag until synced). +- **New locale text is MiniMessage** (``, ``); the old `&`-codes still parse, + so files are mixed. Never build colored text yourself and splice it into a translation — + go through `User#getTranslationAsComponent` / `sendMessage(Component)` and keep colors in + Components. Where a formatted fragment really must reach a `[variable]` (the chat map's + `[row]`), serialize it to MiniMessage with `Util.getMiniMessage()` rather than emitting + `&` codes into what may be a MiniMessage line. - Public API for other plugins: `ChunkUnlockEvent`/`ChunkRelockEvent` (per chunk, carry claim-order index), request handler `unlocked-chunks`. - Tests extend `CommonTestSetup` (mocked Bukkit/BentoBox); `ChunkManagerTest` and the diff --git a/src/main/java/world/bentobox/chunkblock/chunks/ChunkMap.java b/src/main/java/world/bentobox/chunkblock/chunks/ChunkMap.java new file mode 100644 index 0000000..f85f299 --- /dev/null +++ b/src/main/java/world/bentobox/chunkblock/chunks/ChunkMap.java @@ -0,0 +1,135 @@ +package world.bentobox.chunkblock.chunks; + +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Location; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.format.NamedTextColor; +import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.bentobox.util.Util; +import world.bentobox.chunkblock.ChunkBlock; +import world.bentobox.chunkblock.chunks.ChunkManager.ClaimResult; + +/** + * The island's territory as a grid of squares, shared by the two things that draw it: the + * dialog map of {@code /ch chunks}, which makes a button of every chunk, and the chat map + * it falls back to. + *

+ * Glyphs are handed out as {@link Component Components} rather than colored text. A + * component can be put in a dialog button as it is and serialized to MiniMessage for the + * chat map, whereas a string of color codes has to be spliced into translated text, which + * is where formatting quietly breaks. + * + * @author tastybento + */ +public final class ChunkMap { + + /** What a chunk is to an island, which decides its glyph and what the map says about it */ + public enum Kind { + /** The chunk holding the magic block, which can never lock */ + CENTER, + /** Already claimed */ + OWNED, + /** Locked, but adjacent to the island and inside the protection range */ + CLAIMABLE, + /** Locked and not claimable yet */ + LOCKED + } + + /** + * One square of the map. + * + * @param dx chunk offset east of the center chunk + * @param dz chunk offset south of the center chunk + * @param kind what this chunk is to the island + * @param here true if the viewer is standing in this chunk + */ + public record Cell(int dx, int dz, Kind kind, boolean here) { + } + + private ChunkMap() { + // Utility class + } + + /** + * Maps the territory around an island, row by row from north to south and west to east + * within a row — the order both maps draw in. + * + * @param addon the addon + * @param island the island whose territory is mapped + * @param viewer where the player is standing, or null if they are nowhere on the map + * @param radius how many chunks out from the center the map reaches + * @return the cells of a square map (2 * radius + 1) chunks across + */ + public static List cells(@NonNull ChunkBlock addon, @NonNull Island island, @Nullable Location viewer, + int radius) { + ChunkManager cm = addon.getChunkManager(); + int centerChunkX = island.getCenter().getBlockX() >> 4; + int centerChunkZ = island.getCenter().getBlockZ() >> 4; + // A player who is not in this world stands on no chunk of the map + boolean sameWorld = viewer != null && Util.sameWorld(island.getWorld(), viewer.getWorld()); + int playerDx = sameWorld ? (viewer.getBlockX() >> 4) - centerChunkX : Integer.MIN_VALUE; + int playerDz = sameWorld ? (viewer.getBlockZ() >> 4) - centerChunkZ : Integer.MIN_VALUE; + List cells = new ArrayList<>(); + for (int dz = -radius; dz <= radius; dz++) { + for (int dx = -radius; dx <= radius; dx++) { + Kind kind; + if (dx == 0 && dz == 0) { + kind = Kind.CENTER; + } else if (addon.getOneBlocksIsland(island).isChunkUnlocked(dx, dz)) { + kind = Kind.OWNED; + } else if (cm.checkGeometry(island, centerChunkX + dx, centerChunkZ + dz) == ClaimResult.OK) { + kind = Kind.CLAIMABLE; + } else { + kind = Kind.LOCKED; + } + cells.add(new Cell(dx, dz, kind, dx == playerDx && dz == playerDz)); + } + } + return cells; + } + + /** + * The glyph standing for a chunk. The chunk the player is on keeps its own outline but + * takes the marker color, so the map still says what that chunk is. + * + * @param cell the chunk + * @return the glyph, colored + */ + @NonNull + public static Component glyph(@NonNull Cell cell) { + String mark = switch (cell.kind()) { + case CENTER -> cell.here() ? "◉" : "◎"; + case OWNED -> cell.here() ? "◆" : "■"; + case CLAIMABLE -> cell.here() ? "◆" : "▣"; + case LOCKED -> cell.here() ? "◇" : "□"; + }; + return Component.text(mark, cell.here() ? NamedTextColor.AQUA : color(cell.kind())); + } + + /** + * The glyph as MiniMessage text, for the chat map: a whole row of these goes into the + * {@code [row]} variable of a translation, so the row has to be text by the time it + * gets there — MiniMessage text, matching the locale files, never color codes. + * + * @param cell the chunk + * @return the glyph as MiniMessage + */ + @NonNull + public static String glyphText(@NonNull Cell cell) { + return Util.getMiniMessage().serialize(glyph(cell)); + } + + private static NamedTextColor color(Kind kind) { + return switch (kind) { + case CENTER -> NamedTextColor.GOLD; + case OWNED -> NamedTextColor.GREEN; + case CLAIMABLE -> NamedTextColor.YELLOW; + case LOCKED -> NamedTextColor.GRAY; + }; + } +} diff --git a/src/main/java/world/bentobox/chunkblock/commands/island/IslandChunksCommand.java b/src/main/java/world/bentobox/chunkblock/commands/island/IslandChunksCommand.java index 0aa6d43..caa2938 100644 --- a/src/main/java/world/bentobox/chunkblock/commands/island/IslandChunksCommand.java +++ b/src/main/java/world/bentobox/chunkblock/commands/island/IslandChunksCommand.java @@ -3,19 +3,24 @@ import java.util.List; import java.util.Objects; import java.util.Optional; +import java.util.stream.Collectors; import net.kyori.adventure.key.Key; import world.bentobox.bentobox.api.commands.CompositeCommand; +import world.bentobox.bentobox.api.dialogs.Dialogs; import world.bentobox.bentobox.api.user.User; import world.bentobox.bentobox.database.objects.Island; import world.bentobox.bentobox.util.Util; import world.bentobox.chunkblock.ChunkBlock; import world.bentobox.chunkblock.chunks.ChunkManager; -import world.bentobox.chunkblock.chunks.ChunkManager.ClaimResult; +import world.bentobox.chunkblock.chunks.ChunkMap; +import world.bentobox.chunkblock.chunks.ChunkMap.Cell; +import world.bentobox.chunkblock.panels.ChunksDialog; /** * /ch chunks — shows how big your island is, how much level credit you can spend, and a - * little chat map of your territory with the chunks you could claim next. + * map of your territory with the chunks you could claim next: a dialog of one button per + * chunk where the server supports dialogs, a chat map of glyphs where it does not. * * @author tastybento */ @@ -63,6 +68,11 @@ public boolean execute(User user, String label, List args) { return false; } Island island = optionalIsland.get(); + // The dialog map is the good one: buttons are the same size on every client. The + // chat map is what servers too old for dialogs get instead. + if (Dialogs.isSupported() && ChunksDialog.show(addon, user, island)) { + return true; + } ChunkManager cm = addon.getChunkManager(); int unlocked = cm.getUnlockedChunkCount(island); int max = cm.getMaxChunks(island); @@ -84,30 +94,18 @@ public boolean execute(User user, String label, List args) { private void showMap(User user, Island island, int unlocked, int max) { ChunkManager cm = addon.getChunkManager(); int radius = Math.min(MAX_MAP_RADIUS, cm.currentRing(island) + 1); - int centerChunkX = island.getCenter().getBlockX() >> 4; - int centerChunkZ = island.getCenter().getBlockZ() >> 4; - int playerDx = (user.getLocation().getBlockX() >> 4) - centerChunkX; - int playerDz = (user.getLocation().getBlockZ() >> 4) - centerChunkZ; + int width = 2 * radius + 1; + List cells = ChunkMap.cells(addon, island, user.getLocation(), radius); user.sendMessage("chunkblock.chunks.map.title", "[unlocked]", String.valueOf(unlocked), "[max]", String.valueOf(max)); - for (int dz = -radius; dz <= radius; dz++) { - StringBuilder row = new StringBuilder(); - for (int dx = -radius; dx <= radius; dx++) { - boolean here = dx == playerDx && dz == playerDz; - if (dx == 0 && dz == 0) { - // The center chunk holds the magic block and can never lock, so it is - // marked in its own right — without it the grid has nothing to orient by - row.append(here ? "&b◉" : "&6◎"); - } else if (addon.getOneBlocksIsland(island).isChunkUnlocked(dx, dz)) { - row.append(here ? "&b◆" : "&a■"); - } else if (cm.checkGeometry(island, centerChunkX + dx, centerChunkZ + dz) == ClaimResult.OK) { - row.append(here ? "&b◆" : "&e▣"); - } else { - row.append(here ? "&b◇" : "&7□"); - } - } - user.sendMessage(user.getTranslationAsComponent("chunkblock.chunks.map.row", "[row]", row.toString()) - .font(MONOSPACE_FONT)); + for (int row = 0; row < width; row++) { + // A row goes into the [row] variable of a translation, so it has to be text by + // then. It is MiniMessage text, the same format the locale files are written + // in — color codes spliced into a MiniMessage line would show up raw. + String glyphs = cells.subList(row * width, (row + 1) * width).stream().map(ChunkMap::glyphText) + .collect(Collectors.joining()); + user.sendMessage( + user.getTranslationAsComponent("chunkblock.chunks.map.row", "[row]", glyphs).font(MONOSPACE_FONT)); } user.sendMessage("chunkblock.chunks.map.legend", "[cost]", String.valueOf(cm.getChunkCost())); } diff --git a/src/main/java/world/bentobox/chunkblock/panels/ChunksDialog.java b/src/main/java/world/bentobox/chunkblock/panels/ChunksDialog.java new file mode 100644 index 0000000..ae23b3f --- /dev/null +++ b/src/main/java/world/bentobox/chunkblock/panels/ChunksDialog.java @@ -0,0 +1,195 @@ +package world.bentobox.chunkblock.panels; + +import java.time.Duration; +import java.util.ArrayList; +import java.util.List; + +import org.bukkit.Bukkit; +import org.eclipse.jdt.annotation.NonNull; +import org.eclipse.jdt.annotation.Nullable; + +import io.papermc.paper.dialog.Dialog; +import io.papermc.paper.registry.data.dialog.ActionButton; +import io.papermc.paper.registry.data.dialog.DialogBase; +import io.papermc.paper.registry.data.dialog.action.DialogAction; +import io.papermc.paper.registry.data.dialog.body.DialogBody; +import io.papermc.paper.registry.data.dialog.body.PlainMessageDialogBody; +import io.papermc.paper.registry.data.dialog.type.DialogType; +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.event.ClickCallback; +import world.bentobox.bentobox.api.dialogs.Dialogs; +import world.bentobox.bentobox.api.user.User; +import world.bentobox.bentobox.database.objects.Island; +import world.bentobox.chunkblock.ChunkBlock; +import world.bentobox.chunkblock.chunks.ChunkManager; +import world.bentobox.chunkblock.chunks.ChunkMap; +import world.bentobox.chunkblock.chunks.ChunkMap.Cell; + +/** + * The territory map of {@code /ch chunks} drawn as a dialog: one button per chunk, laid + * out in a grid. Chat renders a glyph grid differently on every client — font, chat width + * and scale all pull it out of shape — whereas dialog buttons are fixed-size boxes that + * look the same everywhere, and can carry a tooltip explaining the chunk under the mouse. + *

+ * The map is read-only: chunks are still claimed by hitting the border, so clicking a + * chunk only reports what it is and reopens the map. + * + * @author tastybento + */ +public class ChunksDialog { + + /** + * Widest map that still fits the dialog. A grid this wide is {@value #MAX_RADIUS} * 2 + * + 1 buttons across, which is as much as the dialog screen holds before the outer + * columns are squeezed off. + */ + static final int MAX_RADIUS = 6; + + /** Button size in dialog units. Roughly square once the client adds its own padding. */ + private static final int BUTTON_WIDTH = 26; + + /** Width of the close button along the bottom */ + private static final int CLOSE_BUTTON_WIDTH = 100; + + /** How long a chunk button's click callback stays live after the dialog is shown */ + private static final Duration CALLBACK_LIFETIME = Duration.ofMinutes(5); + + private static final String REFERENCE = "chunkblock.chunks.dialog."; + + private final ChunkBlock addon; + private final User user; + private final Island island; + private final int radius; + + ChunksDialog(ChunkBlock addon, User user, Island island) { + this.addon = addon; + this.user = user; + this.island = island; + this.radius = Math.min(MAX_RADIUS, addon.getChunkManager().currentRing(island) + 1); + } + + /** + * Shows the territory map to a player. + * + * @param addon the addon + * @param user the player to show it to + * @param island the island whose territory is mapped + * @return true if the dialog was shown; false if this server cannot show dialogs, in + * which case the caller should fall back to the chat map + */ + public static boolean show(@NonNull ChunkBlock addon, @NonNull User user, @NonNull Island island) { + return show(addon, user, island, null); + } + + /** + * @param selection the chunk description to show above the map, or null for none + */ + private static boolean show(ChunkBlock addon, User user, Island island, @Nullable Component selection) { + if (!Dialogs.isSupported() || !user.isPlayer() || user.getPlayer() == null) { + return false; + } + try { + new ChunksDialog(addon, user, island).open(selection); + return true; + } catch (Exception | LinkageError e) { + // A server that reports dialog support but cannot build one is no reason to + // leave the player with nothing — the caller falls back to the chat map + addon.logError("Could not show the chunks dialog: " + e.getMessage()); + return false; + } + } + + private void open(@Nullable Component selection) { + ChunkManager cm = addon.getChunkManager(); + int unlocked = cm.getUnlockedChunkCount(island); + int max = cm.getMaxChunks(island); + List body = new ArrayList<>(); + if (selection != null) { + body.add(DialogBody.plainMessage(selection)); + } + body.add(DialogBody.plainMessage(text("chunkblock.chunks.info", "[unlocked]", String.valueOf(unlocked), + "[max]", String.valueOf(max), "[credit]", String.valueOf(Math.max(0, cm.getCredit(island))), "[cost]", + String.valueOf(cm.getChunkCost())))); + body.add(DialogBody.plainMessage(text("chunkblock.chunks.rings", "[rings]", + String.valueOf(cm.completedRings(island)), "[max]", String.valueOf(cm.maxRingRadius(island))))); + body.add(DialogBody.plainMessage( + text("chunkblock.chunks.map.legend", "[cost]", String.valueOf(cm.getChunkCost())))); + + DialogBase base = DialogBase + .builder(text("chunkblock.chunks.map.title", "[unlocked]", String.valueOf(unlocked), "[max]", + String.valueOf(max))) + .canCloseWithEscape(true).afterAction(DialogBase.DialogAfterAction.CLOSE).body(body).build(); + + List buttons = cells().stream().map(this::button).toList(); + DialogType type = DialogType.multiAction(buttons).columns(2 * radius + 1) + .exitAction(ActionButton.create(text(REFERENCE + "close"), null, CLOSE_BUTTON_WIDTH, null)).build(); + + user.getPlayer().showDialog(Dialog.create(factory -> factory.empty().base(base).type(type))); + } + + /** + * The map, row by row from north to south — the same reading order the buttons are laid + * out in, so the grid comes out with north at the top. + */ + List cells() { + return ChunkMap.cells(addon, island, user.getLocation(), radius); + } + + private ActionButton button(Cell cell) { + Component tooltip = tooltip(cell); + return ActionButton.builder(ChunkMap.glyph(cell)).tooltip(tooltip).width(BUTTON_WIDTH) + .action(DialogAction.customClick((view, audience) -> reopen(tooltip), + ClickCallback.Options.builder().uses(1).lifetime(CALLBACK_LIFETIME).build())) + .build(); + } + + /** + * Puts the map back up with the clicked chunk named at the top. Clicking any button + * closes the dialog, so a map that stays put has to be shown again. + */ + private void reopen(Component selection) { + // Dialog callbacks may arrive off the main thread, and everything the map reads is + // island data + Bukkit.getScheduler().runTask(addon.getPlugin(), () -> show(addon, user, island, selection)); + } + + /** + * What the chunk under the mouse is: its offset from the center chunk and, for a chunk + * that could be claimed next, what it would cost. + */ + private Component tooltip(Cell cell) { + ChunkManager cm = addon.getChunkManager(); + long cost = cm.getChunkCost(); + Component tip = switch (cell.kind()) { + case CENTER -> text(REFERENCE + "tooltip.center"); + case OWNED -> text(REFERENCE + "tooltip.owned", "[x]", offset(cell.dx()), "[z]", offset(cell.dz())); + case CLAIMABLE -> { + long credit = cm.getCredit(island); + yield credit >= cost + ? text(REFERENCE + "tooltip.claimable", "[x]", offset(cell.dx()), "[z]", offset(cell.dz()), + "[cost]", String.valueOf(cost)) + : text(REFERENCE + "tooltip.no-credit", "[x]", offset(cell.dx()), "[z]", offset(cell.dz()), + "[cost]", String.valueOf(cost), "[needed]", String.valueOf(cost - credit)); + } + case LOCKED -> text(REFERENCE + "tooltip.locked", "[x]", offset(cell.dx()), "[z]", offset(cell.dz())); + }; + if (cell.here()) { + tip = tip.append(Component.newline()).append(text(REFERENCE + "tooltip.you-are-here")); + } + return tip; + } + + /** Chunk offsets read better signed: the center is 0,0 and everything else hangs off it */ + private static String offset(int value) { + return value > 0 ? "+" + value : String.valueOf(value); + } + + /** + * Translates a locale key straight to a component. Going through the user rather than + * parsing the translated string here keeps every message on BentoBox's own path, + * whether the locale file is written in MiniMessage or in old color codes. + */ + private Component text(String reference, String... variables) { + return user.getTranslationAsComponent(reference, variables); + } +} diff --git a/src/main/resources/locales/cs.yml b/src/main/resources/locales/cs.yml index 5f61bf5..983ac4e 100644 --- a/src/main/resources/locales/cs.yml +++ b/src/main/resources/locales/cs.yml @@ -3,111 +3,109 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Ochrana Kouzelného Bloku description: |- - &b Hodnost, která může rozbít - &b kouzelný blok, pokud - &b dokáže rozbíjet bloky. - hint: "&c Vaše hodnost nemůže rozbít kouzelný blok!" + Hodnost, která může rozbít + kouzelný blok, pokud + dokáže rozbíjet bloky. + hint: "Vaše hodnost nemůže rozbít kouzelný blok!" CHUNKBLOCK_START_SAFETY: name: Počáteční Bezpečnost description: |- - &b Zabrání novým hráčům - &b v pohybu po dobu 1 minuty, - &b aby nespadli. - hint: "&c Pohyb zablokován kvůli bezpečnosti na [number] sekund!" - free-to-move: "&a Můžete se volně pohybovat. Buďte opatrní!" + Zabrání novým hráčům + v pohybu po dobu 1 minuty, + aby nespadli. + hint: "Pohyb zablokován kvůli bezpečnosti na [number] sekund!" + free-to-move: "Můžete se volně pohybovat. Buďte opatrní!" CHUNKBLOCK_BOSSBAR: - name: Boss Bar - description: |- - &b Zobrazuje stavový panel - &b pro každou fázi. + name: Boss Bar + description: |- + Zobrazuje stavový panel + pro každou fázi. CHUNKBLOCK_ACTIONBAR: name: Action Bar description: |- - &b Zobrazuje stav - &b pro každou fázi - &b v Action Baru. + Zobrazuje stav + pro každou fázi + v Action Baru. chunkblock: bossbar: title: Bloky zbývající - status: '&a Fázové bloky & B [done] & d / & b [total]' + status: 'Fázové bloky & B [done] & d / & b [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar není pro tento ostrov aktivní' + not-active: 'Boss Bar není pro tento ostrov aktivní' actionbar: - status: "&a Fáze: &b [phase-name] &d | &a Bloky: &b [done] &d / &b [total] &d | &a Postup: &b [percent-done]" - not-active: "&c Action Bar není pro tento ostrov aktivní" + status: "Fáze: [phase-name] | Bloky: [done] / [total] | Postup: [percent-done]" + not-active: "Action Bar není pro tento ostrov aktivní" commands: admin: setcount: parameters: [lifetime] description: nastavit počet bloků hráče - set: '&a počet [name] je nastaven na [number]' - set-lifetime: '&a [name] je nastaveno na [number]' + set: 'počet [name] je nastaven na [number]' + set-lifetime: '[name] je nastaveno na [number]' setchest: parameters: description: dejte pohled na hrudník do fáze se specifikovanou vzácností - chest-is-empty: '&c Ten hrudník je prázdný, takže jej nelze přidat' - unknown-phase: '&c Neznámá fáze. Chcete-li si je prohlédnout, použijte tabulátor' - unknown-rarity: '&c Neznámá vzácnost. Používejte COMMON, UNCOMMON, RARE nebo EPIC' - look-at-chest: '&c Podívejte se na naplněnou hruď a nastavte ji' - only-single-chest: '&c Lze nastavit pouze jednotlivé bedny' - success: '&a Hrudník byl úspěšně přidán do fáze' - failure: '&c Hrudník nelze přidat do fáze! Chyby najdete na konzole' + chest-is-empty: 'Ten hrudník je prázdný, takže jej nelze přidat' + unknown-phase: 'Neznámá fáze. Chcete-li si je prohlédnout, použijte tabulátor' + unknown-rarity: 'Neznámá vzácnost. Používejte COMMON, UNCOMMON, RARE nebo EPIC' + look-at-chest: 'Podívejte se na naplněnou hruď a nastavte ji' + only-single-chest: 'Lze nastavit pouze jednotlivé bedny' + success: 'Hrudník byl úspěšně přidán do fáze' + failure: 'Hrudník nelze přidat do fáze! Chyby najdete na konzole' sanity: parameters: description: zobrazí v konzoli kontrolu pravděpodobnosti fází - see-console: '&a Podívejte se do konzoly pro zprávu' + see-console: 'Podívejte se do konzoly pro zprávu' count: description: zobrazit počet bloků a fázi - info: '&a Jste na bloku &b [number] ve fázi &a [name]' + info: 'Jste na bloku [number] ve fázi [name]' info: - count: >- - Ostrov &a je na bloku &b [number]&a ve fázi &b [name] &a. Počet doživotí - &b [lifetime] &a. + count: 'Ostrov je na bloku [number] ve fázi [name] . Počet doživotí [lifetime] .' phases: description: zobrazit seznam všech fází - title: '&2 Fáze OneBlock' - name-syntax: '&a [name]' - description-syntax: '&b [number] bloků' + title: 'Fáze OneBlock' + name-syntax: '[name]' + description-syntax: '[number] bloků' island: bossbar: description: přepíná fázový šéfový bar - status_on: '&b Bossbar se otočil &a zapnul' - status_off: '&b Bossbar se &c otočil' + status_on: 'Bossbar se otočil zapnul' + status_off: 'Bossbar se otočil' actionbar: description: přepíná action bar fáze - status_on: "&b Action Bar &a zapnut" - status_off: "&b Action Bar &c vypnut" + status_on: "Action Bar zapnut" + status_off: "Action Bar vypnut" setcount: parameters: description: nastavte počet bloků na dříve dokončenou hodnotu - set: '&a Počet nastaven na [number].' - too-high: '&c Maximálně můžeš nastavit [number]!' + set: 'Počet nastaven na [number].' + too-high: 'Maximálně můžeš nastavit [number]!' respawn-block: description: respawnuje magický blok v situacích, kdy zmizí - block-exist: '&a Blok existuje, nevyžadoval respawning. Označil jsem to za vás.' - block-respawned: '&a Blok byl znovu vytvořen.' + block-exist: 'Blok existuje, nevyžadoval respawning. Označil jsem to za vás.' + block-respawned: 'Blok byl znovu vytvořen.' phase: insufficient-level: Tvůj ostrov je na příliš nízké úrovni, musí být alespoň [number]. insufficient-funds: Nemáš dostatečné prostředky! Musíš mít alespoň [number]. insufficient-bank-balance: V Bance ostrova není dostatek financí! Je potřeba alespoň [number]. - insufficient-permission: '&c Nemůžete pokračovat, dokud nezískáte oprávnění [name]!' - cooldown: '&c Další fáze bude dostupná za [number] sekund!' + insufficient-permission: 'Nemůžete pokračovat, dokud nezískáte oprávnění [name]!' + cooldown: 'Další fáze bude dostupná za [number] sekund!' placeholders: infinite: Nekonečný my-island-phase-default: Neznámá gui: titles: - phases: '&0&l Jednoblokové fáze' + phases: 'Jednoblokové fáze' buttons: previous: - name: '&f&l Předchozí stránka' - description: '&7 Přepnout na stránku [number]' + name: 'Předchozí stránka' + description: 'Přepnout na stránku [number]' next: - name: '&f&l Další stránka' - description: '&7 Přepnout na stránku [number]' + name: 'Další stránka' + description: 'Přepnout na stránku [number]' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -115,20 +113,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Spustí se po rozbití bloků &e [number].' - biome: '&7 Biom: &e [biome]' - bank: '&7 Vyžaduje &e $[number] &7 na bankovním účtu.' - economy: '&7 Vyžaduje &e $[number] &7 v hráčském účtu.' - level: '&7 Vyžaduje &e [number] &7 úroveň ostrova.' - permission: '&7 Vyžaduje oprávnění `&e[permission]&7`.' - blocks-prefix: '&7 Bloků ve fázi -' - blocks: '&e [name], ' + starting-block: 'Spustí se po rozbití bloků [number].' + biome: 'Biom: [biome]' + bank: 'Vyžaduje $[number] na bankovním účtu.' + economy: 'Vyžaduje $[number] v hráčském účtu.' + level: 'Vyžaduje [number] úroveň ostrova.' + permission: 'Vyžaduje oprávnění `[permission]`.' + blocks-prefix: 'Bloků ve fázi -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Klepnutím na &7 zobrazíte předchozí stránku.' - click-to-next: '&e Klepnutím na &7 zobrazíte další stránku.' - click-to-change: '&e Klikněte na &7 pro změnu.' + click-to-previous: 'Klepnutím na zobrazíte předchozí stránku.' + click-to-next: 'Klepnutím na zobrazíte další stránku.' + click-to-change: 'Klikněte na pro změnu.' island: starting-hologram: |- - &a Vítejte v ChunkBlock - &e Prolomte tento blok + Vítejte v ChunkBlock + Prolomte tento blok diff --git a/src/main/resources/locales/de.yml b/src/main/resources/locales/de.yml index 073f740..61837db 100644 --- a/src/main/resources/locales/de.yml +++ b/src/main/resources/locales/de.yml @@ -3,127 +3,115 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Schutz des Magischen Blocks description: |- - &b Rang, der den magischen - &b Block zerstören kann, falls - &b Blöcke zerstört werden können. - hint: "&c Dein Rang kann den magischen Block nicht zerstören!" + Rang, der den magischen + Block zerstören kann, falls + Blöcke zerstört werden können. + hint: "Dein Rang kann den magischen Block nicht zerstören!" CHUNKBLOCK_START_SAFETY: name: Start-Sicherheit description: |- - &b Verhindert, dass neue Spieler - &b sich 1 Minute lang bewegen, - &b damit sie nicht herunterfallen. - hint: "&c Bewegung aus Sicherheitsgründen für [number] weitere Sekunden blockiert!" - free-to-move: "&a Du kannst dich frei bewegen. Sei vorsichtig!" + Verhindert, dass neue Spieler + sich 1 Minute lang bewegen, + damit sie nicht herunterfallen. + hint: "Bewegung aus Sicherheitsgründen für [number] weitere Sekunden blockiert!" + free-to-move: "Du kannst dich frei bewegen. Sei vorsichtig!" CHUNKBLOCK_BOSSBAR: - name: Boss-Balken - description: |- - &b Zeigt eine Statusleiste - &b für jede Phase. + name: Boss-Balken + description: |- + Zeigt eine Statusleiste + für jede Phase. CHUNKBLOCK_ACTIONBAR: name: Action-Leiste description: |- - &b Zeigt einen Status - &b für jede Phase - &b in der Action-Leiste. + Zeigt einen Status + für jede Phase + in der Action-Leiste. chunkblock: bossbar: title: Verbleibende Blöcke - status: '&a Phasenblöcke &b [done] &d / &b [total]' + status: 'Phasenblöcke [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar ist für diese Insel nicht aktiv' + not-active: 'Boss Bar ist für diese Insel nicht aktiv' actionbar: - status: "&a Phase: &b [phase-name] &d | &a Blöcke: &b [done] &d / &b [total] &d | &a Fortschritt: &b [percent-done]" - not-active: "&c Action Bar ist für diese Insel nicht aktiv" + status: "Phase: [phase-name] | Blöcke: [done] / [total] | Fortschritt: [percent-done]" + not-active: "Action Bar ist für diese Insel nicht aktiv" commands: admin: setcount: parameters: [lifetime] description: Setze die Blockanzahl des Spielers - set: '&a [name] zählt auf [number]' - set-lifetime: Die Lebenszeitanzahl von &a [name] wurde auf [number] gesetzt + set: '[name] zählt auf [number]' + set-lifetime: 'Die Lebenszeitanzahl von [name] wurde auf [number] gesetzt' setchest: parameters: description: >- Versetzen Sie die betrachtete Truhe in eine Phase mit der angegebenen Seltenheit - chest-is-empty: '&c Diese Truhe ist leer und kann daher nicht hinzugefügt werden' - unknown-phase: '&c Unbekannte Phase. Verwenden Sie tab-complete, um sie anzuzeigen' - unknown-rarity: >- - &c Unbekannte Seltenheit. Verwenden Sie COMMON, UNCOMMON, RARE oder - EPIC - look-at-chest: '&c Sieh dir eine gefüllte Truhe an, um sie einzustellen' - only-single-chest: '&c Es können nur einzelne Truhen eingestellt werden' - success: '&a Eine Truhe erfolgreich zur Phase hinzugefügt' - failure: >- - &c Truhe konnte nicht zur Phase hinzugefügt werden! Siehe Konsole für - Fehler + chest-is-empty: 'Diese Truhe ist leer und kann daher nicht hinzugefügt werden' + unknown-phase: 'Unbekannte Phase. Verwenden Sie tab-complete, um sie anzuzeigen' + unknown-rarity: 'Unbekannte Seltenheit. Verwenden Sie COMMON, UNCOMMON, RARE oder EPIC' + look-at-chest: 'Sieh dir eine gefüllte Truhe an, um sie einzustellen' + only-single-chest: 'Es können nur einzelne Truhen eingestellt werden' + success: 'Eine Truhe erfolgreich zur Phase hinzugefügt' + failure: 'Truhe konnte nicht zur Phase hinzugefügt werden! Siehe Konsole für Fehler' sanity: parameters: description: >- Zeigen Sie eine Überprüfung der Phasenwahrscheinlichkeiten in der Konsole an - see-console: '&a Den Bericht finden Sie in der Konsole' + see-console: 'Den Bericht finden Sie in der Konsole' count: description: Zeige die Blockanzahl und Phase - info: '&a Sie befinden sich in der Phase &a [name] in Block &b [number]' + info: 'Sie befinden sich in der Phase [name] in Block [number]' info: - count: >- - &a Island befindet sich in Block &b [number]&a in der Phase &b [Name] - &a. Lebenszeitanzahl &b [lifetime] &a. + count: 'Island befindet sich in Block [number] in der Phase [Name] . Lebenszeitanzahl [lifetime] .' phases: description: Zeigen Sie eine Liste aller Phasen an - title: '&2 OneBlock-Phasen' - name-syntax: '&a [name]' - description-syntax: '&b [number] Blöcke' + title: 'OneBlock-Phasen' + name-syntax: '[name]' + description-syntax: '[number] Blöcke' island: bossbar: description: Phase Boss Bar umschalten - status_on: '&b Bossbar &a eingeschaltet' - status_off: '&b Bossbar &c ausgeschaltet' + status_on: 'Bossbar eingeschaltet' + status_off: 'Bossbar ausgeschaltet' actionbar: description: "schaltet die Phasen-Aktionsleiste um" - status_on: "&b Action Bar &a eingeschaltet" - status_off: "&b Action Bar &c ausgeschaltet" + status_on: "Action Bar eingeschaltet" + status_off: "Action Bar ausgeschaltet" setcount: parameters: description: Setzen Sie die Blockanzahl auf den zuvor abgeschlossenen Wert - set: '&a Zähler auf [number] gesetzt.' - too-high: '&c Das Maximum, das Sie festlegen können, ist [number]!' + set: 'Zähler auf [number] gesetzt.' + too-high: 'Das Maximum, das Sie festlegen können, ist [number]!' respawn-block: description: >- lässt den magischen Block in Situationen wieder erscheinen, in denen er verschwindet - block-exist: >- - &ein Block existiert, musste nicht neu gestartet werden. Ich habe es für - dich markiert. - block-respawned: '&a Block wieder aufgetaucht.' + block-exist: 'in Block existiert, musste nicht neu gestartet werden. Ich habe es für dich markiert.' + block-respawned: 'Block wieder aufgetaucht.' phase: - insufficient-level: '&c Ihr Insellevel ist zu niedrig, um fortzufahren! Es muss [number] sein.' - insufficient-funds: '&c Ihr Guthaben ist zu gering, um fortzufahren! Sie müssen [number] sein.' - insufficient-bank-balance: >- - &c Der Saldo der Inselbank ist zu niedrig, um fortzufahren! Es muss - [number] sein. - insufficient-permission: >- - &c Sie können nicht weitermachen, bis Sie die [name]-Berechtigung - erhalten! - cooldown: '&c Die nächste Stufe ist in [number] Sekunden verfügbar!' + insufficient-level: 'Ihr Insellevel ist zu niedrig, um fortzufahren! Es muss [number] sein.' + insufficient-funds: 'Ihr Guthaben ist zu gering, um fortzufahren! Sie müssen [number] sein.' + insufficient-bank-balance: 'Der Saldo der Inselbank ist zu niedrig, um fortzufahren! Es muss [number] sein.' + insufficient-permission: 'Sie können nicht weitermachen, bis Sie die [name]-Berechtigung erhalten!' + cooldown: 'Die nächste Stufe ist in [number] Sekunden verfügbar!' placeholders: infinite: Unendlich my-island-phase-default: Unbekannt gui: titles: - phases: '&0&l OneBlock-Phasen' + phases: 'OneBlock-Phasen' buttons: previous: - name: '&f&l Vorherige Seite' - description: '&7 Zur Seite [number] wechseln' + name: 'Vorherige Seite' + description: 'Zur Seite [number] wechseln' next: - name: '&f&l Nächste Seite' - description: '&7 Zur Seite [number] wechseln' + name: 'Nächste Seite' + description: 'Zur Seite [number] wechseln' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -131,21 +119,21 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Startet nach dem Aufbrechen von &e [number] Blöcken.' - biome: '&7 Biom: &e [biome]' - bank: '&7 Erfordert &e $[number] &7 auf dem Bankkonto.' - economy: '&7 Erfordert &e $[number] &7 im Spielerkonto.' - level: '&7 Erfordert &e [number] &7 Inselebene.' - permission: '&7 Erfordert die Berechtigung „&e[permission]&7“.' - blocks-prefix: '&7 Blöcke in Phase -' - blocks: '&e [name], ' + starting-block: 'Startet nach dem Aufbrechen von [number] Blöcken.' + biome: 'Biom: [biome]' + bank: 'Erfordert $[number] auf dem Bankkonto.' + economy: 'Erfordert $[number] im Spielerkonto.' + level: 'Erfordert [number] Inselebene.' + permission: 'Erfordert die Berechtigung „[permission]“.' + blocks-prefix: 'Blöcke in Phase -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Klicken Sie auf &7, um die vorherige Seite anzuzeigen.' - click-to-next: '&e Klicken Sie auf &7, um die nächste Seite anzuzeigen.' - click-to-change: '&e Zum Ändern &7klicken.' + click-to-previous: 'Klicken Sie auf , um die vorherige Seite anzuzeigen.' + click-to-next: 'Klicken Sie auf , um die nächste Seite anzuzeigen.' + click-to-change: 'Zum Ändern klicken.' island: starting-hologram: |- - &aWillkommen bei ChunkBlock - &eBrechen Sie diesen Block, - &eum zu beginnen + Willkommen bei ChunkBlock + Brechen Sie diesen Block, + um zu beginnen diff --git a/src/main/resources/locales/en-US.yml b/src/main/resources/locales/en-US.yml index 21e4da2..f16f8c9 100755 --- a/src/main/resources/locales/en-US.yml +++ b/src/main/resources/locales/en-US.yml @@ -8,72 +8,83 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Magic Block Protection description: |- - &b Rank that can break the magic - &b block if they can break blocks. - hint: "&c Your rank cannot break the magic block!" + Rank that can break the magic + block if they can break blocks. + hint: "Your rank cannot break the magic block!" CHUNKBLOCK_CLAIM_CHUNKS: name: Claim Chunks description: |- - &b Rank that can spend the - &b island's level credit to - &b claim new chunks. - hint: "&c Your rank cannot claim chunks for this island!" + Rank that can spend the + island's level credit to + claim new chunks. + hint: "Your rank cannot claim chunks for this island!" CHUNKBLOCK_START_SAFETY: name: Starting Safety description: |- - &b Prevents new players - &b from moving for 1 minute - &b so they don't fall off. - hint: "&c Movement blocked for safety for [number] more seconds!" - free-to-move: "&a You are free to move. Be careful!" + Prevents new players + from moving for 1 minute + so they don't fall off. + hint: "Movement blocked for safety for [number] more seconds!" + free-to-move: "You are free to move. Be careful!" CHUNKBLOCK_BOSSBAR: - name: Boss Bar - description: |- - &b Shows a status bar - &b for each phase. + name: Boss Bar + description: |- + Shows a status bar + for each phase. CHUNKBLOCK_ACTIONBAR: name: Action Bar description: |- - &b Shows a status - &b for each phase - &b in the Action Bar. + Shows a status + for each phase + in the Action Bar. chunkblock: chunks: - entry-denied: "&c That chunk is locked." - locked: "&c You can't touch that — the chunk is locked." - claim-hint: "&e Hit the border to claim this chunk for &b [cost] &e level(s)! You have &b [credit] &e level(s) of credit." - claim-confirm: "&e Claim this chunk for &b [cost] &e level(s)? That leaves you &b [after] &e level(s) of credit. &6Sneak and hit the border again &e within &b [seconds]s &e to confirm." - no-credit: "&c You need &b [needed] &c more level(s) of credit to claim this chunk." - beyond-limit: "&c That chunk is beyond your island's protection area." - claimed: "&a &l Chunk claimed! &r&a Your island is now &b [number] &a chunks. Credit left: &b [credit] &a level(s)." - credit: "&a You can claim &b [count] &a more chunk(s)! Go to your border and hit it where you want to grow." - relocked: "&c Your island level dropped — [count] chunk(s) re-locked, newest first. Regain the levels to claim them back!" - ejected: "&c The chunk you were in re-locked, so you were moved to safety." - max-reached: "&d Your island has reached its maximum size of [number] chunks!" - ring-complete: "&6 &l Ring [ring] complete! &r&6 The whole ring around your island is yours — &b [chunks] &6 chunks in all." - ring-broadcast: "&6 [name]'s island has closed ring &b [ring] &6 — &b [chunks] &6 chunks and still growing!" - rings: "&a Rings completed: &b [rings] &a of &b [max]&a." - sethome-denied: "&c You can't set a home in a locked chunk." - info: "&a Chunks: &b [unlocked]&a/&b[max]&a. Credit: &b [credit] &a level(s) — a chunk costs &b [cost]&a." + entry-denied: "That chunk is locked." + locked: "You can't touch that — the chunk is locked." + claim-hint: "Hit the border to claim this chunk for [cost] level(s)! You have [credit] level(s) of credit." + claim-confirm: "Claim this chunk for [cost] level(s)? That leaves you [after] level(s) of credit. Sneak and hit the border again within [seconds]s to confirm." + no-credit: "You need [needed] more level(s) of credit to claim this chunk." + beyond-limit: "That chunk is beyond your island's protection area." + claimed: "Chunk claimed! Your island is now [number] chunks. Credit left: [credit] level(s)." + credit: "You can claim [count] more chunk(s)! Go to your border and hit it where you want to grow." + relocked: "Your island level dropped — [count] chunk(s) re-locked, newest first. Regain the levels to claim them back!" + ejected: "The chunk you were in re-locked, so you were moved to safety." + max-reached: "Your island has reached its maximum size of [number] chunks!" + ring-complete: "Ring [ring] complete! The whole ring around your island is yours — [chunks] chunks in all." + ring-broadcast: "[name]'s island has closed ring [ring] [chunks] chunks and still growing!" + rings: "Rings completed: [rings] of [max]." + sethome-denied: "You can't set a home in a locked chunk." + info: "Chunks: [unlocked]/[max]. Credit: [credit] level(s) — a chunk costs [cost]." map: - title: "&a Your island territory ([unlocked]/[max] chunks):" - row: "&a [row]" - legend: "&a ■ yours &e ▣ claimable ([cost] level(s) each) &7 □ locked &6 ◎ center &b ◆ you" - you-are-here: "&b You are on the marked chunk." + title: "Your island territory ([unlocked]/[max] chunks):" + row: "[row]" + legend: "■ yours ▣ claimable ([cost] level(s) each) □ locked ◎ center ◆ you" + you-are-here: "You are on the marked chunk." + # The map dialog: one button per chunk. Tooltips show when the mouse is over a chunk. + # These are MiniMessage, which is what new text should use — the old &-codes still work. + dialog: + close: "Close" + tooltip: + center: "The center chunk — your magic block is here." + owned: "Chunk [x], [z] — yours." + claimable: "Chunk [x], [z] — claimable for [cost] level(s). Go to that border and hit it." + no-credit: "Chunk [x], [z] — costs [cost] level(s). You need [needed] more level(s) of credit." + locked: "Chunk [x], [z] — locked. Claim your way out to it." + you-are-here: "You are standing here." bossbar: title: "Blocks remaining" # status: "&a Phase blocks &b [total]. Blocks left: [todo]" # status: "&a [phase-name] : [percent-done]" - status: "&a Phase blocks &b [done] &d / &b [total]" + status: "Phase blocks [done] / [total]" # RED, WHITE, PINK, BLUE, GREEN, YELLOW, or PURPLE color: RED # SOLID, SEGMENTED_6, SEGMENTED_10, SEGMENTED_12, SEGMENTED_20 style: SOLID - not-active: "&c Boss Bar is not active for this island" + not-active: "Boss Bar is not active for this island" actionbar: - status: "&a Phase: &b [phase-name] &d | &a Blocks: &b [done] &d / &b [total] &d | &a Progression: &b [percent-done]" - not-active: "&c Action Bar is not active for this island" + status: "Phase: [phase-name] | Blocks: [done] / [total] | Progression: [percent-done]" + not-active: "Action Bar is not active for this island" commands: chunks: description: "show your unlocked chunks and a map of your territory" @@ -81,116 +92,116 @@ chunkblock: chunks: parameters: " [reset]" description: "inspect a player's unlocked chunks or re-lock them back to the start" - info: "&a [name]: &b [number]&a/&b[max] &a chunks, &b [spent] &a level(s) spent, &b [credit] &a credit." - reset: "&a [name]'s chunks were re-locked back to just the center chunk." + info: "[name]: [number]/[max] chunks, [spent] level(s) spent, [credit] credit." + reset: "[name]'s chunks were re-locked back to just the center chunk." bypass: description: "toggle chunk lock enforcement for yourself" - "on": "&a You now bypass chunk locks. Border visuals are hidden for you." - "off": "&a Chunk locks apply to you again." + "on": "You now bypass chunk locks. Border visuals are hidden for you." + "off": "Chunk locks apply to you again." setcount: parameters: " [lifetime]" description: "set player's block count" - set: "&a [name]'s count set to [number]" - set-lifetime: "&a [name]'s lifetime count set to [number]" + set: "[name]'s count set to [number]" + set-lifetime: "[name]'s lifetime count set to [number]" setchest: parameters: " " description: "put the looked-at chest in a phase with the rarity specified" - chest-is-empty: "&c That chest is empty so cannot be added" - unknown-phase: "&c Unknown phase. Use tab-complete to see them" - unknown-rarity: "&c Unknown rarity. Use COMMON, UNCOMMON, RARE or EPIC" - look-at-chest: "&c Look at a filled chest to set it" - only-single-chest: "&c Only single chests can be set" - success: "&a Chest successfully added to phase" - failure: "&c Chest could not be added to the phase! See console for errors" + chest-is-empty: "That chest is empty so cannot be added" + unknown-phase: "Unknown phase. Use tab-complete to see them" + unknown-rarity: "Unknown rarity. Use COMMON, UNCOMMON, RARE or EPIC" + look-at-chest: "Look at a filled chest to set it" + only-single-chest: "Only single chests can be set" + success: "Chest successfully added to phase" + failure: "Chest could not be added to the phase! See console for errors" sanity: parameters: "" description: "display a sanity check of the phase probabilities in the console" - see-console: "&a See the console for the report" + see-console: "See the console for the report" phases: description: "open the phase order editor" - no-index: "&c No phase index is loaded, so phases cannot be reordered" - saved: "&a Phase order saved and applied" - save-failed: "&c Could not save the phase order! See console for errors" + no-index: "No phase index is loaded, so phases cannot be reordered" + saved: "Phase order saved and applied" + save-failed: "Could not save the phase order! See console for errors" gui: - title: "&2 Phase Order" - info-title: "&f How to use" + title: "Phase Order" + info-title: "How to use" instructions: |- - &7 Click a phase to pick it up, - &7 then click where it should go. - &7 Right-click toggles a phase - &7 on or off. - repeat: "&7 After the last phase the count jumps to &b [number]" - phase-name: "&a [name]" - start: "&7 Start: &b [number]" - length: "&7 Length: &b [number]" - disabled: "&c Disabled" - version-locked: "&c Needs Minecraft [version]+" - pick-up: "&e Click to move" - toggle: "&e Right-click to toggle" - set-length: "&e Shift-left-click to set length" - drop-here: "&e Click to drop here" - drop-at-end: "&a Drop at the end" - held: "&e Moving: [name]" - put-back: "&e Click to put back" - enter-length: "&e Enter a new length in chat for &a [name] &e - it is currently &b [number] &e blocks. Type &c cancel &e to keep it." - invalid-length: "&c The length must be a whole number above 0" - length-cancelled: "&c Length unchanged" + Click a phase to pick it up, + then click where it should go. + Right-click toggles a phase + on or off. + repeat: "After the last phase the count jumps to [number]" + phase-name: "[name]" + start: "Start: [number]" + length: "Length: [number]" + disabled: "Disabled" + version-locked: "Needs Minecraft [version]+" + pick-up: "Click to move" + toggle: "Right-click to toggle" + set-length: "Shift-left-click to set length" + drop-here: "Click to drop here" + drop-at-end: "Drop at the end" + held: "Moving: [name]" + put-back: "Click to put back" + enter-length: "Enter a new length in chat for [name] - it is currently [number] blocks. Type cancel to keep it." + invalid-length: "The length must be a whole number above 0" + length-cancelled: "Length unchanged" cancel-word: "cancel" count: description: show the block count and phase - info: "&a You are on block &b [number] in the &a [name] phase" + info: "You are on block [number] in the [name] phase" info: - count: "&a Island is on block &b [number] &a in the &b [name] &a phase. Lifetime count &b [lifetime] &a." + count: "Island is on block [number] in the [name] phase. Lifetime count [lifetime] ." phases: description: show a list of all the phases - title: "&2 ChunkBlock Phases" - name-syntax: "&a [name]" - description-syntax: "&b [number] blocks" + title: "ChunkBlock Phases" + name-syntax: "[name]" + description-syntax: "[number] blocks" island: bossbar: description: "toggles phase boss bar" - status_on: "&b Bossbar turned &a on" - status_off: "&b Bossbar turned &c off" + status_on: "Bossbar turned on" + status_off: "Bossbar turned off" actionbar: description: "toggles phase action bar" - status_on: "&b Action Bar turned &a on" - status_off: "&b Action Bar turned &c off" + status_on: "Action Bar turned on" + status_off: "Action Bar turned off" setcount: parameters: "" description: "set block count to previously completed value" - set: "&a Count set to [number]." - too-high: "&c The maximum you can set is [number]!" + set: "Count set to [number]." + too-high: "The maximum you can set is [number]!" respawn-block: description: "respawns magic block in situations when it disappears" - block-exist: "&a Block exists, did not require respawning. I marked it for you." - block-respawned: "&a Block respawned." + block-exist: "Block exists, did not require respawning. I marked it for you." + block-respawned: "Block respawned." phase: - insufficient-level: "&c Your island level is too low to proceed! It must be [number]." - insufficient-funds: "&c Your funds are too low to proceed! They must be [number]." - insufficient-bank-balance: "&c The island bank balance is too low to proceed! It must be [number]." - insufficient-permission: "&c You can proceed no further until you obtain the [name] permission!" - cooldown: "&c Next phase will be available in [number] seconds!" + insufficient-level: "Your island level is too low to proceed! It must be [number]." + insufficient-funds: "Your funds are too low to proceed! They must be [number]." + insufficient-bank-balance: "The island bank balance is too low to proceed! It must be [number]." + insufficient-permission: "You can proceed no further until you obtain the [name] permission!" + cooldown: "Next phase will be available in [number] seconds!" placeholders: infinite: Infinite my-island-phase-default: Unknown gui: titles: - phases: '&0&l ChunkBlock Phases' + phases: 'ChunkBlock Phases' # This section contains all button names and lore (description) buttons: # List of buttons in GUI's # Button that is used in multipage GUIs which allows to return to previous page. previous: - name: "&f&l Previous Page" + name: "Previous Page" description: |- - &7 Switch to [number] page + Switch to [number] page # Button that is used in multipage GUIs which allows to go to next page. next: - name: "&f&l Next Page" + name: "Next Page" description: |- - &7 Switch to [number] page + Switch to [number] page phase: - name: "&f&l [phase]" + name: "[phase]" description: |- [starting-block] [biome] @@ -200,24 +211,24 @@ chunkblock: [permission] [blocks] # Replaces text with [starting-block] - starting-block: "&7 Starts after breaking &e [number] blocks." + starting-block: "Starts after breaking [number] blocks." # Replaces text with [biome] - biome: "&7 Biome: &e [biome]" + biome: "Biome: [biome]" # Replaces text with [bank] - bank: "&7 Requires &e $[number] &7 in bank account." + bank: "Requires $[number] in bank account." # Replaces text with [economy] - economy: "&7 Requires &e $[number] &7 in player account." + economy: "Requires $[number] in player account." # Replaces text with [level] - level: "&7 Requires &e [number] &7 island level." + level: "Requires [number] island level." # Replaces text with [permission] - permission: "&7 Requires `&e[permission]&7` permission." + permission: "Requires `[permission]` permission." # Replaces text with [blocks] - blocks-prefix: '&7 Blocks in phase - ' - blocks: '&e [name], ' + blocks-prefix: 'Blocks in phase - ' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: "&e Click &7 to view previous page." - click-to-next: "&e Click &7 to view next page." - click-to-change: "&e Click &7 to change." + click-to-previous: "Click to view previous page." + click-to-next: "Click to view next page." + click-to-change: "Click to change." island: - starting-hologram: "&aWelcome to ChunkBlock\n&eBreak This Block to Begin" + starting-hologram: "Welcome to ChunkBlock\nBreak This Block to Begin" diff --git a/src/main/resources/locales/es.yml b/src/main/resources/locales/es.yml index eda91e8..10ed09a 100644 --- a/src/main/resources/locales/es.yml +++ b/src/main/resources/locales/es.yml @@ -3,121 +3,113 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Protección de Bloque Mágico description: |- - &b Rango que puede romper el - &b bloque mágico si puede - &b romper bloques. - hint: "&c ¡Tu rango no puede romper el bloque mágico!" + Rango que puede romper el + bloque mágico si puede + romper bloques. + hint: "¡Tu rango no puede romper el bloque mágico!" CHUNKBLOCK_START_SAFETY: name: Seguridad Inicial description: |- - &b Evita que los nuevos jugadores - &b se muevan durante 1 minuto - &b para que no se caigan. - hint: "&c Movimiento bloqueado por seguridad durante [number] segundos más!" - free-to-move: "&a Eres libre de moverte. ¡Ten cuidado!" + Evita que los nuevos jugadores + se muevan durante 1 minuto + para que no se caigan. + hint: "Movimiento bloqueado por seguridad durante [number] segundos más!" + free-to-move: "Eres libre de moverte. ¡Ten cuidado!" CHUNKBLOCK_BOSSBAR: - name: Barra de Jefe (Boss Bar) - description: |- - &b Muestra una barra de estado - &b para cada fase. + name: Barra de Jefe (Boss Bar) + description: |- + Muestra una barra de estado + para cada fase. CHUNKBLOCK_ACTIONBAR: name: Barra de Acción (Action Bar) description: |- - &b Muestra un estado - &b para cada fase - &b en la Barra de Acción. + Muestra un estado + para cada fase + en la Barra de Acción. chunkblock: bossbar: title: Bloques restantes - status: '&a Bloques de fase &b [done] &d / &b [total]' + status: 'Bloques de fase [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar no está activo para esta isla' + not-active: 'Boss Bar no está activo para esta isla' actionbar: - status: "&a Fase: &b [phase-name] &d | &a Bloques: &b [done] &d / &b [total] &d | &a Progreso: &b [percent-done]" - not-active: "&c La barra de acción no está activa para esta isla" + status: "Fase: [phase-name] | Bloques: [done] / [total] | Progreso: [percent-done]" + not-active: "La barra de acción no está activa para esta isla" commands: admin: setcount: parameters: [lifetime] description: Establece el número de bloques minados al jugador - set: '&aEl número de bloques minados de [name] se ha establecido en [number]' - set-lifetime: '&aEl numero de bloques totales de [name] se ha establecido en [number]' + set: 'El número de bloques minados de [name] se ha establecido en [number]' + set-lifetime: 'El numero de bloques totales de [name] se ha establecido en [number]' setchest: parameters: description: >- Coloca el cofre que estas mirando en una fase con la rareza especificada - chest-is-empty: '&cEse cofre está vacío, así que no se puede agregar' - unknown-phase: '&cFase desconocida. Presione TAB para verlas' - unknown-rarity: '&cRareza desconocida. Use COMMON, UNCOMMON, RARE o EPIC' - look-at-chest: '&cApunta hacia un cofre lleno para configurarlo' - only-single-chest: '&cSolo se pueden configurar cofres individuales' - success: '&aEl cofre ha sido agregado con éxito a la fase' - failure: >- - &c¡No se pudo agregar el cofre a la fase! Revisa la consola para más - detalles + chest-is-empty: 'Ese cofre está vacío, así que no se puede agregar' + unknown-phase: 'Fase desconocida. Presione TAB para verlas' + unknown-rarity: 'Rareza desconocida. Use COMMON, UNCOMMON, RARE o EPIC' + look-at-chest: 'Apunta hacia un cofre lleno para configurarlo' + only-single-chest: 'Solo se pueden configurar cofres individuales' + success: 'El cofre ha sido agregado con éxito a la fase' + failure: '¡No se pudo agregar el cofre a la fase! Revisa la consola para más detalles' sanity: parameters: description: >- Muestra una comprobación de las probabilidades de la fase en la consola - see-console: '&aRevisa la consola para ver el informe' + see-console: 'Revisa la consola para ver el informe' count: description: Muestra el número de bloques minados y la fase correspondiente - info: '&aTienes &b[number] bloques minados en la fase &a[name]' + info: 'Tienes [number] bloques minados en la fase [name]' info: - count: >- - &a Island está en el bloque &b [number]&a en la fase &b [name] &a. - Recuento de vida &b [lifetime] &a. + count: 'Island está en el bloque [number] en la fase [name] . Recuento de vida [lifetime] .' phases: description: Muestra una lista de todas las fases - title: '&2Fases de OneBlock' - name-syntax: '&a[name]' - description-syntax: '&b[number] bloques' + title: 'Fases de OneBlock' + name-syntax: '[name]' + description-syntax: '[number] bloques' island: bossbar: description: Barra de jefe de fase de alojamiento - status_on: '&b Bossbar &a encendió' - status_off: '&b Bossbar &a apagó' + status_on: 'Bossbar encendió' + status_off: 'Bossbar apagó' actionbar: description: alterna la barra de acción de fase - status_on: "&b Barra de acción &a activada" - status_off: "&b Barra de acción &c desactivada" + status_on: "Barra de acción activada" + status_off: "Barra de acción desactivada" setcount: parameters: description: Establece la cantidad de bloques a un valor previamente completado - set: '&aCantidad establecida en [number].' - too-high: '&c¡Lo máximo que puedes establecer es [number]!' + set: 'Cantidad establecida en [number].' + too-high: '¡Lo máximo que puedes establecer es [number]!' respawn-block: description: reaparece el bloque mágico en situaciones en las que desaparece - block-exist: '&a Block existe, no requirió reaparición. Te lo marqué.' + block-exist: 'Block existe, no requirió reaparición. Te lo marqué.' block-respawned: '& un bloque reapareció.' phase: - insufficient-level: >- - &c¡Tu nivel de isla es demasiado bajo para seguir! Este debe ser de - [number]. - insufficient-funds: '&c¡Tus fondos son insuficientes! Debes tener [number].' - insufficient-bank-balance: >- - &c¡El dinero del banco en la isla es demasiado bajo para seguir! Debes - tener [number]. - insufficient-permission: '&c ¡No puede continuar hasta que obtenga el permiso de [name]!' - cooldown: '&c ¡La siguiente etapa estará disponible en [number] segundos!' + insufficient-level: '¡Tu nivel de isla es demasiado bajo para seguir! Este debe ser de [number].' + insufficient-funds: '¡Tus fondos son insuficientes! Debes tener [number].' + insufficient-bank-balance: '¡El dinero del banco en la isla es demasiado bajo para seguir! Debes tener [number].' + insufficient-permission: '¡No puede continuar hasta que obtenga el permiso de [name]!' + cooldown: '¡La siguiente etapa estará disponible en [number] segundos!' placeholders: infinite: Infinito my-island-phase-default: Desconocida gui: titles: - phases: '&0&l Fases de OneBlock' + phases: 'Fases de OneBlock' buttons: previous: - name: '&f&l Pagina Anterior' - description: '&7 Ir a la pagina [number]' + name: 'Pagina Anterior' + description: 'Ir a la pagina [number]' next: - name: '&f&l Siguiente pagina' - description: '&7 Ir a la pagina [number]' + name: 'Siguiente pagina' + description: 'Ir a la pagina [number]' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -125,20 +117,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Comienza tras romper &e [number] bloques.' - biome: '&7 Bioma: &e [biome]' - bank: '&7 Requiere &e $[number] &7 en la cuenta del banco.' - economy: '&7 Requiere &e $[number] &7 en la cuenta del jugador.' - level: '&7 Requiere &e [number] &7 nivel de isla.' - permission: '&7 Requiere permiso `&e[permission]&7`.' - blocks-prefix: '&7 Bloques en fase -' - blocks: '&e [name], ' + starting-block: 'Comienza tras romper [number] bloques.' + biome: 'Bioma: [biome]' + bank: 'Requiere $[number] en la cuenta del banco.' + economy: 'Requiere $[number] en la cuenta del jugador.' + level: 'Requiere [number] nivel de isla.' + permission: 'Requiere permiso `[permission]`.' + blocks-prefix: 'Bloques en fase -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Click &7 para ver pagina anterior.' - click-to-next: '&e Click &7 para ver pagina siguiente.' - click-to-change: '&e Click &7 para cambiar.' + click-to-previous: 'Click para ver pagina anterior.' + click-to-next: 'Click para ver pagina siguiente.' + click-to-change: 'Click para cambiar.' island: starting-hologram: |- - &aBienvenido a ChunkBlock - &eRompe este bloque para empezar + Bienvenido a ChunkBlock + Rompe este bloque para empezar diff --git a/src/main/resources/locales/fr.yml b/src/main/resources/locales/fr.yml index 8e33ba3..eae92d1 100644 --- a/src/main/resources/locales/fr.yml +++ b/src/main/resources/locales/fr.yml @@ -3,90 +3,86 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Protection du Bloc Magique description: |- - &b Rang qui peut casser le bloc - &b magique s'il peut casser - &b des blocs. - hint: "&c Votre rang ne peut pas casser le bloc magique!" + Rang qui peut casser le bloc + magique s'il peut casser + des blocs. + hint: "Votre rang ne peut pas casser le bloc magique!" CHUNKBLOCK_START_SAFETY: name: Sécurité de Départ description: |- - &b Empêche les nouveaux joueurs - &b de bouger pendant 1 minute - &b pour qu'ils ne tombent pas. - hint: "&c Mouvement bloqué par sécurité pendant [number] secondes supplémentaires!" - free-to-move: "&a Vous êtes libre de bouger. Faites attention!" + Empêche les nouveaux joueurs + de bouger pendant 1 minute + pour qu'ils ne tombent pas. + hint: "Mouvement bloqué par sécurité pendant [number] secondes supplémentaires!" + free-to-move: "Vous êtes libre de bouger. Faites attention!" CHUNKBLOCK_BOSSBAR: - name: Barre de Boss - description: |- - &b Affiche une barre de statut - &b pour chaque phase. + name: Barre de Boss + description: |- + Affiche une barre de statut + pour chaque phase. CHUNKBLOCK_ACTIONBAR: name: Barre d'Action description: |- - &b Affiche un statut - &b pour chaque phase - &b dans la Barre d'Action. + Affiche un statut + pour chaque phase + dans la Barre d'Action. chunkblock: bossbar: title: Blocs restants - status: '&a Blocs de phase &b [done] &d / &b [total]' + status: 'Blocs de phase [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar n''est pas actif pour cette île' + not-active: 'Boss Bar n''est pas actif pour cette île' actionbar: - status: "&a Phase : &b [phase-name] &d | &a Blocs : &b [done] &d / &b [total] &d | &a Progression : &b [percent-done]" - not-active: "&c La barre d'action n'est pas active pour cette île" + status: "Phase : [phase-name] | Blocs : [done] / [total] | Progression : [percent-done]" + not-active: "La barre d'action n'est pas active pour cette île" commands: admin: setcount: parameters: [DuréeDeVie] description: Définir le nombre de blocks du joueur - set: '&a Le compte de [name] est défini sur [number].' - set-lifetime: '&a La durée de vie de [name] est de [number]' + set: 'Le compte de [name] est défini sur [number].' + set-lifetime: 'La durée de vie de [name] est de [number]' setchest: parameters: description: mettre le coffre regardé dans une phase avec la rareté spécifiée - chest-is-empty: '&c Ce coffre est vide donc il ne peut pas être ajouté' - unknown-phase: '&c Phase inconnue. Utilisez tab-complete pour les voir' - unknown-rarity: '&c Rareté inconnue. Utilisez COMMON, UNCOMMON, RARE ou EPIC' - look-at-chest: '&c Regardez un coffre rempli pour le placer' - only-single-chest: '&c Seuls les coffres simples peuvent être définis' - success: '&a Le coffre a été ajouté avec succès à la phase' - failure: >- - &c Le coffre n'a pas pu être ajouté à la phase! Voir la console pour - les erreurs + chest-is-empty: 'Ce coffre est vide donc il ne peut pas être ajouté' + unknown-phase: 'Phase inconnue. Utilisez tab-complete pour les voir' + unknown-rarity: 'Rareté inconnue. Utilisez COMMON, UNCOMMON, RARE ou EPIC' + look-at-chest: 'Regardez un coffre rempli pour le placer' + only-single-chest: 'Seuls les coffres simples peuvent être définis' + success: 'Le coffre a été ajouté avec succès à la phase' + failure: 'Le coffre n''a pas pu être ajouté à la phase! Voir la console pour les erreurs' sanity: parameters: description: >- afficher un contrôle d'intégrité des probabilités de phase dans la console - see-console: '&a Voir la console pour le rapport' + see-console: 'Voir la console pour le rapport' count: description: afficher le nombre de blocs et la phase - info: '&a Vous êtes sur le bloc &b [number] dans la phase &a [name]' + info: 'Vous êtes sur le bloc [number] dans la phase [name]' info: - count: >- - &a L'île est sur le bloc &b [number]&a dans la phase &b [name] &a. - Nombre de durée de vie &b [lifetime] &a. + count: 'L''île est sur le bloc [number] dans la phase [name] . Nombre de durée de vie [lifetime] .' phases: description: afficher une liste de toutes les phases - title: '&2 Phases OneBlock' - name-syntax: '&a [name]' - description-syntax: '&b [number] blocs' + title: 'Phases OneBlock' + name-syntax: '[name]' + description-syntax: '[number] blocs' island: bossbar: description: bascule la barre de boss de phase - status_on: '&b Bossbar a &a activé' - status_off: '&b Bossbar &a désactivé' + status_on: 'Bossbar a activé' + status_off: 'Bossbar désactivé' actionbar: description: "active/désactive la barre d'action de phase" - status_on: "&b Barre d'action &a activée" - status_off: "&b Barre d'action &c désactivée" + status_on: "Barre d'action activée" + status_off: "Barre d'action désactivée" setcount: parameters: description: définir le nombre de blocs à la valeur précédemment terminée - set: '&a Nombre défini sur [number].' - too-high: "&c Le maximum que vous pouvez définir est [number]\_!" + set: 'Nombre défini sur [number].' + too-high: "Le maximum que vous pouvez définir est [number] !" respawn-block: description: réapparaît le bloc magique dans les situations où il disparaît block-exist: >- @@ -99,21 +95,21 @@ chunkblock: insufficient-bank-balance: >- Ta banque d'île n'a pas les fonds nécessaire ! Vous devez au moins avoir [number]. - insufficient-permission: "&c Vous ne pouvez pas continuer jusqu'à ce que vous obteniez l'autorisation de [name]\_!" - cooldown: '&c La prochaine étape sera disponible dans [number] secondes!' + insufficient-permission: "Vous ne pouvez pas continuer jusqu'à ce que vous obteniez l'autorisation de [name] !" + cooldown: 'La prochaine étape sera disponible dans [number] secondes!' placeholders: infinite: Infini my-island-phase-default: Inconnue gui: titles: - phases: '&0&l Phases OneBlock' + phases: 'Phases OneBlock' buttons: previous: - name: '&f&l Page Précédente' - description: '&7 Aller à la page [number]' + name: 'Page Précédente' + description: 'Aller à la page [number]' next: - name: '&f&l Page Suivante' - description: '&7 Aller à la page [number]' + name: 'Page Suivante' + description: 'Aller à la page [number]' phase: name: '& l [phase]' description: |- @@ -123,20 +119,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Commence après avoir détruit &e [number] blocs.' - biome: "&7 Biome\_: &e [biome]" - bank: '&7 Requiert &e $[number] &7 dans ta banque.' - economy: '&7 Requiert &e $[number] &7 dans ton solde.' - level: '&7 Requiert &e [number] &7 niveaux d''île.' - permission: '&7 Requiert la permission : `&e[permission]&7` .' - blocks-prefix: '&7 Blocs en phase -' - blocks: '&e [name],' + starting-block: 'Commence après avoir détruit [number] blocs.' + biome: "Biome : [biome]" + bank: 'Requiert $[number] dans ta banque.' + economy: 'Requiert $[number] dans ton solde.' + level: 'Requiert [number] niveaux d''île.' + permission: 'Requiert la permission : `[permission]` .' + blocks-prefix: 'Blocs en phase -' + blocks: '[name],' wrap-at: '50' tips: - click-to-previous: '&e Click &7 pour voir la page précédente.' - click-to-next: '&e Click &7 pour voir la page suivante.' - click-to-change: '&e Click &7 pour changer.' + click-to-previous: 'Click pour voir la page précédente.' + click-to-next: 'Click pour voir la page suivante.' + click-to-change: 'Click pour changer.' island: starting-hologram: |- - &aBienvenue sur ChunkBlock - &eMine ce bloc pour commencer + Bienvenue sur ChunkBlock + Mine ce bloc pour commencer diff --git a/src/main/resources/locales/hr.yml b/src/main/resources/locales/hr.yml index c31c5a1..661773e 100644 --- a/src/main/resources/locales/hr.yml +++ b/src/main/resources/locales/hr.yml @@ -3,115 +3,109 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Zaštita Magičnog Bloka description: |- - &b Rang koji može razbiti - &b magični blok, ako - &b može razbiti blokove. - hint: "&c Vaš rang ne može razbiti magični blok!" + Rang koji može razbiti + magični blok, ako + može razbiti blokove. + hint: "Vaš rang ne može razbiti magični blok!" CHUNKBLOCK_START_SAFETY: name: Početna Sigurnost description: |- - &b Sprječava nove igrače - &b da se kreću 1 minutu - &b da ne padnu. - hint: "&c Kretanje je blokirano iz sigurnosnih razloga još [number] sekundi!" - free-to-move: "&a Slobodni ste za kretanje. Budite oprezni!" + Sprječava nove igrače + da se kreću 1 minutu + da ne padnu. + hint: "Kretanje je blokirano iz sigurnosnih razloga još [number] sekundi!" + free-to-move: "Slobodni ste za kretanje. Budite oprezni!" CHUNKBLOCK_BOSSBAR: - name: Boss Traka - description: |- - &b Prikazuje statusnu traku - &b za svaku fazu. + name: Boss Traka + description: |- + Prikazuje statusnu traku + za svaku fazu. CHUNKBLOCK_ACTIONBAR: name: Traka Akcije description: |- - &b Prikazuje status - &b za svaku fazu - &b u Traci Akcije. + Prikazuje status + za svaku fazu + u Traci Akcije. chunkblock: bossbar: title: Preostali blokovi - status: '&a Fazni blokovi &b [done] &d / &b [total]' + status: 'Fazni blokovi [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss bar nije aktivan za ovaj otok' + not-active: 'Boss bar nije aktivan za ovaj otok' actionbar: - status: "&a Faza: &b [phase-name] &d | &a Blokovi: &b [done] &d / &b [total] &d | &a Napredak: &b [percent-done]" - not-active: "&c Akcijska traka nije aktivna za ovaj otok" + status: "Faza: [phase-name] | Blokovi: [done] / [total] | Napredak: [percent-done]" + not-active: "Akcijska traka nije aktivna za ovaj otok" commands: admin: setcount: parameters: description: postavljanje broja blokova igrača - set: '&a broj [name] postavljen je na [number]' - set-lifetime: '&broj životnog vijeka [name] postavljen na [number]' + set: 'broj [name] postavljen je na [number]' + set-lifetime: 'roj životnog vijeka [name] postavljen na [number]' setchest: parameters: description: stavite pregledani sanduk u fazu s specificiranom rijetkošću - chest-is-empty: '&c Taj je škrinja prazna pa se ne može dodati' - unknown-phase: '&c Nepoznata faza. Da biste ih vidjeli, upotrijebite karticu' - unknown-rarity: '&c Nepoznata rijetkost. Koristite COMMON, UNCOMMON, RARE ili EPIC' - look-at-chest: '&c Pogledajte napunjen škrinju da ga postavite' - only-single-chest: '&c Mogu se postaviti samo pojedinačne škrinje' - success: '&a Komoda uspješno dodana u fazu' - failure: >- - &c Grudište se nije moglo dodati u fazu! Pogledajte konzolu za - pogreške + chest-is-empty: 'Taj je škrinja prazna pa se ne može dodati' + unknown-phase: 'Nepoznata faza. Da biste ih vidjeli, upotrijebite karticu' + unknown-rarity: 'Nepoznata rijetkost. Koristite COMMON, UNCOMMON, RARE ili EPIC' + look-at-chest: 'Pogledajte napunjen škrinju da ga postavite' + only-single-chest: 'Mogu se postaviti samo pojedinačne škrinje' + success: 'Komoda uspješno dodana u fazu' + failure: 'Grudište se nije moglo dodati u fazu! Pogledajte konzolu za pogreške' sanity: parameters: description: prikazati provjeru ispravnosti faznih vjerojatnosti u konzoli - see-console: '&a Pogledajte konzolu za izvješće' + see-console: 'Pogledajte konzolu za izvješće' count: description: prikazuju broj i fazu bloka - info: '&a Nalazite se na bloku &b [number] u fazi &a [name]' + info: 'Nalazite se na bloku [number] u fazi [name]' info: - count: >- - &a Otok je u bloku &b [number]&a u &b [name] &a fazi. Životni vijek &b - [lifetime] &a. + count: 'Otok je u bloku [number] u [name] fazi. Životni vijek [lifetime] .' phases: description: prikažite popis svih faza - title: '&2 OneBlock Faze' - name-syntax: '&a [name]' - description-syntax: '&b [number] blokova' + title: 'OneBlock Faze' + name-syntax: '[name]' + description-syntax: '[number] blokova' island: bossbar: description: prebacuje fazni boss bar - status_on: '&b Bossbar se &a uključio' - status_off: '&b Bossbar se &a isključio' + status_on: 'Bossbar se uključio' + status_off: 'Bossbar se isključio' actionbar: description: uključuje/isključuje akcijsku traku faze - status_on: "&b Akcijska traka &a uključena" - status_off: "&b Akcijska traka &c isključena" + status_on: "Akcijska traka uključena" + status_off: "Akcijska traka isključena" setcount: parameters: description: postaviti broj blokova na prethodno dovršenu vrijednost - set: '&a Brojanje postavljeno na [number].' - too-high: '&c Maksimalno što možete postaviti je [number]!' + set: 'Brojanje postavljeno na [number].' + too-high: 'Maksimalno što možete postaviti je [number]!' respawn-block: description: ponovno rađa magični blok u situacijama kada nestane - block-exist: >- - &a blok postoji, nije zahtijevao ponovno stvaranje. Označila sam za - tebe. - block-respawned: '&a blok se ponovno pojavio.' + block-exist: 'blok postoji, nije zahtijevao ponovno stvaranje. Označila sam za tebe.' + block-respawned: 'blok se ponovno pojavio.' phase: - insufficient-level: '&c Vaša razina otoka je preniska za nastavak! Mora biti [number].' - insufficient-funds: '&c Vaša su sredstva premala za nastavak! Moraju biti [number].' - insufficient-bank-balance: '&c Stanje otočne banke je premalo za nastavak! Mora biti [number].' - insufficient-permission: '&c Ne možete nastaviti dok ne dobijete dopuštenje [name]!' - cooldown: '&c Sljedeća faza bit će dostupna za [number] sekundi!' + insufficient-level: 'Vaša razina otoka je preniska za nastavak! Mora biti [number].' + insufficient-funds: 'Vaša su sredstva premala za nastavak! Moraju biti [number].' + insufficient-bank-balance: 'Stanje otočne banke je premalo za nastavak! Mora biti [number].' + insufficient-permission: 'Ne možete nastaviti dok ne dobijete dopuštenje [name]!' + cooldown: 'Sljedeća faza bit će dostupna za [number] sekundi!' placeholders: infinite: Beskonačno my-island-phase-default: Nepoznato gui: titles: - phases: '&0&l OneBlock faze' + phases: 'OneBlock faze' buttons: previous: - name: '&f&l Prethodna stranica' - description: '&7 Prijeđi na stranicu [number].' + name: 'Prethodna stranica' + description: 'Prijeđi na stranicu [number].' next: - name: '&f&l Sljedeća stranica' - description: '&7 Prijeđi na stranicu [number].' + name: 'Sljedeća stranica' + description: 'Prijeđi na stranicu [number].' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -119,20 +113,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Počinje nakon razbijanja &e [number] blokova.' - biome: '&7 Biome: &e [biome]' - bank: '&7 Zahtijeva &e $[number] &7 na bankovnom računu.' - economy: '&7 Zahtijeva &e $[number] &7 na računu igrača.' - level: '&7 Zahtijeva &e [number] &7 razinu otoka.' - permission: '&7 Zahtijeva dozvolu `&e[permission]&7`.' - blocks-prefix: '&7 Blokovi u fazi -' - blocks: '&e [name], ' + starting-block: 'Počinje nakon razbijanja [number] blokova.' + biome: 'Biome: [biome]' + bank: 'Zahtijeva $[number] na bankovnom računu.' + economy: 'Zahtijeva $[number] na računu igrača.' + level: 'Zahtijeva [number] razinu otoka.' + permission: 'Zahtijeva dozvolu `[permission]`.' + blocks-prefix: 'Blokovi u fazi -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Kliknite &7 za pregled prethodne stranice.' - click-to-next: '&e Kliknite &7 za pregled sljedeće stranice.' - click-to-change: '&e Kliknite &7 za promjenu.' + click-to-previous: 'Kliknite za pregled prethodne stranice.' + click-to-next: 'Kliknite za pregled sljedeće stranice.' + click-to-change: 'Kliknite za promjenu.' island: starting-hologram: |- - &aDobro došli u ChunkBlock - &eRazbijte ovaj blok za početak + Dobro došli u ChunkBlock + Razbijte ovaj blok za početak diff --git a/src/main/resources/locales/hu.yml b/src/main/resources/locales/hu.yml index 590c841..76919bf 100644 --- a/src/main/resources/locales/hu.yml +++ b/src/main/resources/locales/hu.yml @@ -3,118 +3,112 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Mágikus Blokk Védelem description: |- - &b Rang, amely képes - &b szétrombolni a mágikus - &b blokkot, ha tud blokkokat - &b rombolni. - hint: "&c A rangod nem törheti szét a mágikus blokkot!" + Rang, amely képes + szétrombolni a mágikus + blokkot, ha tud blokkokat + rombolni. + hint: "A rangod nem törheti szét a mágikus blokkot!" CHUNKBLOCK_START_SAFETY: name: Kezdő Biztonság description: |- - &b Megakadályozza az új játékosokat - &b a mozgásban 1 percig, - &b hogy ne essenek le. - hint: "&c Mozgás blokkolva biztonsági okokból még [number] másodpercig!" - free-to-move: "&a Szabadon mozoghatsz. Légy óvatos!" + Megakadályozza az új játékosokat + a mozgásban 1 percig, + hogy ne essenek le. + hint: "Mozgás blokkolva biztonsági okokból még [number] másodpercig!" + free-to-move: "Szabadon mozoghatsz. Légy óvatos!" CHUNKBLOCK_BOSSBAR: - name: Boss Bar - description: |- - &b Állapotjelző sávot - &b mutat minden fázishoz. + name: Boss Bar + description: |- + Állapotjelző sávot + mutat minden fázishoz. CHUNKBLOCK_ACTIONBAR: name: Műveleti Sáv (Action Bar) description: |- - &b Állapotot mutat - &b minden fázishoz - &b a Műveleti Sávban. + Állapotot mutat + minden fázishoz + a Műveleti Sávban. chunkblock: bossbar: title: Blokkok maradtak - status: '&a Fázisblokkok &b [done] &d / &b [total]' + status: 'Fázisblokkok [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c A Boss Bar nem aktív ezen a szigeten' + not-active: 'A Boss Bar nem aktív ezen a szigeten' actionbar: - status: "&a Fázis: &b [phase-name] &d | &a Blokkok: &b [done] &d / &b [total] &d | &a Haladás: &b [percent-done]" - not-active: "&c Az akciósáv nem aktív ezen a szigeten" + status: "Fázis: [phase-name] | Blokkok: [done] / [total] | Haladás: [percent-done]" + not-active: "Az akciósáv nem aktív ezen a szigeten" commands: admin: setcount: parameters: description: állítsa be a játékos blokkszámát - set: '&a [name] számának beállítása erre: [number]' - set-lifetime: '&a [name] élettartama a következőre van állítva: [number]' + set: '[name] számának beállítása erre: [number]' + set-lifetime: '[name] élettartama a következőre van állítva: [number]' setchest: parameters: description: helyezze a nézett mellkasát egy szakaszba a megadott ritkasággal - chest-is-empty: '&c A mellkas üres, ezért nem adható hozzá' - unknown-phase: '&c Ismeretlen fázis. A Tab-Complete használatával megtekintheti őket' - unknown-rarity: '&c Ismeretlen ritkaság. Használjon COMMON, UNCOMMON, RARE vagy EPIC' - look-at-chest: '&c Nézzen meg egy töltött mellkasat, hogy beállítsa' - only-single-chest: '&c Csak egyetlen ládát lehet beállítani' + chest-is-empty: 'A mellkas üres, ezért nem adható hozzá' + unknown-phase: 'Ismeretlen fázis. A Tab-Complete használatával megtekintheti őket' + unknown-rarity: 'Ismeretlen ritkaság. Használjon COMMON, UNCOMMON, RARE vagy EPIC' + look-at-chest: 'Nézzen meg egy töltött mellkasat, hogy beállítsa' + only-single-chest: 'Csak egyetlen ládát lehet beállítani' success: és egy mellkas sikeresen hozzáadva a fázishoz - failure: '&c A mellkas nem adható hozzá a fázishoz! A hibákat lásd a konzolon' + failure: 'A mellkas nem adható hozzá a fázishoz! A hibákat lásd a konzolon' sanity: parameters: description: >- jelenítse meg a fázis valószínűségeinek józanság-ellenőrzését a konzolban - see-console: '&a Lásd a jelentés konzolt' + see-console: 'Lásd a jelentés konzolt' count: description: mutassa meg a blokkok számát és a fázist - info: '&a Ön a &b [number] blokkban van a &a [name] fázisban' + info: 'Ön a [number] blokkban van a [name] fázisban' info: - count: >- - Az &a sziget a &b [number]&a blokkon található, a &b [name] &a fázisban. - Élettartam száma &b [lifetime] &a. + count: 'Az sziget a [number] blokkon található, a [name] fázisban. Élettartam száma [lifetime] .' phases: description: az összes fázis felsorolása - title: '&2 OneBlock Fázis' - name-syntax: '&a [name]' - description-syntax: '&b [number] blokkolja' + title: 'OneBlock Fázis' + name-syntax: '[name]' + description-syntax: '[number] blokkolja' island: bossbar: description: váltók fázisú főnök sáv - status_on: '&b Bossbar &a bekapcsolt' - status_off: '&b Bossbar &c kikapcsolt' + status_on: 'Bossbar bekapcsolt' + status_off: 'Bossbar kikapcsolt' actionbar: description: fázis akciósáv ki/bekapcsolása - status_on: "&b Akciósáv &a bekapcsolva" - status_off: "&b Akciósáv &c kikapcsolva" + status_on: "Akciósáv bekapcsolva" + status_off: "Akciósáv kikapcsolva" setcount: parameters: description: állítsa be a blokkszámot a korábban kitöltött értékre - set: '&a A számláló értéke [szám].' - too-high: '&c A beállítható maximum [number]!' + set: 'A számláló értéke [szám].' + too-high: 'A beállítható maximum [number]!' respawn-block: description: varázsblokkot hoz újra olyan helyzetekben, amikor eltűnik - block-exist: '&a Blokk létezik, nem igényelt újbóli megjelenést. megjelöltem neked.' - block-respawned: '&a blokk újjáéledt.' + block-exist: 'Blokk létezik, nem igényelt újbóli megjelenést. megjelöltem neked.' + block-respawned: 'blokk újjáéledt.' phase: - insufficient-level: >- - &c A sziget szintje túl alacsony a folytatáshoz! Ennek a következőnek kell - lennie: [number]. - insufficient-funds: '&c A kerete túl kevés a folytatáshoz! Ezeknek [number]-nak kell lenniük.' - insufficient-bank-balance: >- - &c A sziget banki egyenlege túl alacsony a folytatáshoz! Ennek a - következőnek kell lennie: [number]. - insufficient-permission: '&c Nem folytathatja tovább, amíg meg nem szerzi a [name] engedélyt!' - cooldown: '&c A következő szakasz [number] másodpercen belül elérhető lesz!' + insufficient-level: 'A sziget szintje túl alacsony a folytatáshoz! Ennek a következőnek kell lennie: [number].' + insufficient-funds: 'A kerete túl kevés a folytatáshoz! Ezeknek [number]-nak kell lenniük.' + insufficient-bank-balance: 'A sziget banki egyenlege túl alacsony a folytatáshoz! Ennek a következőnek kell lennie: [number].' + insufficient-permission: 'Nem folytathatja tovább, amíg meg nem szerzi a [name] engedélyt!' + cooldown: 'A következő szakasz [number] másodpercen belül elérhető lesz!' placeholders: infinite: Végtelen my-island-phase-default: Ismeretlen gui: titles: - phases: '&0&l OneBlock fázisok' + phases: 'OneBlock fázisok' buttons: previous: - name: '&f&l Előző oldal' - description: '&7 Váltás a [number] oldalra' + name: 'Előző oldal' + description: 'Váltás a [number] oldalra' next: - name: '&f&l Következő oldal' - description: '&7 Váltás a [number] oldalra' + name: 'Következő oldal' + description: 'Váltás a [number] oldalra' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -122,20 +116,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Az &e [number] blokk feltörése után indul.' - biome: '&7 életrajz: &e [biome]' - bank: '&7 Szükséges &e $[number] &7 bankszámlára.' - economy: '&7 &e $[number] &7 játékos fiókot igényel.' - level: '&7 &e [number] &7 szigetszint szükséges.' - permission: '&7 `&e[permission]&7` engedély szükséges.' - blocks-prefix: '&7 Blokkok fázisban -' - blocks: '&e [name], ' + starting-block: 'Az [number] blokk feltörése után indul.' + biome: 'életrajz: [biome]' + bank: 'Szükséges $[number] bankszámlára.' + economy: '$[number] játékos fiókot igényel.' + level: '[number] szigetszint szükséges.' + permission: '`[permission]` engedély szükséges.' + blocks-prefix: 'Blokkok fázisban -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Kattintson a &7 gombra az előző oldal megtekintéséhez.' - click-to-next: '&e Kattintson a &7 gombra a következő oldal megtekintéséhez.' - click-to-change: '&e Kattintson a &7 gombra a módosításhoz.' + click-to-previous: 'Kattintson a gombra az előző oldal megtekintéséhez.' + click-to-next: 'Kattintson a gombra a következő oldal megtekintéséhez.' + click-to-change: 'Kattintson a gombra a módosításhoz.' island: starting-hologram: |- - &aÜdvözlünk az ChunkBlockban - &eSzüntesse meg ezt a blokkot a kezdéshez + Üdvözlünk az ChunkBlockban + Szüntesse meg ezt a blokkot a kezdéshez diff --git a/src/main/resources/locales/id.yml b/src/main/resources/locales/id.yml index a08e651..b2506f6 100644 --- a/src/main/resources/locales/id.yml +++ b/src/main/resources/locales/id.yml @@ -3,97 +3,93 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Perlindungan Blok Ajaib description: |- - &b Pangkat yang dapat - &b menghancurkan blok ajaib - &b jika mereka dapat menghancurkan blok. - hint: "&c Pangkatmu tidak dapat menghancurkan blok ajaib!" + Pangkat yang dapat + menghancurkan blok ajaib + jika mereka dapat menghancurkan blok. + hint: "Pangkatmu tidak dapat menghancurkan blok ajaib!" CHUNKBLOCK_START_SAFETY: name: Keamanan Awal description: |- - &b Mencegah pemain baru - &b bergerak selama 1 menit - &b agar mereka tidak jatuh. - hint: "&c Pergerakan diblokir untuk keselamatan selama [number] detik lagi!" - free-to-move: "&a Anda bebas bergerak. Hati-hati!" + Mencegah pemain baru + bergerak selama 1 menit + agar mereka tidak jatuh. + hint: "Pergerakan diblokir untuk keselamatan selama [number] detik lagi!" + free-to-move: "Anda bebas bergerak. Hati-hati!" CHUNKBLOCK_BOSSBAR: - name: Boss Bar - description: |- - &b Menampilkan bilah status - &b untuk setiap fase. + name: Boss Bar + description: |- + Menampilkan bilah status + untuk setiap fase. CHUNKBLOCK_ACTIONBAR: name: Action Bar description: |- - &b Menampilkan status - &b untuk setiap fase - &b di Action Bar. + Menampilkan status + untuk setiap fase + di Action Bar. chunkblock: bossbar: title: Blok tersisa - status: Blok fase &b [done] &d / &b [total] + status: 'Blok fase [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Bos Bar tidak aktif untuk pulau ini' + not-active: 'Bos Bar tidak aktif untuk pulau ini' actionbar: - status: "&a Fase: &b [phase-name] &d | &a Blok: &b [done] &d / &b [total] &d | &a Kemajuan: &b [percent-done]" - not-active: "&c Action Bar tidak aktif untuk pulau ini" + status: "Fase: [phase-name] | Blok: [done] / [total] | Kemajuan: [percent-done]" + not-active: "Action Bar tidak aktif untuk pulau ini" commands: admin: setcount: parameters: description: atur jumlah blok pemain - set: '&a hitungan [name] diatur ke [number]' - set-lifetime: '&a Hitungan seumur hidup [name] diatur ke [number]' + set: 'hitungan [name] diatur ke [number]' + set-lifetime: 'Hitungan seumur hidup [name] diatur ke [number]' setchest: parameters: description: letakkan dada yang tampak dalam fase dengan kelangkaan yang ditentukan - chest-is-empty: '&c Peti itu kosong sehingga tidak bisa ditambahkan' - unknown-phase: '&c Fase tidak dikenal. Gunakan tab-complete untuk melihatnya' - unknown-rarity: >- - &c Kelangkaan tidak diketahui. Gunakan COMMON, UNCOMMON, RARE atau - EPIC - look-at-chest: '&c Lihat peti berisi untuk mengaturnya' - only-single-chest: '&c Hanya peti tunggal yang dapat ditetapkan' - success: '&a Dada berhasil ditambahkan ke fase' - failure: '&c Dada tidak dapat ditambahkan ke fase! Lihat konsol untuk kesalahan' + chest-is-empty: 'Peti itu kosong sehingga tidak bisa ditambahkan' + unknown-phase: 'Fase tidak dikenal. Gunakan tab-complete untuk melihatnya' + unknown-rarity: 'Kelangkaan tidak diketahui. Gunakan COMMON, UNCOMMON, RARE atau EPIC' + look-at-chest: 'Lihat peti berisi untuk mengaturnya' + only-single-chest: 'Hanya peti tunggal yang dapat ditetapkan' + success: 'Dada berhasil ditambahkan ke fase' + failure: 'Dada tidak dapat ditambahkan ke fase! Lihat konsol untuk kesalahan' sanity: parameters: description: menampilkan pemeriksaan kewarasan dari probabilitas fase di konsol - see-console: '&a Lihat konsol untuk laporannya' + see-console: 'Lihat konsol untuk laporannya' count: description: perlihatkan jumlah blok dan fase - info: '&a Anda berada di blok &b [number] dalam fase &a [name]' + info: 'Anda berada di blok [number] dalam fase [name]' info: - count: '&a Pulau ada di blok &b [number] &a dalam fase &b [name]. ' + count: 'Pulau ada di blok [number] dalam fase [name]. ' phases: description: perlihatkan daftar semua fase - title: '&2 Fase OneBlock' - name-syntax: '&a [name]' - description-syntax: '&b [number] blok' + title: 'Fase OneBlock' + name-syntax: '[name]' + description-syntax: '[number] blok' island: bossbar: description: Mengalogkan Bar Bos Fase - status_on: '&b Bos bar &a dihidupkan' - status_off: '&b Bos bar &c dimatikan' + status_on: 'Bos bar dihidupkan' + status_off: 'Bos bar dimatikan' actionbar: description: mengaktifkan/menonaktifkan action bar fase - status_on: "&b Action Bar &a diaktifkan" - status_off: "&b Action Bar &c dinonaktifkan" + status_on: "Action Bar diaktifkan" + status_off: "Action Bar dinonaktifkan" setcount: parameters: description: Setel jumlah blok ke nilai yang sebelumnya selesai - set: '&a Hitung diatur ke [number].' - too-high: '&c Maksimum yang dapat Anda atur adalah [number]!' + set: 'Hitung diatur ke [number].' + too-high: 'Maksimum yang dapat Anda atur adalah [number]!' respawn-block: description: respawns blok ajaib dalam situasi saat menghilang - block-exist: '&a Blok ada, tidak memerlukan respawning. ' - block-respawned: '&a Blokir dihidupkan kembali.' + block-exist: 'Blok ada, tidak memerlukan respawning. ' + block-respawned: 'Blokir dihidupkan kembali.' phase: - insufficient-level: '&c Tingkat pulau Anda terlalu rendah untuk [number]! ' - insufficient-funds: '&c Dana Anda terlalu rendah untuk [number]! ' - insufficient-bank-balance: '&c Saldo bank pulau terlalu rendah untuk [number]! ' - insufficient-permission: >- - &c Anda tidak dapat melanjutkan lebih jauh sampai Anda mendapatkan izin - [name]! + insufficient-level: 'Tingkat pulau Anda terlalu rendah untuk [number]! ' + insufficient-funds: 'Dana Anda terlalu rendah untuk [number]! ' + insufficient-bank-balance: 'Saldo bank pulau terlalu rendah untuk [number]! ' + insufficient-permission: 'Anda tidak dapat melanjutkan lebih jauh sampai Anda mendapatkan izin [name]!' cooldown: Fase berikutnya akan tersedia dalam detik [number]! placeholders: infinite: Tak terbatas @@ -103,13 +99,13 @@ chunkblock: phases: ChunkBlock Phases buttons: previous: - name: '&f&l halaman sebelumnya' - description: '&7 Beralih ke halaman [number]' + name: ' halaman sebelumnya' + description: 'Beralih ke halaman [number]' next: - name: '&f&l halaman berikutnya' - description: '&7 Beralih ke halaman [number]' + name: 'halaman berikutnya' + description: 'Beralih ke halaman [number]' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -118,20 +114,20 @@ chunkblock: [level] [permission] [blocks] - starting-block: '&7 Dimulai setelah melanggar &e blok [number].' - biome: '&7 Biome: &e [biome]' - bank: '&7 Membutuhkan &e $[number] &7 di rekening bank.' - economy: '&7 Membutuhkan &e $[number] &7 di akun pemain.' - level: '&7 Membutuhkan tingkat pulau &e [number].' - permission: '&7 Membutuhkan izin &e `[permission]`.' - blocks-prefix: '&7 Blok dalam fase -' - blocks: '&e [name], ' + starting-block: 'Dimulai setelah melanggar blok [number].' + biome: 'Biome: [biome]' + bank: 'Membutuhkan $[number] di rekening bank.' + economy: 'Membutuhkan $[number] di akun pemain.' + level: 'Membutuhkan tingkat pulau [number].' + permission: 'Membutuhkan izin `[permission]`.' + blocks-prefix: 'Blok dalam fase -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Klik &7 untuk melihat halaman sebelumnya.' - click-to-next: '&e Klik &7 untuk melihat halaman berikutnya.' - click-to-change: '&e Klik &7 untuk berubah.' + click-to-previous: 'Klik untuk melihat halaman sebelumnya.' + click-to-next: 'Klik untuk melihat halaman berikutnya.' + click-to-change: 'Klik untuk berubah.' island: starting-hologram: |- - &a Selamat datang di AONEBLOCK - &e Hancurkan blok ini untuk memulai + Selamat datang di AONEBLOCK + Hancurkan blok ini untuk memulai diff --git a/src/main/resources/locales/it.yml b/src/main/resources/locales/it.yml index 300d221..d79f37c 100644 --- a/src/main/resources/locales/it.yml +++ b/src/main/resources/locales/it.yml @@ -3,113 +3,111 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Protezione Blocco Magico description: |- - &b Rango che può rompere il - &b blocco magico se può - &b rompere i blocchi. - hint: "&c Il tuo rango non può rompere il blocco magico!" + Rango che può rompere il + blocco magico se può + rompere i blocchi. + hint: "Il tuo rango non può rompere il blocco magico!" CHUNKBLOCK_START_SAFETY: name: Sicurezza Iniziale description: |- - &b Impedisce ai nuovi giocatori - &b di muoversi per 1 minuto - &b in modo che non cadano. - hint: "&c Movimento bloccato per sicurezza per [number] secondi ancora!" - free-to-move: "&a Sei libero di muoverti. Fai attenzione!" + Impedisce ai nuovi giocatori + di muoversi per 1 minuto + in modo che non cadano. + hint: "Movimento bloccato per sicurezza per [number] secondi ancora!" + free-to-move: "Sei libero di muoverti. Fai attenzione!" CHUNKBLOCK_BOSSBAR: - name: Boss Bar - description: |- - &b Mostra una barra di stato - &b per ogni fase. + name: Boss Bar + description: |- + Mostra una barra di stato + per ogni fase. CHUNKBLOCK_ACTIONBAR: name: Action Bar description: |- - &b Mostra uno stato - &b per ogni fase - &b nella Action Bar. + Mostra uno stato + per ogni fase + nella Action Bar. chunkblock: bossbar: title: Blocca i restanti - status: '&a Blocchi di fase &b [done] &d / &b [total]' + status: 'Blocchi di fase [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar non è attivo per quest''isola' + not-active: 'Boss Bar non è attivo per quest''isola' actionbar: - status: "&a Fase: &b [phase-name] &d | &a Blocchi: &b [done] &d / &b [total] &d | &a Progresso: &b [percent-done]" - not-active: "&c La barra d'azione non è attiva per quest'isola" + status: "Fase: [phase-name] | Blocchi: [done] / [total] | Progresso: [percent-done]" + not-active: "La barra d'azione non è attiva per quest'isola" commands: admin: setcount: parameters: description: imposta il conteggio dei blocchi del giocatore - set: '&a il conteggio di [name] impostato su [number]' - set-lifetime: '&a Il conteggio della vita di [name] è impostato su [number]' + set: 'il conteggio di [name] impostato su [number]' + set-lifetime: 'Il conteggio della vita di [name] è impostato su [number]' setchest: parameters: description: mettere il torace osservato in una fase con la rarità specificata - chest-is-empty: '&c Quella cassa è vuota quindi non può essere aggiunta' - unknown-phase: '&c Fase sconosciuta. Usa tab-complete per vederli' - unknown-rarity: '&c Rarità sconosciuta. Utilizzare COMMON, UNCOMMON, RARE o EPIC' - look-at-chest: '&c Guarda una cassa piena per impostarla' - only-single-chest: '&c Possono essere impostati solo singoli forzieri' - success: '&a Una cassa aggiunta correttamente alla fase' - failure: '&c Chest non può essere aggiunto alla fase! Vedi console per errori' + chest-is-empty: 'Quella cassa è vuota quindi non può essere aggiunta' + unknown-phase: 'Fase sconosciuta. Usa tab-complete per vederli' + unknown-rarity: 'Rarità sconosciuta. Utilizzare COMMON, UNCOMMON, RARE o EPIC' + look-at-chest: 'Guarda una cassa piena per impostarla' + only-single-chest: 'Possono essere impostati solo singoli forzieri' + success: 'Una cassa aggiunta correttamente alla fase' + failure: 'Chest non può essere aggiunto alla fase! Vedi console per errori' sanity: parameters: description: >- visualizzare un controllo di integrità delle probabilità di fase nella console - see-console: '&a Vedi la console per il rapporto' + see-console: 'Vedi la console per il rapporto' count: description: mostra il conteggio dei blocchi e la fase - info: '&a Sei sul blocco &b [number] nella fase &a [name]' + info: 'Sei sul blocco [number] nella fase [name]' info: - count: >- - &a L'isola è in blocco &b [number] &a nella fase &b [name] &a. Lifetime - count &b [lifetime] &a. + count: 'L''isola è in blocco [number] nella fase [name] . Lifetime count [lifetime] .' phases: description: mostra un elenco di tutte le fasi - title: '&2 Fasi OneBlock' - name-syntax: '&a [name]' - description-syntax: '&b [number] blocchi' + title: 'Fasi OneBlock' + name-syntax: '[name]' + description-syntax: '[number] blocchi' island: bossbar: description: barra boss di fase di levetta - status_on: '&b Bossbar si è &a acceso' - status_off: '&b Bossbar si è &c spento' + status_on: 'Bossbar si è acceso' + status_off: 'Bossbar si è spento' actionbar: description: "attiva/disattiva la barra d'azione della fase" - status_on: "&b Barra d'azione &a attivata" - status_off: "&b Barra d'azione &c disattivata" + status_on: "Barra d'azione attivata" + status_off: "Barra d'azione disattivata" setcount: parameters: description: Imposta il conteggio dei blocchi sul valore precedentemente completato - set: '&a Contare impostato su [number].' - too-high: '&c Il massimo che puoi impostare è [number]!' + set: 'Contare impostato su [number].' + too-high: 'Il massimo che puoi impostare è [number]!' respawn-block: description: Respira il blocco magico in situazioni quando scompare - block-exist: '&a Il blocco esiste, non ha richiesto il rigenerazione. ' - block-respawned: '&a Blocco rigenerato.' + block-exist: 'Il blocco esiste, non ha richiesto il rigenerazione. ' + block-respawned: 'Blocco rigenerato.' phase: insufficient-level: 'Il tuo livello dell''isola è troppo basso per procedere! ' insufficient-funds: '& c i tuoi fondi sono troppo bassi per procedere! Devono essere [number].' - insufficient-bank-balance: '&c The island bank balance is too low to proceed! It must be [number].' - insufficient-permission: '&c You can proceed no further until you obtain the [name] permission!' - cooldown: '&c Next phase will be available in [number] seconds!' + insufficient-bank-balance: 'The island bank balance is too low to proceed! It must be [number].' + insufficient-permission: 'You can proceed no further until you obtain the [name] permission!' + cooldown: 'Next phase will be available in [number] seconds!' placeholders: infinite: Infinito my-island-phase-default: Sconosciuta gui: titles: - phases: '&0&l fasi di un blocco' + phases: 'fasi di un blocco' buttons: previous: name: '& l pagina precedente' - description: '&7 Passa alla pagina [number]' + description: 'Passa alla pagina [number]' next: - name: '&f&l Pagina successiva' - description: '&7 Passa alla pagina [number]' + name: 'Pagina successiva' + description: 'Passa alla pagina [number]' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -118,20 +116,20 @@ chunkblock: [level] [permission] [blocks] - starting-block: '&7 Inizia dopo aver rotto i blocchi &e [number].' - biome: '&7 Biome: &e [biome]' - bank: '&7 Richiede &e $ [number] &7 nel conto bancario.' - economy: '&7 Richiede &e $ [number] &7 nell''account giocatore.' - level: '&7 Richiede il livello &e [number] &7 dell''isola.' - permission: '&7 Richiede il permesso &e`[permission]`.' - blocks-prefix: '&7 Blocchi in fase -' - blocks: '&e [name], ' + starting-block: 'Inizia dopo aver rotto i blocchi [number].' + biome: 'Biome: [biome]' + bank: 'Richiede $ [number] nel conto bancario.' + economy: 'Richiede $ [number] nell''account giocatore.' + level: 'Richiede il livello [number] dell''isola.' + permission: 'Richiede il permesso `[permission]`.' + blocks-prefix: 'Blocchi in fase -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Fare clic &7 per visualizzare la pagina precedente.' - click-to-next: '&e Fare clic &7 per visualizzare la pagina successiva.' - click-to-change: '&e Fai clic &7 per cambiare.' + click-to-previous: 'Fare clic per visualizzare la pagina precedente.' + click-to-next: 'Fare clic per visualizzare la pagina successiva.' + click-to-change: 'Fai clic per cambiare.' island: starting-hologram: |- - &a Benvenuti in Aoneblock - &e Rompere questo blocco per iniziare + Benvenuti in Aoneblock + Rompere questo blocco per iniziare diff --git a/src/main/resources/locales/ja.yml b/src/main/resources/locales/ja.yml index 8239163..bbb78c1 100644 --- a/src/main/resources/locales/ja.yml +++ b/src/main/resources/locales/ja.yml @@ -3,46 +3,46 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: 魔法ブロック保護 description: |- - &b ブロックを破壊できる場合、 - &b 魔法ブロックを破壊できる - &b ランク。 - hint: "&c あなたのランクでは魔法ブロックを破壊できません!" + ブロックを破壊できる場合、 + 魔法ブロックを破壊できる + ランク。 + hint: "あなたのランクでは魔法ブロックを破壊できません!" CHUNKBLOCK_START_SAFETY: name: 開始時の安全対策 description: |- - &b 新しいプレイヤーが - &b 1分間移動するのを防ぎ、 - &b 落下を防ぎます。 - hint: "&c 安全のため、あと [number] 秒間移動がブロックされています!" - free-to-move: "&a 自由に動けます。注意してください!" + 新しいプレイヤーが + 1分間移動するのを防ぎ、 + 落下を防ぎます。 + hint: "安全のため、あと [number] 秒間移動がブロックされています!" + free-to-move: "自由に動けます。注意してください!" CHUNKBLOCK_BOSSBAR: - name: ボスバー - description: |- - &b 各フェーズの - &b ステータスバーを表示します。 + name: ボスバー + description: |- + 各フェーズの + ステータスバーを表示します。 CHUNKBLOCK_ACTIONBAR: name: アクションバー description: |- - &b 各フェーズの - &b ステータスを - &b アクションバーに表示します。 + 各フェーズの + ステータスを + アクションバーに表示します。 chunkblock: bossbar: title: 残りのブロック - status: 位相ブロック &b [done] &d / &b [total] + status: '位相ブロック [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c この島ではボスバーがアクティブではありません' + not-active: 'この島ではボスバーがアクティブではありません' actionbar: - status: "&a フェーズ: &b [phase-name] &d | &a ブロック数: &b [done] &d / &b [total] &d | &a 進行状況: &b [percent-done]" - not-active: "&c この島ではアクションバーが有効ではありません" + status: "フェーズ: [phase-name] | ブロック数: [done] / [total] | 進行状況: [percent-done]" + not-active: "この島ではアクションバーが有効ではありません" commands: admin: setcount: parameters: <名前> <数> description: プレイヤーのブロック数を設定する set: '[name]の数が[number]に設定されました' - set-lifetime: '&a [name] の有効期間カウントが [number] に設定されました' + set-lifetime: '[name] の有効期間カウントが [number] に設定されました' setchest: parameters: <フェーズ> <レア度> description: 見つめられた胸部を、指定された希少性を持つフェーズに置く @@ -61,53 +61,51 @@ chunkblock: description: ブロック数とフェーズを表示する info: '[name]フェーズのブロック[number]にいます' info: - count: >- - &a 島は &b [name] &a フェーズのブロック &b [number]&a 上にあります。生涯カウント &b [lifetime] - &a。 + count: '島は [name] フェーズのブロック [number] 上にあります。生涯カウント [lifetime] ' phases: description: すべてのフェーズのリストを表示する title: &2 OneBlockフェーズ - name-syntax: '&a[name]' - description-syntax: '&b [number]ブロック' + name-syntax: '[name]' + description-syntax: '[number]ブロック' island: bossbar: description: トグルフェーズボスバー - status_on: '&b ボスバーが&a オン' - status_off: '&b ボスバーが&aオフ' + status_on: 'ボスバーが オン' + status_off: 'ボスバーがオフ' actionbar: description: フェーズアクションバーの切り替え - status_on: "&b アクションバーを &a オン &bにしました" - status_off: "&b アクションバーを &c オフ &bにしました" + status_on: "アクションバーを オン にしました" + status_off: "アクションバーを オフ にしました" setcount: parameters: <カウント> description: ブロック数を以前に完了した値に設定する - set: '&a カウントを [数値] に設定します。' - too-high: '&c 設定できる最大値は [number] です!' + set: 'カウントを [数値] に設定します。' + too-high: '設定できる最大値は [number] です!' respawn-block: description: マジックブロックが消えた場合に再出現します - block-exist: '&a ブロックが存在します。再生成は必要ありませんでした。私はあなたのためにそれをマークしました。' - block-respawned: '&a ブロックが復活しました。' + block-exist: 'ブロックが存在します。再生成は必要ありませんでした。私はあなたのためにそれをマークしました。' + block-respawned: 'ブロックが復活しました。' phase: - insufficient-level: '&c 島のレベルが低すぎるので先に進めません! [number] である必要があります。' - insufficient-funds: '&c 資金が少なすぎるため続行できません。 [number] である必要があります。' - insufficient-bank-balance: '&c 島の銀行残高が少なすぎるため続行できません。 [number] である必要があります。' - insufficient-permission: '&c [name] の許可を取得するまで、これ以上先に進むことはできません。' - cooldown: '&c [number] 秒で次のステージへ!' + insufficient-level: '島のレベルが低すぎるので先に進めません! [number] である必要があります。' + insufficient-funds: '資金が少なすぎるため続行できません。 [number] である必要があります。' + insufficient-bank-balance: '島の銀行残高が少なすぎるため続行できません。 [number] である必要があります。' + insufficient-permission: '[name] の許可を取得するまで、これ以上先に進むことはできません。' + cooldown: '[number] 秒で次のステージへ!' placeholders: infinite: 無限 my-island-phase-default: 不明 gui: titles: - phases: '&0&l ワンブロックフェーズ' + phases: 'ワンブロックフェーズ' buttons: previous: - name: '&f&l 前のページ' - description: '&7 [number]ページに切り替えます' + name: '前のページ' + description: '[number]ページに切り替えます' next: - name: '&f&l 次のページ' - description: '&7 [番号]ページに切り替えます' + name: '次のページ' + description: '[番号]ページに切り替えます' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -115,20 +113,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 &e [number] ブロックを分割した後に開始します。' - biome: '&7 バイオーム: &e [biome]' - bank: '&7 銀行口座に &e $[number] &7 が必要です。' - economy: '&7 プレイヤーアカウントに &e $[number] &7 が必要です。' - level: '&7 &e [number] &7 の島レベルが必要です。' - permission: '&7 `&e[permission]&7` 権限が必要です。' - blocks-prefix: '&7 フェーズのブロック - ' - blocks: '&e [name], ' + starting-block: '[number] ブロックを分割した後に開始します。' + biome: 'バイオーム: [biome]' + bank: '銀行口座に $[number] が必要です。' + economy: 'プレイヤーアカウントに $[number] が必要です。' + level: '[number] の島レベルが必要です。' + permission: '`[permission]` 権限が必要です。' + blocks-prefix: 'フェーズのブロック - ' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e &7 をクリックして前のページを表示します。' - click-to-next: '&e &7 をクリックして次のページを表示します。' - click-to-change: '&e &7 をクリックして変更します。' + click-to-previous: 'をクリックして前のページを表示します。' + click-to-next: 'をクリックして次のページを表示します。' + click-to-change: 'をクリックして変更します。' island: starting-hologram: |- - &aChunkBlock へようこそ - &eこのブロックを壊して開始してください + ChunkBlock へようこそ + このブロックを壊して開始してください diff --git a/src/main/resources/locales/pl.yml b/src/main/resources/locales/pl.yml index 2fdb553..b2f0587 100644 --- a/src/main/resources/locales/pl.yml +++ b/src/main/resources/locales/pl.yml @@ -3,90 +3,88 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Ochrona Magicznego Bloku description: |- - &b Ranga, która może zniszczyć - &b magiczny blok, jeśli - &b może niszczyć bloki. - hint: "&c Twoja ranga nie może zniszczyć magicznego bloku!" + Ranga, która może zniszczyć + magiczny blok, jeśli + może niszczyć bloki. + hint: "Twoja ranga nie może zniszczyć magicznego bloku!" CHUNKBLOCK_START_SAFETY: name: Bezpieczeństwo Początkowe description: |- - &b Zapobiega poruszaniu się - &b nowym graczom przez 1 minutę, - &b aby nie spadli. - hint: "&c Ruch zablokowany ze względów bezpieczeństwa na kolejne [number] sekund!" - free-to-move: "&a Możesz się swobodnie poruszać. Bądź ostrożny!" + Zapobiega poruszaniu się + nowym graczom przez 1 minutę, + aby nie spadli. + hint: "Ruch zablokowany ze względów bezpieczeństwa na kolejne [number] sekund!" + free-to-move: "Możesz się swobodnie poruszać. Bądź ostrożny!" CHUNKBLOCK_BOSSBAR: - name: Pasek Bossa - description: |- - &b Pokazuje pasek statusu - &b dla każdej fazy. + name: Pasek Bossa + description: |- + Pokazuje pasek statusu + dla każdej fazy. CHUNKBLOCK_ACTIONBAR: name: Pasek Akcji description: |- - &b Pokazuje status - &b dla każdej fazy - &b na Pasku Akcji. + Pokazuje status + dla każdej fazy + na Pasku Akcji. chunkblock: bossbar: title: Pozostałe bloki - status: '&a Bloki fazowe &b [done] &d / &b [total]' + status: 'Bloki fazowe [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar nie jest aktywny dla tej wyspy' + not-active: 'Boss Bar nie jest aktywny dla tej wyspy' actionbar: - status: "&a Faza: &b [phase-name] &d | &a Bloki: &b [done] &d / &b [total] &d | &a Postęp: &b [percent-done]" - not-active: "&c Pasek akcji nie jest aktywny dla tej wyspy" + status: "Faza: [phase-name] | Bloki: [done] / [total] | Postęp: [percent-done]" + not-active: "Pasek akcji nie jest aktywny dla tej wyspy" commands: admin: setcount: parameters: description: ustaw liczbę bloków gracza - set: '&a Liczba [name] została ustawiona na [number]' - set-lifetime: '&a [name] licznik życia ustawiony na [number]' + set: 'Liczba [name] została ustawiona na [number]' + set-lifetime: '[name] licznik życia ustawiony na [number]' setchest: parameters: description: umieść oglądaną skrzynię w fazie o określonej rzadkości - chest-is-empty: '&cTa skrzynia jest pusta, więc nie można jej dodać' - unknown-phase: '&cNieznana faza. Aby uzupełnić, użyj tabulacji' - unknown-rarity: '&cNieznana rzadkość. Użyj COMMON, UNCOMMON, RARE lub EPIC' - look-at-chest: '&cSpójrz na wypełnioną skrzynię, aby ją ustawić' - only-single-chest: '&cMożna ustawić tylko pojedyncze skrzynie' - success: '&aSkrzynia pomyślnie dodana do fazy' - failure: '&cSkrzynia nie mogła zostać dodana do fazy! Zobacz błąd w konsoli' + chest-is-empty: 'Ta skrzynia jest pusta, więc nie można jej dodać' + unknown-phase: 'Nieznana faza. Aby uzupełnić, użyj tabulacji' + unknown-rarity: 'Nieznana rzadkość. Użyj COMMON, UNCOMMON, RARE lub EPIC' + look-at-chest: 'Spójrz na wypełnioną skrzynię, aby ją ustawić' + only-single-chest: 'Można ustawić tylko pojedyncze skrzynie' + success: 'Skrzynia pomyślnie dodana do fazy' + failure: 'Skrzynia nie mogła zostać dodana do fazy! Zobacz błąd w konsoli' sanity: parameters: description: wyświetlać kontrolę poprawności prawdopodobieństwa fazy w konsoli - see-console: '&a Zobacz raport w konsoli' + see-console: 'Zobacz raport w konsoli' count: description: pokaż liczbę bloków i fazę - info: '&a Jesteś na bloku &b [number] w fazie &a [name]' + info: 'Jesteś na bloku [number] w fazie [name]' info: - count: >- - &a Wyspa jest na bloku &b [number] w fazie [name]. Lifetime count &b - [lifetime] &a. + count: 'Wyspa jest na bloku [number] w fazie [name]. Lifetime count [lifetime] .' phases: description: pokaż listę wszystkich faz - title: '&2 Fazy OneBlock' - name-syntax: '&a [name]' - description-syntax: '&b [number] bloków' + title: 'Fazy OneBlock' + name-syntax: '[name]' + description-syntax: '[number] bloków' island: bossbar: description: Przełącza fazę boss - status_on: '&b Bossbar &a włączył' - status_off: '&b Bossbar &a wyłączył' + status_on: 'Bossbar włączył' + status_off: 'Bossbar wyłączył' actionbar: description: przełącza pasek akcji fazy - status_on: "&b Pasek akcji &a włączony" - status_off: "&b Pasek akcji &c wyłączony" + status_on: "Pasek akcji włączony" + status_off: "Pasek akcji wyłączony" setcount: parameters: description: ustaw liczbę bloków na poprzednio uzupełnioną wartość - set: '&a Liczba ustawiona na [number].' - too-high: '&c Maksymalna wartość, jaką możesz ustawić, to [number]!' + set: 'Liczba ustawiona na [number].' + too-high: 'Maksymalna wartość, jaką możesz ustawić, to [number]!' respawn-block: description: odnawia magiczny blok, w przypadku zniknięcia - block-exist: '&a Blok nie potrzebował odnowienia. Został chwilowo zaznaczony' - block-respawned: '&a Odnowiono blok, proszę nie usuwaj go ponownie' + block-exist: 'Blok nie potrzebował odnowienia. Został chwilowo zaznaczony' + block-respawned: 'Odnowiono blok, proszę nie usuwaj go ponownie' phase: insufficient-level: Poziom Twojej wyspy jest za niski, aby kontynuować! Musi to być [number]. insufficient-funds: Twoje fundusze są zbyt niskie, aby kontynuować! Musisz posiadać [number]. @@ -94,22 +92,22 @@ chunkblock: Saldo na rachunku bankowym wyspy jest zbyt niskie, aby kontynuować! Musi to być [number]. insufficient-permission: Nie możesz kontynuować, dopóki nie uzyskasz pozwolenia [name]! - cooldown: '&c Następny etap będzie dostępny za [number] sekund!' + cooldown: 'Następny etap będzie dostępny za [number] sekund!' placeholders: infinite: Nieskończony my-island-phase-default: Nieznana gui: titles: - phases: '&0&l Fazy OneBlock' + phases: 'Fazy OneBlock' buttons: previous: - name: '&f&lNastępna strona' - description: '&7 Przeskocz do [number] strony' + name: 'Następna strona' + description: 'Przeskocz do [number] strony' next: - name: '&f&l Następna strona' - description: '&7 Przeskocz do [number] strony' + name: 'Następna strona' + description: 'Przeskocz do [number] strony' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -117,20 +115,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Rozpoczyna sie po&e [number] &7zniszczonych blokach.' - biome: '&7 Biom: &e [biome]' - bank: '&7 Potrzebujesz&e $[number] &7 na twoim koncie.' - economy: '&7 Potrzebujesz&e $[number] &7 na twoim koncie.' - level: '&7 Potrzebujesz &e [number] &7 poziom wyspy.' - permission: '&7 Wymaga uprawnienia `&e[permission]&7`.' - blocks-prefix: '&7 Bloki w fazie -' - blocks: '&e [name], ' + starting-block: 'Rozpoczyna sie po [number] zniszczonych blokach.' + biome: 'Biom: [biome]' + bank: 'Potrzebujesz $[number] na twoim koncie.' + economy: 'Potrzebujesz $[number] na twoim koncie.' + level: 'Potrzebujesz [number] poziom wyspy.' + permission: 'Wymaga uprawnienia `[permission]`.' + blocks-prefix: 'Bloki w fazie -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Kliknij &7, aby wyświetlić poprzednią stronę.' - click-to-next: '&e Kliknij &7, aby wyświetlić następną stronę.' - click-to-change: '&e Kliknij &7, aby zmienić.' + click-to-previous: 'Kliknij , aby wyświetlić poprzednią stronę.' + click-to-next: 'Kliknij , aby wyświetlić następną stronę.' + click-to-change: 'Kliknij , aby zmienić.' island: starting-hologram: |- - &aWitamy w OneBlock - &eZniszcz ten blok, aby rozpocząć + Witamy w OneBlock + Zniszcz ten blok, aby rozpocząć diff --git a/src/main/resources/locales/pt.yml b/src/main/resources/locales/pt.yml index 5e417a0..8d566e0 100644 --- a/src/main/resources/locales/pt.yml +++ b/src/main/resources/locales/pt.yml @@ -3,98 +3,96 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Proteção de Bloco Mágico description: |- - &b Rank que pode quebrar o - &b bloco mágico se puder - &b quebrar blocos. - hint: "&c Seu rank não pode quebrar o bloco mágico!" + Rank que pode quebrar o + bloco mágico se puder + quebrar blocos. + hint: "Seu rank não pode quebrar o bloco mágico!" CHUNKBLOCK_START_SAFETY: name: Segurança Inicial description: |- - &b Impede que novos jogadores - &b se movam por 1 minuto - &b para que não caiam. - hint: "&c Movimento bloqueado por segurança por mais [number] segundos!" - free-to-move: "&a Você está livre para se mover. Tenha cuidado!" + Impede que novos jogadores + se movam por 1 minuto + para que não caiam. + hint: "Movimento bloqueado por segurança por mais [number] segundos!" + free-to-move: "Você está livre para se mover. Tenha cuidado!" CHUNKBLOCK_BOSSBAR: - name: Boss Bar - description: |- - &b Mostra uma barra de status - &b para cada fase. + name: Boss Bar + description: |- + Mostra uma barra de status + para cada fase. CHUNKBLOCK_ACTIONBAR: name: Action Bar description: |- - &b Mostra um status - &b para cada fase - &b na Action Bar. + Mostra um status + para cada fase + na Action Bar. chunkblock: bossbar: title: Bloqueia o restante - status: '&a Blocos de fase &b [done] &d / &b [total]' + status: 'Blocos de fase [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c O Boss Bar não está ativo para esta ilha' + not-active: 'O Boss Bar não está ativo para esta ilha' actionbar: - status: "&a Fase: &b [phase-name] &d | &a Blocos: &b [done] &d / &b [total] &d | &a Progresso: &b [percent-done]" - not-active: "&c A barra de ação não está ativa para esta ilha" + status: "Fase: [phase-name] | Blocos: [done] / [total] | Progresso: [percent-done]" + not-active: "A barra de ação não está ativa para esta ilha" commands: admin: setcount: parameters: description: definir contagem de blocos do jogador - set: '&a [name] contagem definida para [number]' - set-lifetime: '&a A contagem de vida útil [name] definida como [number]' + set: '[name] contagem definida para [number]' + set-lifetime: 'A contagem de vida útil [name] definida como [number]' setchest: parameters: description: colocar o baú olhado em uma fase com a raridade especificada - chest-is-empty: '&c Esse baú está vazio, então não pode ser adicionado' - unknown-phase: '&c Fase desconhecida. Use tab-complete para vê-los' - unknown-rarity: '&c Raridade desconhecida. Use COMMON, UNCOMMON, RARE ou EPIC' - look-at-chest: '&c Olhe para um baú cheio para configurá-lo' - only-single-chest: '&c Apenas baús individuais podem ser ajustados' - success: '&a Baú adicionado com sucesso à fase' - failure: '&c O Bau não pôde ser adicionado à fase! Veja o console para erros' + chest-is-empty: 'Esse baú está vazio, então não pode ser adicionado' + unknown-phase: 'Fase desconhecida. Use tab-complete para vê-los' + unknown-rarity: 'Raridade desconhecida. Use COMMON, UNCOMMON, RARE ou EPIC' + look-at-chest: 'Olhe para um baú cheio para configurá-lo' + only-single-chest: 'Apenas baús individuais podem ser ajustados' + success: 'Baú adicionado com sucesso à fase' + failure: 'O Bau não pôde ser adicionado à fase! Veja o console para erros' sanity: parameters: description: >- exibir uma verificação de sanidade das probabilidades de fase no console - see-console: '&a Veja o console para o relatório' + see-console: 'Veja o console para o relatório' count: description: mostra a contagem de blocos e a fase - info: '&a Você está no bloco &b [number] no &a [name] fase' + info: 'Você está no bloco [number] no [name] fase' info: - count: >- - &a A ilha está em bloco &b [number] &a na fase &b [name]. Lifetime count - &b [lifetime] &a. + count: 'A ilha está em bloco [number] na fase [name]. Lifetime count [lifetime] .' phases: description: mostra uma lista de todas as fases - title: '&2 OneBlock Fases' - name-syntax: '&a [name]' - description-syntax: '&b [number] blocos' + title: 'OneBlock Fases' + name-syntax: '[name]' + description-syntax: '[number] blocos' island: bossbar: description: Alterna o Boss Boss Bar - status_on: '&b Bossbar &a ligado' - status_off: '&b Bossbar &c desligado' + status_on: 'Bossbar ligado' + status_off: 'Bossbar desligado' actionbar: description: alterna a barra de ação de fase - status_on: "&b Barra de ação &a ativada" - status_off: "&b Barra de ação &c desativada" + status_on: "Barra de ação ativada" + status_off: "Barra de ação desativada" setcount: parameters: description: Defina a contagem de blocos para o valor previamente concluído - set: '&a Contagem definida como [number].' - too-high: '&c O máximo que você pode definir é [number]!' + set: 'Contagem definida como [number].' + too-high: 'O máximo que você pode definir é [number]!' respawn-block: description: Responda o bloco mágico em situações quando desaparece - block-exist: '&a O bloco existe, não exigiu reaparecimento. ' - block-respawned: '&a Bloquear o reaparecido.' + block-exist: 'O bloco existe, não exigiu reaparecimento. ' + block-respawned: 'Bloquear o reaparecido.' phase: - insufficient-level: '&c O nível da sua ilha é muito baixo para prosseguir! ' - insufficient-funds: '&c Seus fundos são muito baixos para prosseguir! ' - insufficient-bank-balance: '&c O saldo do banco da ilha é muito baixo para prosseguir! ' - insufficient-permission: '&c Você não pode proceder mais até obter a permissão [name]!' - cooldown: '&c A próxima fase estará disponível em [number] segundos!' + insufficient-level: 'O nível da sua ilha é muito baixo para prosseguir! ' + insufficient-funds: 'Seus fundos são muito baixos para prosseguir! ' + insufficient-bank-balance: 'O saldo do banco da ilha é muito baixo para prosseguir! ' + insufficient-permission: 'Você não pode proceder mais até obter a permissão [name]!' + cooldown: 'A próxima fase estará disponível em [number] segundos!' placeholders: infinite: Infinito my-island-phase-default: Desconhecida @@ -103,13 +101,13 @@ chunkblock: phases: Oneblock Fases buttons: previous: - name: '&f&l Página anterior' - description: '&7 Mudar para a página [number]' + name: 'Página anterior' + description: 'Mudar para a página [number]' next: - name: '&f&l Próxima página' - description: '&7 Mudar para a página [number]' + name: 'Próxima página' + description: 'Mudar para a página [number]' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -118,20 +116,20 @@ chunkblock: [level] [permission] [blocks] - starting-block: '&7 Começa após quebrar &e blocos [number].' - biome: '&7 Bioma: [biome]' - bank: '&7 Requer &e $ [number] &7 na conta bancária.' - economy: '&7 Requer &e $ [number] &7 na conta do jogador.' - level: '&7 Requer &e [number] &7 no nível da ilha.' - permission: '&7 Requer `&e[permission]&7` permissão.' - blocks-prefix: '&7 Blocos em fase -' - blocks: '&e [name], ' + starting-block: 'Começa após quebrar blocos [number].' + biome: 'Bioma: [biome]' + bank: 'Requer $ [number] na conta bancária.' + economy: 'Requer $ [number] na conta do jogador.' + level: 'Requer [number] no nível da ilha.' + permission: 'Requer `[permission]` permissão.' + blocks-prefix: 'Blocos em fase -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Clique &7 para visualizar a página anterior.' - click-to-next: '&e Clique &7 para visualizar a próxima página.' - click-to-change: '&e Clique &7 para alterar.' + click-to-previous: 'Clique para visualizar a página anterior.' + click-to-next: 'Clique para visualizar a próxima página.' + click-to-change: 'Clique para alterar.' island: starting-hologram: |- - &a Bem -vindo ao ChunkBlock - &e Quebre este bloco para começar + Bem -vindo ao ChunkBlock + Quebre este bloco para começar diff --git a/src/main/resources/locales/ru.yml b/src/main/resources/locales/ru.yml index 6b8fc56..11279d3 100644 --- a/src/main/resources/locales/ru.yml +++ b/src/main/resources/locales/ru.yml @@ -36,9 +36,7 @@ chunkblock: style: SOLID not-active: Боссбар отключен на этом острове. actionbar: - status: 'Фаза: [phase-name] | - Блоков: [done] / [total] | - Прогресс: [percent-done]' + status: 'Фаза: [phase-name] | Блоков: [done] / [total] | Прогресс: [percent-done]' not-active: Панель действий отключена на этом острове. commands: admin: diff --git a/src/main/resources/locales/tr.yml b/src/main/resources/locales/tr.yml index 6854346..9aa4cec 100644 --- a/src/main/resources/locales/tr.yml +++ b/src/main/resources/locales/tr.yml @@ -3,113 +3,109 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Büyülü Blok Koruması description: |- - &b Blokları kırabilirlerse - &b büyülü bloğu kırabilecek - &b rütbe. - hint: "&c Rütbeniz büyülü bloğu kıramaz!" + Blokları kırabilirlerse + büyülü bloğu kırabilecek + rütbe. + hint: "Rütbeniz büyülü bloğu kıramaz!" CHUNKBLOCK_START_SAFETY: name: Başlangıç Güvenliği description: |- - &b Yeni oyuncuların 1 dakika - &b boyunca hareket etmesini - &b engelleyerek düşmelerini önler. - hint: "&c Güvenlik için hareket [number] saniye daha engellendi!" - free-to-move: "&a Serbestçe hareket edebilirsiniz. Dikkatli olun!" + Yeni oyuncuların 1 dakika + boyunca hareket etmesini + engelleyerek düşmelerini önler. + hint: "Güvenlik için hareket [number] saniye daha engellendi!" + free-to-move: "Serbestçe hareket edebilirsiniz. Dikkatli olun!" CHUNKBLOCK_BOSSBAR: - name: Boss Çubuğu - description: |- - &b Her aşama için bir - &b durum çubuğu gösterir. + name: Boss Çubuğu + description: |- + Her aşama için bir + durum çubuğu gösterir. CHUNKBLOCK_ACTIONBAR: name: Eylem Çubuğu (Action Bar) description: |- - &b Her aşama için bir - &b durumu Eylem Çubuğunda - &b gösterir. + Her aşama için bir + durumu Eylem Çubuğunda + gösterir. chunkblock: bossbar: title: Kalan bloklar - status: '&a Faz blokları &b [done] &d / &b [total]' + status: 'Faz blokları [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Patron Bar bu ada için aktif değil' + not-active: 'Patron Bar bu ada için aktif değil' actionbar: - status: "&a Aşama: &b [phase-name] &d | &a Bloklar: &b [done] &d / &b [total] &d | &a İlerleme: &b [percent-done]" - not-active: "&c Bu ada için eylem çubuğu aktif değil" + status: "Aşama: [phase-name] | Bloklar: [done] / [total] | İlerleme: [percent-done]" + not-active: "Bu ada için eylem çubuğu aktif değil" commands: admin: setcount: parameters: [lifetime] description: oyuncunun blok sayısını ayarla - set: '&a [name] ''ın sayısı [number] olarak ayarlandı' - set-lifetime: '&a [name]''nin toplam kırılan blok sayısı [number] olarak ayarlandı' + set: '[name] ''ın sayısı [number] olarak ayarlandı' + set-lifetime: '[name]''nin toplam kırılan blok sayısı [number] olarak ayarlandı' setchest: parameters: description: bakılan sandığı nadir görülen bir evreye koyar - chest-is-empty: '&c Bu sandık boş, bu yüzden eklenemez' - unknown-phase: >- - &c Bilinmeyen aşama. Bunları görmek için sekme-tamamlama özelliğini - kullanın + chest-is-empty: 'Bu sandık boş, bu yüzden eklenemez' + unknown-phase: 'Bilinmeyen aşama. Bunları görmek için sekme-tamamlama özelliğini kullanın' unknown-rarity: '& c Bilinmeyen nadirlik. COMMON, UNCOMMON, RARE veya EPIC kullanın' - look-at-chest: '&c Ayarlamak için dolu bir sandığa bakın' - only-single-chest: '&c Yalnızca tek sandık ayarlanabilir' - success: '&a Sandık aşamaya başarıyla eklendi' - failure: '&c Sandık aşamaya eklenemedi! Hatalar için konsola bakın' + look-at-chest: 'Ayarlamak için dolu bir sandığa bakın' + only-single-chest: 'Yalnızca tek sandık ayarlanabilir' + success: 'Sandık aşamaya başarıyla eklendi' + failure: 'Sandık aşamaya eklenemedi! Hatalar için konsola bakın' sanity: parameters: description: konsoldaki faz olasılıklarının akıl sağlığını kontrol etmek - see-console: '&a Rapor için konsola bakın' + see-console: 'Rapor için konsola bakın' count: description: blok sayısını ve aşamayı göster - info: '&a [name] aşamasında blok &b [number] üzerindesiniz' + info: '[name] aşamasında blok [number] üzerindesiniz' info: - count: >- - &a Ada blok sayısı &b [number] &b [name] &a aşamasında. Toplam kırılan - blok &b [lifetime] &a. + count: 'Ada blok sayısı [number] [name] aşamasında. Toplam kırılan blok [lifetime] .' phases: description: tüm aşamaların bir listesini göster - title: '&2 TekBlok Aşaması' - name-syntax: '&a [name]' - description-syntax: '&b [number] blokları' + title: 'TekBlok Aşaması' + name-syntax: '[name]' + description-syntax: '[number] blokları' island: bossbar: description: Faz patron çubuğunu değiştirir - status_on: '&b Bossbar &a açıldı' - status_off: '&b Bossbar &c kapandı' + status_on: 'Bossbar açıldı' + status_off: 'Bossbar kapandı' actionbar: description: aşama eylem çubuğunu açar/kapatır - status_on: "&b Eylem Çubuğu &a açıldı" - status_off: "&b Eylem Çubuğu &c kapatıldı" + status_on: "Eylem Çubuğu açıldı" + status_off: "Eylem Çubuğu kapatıldı" setcount: parameters: description: blok sayısını önceden tamamlanmış değere ayarla - set: '&a Sayım [number] olarak ayarlandı.' - too-high: '&c Ayarlayabileceğiniz maksimum sayı [number]!' + set: 'Sayım [number] olarak ayarlandı.' + too-high: 'Ayarlayabileceğiniz maksimum sayı [number]!' respawn-block: description: Kaynak bloğunu kaybolma durumlarında yeniden doğurur - block-exist: '&a Kaynak bloğu yerinde senin için işaretledim.' - block-respawned: '&a Kaynak bloğu yeniden doğdu.' + block-exist: 'Kaynak bloğu yerinde senin için işaretledim.' + block-respawned: 'Kaynak bloğu yeniden doğdu.' phase: - insufficient-level: '&c Ada seviyeniz devam etmek için çok düşük! [number] olmalıdır.' - insufficient-funds: '&c Paranız devam etmek için çok düşük! [number] olmalıdırlar.' - insufficient-bank-balance: '&c Ada bankası bakiyesi devam etmek için çok düşük! [number] olmalıdır.' - insufficient-permission: '&c [name] iznini alana kadar devam edemezsiniz!' - cooldown: '&c Bir sonraki aşama [number] saniye içinde hazır olacak!' + insufficient-level: 'Ada seviyeniz devam etmek için çok düşük! [number] olmalıdır.' + insufficient-funds: 'Paranız devam etmek için çok düşük! [number] olmalıdırlar.' + insufficient-bank-balance: 'Ada bankası bakiyesi devam etmek için çok düşük! [number] olmalıdır.' + insufficient-permission: '[name] iznini alana kadar devam edemezsiniz!' + cooldown: 'Bir sonraki aşama [number] saniye içinde hazır olacak!' placeholders: infinite: Sonsuz my-island-phase-default: Bilinmiyor gui: titles: - phases: '&0&l TekBlok Aşamaları' + phases: 'TekBlok Aşamaları' buttons: previous: - name: '&f&l Önceki Sayfa' - description: '&7 [number] Sayılı sayfaya geçer' + name: 'Önceki Sayfa' + description: '[number] Sayılı sayfaya geçer' next: - name: '&f&l Sıradaki Sayfa ' - description: '&7 [number] Sayılı sayfaya geçer' + name: 'Sıradaki Sayfa ' + description: '[number] Sayılı sayfaya geçer' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -118,20 +114,20 @@ chunkblock: [level] [permission] [blocks] - starting-block: '&7 &e [sayı] kadar blok kırdıktan sonra başlar.' - biome: '&7 Biome: &e [biome]' - bank: '&7 Banka hesabında &e $[number] &7 olması gerekli.' - economy: '&7 Bakiyenizin &e $[number] &7 olması gerekli.' - level: '&7 &e [sayı] &7 kadar ada seviyeniz olmalı.' - permission: '&7 `&e[izin]&7` izni gerektirir.' - blocks-prefix: '&7 Aşamadaki bloklar - ' - blocks: '&e [name], ' + starting-block: '[sayı] kadar blok kırdıktan sonra başlar.' + biome: 'Biome: [biome]' + bank: 'Banka hesabında $[number] olması gerekli.' + economy: 'Bakiyenizin $[number] olması gerekli.' + level: '[sayı] kadar ada seviyeniz olmalı.' + permission: '`[izin]` izni gerektirir.' + blocks-prefix: 'Aşamadaki bloklar - ' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Önceki sayfayı görüntülemek için &7 tıklayın.' - click-to-next: '&e Sonraki sayfayı görüntülemek için &7 tıklayın.' - click-to-change: '&e Değiştirmek için &7 tıklayın.' + click-to-previous: 'Önceki sayfayı görüntülemek için tıklayın.' + click-to-next: 'Sonraki sayfayı görüntülemek için tıklayın.' + click-to-change: 'Değiştirmek için tıklayın.' island: starting-hologram: |- - &aTekBlok'a Hoş Geldiniz - &eBaşlamak için Bu Bloğu Kırın + TekBlok'a Hoş Geldiniz + Başlamak için Bu Bloğu Kırın diff --git a/src/main/resources/locales/uk.yml b/src/main/resources/locales/uk.yml index b1af17c..22e724f 100644 --- a/src/main/resources/locales/uk.yml +++ b/src/main/resources/locales/uk.yml @@ -3,115 +3,109 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Захист Магічного Блоку description: |- - &b Ранг, який може зламати - &b магічний блок, якщо - &b може ламати блоки. - hint: "&c Ваш ранг не може зламати магічний блок!" + Ранг, який може зламати + магічний блок, якщо + може ламати блоки. + hint: "Ваш ранг не може зламати магічний блок!" CHUNKBLOCK_START_SAFETY: name: Початкова Безпека description: |- - &b Запобігає руху нових гравців - &b протягом 1 хвилини, - &b щоб вони не впали. - hint: "&c Рух заблоковано з міркувань безпеки ще на [number] секунд!" - free-to-move: "&a Ви можете вільно рухатися. Будьте обережні!" + Запобігає руху нових гравців + протягом 1 хвилини, + щоб вони не впали. + hint: "Рух заблоковано з міркувань безпеки ще на [number] секунд!" + free-to-move: "Ви можете вільно рухатися. Будьте обережні!" CHUNKBLOCK_BOSSBAR: - name: Boss Bar - description: |- - &b Показує панель стану - &b для кожної фази. + name: Boss Bar + description: |- + Показує панель стану + для кожної фази. CHUNKBLOCK_ACTIONBAR: name: Action Bar description: |- - &b Показує статус - &b для кожної фази - &b в Action Bar. + Показує статус + для кожної фази + в Action Bar. chunkblock: bossbar: title: Блоки, що залишилися - status: '&a Фазові блоки &b [done] &d / &b [total]' + status: 'Фазові блоки [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar не активний для цього острова' + not-active: 'Boss Bar не активний для цього острова' actionbar: - status: "&a Фаза: &b [phase-name] &d | &a Блоки: &b [done] &d / &b [total] &d | &a Прогрес: &b [percent-done]" - not-active: "&c Панель дій не активна для цього острова" + status: "Фаза: [phase-name] | Блоки: [done] / [total] | Прогрес: [percent-done]" + not-active: "Панель дій не активна для цього острова" commands: admin: setcount: parameters: [lifetime] description: встановити кількість блоків гравця - set: '&a [name] встановлено значення [number]' - set-lifetime: '&a [name] тривалість життя встановлено на [number]' + set: '[name] встановлено значення [number]' + set-lifetime: '[name] тривалість життя встановлено на [number]' setchest: parameters: description: поставити скриню, на яку дивляться, у фазу з указаною рідкістю - chest-is-empty: '&c Ця скриня порожня, тому її неможливо додати' - unknown-phase: '&c Невідома фаза. Використовуйте Tab-complete, щоб побачити їх' - unknown-rarity: '&c Невідома рідкість. Використовуйте COMMON, UNCOMMON, RARE або EPIC' - look-at-chest: '&c Подивіться на заповнену скриню, щоб встановити її' - only-single-chest: '&c Можна встановити лише окремі скрині' + chest-is-empty: 'Ця скриня порожня, тому її неможливо додати' + unknown-phase: 'Невідома фаза. Використовуйте Tab-complete, щоб побачити їх' + unknown-rarity: 'Невідома рідкість. Використовуйте COMMON, UNCOMMON, RARE або EPIC' + look-at-chest: 'Подивіться на заповнену скриню, щоб встановити її' + only-single-chest: 'Можна встановити лише окремі скрині' success: '& Скриню успішно додано до фази' - failure: '&c Скриня не може бути додана до фази! Перегляньте консоль для помилок' + failure: 'Скриня не може бути додана до фази! Перегляньте консоль для помилок' sanity: parameters: description: відобразити перевірку працездатності ймовірностей фази на консолі - see-console: '&a Дивіться консоль для звіту' + see-console: 'Дивіться консоль для звіту' count: description: показати кількість блоків і фазу - info: '&a Ви знаходитесь у блоці &b [number] у фазі &a [name].' + info: 'Ви знаходитесь у блоці [number] у фазі [name].' info: - count: >- - &a Острів знаходиться на блоці &b [number]&a у фазі &b [name] &a. - Підрахунок тривалості життя &b [lifetime] &a. + count: 'Острів знаходиться на блоці [number] у фазі [name] . Підрахунок тривалості життя [lifetime] .' phases: description: показати список усіх фаз - title: '&2 OneBlock фази' - name-syntax: '&a [name]' - description-syntax: '&b [number] блоків' + title: 'OneBlock фази' + name-syntax: '[name]' + description-syntax: '[number] блоків' island: bossbar: description: перемикає фазу боса - status_on: '&b Bossbar &a увімкнув' - status_off: '&b Bossbar &c вимкнувся' + status_on: 'Bossbar увімкнув' + status_off: 'Bossbar вимкнувся' actionbar: description: перемикає панель дій фази - status_on: "&b Панель дій &a увімкнена" - status_off: "&b Панель дій &c вимкнена" + status_on: "Панель дій увімкнена" + status_off: "Панель дій вимкнена" setcount: parameters: description: встановити кількість блоків до попередньо завершеного значення - set: '&a Лічильник встановлено на [number].' - too-high: '&c Максимум, який ви можете встановити, це [number]!' + set: 'Лічильник встановлено на [number].' + too-high: 'Максимум, який ви можете встановити, це [number]!' respawn-block: description: відроджує магічний блок у ситуаціях, коли він зникає - block-exist: '&a Блок існує, не потребує відновлення. Я позначив це для вас.' + block-exist: 'Блок існує, не потребує відновлення. Я позначив це для вас.' block-respawned: '& Блок відродився.' phase: - insufficient-level: >- - &c Рівень вашого острова занадто низький, щоб продовжити! Це має бути - [number]. - insufficient-funds: '&c Ваших коштів занадто мало, щоб продовжити! Вони мають бути [number].' - insufficient-bank-balance: >- - &c Баланс острівного банку занадто низький, щоб продовжити! Це має бути - [number]. - insufficient-permission: '&c Ви не можете продовжувати далі, доки не отримаєте дозвіл [name]!' - cooldown: '&c Наступна фаза буде доступна через [number] секунд!' + insufficient-level: 'Рівень вашого острова занадто низький, щоб продовжити! Це має бути [number].' + insufficient-funds: 'Ваших коштів занадто мало, щоб продовжити! Вони мають бути [number].' + insufficient-bank-balance: 'Баланс острівного банку занадто низький, щоб продовжити! Це має бути [number].' + insufficient-permission: 'Ви не можете продовжувати далі, доки не отримаєте дозвіл [name]!' + cooldown: 'Наступна фаза буде доступна через [number] секунд!' placeholders: infinite: Нескінченний my-island-phase-default: Невідомо gui: titles: - phases: '&0&l Фази одного блоку' + phases: 'Фази одного блоку' buttons: previous: - name: '&f&l Попередня сторінка' - description: '&7 Перейти на сторінку [number].' + name: 'Попередня сторінка' + description: 'Перейти на сторінку [number].' next: - name: '&f&l Наступна сторінка' - description: '&7 Перейти на сторінку [number].' + name: 'Наступна сторінка' + description: 'Перейти на сторінку [number].' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -119,20 +113,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 Запускається після розбиття &e [number] блоків.' - biome: '&7 Біом: &e [biome]' - bank: '&7 Потрібен &e $[number] &7 на банківському рахунку.' - economy: '&7 Потрібен &e $[number] &7 в обліковому записі гравця.' - level: '&7 Потрібен рівень острова &e [number] &7.' - permission: '&7 Потрібен дозвіл `&e[permission]&7`.' + starting-block: 'Запускається після розбиття [number] блоків.' + biome: 'Біом: [biome]' + bank: 'Потрібен $[number] на банківському рахунку.' + economy: 'Потрібен $[number] в обліковому записі гравця.' + level: 'Потрібен рівень острова [number] .' + permission: 'Потрібен дозвіл `[permission]`.' blocks-prefix: Блоки по фазі - - blocks: '&e [name], ' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Натисніть &7, щоб переглянути попередню сторінку.' - click-to-next: '&e Натисніть &7, щоб переглянути наступну сторінку.' - click-to-change: '&e Натисніть &7, щоб змінити.' + click-to-previous: 'Натисніть , щоб переглянути попередню сторінку.' + click-to-next: 'Натисніть , щоб переглянути наступну сторінку.' + click-to-change: 'Натисніть , щоб змінити.' island: starting-hologram: |- - &aЛаскаво просимо до ChunkBlock - &eРозбийте цей блок, щоб почати + Ласкаво просимо до ChunkBlock + Розбийте цей блок, щоб почати diff --git a/src/main/resources/locales/vi.yml b/src/main/resources/locales/vi.yml index 1473291..e83074a 100644 --- a/src/main/resources/locales/vi.yml +++ b/src/main/resources/locales/vi.yml @@ -3,92 +3,90 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: Bảo Vệ Khối Ma Thuật description: |- - &b Xếp hạng có thể phá - &b khối ma thuật nếu họ - &b có thể phá khối. - hint: "&c Xếp hạng của bạn không thể phá khối ma thuật!" + Xếp hạng có thể phá + khối ma thuật nếu họ + có thể phá khối. + hint: "Xếp hạng của bạn không thể phá khối ma thuật!" CHUNKBLOCK_START_SAFETY: name: An Toàn Khởi Đầu description: |- - &b Ngăn người chơi mới - &b di chuyển trong 1 phút - &b để họ không bị rơi. - hint: "&c Di chuyển bị chặn vì lý do an toàn trong [number] giây nữa!" - free-to-move: "&a Bạn được phép di chuyển tự do. Hãy cẩn thận!" + Ngăn người chơi mới + di chuyển trong 1 phút + để họ không bị rơi. + hint: "Di chuyển bị chặn vì lý do an toàn trong [number] giây nữa!" + free-to-move: "Bạn được phép di chuyển tự do. Hãy cẩn thận!" CHUNKBLOCK_BOSSBAR: - name: Thanh Boss - description: |- - &b Hiển thị thanh trạng thái - &b cho mỗi giai đoạn. + name: Thanh Boss + description: |- + Hiển thị thanh trạng thái + cho mỗi giai đoạn. CHUNKBLOCK_ACTIONBAR: name: Thanh Hành Động (Action Bar) description: |- - &b Hiển thị trạng thái - &b cho mỗi giai đoạn - &b trên Thanh Hành Động. + Hiển thị trạng thái + cho mỗi giai đoạn + trên Thanh Hành Động. chunkblock: bossbar: title: Khối còn lại - status: '&a Khối pha &b [done] &d / &b [total]' + status: 'Khối pha [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c Boss Bar không hoạt động cho hòn đảo này' + not-active: 'Boss Bar không hoạt động cho hòn đảo này' actionbar: - status: "&a Giai đoạn: &b [phase-name] &d | &a Khối: &b [done] &d / &b [total] &d | &a Tiến độ: &b [percent-done]" - not-active: "&c Thanh hành động không hoạt động cho hòn đảo này" + status: "Giai đoạn: [phase-name] | Khối: [done] / [total] | Tiến độ: [percent-done]" + not-active: "Thanh hành động không hoạt động cho hòn đảo này" commands: admin: setcount: parameters: description: chỉnh số đếm khối của người chơi - set: '&a Số đếm khối của [name] được đặt thành [number]' - set-lifetime: '&a Bộ đếm thời gian tồn tại của [name] được đặt thành [number]' + set: 'Số đếm khối của [name] được đặt thành [number]' + set-lifetime: 'Bộ đếm thời gian tồn tại của [name] được đặt thành [number]' setchest: parameters: <độ hiếm> description: thêm rương đang nhìn vào một giai đoạn với độ hiếm được chỉ định - chest-is-empty: '&c Rương đó trống nên không thể thêm vào' - unknown-phase: '&c Giai đoạn chưa biết. Dùng TAB để xem chúng' - unknown-rarity: '&c Độ hiếm chưa biết. Sử dụng COMMON, UNCOMMON, RARE hoặc EPIC' - look-at-chest: '&c Nhìn vào một cái rương đầy để đặt nó' - only-single-chest: '&c Chỉ có thể đặt các rương đơn' - success: '&a Rương được thêm thành công vào giai đoạn' - failure: >- - &c Rương không thể được thêm vào giai đoạn! Xem bảng điều khiển để - biết lỗi + chest-is-empty: 'Rương đó trống nên không thể thêm vào' + unknown-phase: 'Giai đoạn chưa biết. Dùng TAB để xem chúng' + unknown-rarity: 'Độ hiếm chưa biết. Sử dụng COMMON, UNCOMMON, RARE hoặc EPIC' + look-at-chest: 'Nhìn vào một cái rương đầy để đặt nó' + only-single-chest: 'Chỉ có thể đặt các rương đơn' + success: 'Rương được thêm thành công vào giai đoạn' + failure: 'Rương không thể được thêm vào giai đoạn! Xem bảng điều khiển để biết lỗi' sanity: parameters: description: >- hiển thị kiểm tra sự đúng đắn của xác suất giao đoạn lên bảng điều khiển - see-console: '&a Xem bảng điều khiển cho báo cáo' + see-console: 'Xem bảng điều khiển cho báo cáo' count: description: hiển thị số khối và giai đoạn - info: '&a Bạn đang ở trên khối &b [number] trong giai đoạn &a [name]' + info: 'Bạn đang ở trên khối [number] trong giai đoạn [name]' info: - count: '&a Đảo nằm trên khối &b [number] &a trong giai đoạn &b [name]. ' + count: 'Đảo nằm trên khối [number] trong giai đoạn [name]. ' phases: description: hiển thị một danh sách tất cả các giai đoạn - title: '&2 Giai đoạn OneBlock' - name-syntax: '&a [name]' - description-syntax: '&b [number] khối' + title: 'Giai đoạn OneBlock' + name-syntax: '[name]' + description-syntax: '[number] khối' island: bossbar: description: bật thanh Boss giai đoạn - status_on: '&b Bossbar &a bật lên' - status_off: '&b Bossbar &c tắt' + status_on: 'Bossbar bật lên' + status_off: 'Bossbar tắt' actionbar: description: bật/tắt thanh hành động giai đoạn - status_on: "&b Thanh hành động đã &a bật" - status_off: "&b Thanh hành động đã &c tắt" + status_on: "Thanh hành động đã bật" + status_off: "Thanh hành động đã tắt" setcount: parameters: description: đặt số khối thành giá trị đã hoàn thành trước đó - set: '&a Bộ đếm được đặt thành [number].' - too-high: '&cMức tối đa bạn có thể đặt là[number]!' + set: 'Bộ đếm được đặt thành [number].' + too-high: 'Mức tối đa bạn có thể đặt là[number]!' respawn-block: description: Block ma thuật hồi sinh trong các tình huống khi nó biến mất - block-exist: '&a Khối tồn tại, không yêu cầu phản hồi. ' - block-respawned: '&a Chặn hồi sinh.' + block-exist: 'Khối tồn tại, không yêu cầu phản hồi. ' + block-respawned: 'Chặn hồi sinh.' phase: insufficient-level: Cấp đảo của bạn quá thấp để thực thi! Nó phải là [number]. insufficient-funds: Tài chính của bạn quá thấp để thực thi! Nó phải là [number]. @@ -100,16 +98,16 @@ chunkblock: my-island-phase-default: Không xác định gui: titles: - phases: '&0&l Giai đoạn OneBlock' + phases: 'Giai đoạn OneBlock' buttons: previous: - name: '&f&l Trang trước' - description: '&7 Chuyển sang trang [number]' + name: 'Trang trước' + description: 'Chuyển sang trang [number]' next: - name: '&f&l Trang tiếp theo' + name: 'Trang tiếp theo' description: '& Chuyển sang trang [number]' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -118,20 +116,20 @@ chunkblock: [level] [permission] [blocks] - starting-block: '&7 Bắt đầu sau khi phá vỡ &e [number] khối.' - biome: '&7 Biome: &e [biome]' - bank: '&7 Yêu cầu 7e $[number] &7 trong tài khoản ngân hàng.' - economy: '&7 Yêu cầu &e $[number] &7 trong tài khoản người chơi.' - level: '&7 Yêu cầu &e[number] &7 cấp đảo.' - permission: '&7 Yêu cầu `&e[permission]&7` quyền.' - blocks-prefix: '&7 Khối trong giai đoạn -' - blocks: '&e [name], ' + starting-block: 'Bắt đầu sau khi phá vỡ [number] khối.' + biome: 'Biome: [biome]' + bank: 'Yêu cầu 7e $[number] trong tài khoản ngân hàng.' + economy: 'Yêu cầu $[number] trong tài khoản người chơi.' + level: 'Yêu cầu [number] cấp đảo.' + permission: 'Yêu cầu `[permission]` quyền.' + blocks-prefix: 'Khối trong giai đoạn -' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e Bấm &7 để xem trang trước.' - click-to-next: '&e Bấm &7 để xem trang tiếp theo.' - click-to-change: '&e Bấm &7 để thay đổi.' + click-to-previous: 'Bấm để xem trang trước.' + click-to-next: 'Bấm để xem trang tiếp theo.' + click-to-change: 'Bấm để thay đổi.' island: starting-hologram: |- - &aChào mừng đến với OneBlock - &eĐập khối này để bắt đầu + Chào mừng đến với OneBlock + Đập khối này để bắt đầu diff --git a/src/main/resources/locales/zh-CN.yml b/src/main/resources/locales/zh-CN.yml index 934a27a..c05eb39 100644 --- a/src/main/resources/locales/zh-CN.yml +++ b/src/main/resources/locales/zh-CN.yml @@ -3,108 +3,108 @@ protection: CHUNKBLOCK_MAGIC_BLOCK: name: 魔法方块保护 description: |- - &b 如果玩家可以破坏方块, - &b 则该等级可以破坏 - &b 魔法方块。 - hint: "&c 您的等级无法破坏魔法方块!" + 如果玩家可以破坏方块, + 则该等级可以破坏 + 魔法方块。 + hint: "您的等级无法破坏魔法方块!" CHUNKBLOCK_START_SAFETY: name: 初始安全保护 description: |- - &b 阻止新玩家在1分钟内 - &b 移动,以防他们跌落。 - hint: "&c 出于安全考虑,移动已被阻止 [number] 秒!" - free-to-move: "&a 您可以自由移动了。请小心!" + 阻止新玩家在1分钟内 + 移动,以防他们跌落。 + hint: "出于安全考虑,移动已被阻止 [number] 秒!" + free-to-move: "您可以自由移动了。请小心!" CHUNKBLOCK_BOSSBAR: - name: Boss 血条 - description: |- - &b 为每个阶段 - &b 显示一个状态条。 + name: Boss 血条 + description: |- + 为每个阶段 + 显示一个状态条。 CHUNKBLOCK_ACTIONBAR: name: 动作栏 description: |- - &b 在动作栏中 - &b 显示每个阶段 - &b 的状态。 + 在动作栏中 + 显示每个阶段 + 的状态。 chunkblock: bossbar: title: 剩余的块 - status: '&a 相位块&b [done] &d / &b [total]' + status: '相位块 [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c 老板酒吧对这个岛不活跃' + not-active: '老板酒吧对这个岛不活跃' actionbar: - status: "&a 阶段: &b [phase-name] &d | &a 方块数: &b [done] &d / &b [total] &d | &a 进度: &b [percent-done]" - not-active: "&c 该岛屿的动作栏未激活" + status: "阶段: [phase-name] | 方块数: [done] / [total] | 进度: [percent-done]" + not-active: "该岛屿的动作栏未激活" commands: admin: setcount: parameters: <玩家名称> <数量> description: 设置玩家挖掘的方块数 - set: '&a [name] 挖掘的方块数已设置为 [number]' - set-lifetime: '&a [name] 的重置次数已设置为 [number]' + set: '[name] 挖掘的方块数已设置为 [number]' + set-lifetime: '[name] 的重置次数已设置为 [number]' setchest: parameters: <阶段> <稀有度> description: 将您光标指向的箱子添加到一个阶段中, 并选择稀有度 - chest-is-empty: '&c 该箱子无法添加, 因为它是空的' - unknown-phase: '&c 未知阶段. 用 Tab 补全来查看所有阶段' - unknown-rarity: '&c 未知稀有度. 可使用的有 COMMON, UNCOMMON, RARE 或 EPIC' - look-at-chest: '&c 将光标指向一个包含物品的箱子来设置它' - only-single-chest: '&c 只能设置单个箱子' - success: '&a 成功将箱子添加到该阶段' - failure: '&c 无法添加箱子到该阶段! 报错已在后台生成' + chest-is-empty: '该箱子无法添加, 因为它是空的' + unknown-phase: '未知阶段. 用 Tab 补全来查看所有阶段' + unknown-rarity: '未知稀有度. 可使用的有 COMMON, UNCOMMON, RARE 或 EPIC' + look-at-chest: '将光标指向一个包含物品的箱子来设置它' + only-single-chest: '只能设置单个箱子' + success: '成功将箱子添加到该阶段' + failure: '无法添加箱子到该阶段! 报错已在后台生成' sanity: parameters: <阶段> description: 在后台生成一份关于各阶段所占百分比的完整报告 - see-console: '&a 报告已在后台生成' + see-console: '报告已在后台生成' count: description: 显示方块数量和阶段 - info: '&a 您当前挖掘的方块数量是 &b [number], 为 &a [name] 阶段' + info: '您当前挖掘的方块数量是 [number], 为 [name] 阶段' info: - count: '&a 岛位于 &b [name] &a 阶段的 &b [number]&a 区块。生命周期计数 &b [lifetime] &a。' + count: '岛位于 [name] 阶段的 [number] 区块。生命周期计数 [lifetime] ' phases: description: 显示所有阶段的列表 - title: '&2 OneBlock 阶段' - name-syntax: '&a [name]' - description-syntax: '&b 挖掘了 [number] 个方块' + title: 'OneBlock 阶段' + name-syntax: '[name]' + description-syntax: '挖掘了 [number] 个方块' island: bossbar: description: 切换相位栏 - status_on: '&b Bossbar turned &a on' - status_off: '&b Bossbar turned &c off' + status_on: 'Bossbar turned on' + status_off: 'Bossbar turned off' actionbar: description: 切换阶段动作栏 - status_on: "&b 动作栏已 &a 开启" - status_off: "&b 动作栏已 &c 关闭" + status_on: "动作栏已 开启" + status_off: "动作栏已 关闭" setcount: parameters: description: 将块计数设置为先前完成的值 - set: '&a 数量设置为 [number].' - too-high: '&c 你最大只能设置 [number]!' + set: '数量设置为 [number].' + too-high: '你最大只能设置 [number]!' respawn-block: description: 在魔法块消失的情况下重生 - block-exist: '&a 块存在,不需要重生。我给你标记了。' - block-respawned: '&a 块重生。' + block-exist: '块存在,不需要重生。我给你标记了。' + block-respawned: '块重生。' phase: - insufficient-level: '&c 岛屿等级过低, 无法执行此操作! 等级必须达到 [number].' - insufficient-funds: '&c 余额不足, 无法执行此操作! 余额应多于 [number].' - insufficient-bank-balance: '&c 岛屿银行余额不足, 无法执行此操作! 余额应多于 [number].' - insufficient-permission: '&c 在获得 [name] 许可之前,您不能继续操作!' - cooldown: '&c [number] 秒后即可进入下一阶段!' + insufficient-level: '岛屿等级过低, 无法执行此操作! 等级必须达到 [number].' + insufficient-funds: '余额不足, 无法执行此操作! 余额应多于 [number].' + insufficient-bank-balance: '岛屿银行余额不足, 无法执行此操作! 余额应多于 [number].' + insufficient-permission: '在获得 [name] 许可之前,您不能继续操作!' + cooldown: '[number] 秒后即可进入下一阶段!' placeholders: infinite: 无限 my-island-phase-default: 未知 gui: titles: - phases: '&0&l OneBlock 阶段' + phases: 'OneBlock 阶段' buttons: previous: - name: '&f&l 上一页' - description: '&7 切换到[number]页' + name: '上一页' + description: '切换到[number]页' next: - name: '&f&l 下一页' - description: '&7 切换到[number]页' + name: '下一页' + description: '切换到[number]页' phase: - name: '&f&l [phase]' + name: '[phase]' description: |- [starting-block] [biome] @@ -112,20 +112,20 @@ chunkblock: [economy] [level] [permission] - starting-block: '&7 在破坏 &e [number] 块后开始。' - biome: '&7 生物群落:&e [biome]' - bank: '&7 需要银行帐户中有 &e $[number] &7。' - economy: '&7 需要玩家帐户中有 &e $[number] &7。' - level: '&7 需要 &e [number] &7 岛屿等级。' - permission: '&7 需要 `&e[permission]&7` 权限。' - blocks-prefix: '&7 阶段块 - ' - blocks: '&e [name], ' + starting-block: '在破坏 [number] 块后开始。' + biome: '生物群落: [biome]' + bank: '需要银行帐户中有 $[number] ' + economy: '需要玩家帐户中有 $[number] ' + level: '需要 [number] 岛屿等级。' + permission: '需要 `[permission]` 权限。' + blocks-prefix: '阶段块 - ' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e 单击&7 查看上一页。' - click-to-next: '&e 单击 &7 查看下一页。' - click-to-change: '&e 单击 &7 进行更改。' + click-to-previous: '单击 查看上一页。' + click-to-next: '单击 查看下一页。' + click-to-change: '单击 进行更改。' island: starting-hologram: |- - &a欢迎来到 ChunkBlock - &e破坏此方块以开始 + 欢迎来到 ChunkBlock + 破坏此方块以开始 diff --git a/src/main/resources/locales/zh-TW.yml b/src/main/resources/locales/zh-TW.yml index f6c40ce..e442ca9 100644 --- a/src/main/resources/locales/zh-TW.yml +++ b/src/main/resources/locales/zh-TW.yml @@ -7,156 +7,156 @@ protection: flags: CHUNKBLOCK_MAGIC_BLOCK: name: 魔法方塊保護 - description: '&b 如果玩家可以破壞方塊, + description: '如果玩家可以破壞方塊, - &b 則該等級可以破壞 + 則該等級可以破壞 - &b 魔法方塊。' - hint: '&c 你的等級無法破壞魔法方塊!' + 魔法方塊。' + hint: '你的等級無法破壞魔法方塊!' CHUNKBLOCK_START_SAFETY: name: 初始安全保護 - description: '&b 阻止新玩家在1分鐘內 + description: '阻止新玩家在1分鐘內 - &b 移動,以防他們跌落。' - hint: '&c 出於安全考慮,移動已被阻止 [number] 秒!' - free-to-move: '&a 你可以自由移動了,請小心!' + 移動,以防他們跌落。' + hint: '出於安全考慮,移動已被阻止 [number] 秒!' + free-to-move: '你可以自由移動了,請小心!' CHUNKBLOCK_BOSSBAR: name: Boss 血條 - description: '&b 為每個階段 + description: '為每個階段 - &b 顯示一個狀態條。' + 顯示一個狀態條。' CHUNKBLOCK_ACTIONBAR: name: 動作欄 - description: '&b 在動作欄中 + description: '在動作欄中 - &b 顯示每個階段 + 顯示每個階段 - &b 的狀態。' + 的狀態。' CHUNKBLOCK_CLAIM_CHUNKS: name: 認領區塊 - description: '&b 可花費島嶼的等級額度 + description: '可花費島嶼的等級額度 - &b 認領新區塊 + 認領新區塊 - &b 的身分組。' - hint: '&c 你的身分組無法為這座島嶼認領區塊!' + 的身分組。' + hint: '你的身分組無法為這座島嶼認領區塊!' chunkblock: bossbar: title: 剩餘的塊 - status: '&a 階段方塊&b [done] &d / &b [total]' + status: '階段方塊 [done] / [total]' color: RED style: SEGMENTED_20 - not-active: '&c 此島嶼的 Boss 血條未啟用' + not-active: '此島嶼的 Boss 血條未啟用' actionbar: - status: '&a 階段: &b [phase-name] &d | &a 方塊數: &b [done] &d / &b [total] &d | &a 進度: &b [percent-done]' - not-active: '&c 該島嶼的動作欄未啟用' + status: '階段: [phase-name] | 方塊數: [done] / [total] | 進度: [percent-done]' + not-active: '該島嶼的動作欄未啟用' commands: admin: setcount: parameters: <名稱> <計數> description: 設定玩家的方塊數量 - set: '&a [name] 的計數設定為 [number]' - set-lifetime: '&a [name] 的生命週期計數設定為 [number]' + set: '[name] 的計數設定為 [number]' + set-lifetime: '[name] 的生命週期計數設定為 [number]' setchest: parameters: <階段> <稀有> description: 將所看的箱子放在指定稀有度的階段 - chest-is-empty: '&c該箱子為空,因此無法添加' - unknown-phase: '&c未知階段。使用 Tab 鍵自動補全查看' - unknown-rarity: '&c未知稀有。使用COMMON,UNCOMMON,RARE或EPIC' - look-at-chest: '&c請看向裝滿的箱子' - only-single-chest: '&c只能設定單一箱子' - success: '&a 箱子成功添加' - failure: '&c 無法將箱子加入該階段! 請參閱控制台以獲取錯誤' + chest-is-empty: '該箱子為空,因此無法添加' + unknown-phase: '未知階段。使用 Tab 鍵自動補全查看' + unknown-rarity: '未知稀有。使用COMMON,UNCOMMON,RARE或EPIC' + look-at-chest: '請看向裝滿的箱子' + only-single-chest: '只能設定單一箱子' + success: '箱子成功添加' + failure: '無法將箱子加入該階段! 請參閱控制台以獲取錯誤' sanity: parameters: <階段> description: 在主控台顯示各階段機率的健全性檢查 - see-console: '&a請參閱控制台以獲取報告' + see-console: '請參閱控制台以獲取報告' bypass: description: 切換你自己是否受區塊鎖定限制 - 'off': '&a 區塊鎖定已重新套用在你身上。' - 'on': '&a 你現在可以無視區塊鎖定,且邊界視覺效果對你隱藏。' + 'off': '區塊鎖定已重新套用在你身上。' + 'on': '你現在可以無視區塊鎖定,且邊界視覺效果對你隱藏。' chunks: description: 查看玩家已解鎖的區塊,或將其重新鎖回起始狀態 - info: '&a [name]:&b [number]&a/&b[max] &a 個區塊,已花費 &b [spent] &a 點等級,剩餘額度 &b [credit] &a 點。' + info: '[name]: [number]/[max] 個區塊,已花費 [spent] 點等級,剩餘額度 [credit] 點。' parameters: <玩家> [reset] - reset: '&a [name] 的區塊已重新鎖回只剩中心區塊。' + reset: '[name] 的區塊已重新鎖回只剩中心區塊。' phases: description: 開啟階段順序編輯器 - no-index: '&c 尚未載入階段索引,因此無法重新排序階段' - save-failed: '&c 無法儲存階段順序!請查看主控台錯誤訊息' - saved: '&a 階段順序已儲存並套用' + no-index: '尚未載入階段索引,因此無法重新排序階段' + save-failed: '無法儲存階段順序!請查看主控台錯誤訊息' + saved: '階段順序已儲存並套用' gui: cancel-word: cancel - disabled: '&c 已停用' - drop-at-end: '&a 放到最後' - drop-here: '&e 點擊以放置於此' - enter-length: '&e 請在聊天室輸入 &a [name] &e 的新長度-目前為 &b [number] &e 個方塊。輸入 &c cancel &e 可保持不變。' - held: '&e 移動中:[name]' - info-title: '&f 使用方式' - instructions: '&7 點擊一個階段以拿起它,\n&7 再點擊要放置的位置。\n&7 右鍵點擊可切換\n&7 階段的啟用/停用。' - invalid-length: '&c 長度必須是大於 0 的整數' - length: '&7 長度:&b [number]' - length-cancelled: '&c 長度未變更' - phase-name: '&a [name]' - pick-up: '&e 點擊以移動' - put-back: '&e 點擊以放回' - repeat: '&7 最後一個階段結束後,計數將跳至 &b [number]' - set-length: '&e Shift + 左鍵點擊以設定長度' - start: '&7 起始:&b [number]' - title: '&2 階段順序' - toggle: '&e 右鍵點擊以切換' - version-locked: '&c 需要 Minecraft [version]+' + disabled: '已停用' + drop-at-end: '放到最後' + drop-here: '點擊以放置於此' + enter-length: '請在聊天室輸入 [name] 的新長度-目前為 [number] 個方塊。輸入 cancel 可保持不變。' + held: '移動中:[name]' + info-title: '使用方式' + instructions: '點擊一個階段以拿起它,\n 再點擊要放置的位置。\n 右鍵點擊可切換\n 階段的啟用/停用。' + invalid-length: '長度必須是大於 0 的整數' + length: '長度: [number]' + length-cancelled: '長度未變更' + phase-name: '[name]' + pick-up: '點擊以移動' + put-back: '點擊以放回' + repeat: '最後一個階段結束後,計數將跳至 [number]' + set-length: 'Shift + 左鍵點擊以設定長度' + start: '起始: [number]' + title: '階段順序' + toggle: '右鍵點擊以切換' + version-locked: '需要 Minecraft [version]+' count: description: 顯示方塊數量與所在階段 - info: '&a你目前在 &a[name] &r階段,已破壞 &b[number] &r個方塊' + info: '你目前在 [name] 階段,已破壞 [number] 個方塊' info: - count: '&a 島位於 &b [names] &a 階段的 &b [number]&a 區塊。生命週期計數 &b [lifetime] &a。' + count: '島位於 [names] 階段的 [number] 區塊。生命週期計數 [lifetime] ' phases: description: 顯示所有階段的列表 - title: '&2 ChunkBlock 階段' - name-syntax: '&a [name]' - description-syntax: '&b [number]塊' + title: 'ChunkBlock 階段' + name-syntax: '[name]' + description-syntax: '[number]塊' island: bossbar: description: 切換階段狀態列 - status_on: '&b Bossbar&a 打開' - status_off: '&b Bossbar&c 關閉' + status_on: 'Bossbar 打開' + status_off: 'Bossbar 關閉' actionbar: description: 切換階段動作欄 - status_on: '&b 動作欄已 &a 開啟' - status_off: '&b 動作欄已 &c 關閉' + status_on: '動作欄已 開啟' + status_off: '動作欄已 關閉' setcount: parameters: <計數> description: 將區塊計數設定為之前完成的值 - set: '&a 計數設定為 [number]。' - too-high: '&c 你可以設定的最大值是 [number]!' + set: '計數設定為 [number]。' + too-high: '你可以設定的最大值是 [number]!' respawn-block: description: 在魔法塊消失的情況下重生 - block-exist: '&a 塊存在,不需要重生。我給你標記了。' - block-respawned: '&a 塊重生。' + block-exist: '塊存在,不需要重生。我給你標記了。' + block-respawned: '塊重生。' chunks: description: 顯示你已解鎖的區塊與你的領土地圖 phase: - insufficient-level: '&c 你的島嶼等級太低,無法繼續!必須是[number]。' - insufficient-funds: '&c 你的資金太低,無法繼續!至少需要 [number]。' - insufficient-bank-balance: '&c 島上銀行餘額太低,無法繼續!必須是[number]。' - insufficient-permission: '&c 在獲得 [name] 許可之前,你不能繼續操作!' - cooldown: '&c [number] 秒後即可進入下一階段!' + insufficient-level: '你的島嶼等級太低,無法繼續!必須是[number]。' + insufficient-funds: '你的資金太低,無法繼續!至少需要 [number]。' + insufficient-bank-balance: '島上銀行餘額太低,無法繼續!必須是[number]。' + insufficient-permission: '在獲得 [name] 許可之前,你不能繼續操作!' + cooldown: '[number] 秒後即可進入下一階段!' placeholders: infinite: 無窮 my-island-phase-default: 未知 gui: titles: - phases: '&0&l ChunkBlock 階段' + phases: 'ChunkBlock 階段' buttons: previous: - name: '&f&l 上一頁' - description: '&7 切換到[number]頁' + name: '上一頁' + description: '切換到[number]頁' next: - name: '&f&l 下一頁' - description: '&7 切換到[number]頁' + name: '下一頁' + description: '切換到[number]頁' phase: - name: '&f&l [階段]' + name: '[階段]' description: '[starting-block] [biome] @@ -168,39 +168,51 @@ chunkblock: [level] [permission]' - starting-block: '&7 在破壞 &e [number] 區塊後開始。' - biome: '&7 生態域:&e [biome]' - bank: '&7 需要銀行帳戶中有 &e $[number] &7。' - economy: '&7 需要玩家帳號中有 &e $[number] &7。' - level: '&7 需要 &e [number] &7 島嶼等級。' - permission: '&7 需要 `&e[permission]&7` 權限。' - blocks-prefix: '&7 階段塊 - ' - blocks: '&e [name], ' + starting-block: '在破壞 [number] 區塊後開始。' + biome: '生態域: [biome]' + bank: '需要銀行帳戶中有 $[number] ' + economy: '需要玩家帳號中有 $[number] ' + level: '需要 [number] 島嶼等級。' + permission: '需要 `[permission]` 權限。' + blocks-prefix: '階段塊 - ' + blocks: '[name], ' wrap-at: '50' tips: - click-to-previous: '&e 點選&7 查看上一頁。' - click-to-next: '&e 點選&7 查看下一頁。' - click-to-change: '&e 點選 &7 進行更改。' + click-to-previous: '點選 查看上一頁。' + click-to-next: '點選 查看下一頁。' + click-to-change: '點選 進行更改。' island: - starting-hologram: '&a歡迎來到 ChunkBlock + starting-hologram: '歡迎來到 ChunkBlock - 打破此區塊以開始(&E)' + 打破此區塊以開始()' chunks: - beyond-limit: '&c 那個區塊超出你的島嶼保護範圍。' - claim-confirm: '&e 要花費 &b [cost] &e 點等級額度認領這個區塊嗎?認領後你將剩下 &b [after] &e 點額度。&6請潛行並在 &e &b [seconds]s &e 內再次撞擊邊界以確認。' - claim-hint: '&e 撞擊邊界即可花費 &b [cost] &e 點等級額度認領這個區塊!你目前有 &b [credit] &e 點額度。' - claimed: '&a &l 區塊已認領!&r&a 你的島嶼現在有 &b [number] &a 個區塊。剩餘額度:&b [credit] &a 點等級。' - credit: '&a 你還可以認領 &b [count] &a 個區塊!前往你的邊界,朝想擴張的方向撞擊它。' - ejected: '&c 你所在的區塊被重新鎖定,因此你已被移動到安全地點。' - entry-denied: '&c 那個區塊已被鎖定。' - info: '&a 區塊:&b [unlocked]&a/&b[max]&a。額度:&b [credit] &a 點等級 — 認領一個區塊需要 &b [cost]&a。' - locked: '&c 你無法碰觸那裡 — 該區塊已被鎖定。' + beyond-limit: '那個區塊超出你的島嶼保護範圍。' + claim-confirm: '要花費 [cost] 點等級額度認領這個區塊嗎?認領後你將剩下 [after] 點額度。請潛行並在 [seconds]s 內再次撞擊邊界以確認。' + claim-hint: '撞擊邊界即可花費 [cost] 點等級額度認領這個區塊!你目前有 [credit] 點額度。' + claimed: '區塊已認領!你的島嶼現在有 [number] 個區塊。剩餘額度: [credit] 點等級。' + credit: '你還可以認領 [count] 個區塊!前往你的邊界,朝想擴張的方向撞擊它。' + dialog: + close: '關閉' + tooltip: + center: '中心區塊 — 你的魔法方塊就在這裡。' + owned: '區塊 [x], [z] — 你的。' + claimable: '區塊 [x], [z] — 可用 [cost] 點等級額度認領。前往該邊界並撞擊它。' + no-credit: '區塊 [x], [z] — 需要 [cost] 點等級額度。你還缺 [needed] 點額度。' + locked: '區塊 [x], [z] — 已鎖定。持續向外認領才能到達。' + you-are-here: '你正站在這裡。' + ejected: '你所在的區塊被重新鎖定,因此你已被移動到安全地點。' + entry-denied: '那個區塊已被鎖定。' + info: '區塊: [unlocked]/[max]。額度: [credit] 點等級 — 認領一個區塊需要 [cost]' + locked: '你無法碰觸那裡 — 該區塊已被鎖定。' map: - legend: '&a ■ 你的 &e ▣ 可認領(每個 [cost] 點等級) &7 □ 已鎖定' - row: '&a [row]' - title: '&a 你的島嶼領土([unlocked]/[max] 個區塊):' - you-are-here: '&b 你目前站在標記的區塊上。' - max-reached: '&d 你的島嶼已達到最大尺寸 [number] 個區塊!' - no-credit: '&c 你還需要 &b [needed] &c 點等級額度才能認領這個區塊。' - relocked: '&c 你的島嶼等級下降 — [count] 個區塊已重新鎖定(由最新認領的開始)。提升等級即可重新奪回!' - sethome-denied: '&c 你不能在已鎖定的區塊內設定重生點。' + legend: '■ 你的 ▣ 可認領(每個 [cost] 點等級) □ 已鎖定 ◎ 中心 ◆ 你' + row: '[row]' + title: '你的島嶼領土([unlocked]/[max] 個區塊):' + you-are-here: '你目前站在標記的區塊上。' + max-reached: '你的島嶼已達到最大尺寸 [number] 個區塊!' + no-credit: '你還需要 [needed] 點等級額度才能認領這個區塊。' + relocked: '你的島嶼等級下降 — [count] 個區塊已重新鎖定(由最新認領的開始)。提升等級即可重新奪回!' + ring-broadcast: '[name] 的島嶼已完成第 [ring] 圈 — [chunks] 個區塊,而且還在成長!' + ring-complete: '第 [ring] 圈完成!島嶼周圍的整圈都是你的了 — 總共 [chunks] 個區塊。' + rings: '已完成圈數: [rings] / [max]' + sethome-denied: '你不能在已鎖定的區塊內設定重生點。' diff --git a/src/test/java/world/bentobox/chunkblock/chunks/ChunkMapTest.java b/src/test/java/world/bentobox/chunkblock/chunks/ChunkMapTest.java new file mode 100644 index 0000000..667a9e3 --- /dev/null +++ b/src/test/java/world/bentobox/chunkblock/chunks/ChunkMapTest.java @@ -0,0 +1,174 @@ +package world.bentobox.chunkblock.chunks; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import java.util.List; + +import org.bukkit.Location; +import org.bukkit.World; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import net.kyori.adventure.text.Component; +import net.kyori.adventure.text.TextComponent; +import net.kyori.adventure.text.format.NamedTextColor; +import world.bentobox.chunkblock.ChunkBlock; +import world.bentobox.chunkblock.CommonTestSetup; +import world.bentobox.chunkblock.Settings; +import world.bentobox.chunkblock.chunks.ChunkMap.Cell; +import world.bentobox.chunkblock.chunks.ChunkMap.Kind; +import world.bentobox.chunkblock.dataobjects.OneBlockIslands; +import world.bentobox.chunkblock.listeners.BlockListener; + +/** + * Tests the territory grid behind both maps of {@code /ch chunks} — what each chunk is, and + * the glyph it is drawn with. + */ +class ChunkMapTest extends CommonTestSetup { + + @Mock + private ChunkBlock addon; + @Mock + private Location playerLocation; + + private OneBlockIslands data; + private ChunkManager cm; + private long level; + + @Override + @BeforeEach + public void setUp() throws Exception { + super.setUp(); + Settings settings = new Settings(); + when(addon.getSettings()).thenReturn(settings); + data = new OneBlockIslands("test"); + when(addon.getOneBlocksIsland(island)).thenReturn(data); + when(addon.getBlockListener()).thenReturn(mock(BlockListener.class)); + level = 0; + when(addon.getIslandLevel(island)).thenAnswer(i -> level); + cm = new ChunkManager(addon); + when(addon.getChunkManager()).thenReturn(cm); + + // Island center chunk-centered at chunk (0, 0) + when(island.getCenter()).thenReturn(location); + when(island.getWorld()).thenReturn(world); + when(location.getBlockX()).thenReturn(8); + when(location.getBlockZ()).thenReturn(8); + when(island.getProtectionRange()).thenReturn(240); + // The player's own location is a separate mock, so moving them leaves the island put + when(playerLocation.getBlockX()).thenReturn(8); + when(playerLocation.getBlockZ()).thenReturn(8); + when(playerLocation.getWorld()).thenReturn(world); + when(world.getName()).thenReturn("chunkblock_world"); + } + + @Test + void testFreshIslandOffersTheChunksTouchingTheCenter() { + List cells = ChunkMap.cells(addon, island, playerLocation, 1); + assertEquals(9, cells.size()); + assertEquals(Kind.CENTER, kindOf(cells, 0, 0)); + // Claims run along the edges, so the four side-by-side chunks are the frontier... + for (int[] offset : new int[][] { { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 } }) { + assertEquals(Kind.CLAIMABLE, kindOf(cells, offset[0], offset[1]), + "chunk " + offset[0] + "," + offset[1]); + } + // ...and the corners, which touch nothing but a diagonal, are not + for (int[] offset : new int[][] { { 1, 1 }, { -1, 1 }, { -1, -1 }, { 1, -1 } }) { + assertEquals(Kind.LOCKED, kindOf(cells, offset[0], offset[1]), "chunk " + offset[0] + "," + offset[1]); + } + } + + @Test + void testClaimedChunksAreOwnedAndTheFrontierMovesOut() { + level = 8; + for (int[] offset : new int[][] { { 1, 0 }, { 0, 1 }, { -1, 0 }, { 0, -1 }, { 1, 1 }, { -1, 1 }, { -1, -1 }, + { 1, -1 } }) { + cm.claim(island, offset[0], offset[1]); + } + List cells = ChunkMap.cells(addon, island, playerLocation, 2); + assertEquals(25, cells.size()); + assertEquals(Kind.CENTER, kindOf(cells, 0, 0)); + assertEquals(Kind.OWNED, kindOf(cells, 1, 0)); + assertEquals(Kind.CLAIMABLE, kindOf(cells, 2, 0)); + } + + @Test + void testChunksOutOfReachAreLocked() { + level = 8; + cm.claim(island, 1, 0); + List cells = ChunkMap.cells(addon, island, playerLocation, 2); + assertEquals(Kind.LOCKED, kindOf(cells, -2, -2)); + assertEquals(Kind.CLAIMABLE, kindOf(cells, 2, 0)); + } + + @Test + void testThePlayersOwnChunkIsMarked() { + // Stand one chunk east of the center + when(playerLocation.getBlockX()).thenReturn(24); + List cells = ChunkMap.cells(addon, island, playerLocation, 1); + assertTrue(cellAt(cells, 1, 0).here()); + assertFalse(cellAt(cells, 0, 0).here()); + // The mark rides on top of what the chunk is, it does not replace it + assertEquals(Kind.CLAIMABLE, kindOf(cells, 1, 0)); + } + + @Test + void testAPlayerInAnotherWorldMarksNoChunk() { + World elsewhere = mock(World.class); + when(elsewhere.getName()).thenReturn("somewhere_else"); + when(playerLocation.getWorld()).thenReturn(elsewhere); + assertTrue(ChunkMap.cells(addon, island, playerLocation, 1).stream().noneMatch(Cell::here)); + } + + @Test + void testCellsAreOrderedRowByRowSoTheGridComesOutNorthUp() { + List cells = ChunkMap.cells(addon, island, playerLocation, 1); + // Both maps lay the cells out in list order, filling each row from west to east + assertEquals(new Cell(-1, -1, Kind.LOCKED, false), cells.get(0)); + assertEquals(new Cell(0, -1, Kind.CLAIMABLE, false), cells.get(1)); + assertEquals(new Cell(-1, 0, Kind.CLAIMABLE, false), cells.get(3)); + assertEquals(new Cell(1, 1, Kind.LOCKED, false), cells.get(8)); + } + + @Test + void testGlyphsAreColouredComponentsNotColourCodes() { + assertGlyph("■", NamedTextColor.GREEN, new Cell(1, 0, Kind.OWNED, false)); + assertGlyph("▣", NamedTextColor.YELLOW, new Cell(1, 0, Kind.CLAIMABLE, false)); + assertGlyph("□", NamedTextColor.GRAY, new Cell(1, 0, Kind.LOCKED, false)); + assertGlyph("◎", NamedTextColor.GOLD, new Cell(0, 0, Kind.CENTER, false)); + } + + @Test + void testTheChunkThePlayerIsOnKeepsItsOutlineInTheMarkerColour() { + assertGlyph("◉", NamedTextColor.AQUA, new Cell(0, 0, Kind.CENTER, true)); + assertGlyph("◆", NamedTextColor.AQUA, new Cell(1, 0, Kind.OWNED, true)); + assertGlyph("◇", NamedTextColor.AQUA, new Cell(3, 3, Kind.LOCKED, true)); + } + + @Test + void testGlyphTextIsMiniMessageSoItCanGoIntoATranslation() { + // Legacy colour codes here would show up raw in a MiniMessage locale line + assertEquals("■", ChunkMap.glyphText(new Cell(1, 0, Kind.OWNED, false))); + assertEquals("◆", ChunkMap.glyphText(new Cell(1, 0, Kind.CLAIMABLE, true))); + } + + private void assertGlyph(String mark, NamedTextColor colour, Cell cell) { + Component glyph = ChunkMap.glyph(cell); + assertEquals(mark, ((TextComponent) glyph).content()); + assertEquals(colour, glyph.color()); + } + + private Cell cellAt(List cells, int dx, int dz) { + return cells.stream().filter(c -> c.dx() == dx && c.dz() == dz).findFirst() + .orElseThrow(() -> new AssertionError("no cell at " + dx + "," + dz)); + } + + private Kind kindOf(List cells, int dx, int dz) { + return cellAt(cells, dx, dz).kind(); + } +} diff --git a/src/test/java/world/bentobox/chunkblock/commands/island/IslandChunksCommandTest.java b/src/test/java/world/bentobox/chunkblock/commands/island/IslandChunksCommandTest.java index 98b7b41..39af0d2 100644 --- a/src/test/java/world/bentobox/chunkblock/commands/island/IslandChunksCommandTest.java +++ b/src/test/java/world/bentobox/chunkblock/commands/island/IslandChunksCommandTest.java @@ -10,6 +10,7 @@ import static org.mockito.Mockito.when; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import java.util.Optional; @@ -69,12 +70,15 @@ public void setUp() throws Exception { // Island center chunk-centered at chunk (0, 0) when(island.getCenter()).thenReturn(location); + when(island.getWorld()).thenReturn(world); + when(world.getName()).thenReturn("chunkblock_world"); when(location.getBlockX()).thenReturn(8); when(location.getBlockZ()).thenReturn(8); when(island.getProtectionRange()).thenReturn(240); // The player's own location is a separate mock, so moving them leaves the island put when(playerLocation.getBlockX()).thenReturn(8); when(playerLocation.getBlockZ()).thenReturn(8); + when(playerLocation.getWorld()).thenReturn(world); when(user.getLocation()).thenReturn(playerLocation); when(user.getWorld()).thenReturn(world); when(im.getIslandAt(playerLocation)).thenReturn(Optional.of(island)); @@ -101,7 +105,7 @@ void testCenterChunkIsMarkedWhenThePlayerStandsOnIt() { List rows = mapRows(); // Fresh island: one claimed chunk, so the map reaches one ring out — 3 x 3 assertEquals(3, rows.size()); - assertEquals("&b◉", middleGlyph(rows.get(1))); + assertEquals("◉", middleGlyph(rows.get(1))); } @Test @@ -110,7 +114,7 @@ void testCenterChunkIsMarkedWhenThePlayerIsElsewhere() { when(playerLocation.getBlockX()).thenReturn(24); assertTrue(command.execute(user, "", List.of())); List rows = mapRows(); - assertEquals("&6◎", middleGlyph(rows.get(1))); + assertEquals("◎", middleGlyph(rows.get(1))); } @Test @@ -125,9 +129,9 @@ void testCenterKeepsItsMarkWhileTerritoryGrows() { // Ring 1 claimed, so the map reaches ring 2 — 5 x 5 assertEquals(5, rows.size()); String center = rows.get(2); - assertEquals("&b◉", middleGlyph(center)); + assertEquals("◉", middleGlyph(center)); // The eight chunks around the center are owned, not confused with the center itself - assertEquals("&a■&b◉&a■", center.substring(center.indexOf("&b◉") - 3, center.indexOf("&b◉") + 6)); + assertEquals(List.of("■", "◉", "■"), glyphs(center).subList(1, 4)); } @Test @@ -159,11 +163,14 @@ private List mapRows() { return rows; } - /** The glyph at the middle of a row, colour code included */ + /** A row split back into its glyphs, each one a MiniMessage colour tag plus its mark */ + private List glyphs(String row) { + return Arrays.stream(row.split("(?=<)")).filter(s -> !s.isEmpty()).toList(); + } + + /** The glyph at the middle of a row, colour tag included */ private String middleGlyph(String row) { - // Every glyph is a two-character colour code plus one character - int glyphs = row.length() / 3; - int middle = (glyphs / 2) * 3; - return row.substring(middle, middle + 3); + List glyphs = glyphs(row); + return glyphs.get(glyphs.size() / 2); } } diff --git a/src/test/java/world/bentobox/chunkblock/panels/ChunksDialogTest.java b/src/test/java/world/bentobox/chunkblock/panels/ChunksDialogTest.java new file mode 100644 index 0000000..8f6735a --- /dev/null +++ b/src/test/java/world/bentobox/chunkblock/panels/ChunksDialogTest.java @@ -0,0 +1,84 @@ +package world.bentobox.chunkblock.panels; + +import static org.junit.jupiter.api.Assertions.assertEquals; +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.mockito.Mockito.mock; +import static org.mockito.Mockito.when; + +import org.bukkit.Location; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mock; + +import world.bentobox.bentobox.api.user.User; +import world.bentobox.chunkblock.ChunkBlock; +import world.bentobox.chunkblock.CommonTestSetup; +import world.bentobox.chunkblock.Settings; +import world.bentobox.chunkblock.chunks.ChunkManager; +import world.bentobox.chunkblock.dataobjects.OneBlockIslands; +import world.bentobox.chunkblock.listeners.BlockListener; + +/** + * Tests how far the dialog map reaches and when it declines to show at all. What each chunk + * is and how it is drawn belongs to the shared grid, and is covered by {@code ChunkMapTest}. + */ +class ChunksDialogTest extends CommonTestSetup { + + @Mock + private User user; + @Mock + private ChunkBlock addon; + @Mock + private Location playerLocation; + + private ChunkManager cm; + private long level; + + @Override + @BeforeEach + public void setUp() throws Exception { + super.setUp(); + Settings settings = new Settings(); + when(addon.getSettings()).thenReturn(settings); + when(addon.getOneBlocksIsland(island)).thenReturn(new OneBlockIslands("test")); + when(addon.getBlockListener()).thenReturn(mock(BlockListener.class)); + level = 0; + when(addon.getIslandLevel(island)).thenAnswer(i -> level); + cm = new ChunkManager(addon); + when(addon.getChunkManager()).thenReturn(cm); + + when(island.getCenter()).thenReturn(location); + when(island.getWorld()).thenReturn(world); + when(location.getBlockX()).thenReturn(8); + when(location.getBlockZ()).thenReturn(8); + when(island.getProtectionRange()).thenReturn(240); + when(playerLocation.getBlockX()).thenReturn(8); + when(playerLocation.getBlockZ()).thenReturn(8); + when(playerLocation.getWorld()).thenReturn(world); + when(user.getLocation()).thenReturn(playerLocation); + when(world.getName()).thenReturn("chunkblock_world"); + } + + @Test + void testAFreshIslandShowsTheRingAroundTheCenter() { + // One claimed chunk, so the map reaches one ring out — 3 x 3 + assertEquals(9, new ChunksDialog(addon, user, island).cells().size()); + } + + @Test + void testMapIsCappedAtTheWidestGridTheDialogHolds() { + when(island.getProtectionRange()).thenReturn(2000); + level = 500; + for (int dx = 1; dx <= 20; dx++) { + cm.claim(island, dx, 0); + } + int width = 2 * ChunksDialog.MAX_RADIUS + 1; + assertEquals(width * width, new ChunksDialog(addon, user, island).cells().size()); + } + + @Test + void testNothingIsShownWhenTheUserIsNotAPlayer() { + when(user.isPlayer()).thenReturn(false); + assertFalse(ChunksDialog.show(addon, user, island)); + } +}