diff --git a/pom.xml b/pom.xml index 9062f41..0487c28 100644 --- a/pom.xml +++ b/pom.xml @@ -107,7 +107,7 @@ dev.padrewin colddev - 1.4.6 + 1.4.9 compile diff --git a/src/main/java/dev/padrewin/coldbits/ColdBits.java b/src/main/java/dev/padrewin/coldbits/ColdBits.java index 4c8d0cf..ff1c933 100644 --- a/src/main/java/dev/padrewin/coldbits/ColdBits.java +++ b/src/main/java/dev/padrewin/coldbits/ColdBits.java @@ -18,7 +18,6 @@ import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.setting.SettingKey; import dev.padrewin.coldbits.util.BitsUtils; -import org.black_ixx.playerpoints.PlayerPointsAPI; import org.bukkit.Bukkit; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.ServicePriority; @@ -30,7 +29,7 @@ public class ColdBits extends ColdPlugin { private static ColdBits instance; - private PlayerPointsAPI api; + private ColdBitsAPI api; private ColdBitsVaultLayer vaultLayer; String ANSI_RESET = "\u001B[0m"; @@ -45,13 +44,14 @@ public class ColdBits extends ColdPlugin { public ColdBits() { super("Cold-Development", "ColdBits", 23639, DataManager.class, LocaleManager.class, null); instance = this; + this.api = new ColdBitsAPI(this); } @Override public void enable() { instance = this; - this.api = new PlayerPointsAPI(this); + this.api = new ColdBitsAPI(this); String name = getDescription().getName(); getLogger().info(""); @@ -191,7 +191,7 @@ public static ColdBits getInstance() { * * @return API instance. */ - public PlayerPointsAPI getAPI() { + public ColdBitsAPI getAPI() { return api; } diff --git a/src/main/java/dev/padrewin/coldbits/commands/BaseBitsCommand.java b/src/main/java/dev/padrewin/coldbits/commands/BaseBitsCommand.java new file mode 100644 index 0000000..cfb57f2 --- /dev/null +++ b/src/main/java/dev/padrewin/coldbits/commands/BaseBitsCommand.java @@ -0,0 +1,19 @@ +package dev.padrewin.coldbits.commands; + +import dev.padrewin.colddev.command.framework.BaseColdCommand; +import dev.padrewin.coldbits.ColdBits; +import dev.padrewin.coldbits.manager.LocaleManager; +import dev.padrewin.coldbits.ColdBitsAPI; + +public abstract class BaseBitsCommand extends BaseColdCommand { + + protected final ColdBitsAPI api; + protected final LocaleManager localeManager; + + public BaseBitsCommand(ColdBits coldBits) { + super(coldBits); + this.api = coldBits.getAPI(); + this.localeManager = coldBits.getManager(LocaleManager.class); + } + +} diff --git a/src/main/java/dev/padrewin/coldbits/commands/BaseCommand.java b/src/main/java/dev/padrewin/coldbits/commands/BaseCommand.java new file mode 100644 index 0000000..1a66724 --- /dev/null +++ b/src/main/java/dev/padrewin/coldbits/commands/BaseCommand.java @@ -0,0 +1,78 @@ +package dev.padrewin.coldbits.commands; + +import dev.padrewin.colddev.command.HelpCommand; +import dev.padrewin.colddev.command.PrimaryCommand; +import dev.padrewin.colddev.command.ReloadCommand; +import dev.padrewin.colddev.command.framework.Argument; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.ColdCommand; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; +import java.util.Optional; +import dev.padrewin.coldbits.ColdBits; +import dev.padrewin.coldbits.setting.SettingKey; +import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; + +public class BaseCommand extends PrimaryCommand { + + private final ColdBits coldBits; + + public BaseCommand(ColdBits coldBits) { + super(coldBits); + this.coldBits = coldBits; + } + + @ColdExecutable + @Override + public void execute(CommandContext context) { + String baseRedirect = SettingKey.BASE_COMMAND_REDIRECT.get(); + if (baseRedirect.trim().isEmpty()) + baseRedirect = "me"; + + CommandSender sender = context.getSender(); + Optional subcommand = this.findCommand(sender, baseRedirect); + if (subcommand.isPresent()) { + subcommand.get().invoke(context); + } else { + this.findCommand(sender, "help").ifPresent(x -> x.invoke(context)); + } + } + + private Optional findCommand(CommandSender sender, String name) { + Argument.SubCommandArgument argument = (Argument.SubCommandArgument) this.getCommandArguments().get(0); + return argument.subCommands().stream() + .filter(x -> x.getName().equalsIgnoreCase(name) || x.getAliases().stream().anyMatch(y -> y.equalsIgnoreCase(name))) + .findFirst() + .filter(x -> !x.isPlayerOnly() || sender instanceof Player); + } + + @Override + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("bits") + .aliases("bits") + .permission("coldbits.basecommand") + .arguments(ArgumentsDefinition.builder() + .optionalSub( + new BroadcastCommand(this.coldBits), + new ExportCommand(this.coldBits), + new GiveAllCommand(this.coldBits), + new GiveCommand(this.coldBits), + new HelpCommand(this.coldBits, this), + new ImportCommand(this.coldBits), + new ImportLegacyCommand(this.coldBits), + new LeadCommand(this.coldBits), + new LookCommand(this.coldBits), + new MeCommand(this.coldBits), + new PayCommand(this.coldBits), + new ReloadCommand(this.coldBits), + new ResetCommand(this.coldBits), + new SetCommand(this.coldBits), + new TakeCommand(this.coldBits), + new VersionCommand(this.coldBits) + )) + .build(); + } + +} diff --git a/src/main/java/dev/padrewin/coldbits/commands/BroadcastCommand.java b/src/main/java/dev/padrewin/coldbits/commands/BroadcastCommand.java index 1bdc1dd..c592f18 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/BroadcastCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/BroadcastCommand.java @@ -1,48 +1,49 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; -import dev.padrewin.coldbits.manager.LocaleManager; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.util.BitsUtils; import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class BroadcastCommand extends BitsCommand { +public class BroadcastCommand extends BaseBitsCommand { - public BroadcastCommand() { - super("broadcast", CommandManager.CommandAliases.BROADCAST); + public BroadcastCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (args.length < 1) { - localeManager.sendMessage(sender, "command-broadcast-usage"); - return; - } - - BitsUtils.getPlayerByName(args[0], player -> { + @ColdExecutable + public void execute(CommandContext context, String target) { + BitsUtils.getPlayerByName(target, player -> { if (player == null) { - localeManager.sendMessage(sender, "unknown-player", StringPlaceholders.of("player", args[0])); + this.localeManager.sendCommandMessage(context.getSender(), "unknown-player", StringPlaceholders.of("player", target)); return; } - int bits = plugin.getAPI().look(player.getFirst()); + int bits = this.api.look(player.getFirst()); for (Player onlinePlayer : Bukkit.getOnlinePlayers()) { - localeManager.sendMessage(onlinePlayer, "command-broadcast-message", StringPlaceholders.builder("player", player.getSecond()) + this.localeManager.sendCommandMessage(onlinePlayer, "command-broadcast-message", StringPlaceholders.builder("player", player.getSecond()) .add("amount", BitsUtils.formatBits(bits)) - .add("currency", localeManager.getCurrencyName(bits)).build()); + .add("currency", this.localeManager.getCurrencyName(bits)).build()); } }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return args.length != 1 ? Collections.emptyList() : BitsUtils.getPlayerTabComplete(args[0]); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("broadcast") + .descriptionKey("command-broadcast-description") + .permission("coldbits.broadcast") + .arguments(ArgumentsDefinition.builder() + .required("target", new StringSuggestingArgumentHandler(BitsUtils::getPlayerTabComplete)) + .build()) + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/ExportCommand.java b/src/main/java/dev/padrewin/coldbits/commands/ExportCommand.java index 5891aa5..eb6874d 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/ExportCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/ExportCommand.java @@ -1,39 +1,43 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; + import java.io.File; import java.io.IOException; -import java.util.Collections; import java.util.List; + import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; import dev.padrewin.coldbits.manager.DataManager; -import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.models.SortedPlayer; import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; -public class ExportCommand extends BitsCommand { +public class ExportCommand extends BaseBitsCommand { - public ExportCommand() { - super("export", CommandManager.CommandAliases.EXPORT); + public ExportCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - plugin.getScheduler().runTaskAsync(() -> { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - File file = new File(plugin.getDataFolder(), "storage.yml"); - if (file.exists() && (args.length < 1 || !args[0].equalsIgnoreCase("confirm"))) { - localeManager.sendMessage(sender, "command-export-warning"); + @ColdExecutable + public void execute(CommandContext context, String confirm) { + this.coldPlugin.getScheduler().runTaskAsync(() -> { + CommandSender sender = context.getSender(); + File file = new File(this.coldPlugin.getDataFolder(), "storage.yml"); + if (file.exists() && confirm == null) { + this.localeManager.sendCommandMessage(sender, "command-export-warning"); return; } if (file.exists()) file.delete(); - List data = plugin.getManager(DataManager.class).getTopSortedBits(null); + List data = this.coldPlugin.getManager(DataManager.class).getTopSortedBits(null); FileConfiguration configuration = YamlConfiguration.loadConfiguration(file); ConfigurationSection bitsSection = configuration.createSection("Bits"); ConfigurationSection uuidSection = configuration.createSection("UUIDs"); @@ -50,13 +54,19 @@ public void execute(ColdBits plugin, CommandSender sender, String[] args) { e.printStackTrace(); } - localeManager.sendMessage(sender, "command-export-success"); + this.localeManager.sendCommandMessage(sender, "command-export-success"); }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return Collections.emptyList(); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("export") + .descriptionKey("command-export-description") + .permission("coldbits.export") + .arguments(ArgumentsDefinition.builder() + .optional("confirm", ArgumentHandlers.forValues(String.class, "confirm")) + .build()) + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/GiveAllCommand.java b/src/main/java/dev/padrewin/coldbits/commands/GiveAllCommand.java index de190b9..b5fd3d7 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/GiveAllCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/GiveAllCommand.java @@ -1,12 +1,15 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; import java.util.List; import java.util.UUID; import java.util.stream.Collectors; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; import dev.padrewin.coldbits.manager.DataManager; import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.util.BitsUtils; @@ -14,68 +17,48 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class GiveAllCommand extends BitsCommand { +public class GiveAllCommand extends BaseBitsCommand { - public GiveAllCommand() { - super("giveall", CommandManager.CommandAliases.GIVEALL); + public GiveAllCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (args.length < 1) { - localeManager.sendMessage(sender, "command-giveall-usage"); - return; - } - - int amount; - try { - amount = Integer.parseInt(args[0]); - } catch (NumberFormatException e) { - localeManager.sendMessage(sender, "invalid-amount"); - return; - } - - final boolean silent = args.length > 1 && args[args.length - 1].equalsIgnoreCase("-s"); - final boolean includeOffline = args.length > 1 && args[1].equals("*"); - - plugin.getScheduler().runTaskAsync(() -> { - boolean success; - if (includeOffline) { - success = plugin.getManager(DataManager.class).offsetAllBits(amount); + @ColdExecutable + public void execute(CommandContext context, Integer amount, String includeOffline, String silentFlag) { + this.coldPlugin.getScheduler().runTaskAsync(() -> { + if (includeOffline != null) { + this.coldPlugin.getManager(DataManager.class).offsetAllBits(amount); } else { List playerIds = Bukkit.getOnlinePlayers().stream().map(Player::getUniqueId).collect(Collectors.toList()); - success = plugin.getAPI().giveAll(playerIds, amount); + this.api.giveAll(playerIds, amount); } - if (success) { - if (!silent) { - for (Player player : Bukkit.getOnlinePlayers()) { - localeManager.sendMessage(player, "command-give-received", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) - .build()); - } + CommandSender sender = context.getSender(); + if (silentFlag == null) { + for (Player player : Bukkit.getOnlinePlayers()) { + this.localeManager.sendCommandMessage(player, "command-give-received", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) + .build()); } - localeManager.sendMessage(sender, "command-giveall-success", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) + this.localeManager.sendCommandMessage(sender, "command-giveall-success", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) .build()); } }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - switch (args.length) { - case 1: - return Collections.singletonList(""); - case 2: - return Collections.singletonList("*"); - case 3: - return Collections.singletonList("-s"); - default: - return Collections.emptyList(); - } - + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("giveall") + .descriptionKey("command-giveall-description") + .permission("coldbits.giveall") + .arguments(ArgumentsDefinition.builder() + .required("amount", ArgumentHandlers.INTEGER) + .optional("*", ArgumentHandlers.forValues(String.class, "*")) + .optional("-s", ArgumentHandlers.forValues(String.class, "-s")) + .build()) + .build(); } + } diff --git a/src/main/java/dev/padrewin/coldbits/commands/GiveCommand.java b/src/main/java/dev/padrewin/coldbits/commands/GiveCommand.java index 9748ec7..02d4f77 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/GiveCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/GiveCommand.java @@ -1,88 +1,83 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.util.BitsUtils; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class GiveCommand extends BitsCommand { +public class GiveCommand extends BaseBitsCommand { - public GiveCommand() { - super("give", CommandManager.CommandAliases.GIVE); + public GiveCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (args.length < 2) { - localeManager.sendMessage(sender, "command-give-usage"); - return; - } - - boolean silent = args.length > 2 && args[args.length - 1].equalsIgnoreCase("-s"); - - BitsUtils.getPlayerByName(args[0], player -> { + @ColdExecutable + public void execute(CommandContext context, String target, Integer amount, String silentFlag) { + BitsUtils.getPlayerByName(target, player -> { + CommandSender sender = context.getSender(); if (player == null) { - localeManager.sendMessage(sender, "unknown-player", StringPlaceholders.of("player", args[0])); - return; - } - - int amount; - try { - amount = Integer.parseInt(args[1]); - } catch (NumberFormatException e) { - localeManager.sendMessage(sender, "invalid-amount"); + this.localeManager.sendCommandMessage(sender, "unknown-player", StringPlaceholders.of("player", target)); return; } if (amount <= 0) { - localeManager.sendMessage(sender, "invalid-amount"); + this.localeManager.sendCommandMessage(sender, "invalid-amount"); return; } - if (plugin.getAPI().give(player.getFirst(), amount)) { - Player onlinePlayer = Bukkit.getPlayer(player.getFirst()); - if (onlinePlayer != null && !silent) { - localeManager.sendMessage(onlinePlayer, "command-give-received", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) - .build()); - } + boolean success = this.api.give(player.getFirst(), amount); - int newBalance = plugin.getAPI().look(player.getFirst()); + if (success) { + // Get new balance after giving bits + int newBalance = this.api.look(player.getFirst()); - localeManager.sendMessage(sender, "command-give-success", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) - .add("player", player.getSecond()) - .build()); - - localeManager.sendMessage(Bukkit.getConsoleSender(), "command-give-log", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) + // Log to console regardless of silent flag + this.localeManager.sendMessage(Bukkit.getConsoleSender(), "command-give-log", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) .add("player", player.getSecond()) .add("new_balance", BitsUtils.formatBits(newBalance)) .build()); + + // Only send player notifications if not silent + if (silentFlag == null) { + // Send message to receiver if they're online + Player onlinePlayer = Bukkit.getPlayer(player.getFirst()); + if (onlinePlayer != null) { + this.localeManager.sendCommandMessage(onlinePlayer, "command-give-received", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) + .build()); + } + + // Send message to sender + this.localeManager.sendCommandMessage(sender, "command-give-success", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) + .add("player", player.getSecond()) + .build()); + } } }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - if (args.length == 1) { - return BitsUtils.getPlayerTabComplete(args[0]); - } else if (args.length == 2) { - return Collections.singletonList(""); - } else if (args.length ==3) { - return Collections.singletonList("*"); - } else if (args.length == 4) { - return Collections.singletonList("-s"); - } else { - return Collections.emptyList(); - } + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("give") + .descriptionKey("command-give-description") + .permission("coldbits.give") + .arguments(ArgumentsDefinition.builder() + .required("target", new StringSuggestingArgumentHandler(BitsUtils::getPlayerTabComplete)) + .required("amount", ArgumentHandlers.INTEGER) + .optional("-s", ArgumentHandlers.forValues(String.class, "-s")) + .build()) + .build(); } -} +} \ No newline at end of file diff --git a/src/main/java/dev/padrewin/coldbits/commands/ImportCommand.java b/src/main/java/dev/padrewin/coldbits/commands/ImportCommand.java index 53713b1..da937e5 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/ImportCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/ImportCommand.java @@ -1,54 +1,56 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.database.MySQLConnector; import dev.padrewin.colddev.utils.StringPlaceholders; import java.io.File; -import java.util.Collections; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.SortedSet; import java.util.TreeSet; import java.util.UUID; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; import dev.padrewin.coldbits.manager.DataManager; -import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.models.SortedPlayer; import org.bukkit.command.CommandSender; import org.bukkit.configuration.ConfigurationSection; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; -public class ImportCommand extends BitsCommand { +public class ImportCommand extends BaseBitsCommand { - public ImportCommand() { - super("import", CommandManager.CommandAliases.IMPORT); + public ImportCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - File file = new File(plugin.getDataFolder(), "storage.yml"); + @ColdExecutable + public void execute(CommandContext context, String confirm) { + CommandSender sender = context.getSender(); + File file = new File(this.coldPlugin.getDataFolder(), "storage.yml"); if (!file.exists()) { - localeManager.sendMessage(sender, "command-import-no-backup"); + this.localeManager.sendMessage(sender, "command-import-no-backup"); return; } - if (args.length < 1 || !args[0].equalsIgnoreCase("confirm")) { - String databaseType = plugin.getManager(DataManager.class).getDatabaseConnector() instanceof MySQLConnector ? "MySQL" : "SQLite"; - localeManager.sendMessage(sender, "command-import-warning", StringPlaceholders.of("type", databaseType)); + DataManager dataManager = this.coldPlugin.getManager(DataManager.class); + if (confirm == null) { + String databaseType = dataManager.getDatabaseConnector() instanceof MySQLConnector ? "MySQL" : "SQLite"; + this.localeManager.sendMessage(sender, "command-import-warning", StringPlaceholders.of("type", databaseType)); return; } - plugin.getScheduler().runTaskAsync(() -> { + this.coldPlugin.getScheduler().runTaskAsync(() -> { FileConfiguration configuration = YamlConfiguration.loadConfiguration(file); ConfigurationSection bitsSection = configuration.getConfigurationSection("Bits"); if (bitsSection == null) bitsSection = configuration.getConfigurationSection("Players"); if (bitsSection == null) { - plugin.getLogger().warning("Malformed storage.yml file."); + this.coldPlugin.getLogger().warning("Malformed storage.yml file."); return; } @@ -75,14 +77,20 @@ public void execute(ColdBits plugin, CommandSender sender, String[] args) { } } - plugin.getManager(DataManager.class).importData(data, uuidMap); - localeManager.sendMessage(sender, "command-import-success"); + dataManager.importData(data, uuidMap); + this.localeManager.sendCommandMessage(sender, "command-import-success"); }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return Collections.emptyList(); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("import") + .descriptionKey("command-import-description") + .permission("coldbits.import") + .arguments(ArgumentsDefinition.builder() + .optional("confirm", ArgumentHandlers.forValues(String.class, "confirm")) + .build()) + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/ImportLegacyCommand.java b/src/main/java/dev/padrewin/coldbits/commands/ImportLegacyCommand.java index 9e1bc38..843edba 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/ImportLegacyCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/ImportLegacyCommand.java @@ -1,46 +1,49 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.database.MySQLConnector; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; import dev.padrewin.coldbits.manager.DataManager; -import dev.padrewin.coldbits.manager.LocaleManager; import org.bukkit.command.CommandSender; -public class ImportLegacyCommand extends BitsCommand { +public class ImportLegacyCommand extends BaseBitsCommand { - public ImportLegacyCommand() { - super("importlegacy", CommandManager.CommandAliases.IMPORTLEGACY); + public ImportLegacyCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - plugin.getScheduler().runTaskAsync(() -> { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (!(plugin.getManager(DataManager.class).getDatabaseConnector() instanceof MySQLConnector)) { - localeManager.sendMessage(sender, "command-importlegacy-only-mysql"); - return; - } - - if (args.length < 1) { - localeManager.sendMessage(sender, "command-importlegacy-usage"); - return; - } - - if (plugin.getManager(DataManager.class).importLegacyTable(args[0])) { - localeManager.sendMessage(sender, "command-importlegacy-success", StringPlaceholders.of("table", args[0])); + @ColdExecutable + public void execute(CommandContext context, String tableName) { + CommandSender sender = context.getSender(); + DataManager dataManager = this.coldPlugin.getManager(DataManager.class); + if (!(dataManager.getDatabaseConnector() instanceof MySQLConnector)) { + this.localeManager.sendCommandMessage(sender, "command-importlegacy-only-mysql"); + return; + } + + this.coldPlugin.getScheduler().runTaskAsync(() -> { + if (dataManager.importLegacyTable(tableName)) { + this.localeManager.sendCommandMessage(sender, "command-importlegacy-success", StringPlaceholders.of("table", tableName)); } else { - localeManager.sendMessage(sender, "command-importlegacy-failure", StringPlaceholders.of("table", args[0])); + this.localeManager.sendCommandMessage(sender, "command-importlegacy-failure", StringPlaceholders.of("table", tableName)); } }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return Collections.emptyList(); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("importlegacy") + .descriptionKey("command-importlegacy-description") + .permission("coldbits.importlegacy") + .arguments(ArgumentsDefinition.builder() + .required("tableName", ArgumentHandlers.STRING) + .build()) + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/LeadCommand.java b/src/main/java/dev/padrewin/coldbits/commands/LeadCommand.java index 6716550..fded6e3 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/LeadCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/LeadCommand.java @@ -1,41 +1,72 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Arrays; -import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.stream.Collectors; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.manager.DataManager; -import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.models.SortedPlayer; import dev.padrewin.coldbits.setting.SettingKey; import dev.padrewin.coldbits.util.BitsUtils; -import org.bukkit.command.Command; import org.bukkit.command.CommandSender; -import org.bukkit.permissions.Permissible; -public class LeadCommand extends CommandHandler { +public class LeadCommand extends BaseBitsCommand { /** - * Current page the player is viewing. + * Current page the player is viewing */ private final Map pageMap = new HashMap<>(); - public LeadCommand(ColdBits plugin) { - super(plugin, "lead", CommandManager.CommandAliases.LEAD); + public LeadCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void noArgs(CommandSender sender) { - LocaleManager localeManager = this.plugin.getManager(LocaleManager.class); - int limit = SettingKey.LEADERBOARD_PER_PAGE.get(); + @ColdExecutable + public void execute(CommandContext context, String pageArg) { + CommandSender sender = context.getSender(); + String name = sender.getName(); + int current = this.pageMap.getOrDefault(name, 0); - this.plugin.getScheduler().runTaskAsync(() -> { - List leaders = this.plugin.getManager(DataManager.class).getTopSortedBits(null); + if (pageArg == null) { + this.pageMap.put(name, 0); + this.send(context); + return; + } else if (pageArg.equalsIgnoreCase("prev")) { + this.pageMap.put(name, current - 1); + this.send(context); + return; + } else if (pageArg.equalsIgnoreCase("next")) { + this.pageMap.put(name, current + 1); + this.send(context); + return; + } else { + try { + current = Integer.parseInt(pageArg); + this.pageMap.put(name, current - 1); + this.send(context); + return; + } catch (NumberFormatException e) { + // Handle notification later + } + } + + // Handle invalid input + this.localeManager.sendCommandMessage(sender, "command-lead-usage"); + } + + private void send(CommandContext context) { + this.coldPlugin.getScheduler().runTaskAsync(() -> { + List leaders = this.coldPlugin.getManager(DataManager.class).getTopSortedBits(null); + + CommandSender sender = context.getSender(); + int limit = SettingKey.LEADERBOARD_PER_PAGE.get(); int currentPage = this.pageMap.getOrDefault(sender.getName(), 0); int numPages = (int) Math.ceil(leaders.size() / (double) limit); @@ -58,7 +89,7 @@ public void noArgs(CommandSender sender) { .limit(limit) .collect(Collectors.toList()); - localeManager.sendMessage(sender, "command-lead-title", StringPlaceholders.builder("page", currentPage + 1) + this.localeManager.sendCommandMessage(sender, "command-lead-title", StringPlaceholders.builder("page", currentPage + 1) .add("pages", numPages).build()); // Page through @@ -66,52 +97,24 @@ public void noArgs(CommandSender sender) { int position = currentPage * limit + i + 1; SortedPlayer player = listedPlayers.get(i); - localeManager.sendSimpleMessage(sender, "command-lead-entry", StringPlaceholders.builder("position", position) + this.localeManager.sendSimpleCommandMessage(sender, "command-lead-entry", StringPlaceholders.builder("position", position) .add("player", player.getUsername()) .add("amount", BitsUtils.formatBits(player.getBits())) - .add("currency", localeManager.getCurrencyName(player.getBits())) + .add("currency", this.localeManager.getCurrencyName(player.getBits())) .build()); } }); } @Override - public void unknownCommand(CommandSender sender, String[] args) { - String pageArg = args[0]; - - int current = this.pageMap.getOrDefault(sender.getName(), 0); - - if (pageArg.equalsIgnoreCase("prev")) { - this.pageMap.put(sender.getName(), current - 1); - this.noArgs(sender); - return; - } else if (pageArg.equals("next")) { - this.pageMap.put(sender.getName(), current + 1); - this.noArgs(sender); - return; - } else { - try { - current = Integer.parseInt(pageArg); - this.pageMap.put(sender.getName(), current - 1); - this.noArgs(sender); - return; - } catch (NumberFormatException e) { - // Handle notification later - } - } - - // Handle invalid input - this.plugin.getManager(LocaleManager.class).sendMessage(sender, "command-lead-usage"); - } - - @Override - public List onTabComplete(CommandSender sender, Command command, String alias, String[] args) { - return args.length == 1 ? Arrays.asList("next", "prev", "1") : Collections.emptyList(); - } - - @Override - public boolean hasPermission(Permissible permissible) { - return permissible.hasPermission("ColdBits.lead"); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("lead") + .descriptionKey("command-lead-description") + .permission("coldbits.lead") + .arguments(ArgumentsDefinition.builder() + .optional("page", new StringSuggestingArgumentHandler("prev", "next", "1")) + .build()) + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/LookCommand.java b/src/main/java/dev/padrewin/coldbits/commands/LookCommand.java index ba29d22..8f66bd9 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/LookCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/LookCommand.java @@ -1,45 +1,51 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.util.BitsUtils; +import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; -public class LookCommand extends BitsCommand { +public class LookCommand extends BaseBitsCommand { - public LookCommand() { - super("look", CommandManager.CommandAliases.LOOK); + public LookCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (args.length < 1) { - localeManager.sendMessage(sender, "command-look-usage"); - return; - } - - BitsUtils.getPlayerByName(args[0], player -> { + @ColdExecutable + public void execute(CommandContext context, String target) { + BitsUtils.getPlayerByName(target, player -> { + CommandSender sender = context.getSender(); if (player == null) { - localeManager.sendMessage(sender, "unknown-player", StringPlaceholders.of("player", args[0])); + this.localeManager.sendCommandMessage(sender, "unknown-player", StringPlaceholders.of("player", target)); return; } - int amount = plugin.getAPI().look(player.getFirst()); - localeManager.sendMessage(sender, "command-look-success", StringPlaceholders.builder("player", player.getSecond()) + int amount = this.api.look(player.getFirst()); + this.localeManager.sendCommandMessage(sender, "command-look-success", StringPlaceholders.builder("player", player.getSecond()) .add("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) .build()); }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return args.length == 1 ? BitsUtils.getPlayerTabComplete(args[0]) : Collections.emptyList(); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("look") + .descriptionKey("command-look-description") + .permission("coldbits.look") + .arguments(ArgumentsDefinition.builder() + .required("target", new StringSuggestingArgumentHandler(BitsUtils::getPlayerTabComplete)) + .build()) + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/MeCommand.java b/src/main/java/dev/padrewin/coldbits/commands/MeCommand.java index e1c5f27..f821100 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/MeCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/MeCommand.java @@ -1,40 +1,38 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.util.BitsUtils; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class MeCommand extends BitsCommand { +public class MeCommand extends BaseBitsCommand { - public MeCommand() { - super("me", CommandManager.CommandAliases.ME); + public MeCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (!(sender instanceof Player)) { - localeManager.sendMessage(sender, "no-console"); - return; - } - - plugin.getScheduler().runTaskAsync(() -> { - int amount = plugin.getAPI().look(((Player) sender).getUniqueId()); - localeManager.sendMessage(sender, "command-me-success", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) - .build()); - }); + @ColdExecutable + public void execute(CommandContext context) { + CommandSender sender = context.getSender(); + LocaleManager localeManager = this.coldPlugin.getManager(LocaleManager.class); + int amount = this.api.look(((Player) sender).getUniqueId()); + localeManager.sendCommandMessage(sender, "command-me-success", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", localeManager.getCurrencyName(amount)) + .build()); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return Collections.emptyList(); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("me") + .descriptionKey("command-me-description") + .permission("coldbits.me") + .playerOnly() + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/PayCommand.java b/src/main/java/dev/padrewin/coldbits/commands/PayCommand.java index cb87e72..4c32179 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/PayCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/PayCommand.java @@ -2,109 +2,88 @@ import com.google.common.cache.Cache; import com.google.common.cache.CacheBuilder; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import java.util.UUID; import java.util.concurrent.TimeUnit; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; -import dev.padrewin.coldbits.manager.LocaleManager; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.util.BitsUtils; import org.bukkit.Bukkit; -import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; -public class PayCommand extends BitsCommand { +public class PayCommand extends BaseBitsCommand { private static final Cache PAY_COOLDOWN = CacheBuilder.newBuilder() .expireAfterWrite(500, TimeUnit.MILLISECONDS) .build(); - public PayCommand() { - super("pay", CommandManager.CommandAliases.PAY); + public PayCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (!(sender instanceof Player)) { - localeManager.sendMessage(sender, "no-console"); - return; - } - - Player player = (Player) sender; - if (args.length < 2) { - localeManager.sendMessage(player, "command-pay-usage"); - return; - } - + @ColdExecutable + public void execute(CommandContext context, String targetName, Integer amount) { + Player player = (Player) context.getSender(); if (PAY_COOLDOWN.getIfPresent(player.getUniqueId()) != null) { - localeManager.sendMessage(player, "command-cooldown"); + this.localeManager.sendCommandMessage(player, "command-cooldown"); return; } PAY_COOLDOWN.put(player.getUniqueId(), System.currentTimeMillis()); - BitsUtils.getPlayerByName(args[0], target -> { + BitsUtils.getPlayerByName(targetName, target -> { if (target == null) { - localeManager.sendMessage(player, "unknown-player", StringPlaceholders.of("player", args[0])); + this.localeManager.sendCommandMessage(player, "unknown-player", StringPlaceholders.of("player", targetName)); return; } if (player.getUniqueId().equals(target.getFirst())) { - localeManager.sendMessage(player, "command-pay-self"); - return; - } - - int amount; - try { - amount = Integer.parseInt(args[1]); - } catch (NumberFormatException e) { - localeManager.sendMessage(player, "invalid-amount"); + this.localeManager.sendCommandMessage(player, "command-pay-self"); return; } if (amount <= 0) { - localeManager.sendMessage(player, "invalid-amount"); + this.localeManager.sendCommandMessage(player, "invalid-amount"); return; } - if (plugin.getAPI().pay(player.getUniqueId(), target.getFirst(), amount)) { + if (this.api.pay(player.getUniqueId(), target.getFirst(), amount)) { // Send success message to sender - localeManager.sendMessage(player, "command-pay-sent", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) + this.localeManager.sendCommandMessage(player, "command-pay-sent", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) .add("player", target.getSecond()) .build()); // Send success message to target Player onlinePlayer = Bukkit.getPlayer(target.getFirst()); if (onlinePlayer != null) { - localeManager.sendMessage(onlinePlayer, "command-pay-received", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) - .add("currency", localeManager.getCurrencyName(amount)) + this.localeManager.sendCommandMessage(onlinePlayer, "command-pay-received", StringPlaceholders.builder("amount", BitsUtils.formatBits(amount)) + .add("currency", this.localeManager.getCurrencyName(amount)) .add("player", player.getName()) .build()); } } else { - localeManager.sendMessage(player, "command-pay-lacking-funds", StringPlaceholders.of("currency", localeManager.getCurrencyName(0))); + this.localeManager.sendCommandMessage(player, "command-pay-lacking-funds", StringPlaceholders.of("currency", this.localeManager.getCurrencyName(0))); } }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - if (!(sender instanceof Player)) - return Collections.emptyList(); - - if (args.length == 1) { - List completions = BitsUtils.getPlayerTabComplete(args[0]); - completions.remove(sender.getName()); - return completions; - } else if (args.length == 2) { - return Collections.singletonList(""); - } else { - return Collections.emptyList(); - } + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("pay") + .descriptionKey("command-pay-description") + .permission("coldbits.pay") + .arguments(ArgumentsDefinition.builder() + .required("target", new StringSuggestingArgumentHandler(BitsUtils::getPlayerTabComplete)) + .required("amount", ArgumentHandlers.INTEGER) + .build()) + .playerOnly() + .build(); } } diff --git a/src/main/java/dev/padrewin/coldbits/commands/ResetCommand.java b/src/main/java/dev/padrewin/coldbits/commands/ResetCommand.java index 1e5eba4..ef880a9 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/ResetCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/ResetCommand.java @@ -1,56 +1,61 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; -import dev.padrewin.coldbits.manager.LocaleManager; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.util.BitsUtils; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; -public class ResetCommand extends BitsCommand { +public class ResetCommand extends BaseBitsCommand { - public ResetCommand() { - super("reset", CommandManager.CommandAliases.RESET); + public ResetCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (args.length < 1) { - localeManager.sendMessage(sender, "command-reset-usage"); - return; - } - - BitsUtils.getPlayerByName(args[0], player -> { + @ColdExecutable + public void execute(CommandContext context, String target) { + BitsUtils.getPlayerByName(target, player -> { + CommandSender sender = context.getSender(); if (player == null) { - localeManager.sendMessage(sender, "unknown-player", StringPlaceholders.of("player", args[0])); + this.localeManager.sendCommandMessage(sender, "unknown-player", StringPlaceholders.of("player", target)); return; } - int oldBalance = plugin.getAPI().look(player.getFirst()); + // Get old balance before reset (for logging purposes) + int oldBalance = this.api.look(player.getFirst()); - if (plugin.getAPI().reset(player.getFirst())) { - int newBalance = plugin.getAPI().look(player.getFirst()); + if (this.api.reset(player.getFirst())) { + // Get new balance after reset + int newBalance = this.api.look(player.getFirst()); - localeManager.sendMessage(sender, "command-reset-success", StringPlaceholders.builder("player", player.getSecond()) - .add("currency", localeManager.getCurrencyName(0)) + // Send success message to command sender + this.localeManager.sendCommandMessage(sender, "command-reset-success", StringPlaceholders.builder("player", player.getSecond()) + .add("currency", this.localeManager.getCurrencyName(0)) .build()); - localeManager.sendMessage(Bukkit.getConsoleSender(), "command-reset-log", StringPlaceholders.builder("player", player.getSecond()) + // Log to console + this.localeManager.sendMessage(Bukkit.getConsoleSender(), "command-reset-log", StringPlaceholders.builder("player", player.getSecond()) .add("new_balance", BitsUtils.formatBits(newBalance)) - .add("currency", localeManager.getCurrencyName(newBalance)) + .add("currency", this.localeManager.getCurrencyName(newBalance)) .build()); } }); } - @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return args.length == 1 ? BitsUtils.getPlayerTabComplete(args[0]) : Collections.emptyList(); + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("reset") + .descriptionKey("command-reset-description") + .permission("coldbits.reset") + .arguments(ArgumentsDefinition.builder() + .required("target", new StringSuggestingArgumentHandler(BitsUtils::getPlayerTabComplete)) + .build()) + .build(); } -} +} \ No newline at end of file diff --git a/src/main/java/dev/padrewin/coldbits/commands/SetCommand.java b/src/main/java/dev/padrewin/coldbits/commands/SetCommand.java index 18ecc6a..2337186 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/SetCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/SetCommand.java @@ -1,72 +1,73 @@ package dev.padrewin.coldbits.commands; -import dev.padrewin.coldbits.ColdBits; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; -import dev.padrewin.coldbits.manager.CommandManager; -import dev.padrewin.coldbits.manager.LocaleManager; +import dev.padrewin.coldbits.ColdBits; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.util.BitsUtils; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; -public class SetCommand extends BitsCommand { +public class SetCommand extends BaseBitsCommand { - public SetCommand() { - super("set", CommandManager.CommandAliases.SET); + public SetCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (args.length < 2) { - localeManager.sendMessage(sender, "command-set-usage"); - return; - } - - BitsUtils.getPlayerByName(args[0], player -> { + @ColdExecutable + public void execute(CommandContext context, String target, Integer amount, String silentFlag) { + BitsUtils.getPlayerByName(target, player -> { + CommandSender sender = context.getSender(); if (player == null) { - localeManager.sendMessage(sender, "unknown-player", StringPlaceholders.of("player", args[0])); + this.localeManager.sendCommandMessage(sender, "unknown-player", StringPlaceholders.of("player", target)); return; } - int amount; - try { - amount = Integer.parseInt(args[1]); - if (amount < 0) { - localeManager.sendMessage(sender, "invalid-amount"); - return; - } - } catch (NumberFormatException e) { - localeManager.sendMessage(sender, "invalid-amount"); + if (amount < 0) { + this.localeManager.sendCommandMessage(sender, "invalid-amount"); return; } - if (plugin.getAPI().set(player.getFirst(), amount)) { - int newBalance = plugin.getAPI().look(player.getFirst()); + // Try to set the bits for the player + boolean success = this.api.set(player.getFirst(), amount); - localeManager.sendMessage(sender, "command-set-success", StringPlaceholders.builder("player", player.getSecond()) - .add("currency", localeManager.getCurrencyName(amount)) - .add("amount", BitsUtils.formatBits(amount)) - .build()); + if (success) { + // Get the new balance after setting + int newBalance = this.api.look(player.getFirst()); - localeManager.sendMessage(Bukkit.getConsoleSender(), "command-set-log", StringPlaceholders.builder("player", player.getSecond()) + // Log to console regardless of silentFlag + this.localeManager.sendMessage(Bukkit.getConsoleSender(), "command-set-log", StringPlaceholders.builder("player", player.getSecond()) .add("new_balance", BitsUtils.formatBits(newBalance)) - .add("currency", localeManager.getCurrencyName(newBalance)) + .add("currency", this.localeManager.getCurrencyName(newBalance)) .build()); + + // Notify sender only if not silent + if (silentFlag == null) { + this.localeManager.sendCommandMessage(sender, "command-set-success", StringPlaceholders.builder("player", player.getSecond()) + .add("currency", this.localeManager.getCurrencyName(amount)) + .add("amount", BitsUtils.formatBits(amount)) + .build()); + } } }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - if (args.length == 1) { - return BitsUtils.getPlayerTabComplete(args[0]); - } else if (args.length == 2) { - return Collections.singletonList(""); - } else { - return Collections.emptyList(); - } + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("set") + .descriptionKey("command-set-description") + .permission("coldbits.set") + .arguments(ArgumentsDefinition.builder() + .required("target", new StringSuggestingArgumentHandler(BitsUtils::getPlayerTabComplete)) + .required("amount", ArgumentHandlers.INTEGER) + .optional("-s", ArgumentHandlers.forValues(String.class, "-s")) + .build()) + .build(); } -} +} \ No newline at end of file diff --git a/src/main/java/dev/padrewin/coldbits/commands/TakeCommand.java b/src/main/java/dev/padrewin/coldbits/commands/TakeCommand.java index d0cc403..7e6e625 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/TakeCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/TakeCommand.java @@ -1,79 +1,81 @@ package dev.padrewin.coldbits.commands; +import dev.padrewin.colddev.command.argument.ArgumentHandlers; +import dev.padrewin.colddev.command.framework.ArgumentsDefinition; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.colddev.utils.StringPlaceholders; -import java.util.Collections; -import java.util.List; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; -import dev.padrewin.coldbits.manager.LocaleManager; +import dev.padrewin.coldbits.commands.arguments.StringSuggestingArgumentHandler; import dev.padrewin.coldbits.util.BitsUtils; import org.bukkit.Bukkit; import org.bukkit.command.CommandSender; +import org.bukkit.entity.Player; -public class TakeCommand extends BitsCommand { +public class TakeCommand extends BaseBitsCommand { - public TakeCommand() { - super("take", CommandManager.CommandAliases.TAKE); + public TakeCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); - if (args.length < 2) { - localeManager.sendMessage(sender, "command-take-usage"); - return; - } - - BitsUtils.getPlayerByName(args[0], player -> { + @ColdExecutable + public void execute(CommandContext context, String target, Integer amount, String silentFlag) { + BitsUtils.getPlayerByName(target, player -> { + CommandSender sender = context.getSender(); if (player == null) { - localeManager.sendMessage(sender, "unknown-player", StringPlaceholders.of("player", args[0])); + this.localeManager.sendCommandMessage(sender, "unknown-player", StringPlaceholders.of("player", target)); return; } - int amount; - try { - amount = Integer.parseInt(args[1]); - if (amount <= 0) { - localeManager.sendMessage(sender, "invalid-amount"); - return; - } - } catch (NumberFormatException e) { - localeManager.sendMessage(sender, "invalid-amount"); + if (amount <= 0) { + this.localeManager.sendCommandMessage(sender, "invalid-amount"); return; } - int oldBalance = plugin.getAPI().look(player.getFirst()); + // Get the old balance before taking + int oldBalance = this.api.look(player.getFirst()); - if (plugin.getAPI().take(player.getFirst(), amount)) { - int newBalance = plugin.getAPI().look(player.getFirst()); + // Try to take bits from the player + boolean success = this.api.take(player.getFirst(), amount); - localeManager.sendMessage(sender, "command-take-success", StringPlaceholders.builder("player", player.getSecond()) - .add("currency", localeManager.getCurrencyName(amount)) - .add("amount", BitsUtils.formatBits(amount)) - .build()); + // Get the new balance after taking + int newBalance = this.api.look(player.getFirst()); - localeManager.sendMessage(Bukkit.getConsoleSender(), "command-take-log", StringPlaceholders.builder("player", player.getSecond()) + if (success) { + // Log to console regardless of silentFlag + this.localeManager.sendMessage(Bukkit.getConsoleSender(), "command-take-log", StringPlaceholders.builder("player", player.getSecond()) .add("amount", BitsUtils.formatBits(amount)) .add("new_balance", BitsUtils.formatBits(newBalance)) - .add("currency", localeManager.getCurrencyName(newBalance)) + .add("currency", this.localeManager.getCurrencyName(newBalance)) .build()); - } else { - localeManager.sendMessage(sender, "command-take-not-enough", StringPlaceholders.builder("player", player.getSecond()) - .add("currency", localeManager.getCurrencyName(amount)) + + // Notify sender only if not silent + if (silentFlag == null) { + this.localeManager.sendCommandMessage(sender, "command-take-success", StringPlaceholders.builder("player", player.getSecond()) + .add("currency", this.localeManager.getCurrencyName(amount)) + .add("amount", BitsUtils.formatBits(amount)) + .build()); + } + } else if (silentFlag == null) { + this.localeManager.sendCommandMessage(sender, "command-take-not-enough", StringPlaceholders.builder("player", player.getSecond()) + .add("currency", this.localeManager.getCurrencyName(amount)) .build()); } }); } @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - if (args.length == 1) { - return BitsUtils.getPlayerTabComplete(args[0]); - } else if (args.length == 2) { - return Collections.singletonList(""); - } else { - return Collections.emptyList(); - } + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("take") + .descriptionKey("command-take-description") + .permission("coldbits.take") + .arguments(ArgumentsDefinition.builder() + .required("target", new StringSuggestingArgumentHandler(BitsUtils::getPlayerTabComplete)) + .required("amount", ArgumentHandlers.INTEGER) + .optional("-s", ArgumentHandlers.forValues(String.class, "-s")) + .build()) + .build(); } -} +} \ No newline at end of file diff --git a/src/main/java/dev/padrewin/coldbits/commands/VersionCommand.java b/src/main/java/dev/padrewin/coldbits/commands/VersionCommand.java index b35093f..bb039b2 100644 --- a/src/main/java/dev/padrewin/coldbits/commands/VersionCommand.java +++ b/src/main/java/dev/padrewin/coldbits/commands/VersionCommand.java @@ -1,9 +1,9 @@ package dev.padrewin.coldbits.commands; -import java.util.Collections; -import java.util.List; +import dev.padrewin.colddev.command.framework.CommandContext; +import dev.padrewin.colddev.command.framework.CommandInfo; +import dev.padrewin.colddev.command.framework.annotation.ColdExecutable; import dev.padrewin.coldbits.ColdBits; -import dev.padrewin.coldbits.manager.CommandManager; import dev.padrewin.coldbits.manager.LocaleManager; import net.md_5.bungee.api.ChatColor; import net.md_5.bungee.api.chat.ClickEvent; @@ -12,54 +12,57 @@ import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; -public class VersionCommand extends BitsCommand { +public class VersionCommand extends BaseBitsCommand { - public VersionCommand() { - super("version", CommandManager.CommandAliases.VERSION); + public VersionCommand(ColdBits coldBits) { + super(coldBits); } - @Override - public void execute(ColdBits plugin, CommandSender sender, String[] args) { - sendInfo(plugin, sender); - } - - @Override - public List tabComplete(ColdBits plugin, CommandSender sender, String[] args) { - return Collections.emptyList(); - } - - public static void sendInfo(ColdBits plugin, CommandSender sender) { - LocaleManager localeManager = plugin.getManager(LocaleManager.class); + @ColdExecutable + public void execute(CommandContext context) { + CommandSender sender = context.getSender(); + LocaleManager localeManager = this.coldPlugin.getManager(LocaleManager.class); String baseColor = localeManager.getLocaleMessage("base-command-color"); - localeManager.sendCustomMessage(sender, baseColor + ""); - localeManager.sendCustomMessage(sender, baseColor + "Running ColdBits" + baseColor + " v" + plugin.getDescription().getVersion()); - - List authors = plugin.getDescription().getAuthors(); - String firstAuthor = authors.size() > 0 ? authors.get(0) : "padrewin"; - localeManager.sendCustomMessage(sender, baseColor + "&7Developer: " + firstAuthor); + // Plugin name and version - using ColdBits colors + localeManager.sendCustomMessage(sender, baseColor + "Running ColdBits" + baseColor + + " v" + this.coldPlugin.getDescription().getVersion()); + + // Display authors + if (this.coldPlugin.getDescription().getAuthors().size() >= 2) { + localeManager.sendCustomMessage(sender, baseColor + "Developer(s): " + + this.coldPlugin.getDescription().getAuthors().get(0) + baseColor + " & " + + this.coldPlugin.getDescription().getAuthors().get(1)); + } else if (!this.coldPlugin.getDescription().getAuthors().isEmpty()) { + localeManager.sendCustomMessage(sender, baseColor + "Developer(s): " + + this.coldPlugin.getDescription().getAuthors().get(0)); + } + // Add GitHub link - custom feature from ColdBits if (sender instanceof Player) { Player player = (Player) sender; - TextComponent baseMessage = new TextComponent(baseColor + "GitHub: "); TextComponent clickableText = new TextComponent(ChatColor.RED + "" + ChatColor.UNDERLINE + "click here"); clickableText.setClickEvent(new ClickEvent(ClickEvent.Action.OPEN_URL, "https://github.com/Cold-Development/ColdBits")); baseMessage.addExtra(clickableText); - player.spigot().sendMessage(baseMessage); - } else if (sender instanceof ConsoleCommandSender) { String ansiRed = "\u001B[31m"; String ansiReset = "\u001B[0m"; String ansiAqua = "\u001B[36m"; - sender.sendMessage(ansiAqua + "GitHub: " + ansiRed + "https://github.com/Cold-Development/ColdBits" + ansiReset); } + // Help message localeManager.sendSimpleMessage(sender, "base-command-help"); - localeManager.sendCustomMessage(sender, baseColor + ""); } + @Override + protected CommandInfo createCommandInfo() { + return CommandInfo.builder("version") + .descriptionKey("command-version-description") + .permission("coldbits.version") + .build(); + } } \ No newline at end of file diff --git a/src/main/java/dev/padrewin/coldbits/commands/arguments/StringSuggestingArgumentHandler.java b/src/main/java/dev/padrewin/coldbits/commands/arguments/StringSuggestingArgumentHandler.java new file mode 100644 index 0000000..8aa4e32 --- /dev/null +++ b/src/main/java/dev/padrewin/coldbits/commands/arguments/StringSuggestingArgumentHandler.java @@ -0,0 +1,27 @@ +package dev.padrewin.coldbits.commands.arguments; + +import dev.padrewin.colddev.command.argument.StringArgumentHandler; +import dev.padrewin.colddev.command.framework.Argument; +import dev.padrewin.colddev.command.framework.CommandContext; +import java.util.Arrays; +import java.util.List; +import java.util.function.Function; + +public class StringSuggestingArgumentHandler extends StringArgumentHandler { + + private final Function> suggestionsFunction; + + public StringSuggestingArgumentHandler(String... suggestions) { + this(context -> Arrays.asList(suggestions)); + } + + public StringSuggestingArgumentHandler(Function> suggestionsFunction) { + this.suggestionsFunction = suggestionsFunction; + } + + @Override + public List suggest(CommandContext context, Argument argument, String[] args) { + return this.suggestionsFunction.apply(context); + } + +} diff --git a/src/main/java/dev/padrewin/coldbits/listeners/VotifierListener.java b/src/main/java/dev/padrewin/coldbits/listeners/VotifierListener.java index a4aece8..f8eecd3 100644 --- a/src/main/java/dev/padrewin/coldbits/listeners/VotifierListener.java +++ b/src/main/java/dev/padrewin/coldbits/listeners/VotifierListener.java @@ -41,4 +41,4 @@ public void vote(VotifierEvent event) { } }); } -} +} \ No newline at end of file diff --git a/src/main/java/dev/padrewin/coldbits/manager/CommandManager.java b/src/main/java/dev/padrewin/coldbits/manager/CommandManager.java index 420eee6..08ddbfb 100644 --- a/src/main/java/dev/padrewin/coldbits/manager/CommandManager.java +++ b/src/main/java/dev/padrewin/coldbits/manager/CommandManager.java @@ -1,91 +1,23 @@ package dev.padrewin.coldbits.manager; -import com.google.common.collect.Lists; -import dev.padrewin.coldbits.ColdBits; import dev.padrewin.colddev.ColdPlugin; -import dev.padrewin.colddev.config.CommentedFileConfiguration; -import dev.padrewin.colddev.manager.Manager; -import java.io.File; +import dev.padrewin.colddev.command.framework.BaseColdCommand; +import dev.padrewin.colddev.manager.AbstractCommandManager; import java.util.Collections; import java.util.List; -import java.util.stream.Collectors; -import dev.padrewin.coldbits.commands.Commander; -import org.bukkit.command.PluginCommand; - -public class CommandManager extends Manager { - - public enum CommandAliases { - ROOT { - @Override - public List get() { - return Collections.emptyList(); - } - }, - BROADCAST, - EXPORT, - GIVEALL, - GIVE, - HELP, - IMPORT, - IMPORTLEGACY, - LEAD, - LOOK, - ME, - PAY, - RELOAD, - RESET, - SET, - TAKE, - VERSION; - - private List aliases; - - public List get() { - return this.aliases; - } +import java.util.function.Function; +import dev.padrewin.coldbits.ColdBits; +import dev.padrewin.coldbits.commands.BaseCommand; - private void set(List aliases) { - this.aliases = aliases.stream().filter(x -> !x.trim().isEmpty()).collect(Collectors.toList()); - } - } +public class CommandManager extends AbstractCommandManager { public CommandManager(ColdPlugin coldPlugin) { super(coldPlugin); } @Override - public void reload() { - File file = new File(this.coldPlugin.getDataFolder(), "aliases.yml"); - CommentedFileConfiguration fileConfiguration = CommentedFileConfiguration.loadConfiguration(file); - - boolean changes = false; - for (CommandAliases value : CommandAliases.values()) { - if (value == CommandAliases.ROOT) - continue; - - String key = value.name().toLowerCase(); - if (fileConfiguration.contains(key)) { - value.set(fileConfiguration.getStringList(key)); - } else { - changes = true; - fileConfiguration.set(key, Lists.newArrayList(key)); - value.set(Collections.singletonList(key)); - } - } - - if (changes) - fileConfiguration.save(file); - - // Register commands - Commander commander = new Commander((ColdBits) this.coldPlugin); - PluginCommand command = this.coldPlugin.getCommand("bits"); - if (command != null) - command.setExecutor(commander); - } - - @Override - public void disable() { - + public List> getRootCommands() { + return Collections.singletonList(plugin -> new BaseCommand(ColdBits.getInstance())); } -} \ No newline at end of file +} diff --git a/src/main/java/dev/padrewin/coldbits/manager/DataManager.java b/src/main/java/dev/padrewin/coldbits/manager/DataManager.java index 70ec9f1..f9aa20b 100644 --- a/src/main/java/dev/padrewin/coldbits/manager/DataManager.java +++ b/src/main/java/dev/padrewin/coldbits/manager/DataManager.java @@ -308,8 +308,8 @@ public List getTopSortedBits(Integer limit) { List players = new ArrayList<>(); this.databaseConnector.connect(connection -> { String query = "SELECT t." + this.getUuidColumnName() + ", username, bits FROM " + this.getBitsTableName() + " t " + - "LEFT JOIN " + this.getTablePrefix() + "username_cache c ON t.uuid = c.uuid " + - "ORDER BY bits DESC" + (limit != null ? " LIMIT " + limit : ""); + "LEFT JOIN " + this.getTablePrefix() + "username_cache c ON t.uuid = c.uuid " + + "ORDER BY bits DESC" + (limit != null ? " LIMIT " + limit : ""); try (Statement statement = connection.createStatement()) { ResultSet result = statement.executeQuery(query); while (result.next()) { @@ -339,8 +339,8 @@ public Map getOnlineTopSortedPointPositions() { this.databaseConnector.connect(connection -> { String tableName = this.getBitsTableName(); String query = "SELECT t." + this.getUuidColumnName() + ", (SELECT COUNT(*) FROM " + tableName + " x WHERE x.bits >= t.bits) AS position " + - "FROM " + tableName + " t " + - "WHERE t.uuid IN (" + uuidList + ")"; + "FROM " + tableName + " t " + + "WHERE t.uuid IN (" + uuidList + ")"; try (Statement statement = connection.createStatement()) { ResultSet result = statement.executeQuery(query); while (result.next()) { @@ -353,6 +353,9 @@ public Map getOnlineTopSortedPointPositions() { } public void importData(SortedSet data, Map cachedUsernames) { + this.bitsCache.invalidateAll(); + this.pendingTransactions.clear(); + this.databaseConnector.connect(connection -> { String purgeQuery = "DELETE FROM " + this.getBitsTableName(); try (Statement statement = connection.createStatement()) { @@ -375,6 +378,9 @@ public void importData(SortedSet data, Map cachedUse } public boolean importLegacyTable(String tableName) { + this.bitsCache.invalidateAll(); + this.pendingTransactions.clear(); + AtomicBoolean value = new AtomicBoolean(); this.databaseConnector.connect(connection -> { try { @@ -384,8 +390,8 @@ public boolean importLegacyTable(String tableName) { ResultSet result = statement.executeQuery(selectQuery); while (result.next()) { UUID uuid = UUID.fromString(result.getString(1)); - int pointValue = result.getInt(2); - bits.put(uuid, pointValue); + int bitValue = result.getInt(2); + bits.put(uuid, bitValue); } } diff --git a/src/main/java/dev/padrewin/coldbits/manager/LeaderboardManager.java b/src/main/java/dev/padrewin/coldbits/manager/LeaderboardManager.java index 9bc5eb3..734a614 100644 --- a/src/main/java/dev/padrewin/coldbits/manager/LeaderboardManager.java +++ b/src/main/java/dev/padrewin/coldbits/manager/LeaderboardManager.java @@ -76,7 +76,7 @@ public void refresh() { } /** - * @return the current bits leaderboard + * @return the current points leaderboard */ public List getLeaderboard() { this.usedLeaderboardSinceLastRefresh = true; @@ -99,4 +99,4 @@ public void onPlayerJoin(PlayerJoinEvent event) { this.usedPositionsSinceLastRefresh = true; } -} +} \ No newline at end of file diff --git a/src/main/java/dev/padrewin/coldbits/util/BitsUtils.java b/src/main/java/dev/padrewin/coldbits/util/BitsUtils.java index 82644b8..4a62673 100644 --- a/src/main/java/dev/padrewin/coldbits/util/BitsUtils.java +++ b/src/main/java/dev/padrewin/coldbits/util/BitsUtils.java @@ -1,19 +1,21 @@ package dev.padrewin.coldbits.util; -import dev.padrewin.coldbits.ColdBits; import dev.padrewin.colddev.ColdPlugin; +import dev.padrewin.colddev.command.framework.CommandContext; import java.text.DecimalFormat; import java.text.DecimalFormatSymbols; import java.text.NumberFormat; -import java.util.ArrayList; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.NavigableMap; +import java.util.Objects; import java.util.TreeMap; import java.util.UUID; import java.util.function.Consumer; import java.util.regex.Pattern; import java.util.stream.Collectors; +import dev.padrewin.coldbits.ColdBits; import dev.padrewin.coldbits.manager.DataManager; import dev.padrewin.coldbits.manager.LocaleManager; import dev.padrewin.coldbits.models.Tuple; @@ -21,7 +23,6 @@ import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; import org.bukkit.metadata.MetadataValue; -import org.bukkit.util.StringUtil; public final class BitsUtils { @@ -110,18 +111,20 @@ public static void getPlayerByName(String name, Consumer> ca } ColdBits plugin = ColdBits.getInstance(); + DataManager dataManager = plugin.getManager(DataManager.class); plugin.getScheduler().runTaskAsync(() -> { - OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); - if (offlinePlayer.getName() != null && offlinePlayer.hasPlayedBefore()) { - Tuple tuple = new Tuple<>(offlinePlayer.getUniqueId(), offlinePlayer.getName()); + UUID uuid = plugin.getManager(DataManager.class).lookupCachedUUID(name); + if (uuid != null) { + Tuple tuple = new Tuple<>(uuid, name); plugin.getScheduler().runTask(() -> callback.accept(tuple)); return; } - UUID uuid = plugin.getManager(DataManager.class).lookupCachedUUID(name); - if (uuid != null) { - Tuple tuple = new Tuple<>(uuid, name); + OfflinePlayer offlinePlayer = Bukkit.getOfflinePlayer(name); + if (offlinePlayer.getName() != null && offlinePlayer.hasPlayedBefore()) { + Tuple tuple = new Tuple<>(offlinePlayer.getUniqueId(), offlinePlayer.getName()); plugin.getScheduler().runTask(() -> callback.accept(tuple)); + dataManager.updateCachedUsernames(Collections.singletonMap(tuple.getFirst(), tuple.getSecond())); return; } @@ -153,19 +156,18 @@ public static Tuple getPlayerByName(String name) { } /** - * Gets a list of player names to show in tab completions, vanished players are excluded. - * - * @param arg The argument for the name - * @return a list of online players excluding the + * @return a list of online players excluding vanished players */ - public static List getPlayerTabComplete(String arg) { - List players = Bukkit.getOnlinePlayers().stream() - .filter(x -> x.getMetadata("vanished").stream().noneMatch(MetadataValue::asBoolean)) + public static List getPlayerTabComplete(CommandContext context) { + return Bukkit.getOnlinePlayers().stream() + .filter(BitsUtils::isVisible) + .filter(x -> !Objects.equals(x, context.getSender())) .map(Player::getName) .collect(Collectors.toList()); - List completions = new ArrayList<>(); - StringUtil.copyPartialMatches(arg, players, completions); - return completions; + } + + public static boolean isVisible(Player player) { + return player.getMetadata("vanished").stream().noneMatch(MetadataValue::asBoolean); } } diff --git a/src/main/java/org/black_ixx/playerpoints/PlayerPoints.java b/src/main/java/org/black_ixx/playerpoints/PlayerPoints.java index 6bbdd8d..df19e2c 100644 --- a/src/main/java/org/black_ixx/playerpoints/PlayerPoints.java +++ b/src/main/java/org/black_ixx/playerpoints/PlayerPoints.java @@ -1,6 +1,8 @@ // In package org.black_ixx.playerpoints package org.black_ixx.playerpoints; +import dev.padrewin.coldbits.ColdBitsAPI; + public class PlayerPoints { private static PlayerPoints instance; @@ -15,7 +17,7 @@ public static PlayerPoints getInstance() { return instance; } - public PlayerPointsAPI getAPI() { + public ColdBitsAPI getAPI() { return dev.padrewin.coldbits.ColdBits.getInstance().getAPI(); } } diff --git a/src/main/resources/locale/en_US.yml b/src/main/resources/locale/en_US.yml index 8570c2b..27fb851 100644 --- a/src/main/resources/locale/en_US.yml +++ b/src/main/resources/locale/en_US.yml @@ -18,12 +18,18 @@ command-take-log: "&7Took &c%amount% %currency% &7from &c%player%&7's balance. B # Misc no-permission: '&cYou don''t have permission for that!' -no-console: '&cOnly players may execute this command.' +only-player: '&cThis command can only be executed by a player.' invalid-amount: '&cAmount must be a positive whole number.' unknown-player: '&cPlayer could not be found: &b%player%' unknown-command: '&cUnknown command: &b%input%' -votifier-voted: '&7Thanks for voting on &c%service%&7! &c&b%amount% &7has been added to your balance.' -leaderboard-empty-entry: This could be you! +invalid-argument: '&cInvalid argument: %message%.' +command-usage: '&7Usage: &c/%cmd% %args%' +argument-handler-string: 'String cannot be empty' +argument-handler-enum: '%enum% type [%input%] does not exist' +argument-handler-enum-list: '%enum% type [%input%] does not exist. Valid types: %types%' +argument-handler-value: 'Value [%input%] is not valid' +votifier-voted: '&7Thanks for voting on %service%! &c%amount% &7has been added to your balance.' +leaderboard-empty-entry: 'This could be you!' command-cooldown: '&cPlease wait before using that command again.' # Base Command Message @@ -31,89 +37,78 @@ base-command-color: '&7' base-command-help: '&7Use &c/bits help &7for command information.' # Help Command -command-help-description: '&8 - &c/bits help &7- Displays the help menu... You have arrived' command-help-title: '&cAvailable Commands:' +command-help-description: 'Displays the help menu... You have arrived' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- Give a player bits &7(&asupport -s [SILENT]&7)' -command-give-usage: '&7Usage: &c/bits give [-s]' +command-give-description: 'Give a player bits' command-give-success: '&c%player% &7was given &c%amount% &c%currency%&7.' command-give-received: '&7You have received &c%amount% &c%currency%&7.' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- Gives all online players bits &7(&asupport -s [SILENT]&7)' -command-giveall-usage: '&7Usage: &c/bits giveall [*] [-s]' +command-giveall-description: 'Gives all online players bits' command-giveall-success: '&7Gave &c%amount% &c%currency% &7to all online players.' # Take Command -command-take-description: '&8 - &c/bits take &7- Take bits from a player' -command-take-usage: '&7Usage: &c/bits take ' +command-take-description: 'Take bits from a player' command-take-success: '&7Took &c%amount% &c%currency% from &c%player%&a&7.' command-take-not-enough: '&c%player% &7does not have enough %currency% for that.' # Look Command -command-look-description: '&8 - &c/bits look &7- View a player''s bits' -command-look-usage: '&7Usage: &c/bits look ' +command-look-description: 'View a player''s bits' command-look-success: '&c%player% &7has &c%amount% &c%currency%&7.' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- Pay a player' -command-pay-usage: '&7Usage: &c/bits pay ' +command-pay-description: 'Pay a player' command-pay-self: '&cYou cannot pay yourself!' command-pay-sent: '&7You paid &c%player% %amount% &c%currency%&7.' command-pay-received: '&7You were paid &c%amount% &c%currency% by &c%player%&7.' command-pay-lacking-funds: '&cYou do not have enough %currency% for that.' # Set Command -command-set-description: '&8 - &c/bits set &7- Set a player''s bits' -command-set-usage: '&7Usage: &c/bits set ' +command-set-description: 'Set a player''s bits' command-set-success: '&7Set the %currency% of &c%player% &7to &c%amount%&7.' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- Reset a player''s bits' -command-reset-usage: '&7Usage: &c/bits reset ' +command-reset-description: 'Reset a player''s bits' command-reset-success: '&7Reset the %currency% for &c%player%&7.' # Me Command -command-me-description: '&8 - &c/bits me &7- View your bits' -command-me-usage: '&7Usage: &c/bits me' +command-me-description: 'View your bits' command-me-success: '&7You have &c%amount% &c%currency%&7.' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- View the leaderboard' -command-lead-usage: '&7Usage: &c/bits lead [next|prev|#]' +command-lead-description: 'View the leaderboard' command-lead-title: '&7Leaderboard &c(Page #%page%/%pages%)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&cInvalid leaderboard page.' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- Broadcast a player''s bits' -command-broadcast-usage: '&7Usage: &c/bits broadcast ' +command-broadcast-description: 'Broadcast a player''s bits' command-broadcast-message: '&c%player% &7has &c%amount% &c%currency%&7.' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- Reloads the plugin' -command-reload-usage: '&7Usage: &c/bits reload' +command-reload-description: 'Reloads the plugin' command-reload-success: '&7Configuration and locale files were reloaded.' # Export Command -command-export-description: '&8 - &c/bits export &7- Exports the data to storage.yml' -command-export-usage: '&7Usage: &c/bits export' +command-export-description: 'Exports the data to storage.yml' command-export-success: '&aSave data has been exported to storage.yml.' command-export-warning: '&eWARNING: &cA storage.yml file already exists. &7If you would like to overwrite it, use &c/bits &cexport confirm&7.' # Import Command -command-import-description: '&8 - &c/bits import &7- Imports the data from storage.yml' -command-import-usage: '&7Usage: &c/bits import' +command-import-description: 'Imports the data from storage.yml' command-import-success: '&aSave data has been imported from storage.yml.' command-import-no-backup: '&cUnable to import, storage.yml does not exist. You can generate one with &a/bits export &cand use it to transfer data between database types.' command-import-warning: '&eWARNING: &cThis operation will delete all data from the active database and replace it with the contents of storage.yml. &cThe currently active database type is &c&o&l%type%&c. &cIf you are absolutely sure about this, use &a/bits import confirm&c.' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- Import a legacy table' -command-importlegacy-usage: '&7Usage: &c/bits importlegacy ' +command-importlegacy-description: 'Import a legacy table' command-importlegacy-success: '&aSuccessfully imported legacy data from &4%table%&a.' command-importlegacy-failure: '&cFailed to import legacy data from &4%table%&c. Does the table exist?' command-importlegacy-only-mysql: '&cThis command is only available when you have MySQL enabled.' # Version Command -command-version-description: '&8 - &c/bits version &7- Display the version info for ColdBits' +command-version-description: 'Display the version info for ColdBits' diff --git a/src/main/resources/locale/fr_FR.yml b/src/main/resources/locale/fr_FR.yml index 063d64c..db5fa32 100644 --- a/src/main/resources/locale/fr_FR.yml +++ b/src/main/resources/locale/fr_FR.yml @@ -2,118 +2,113 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: Point -currency-plural: bits +currency-singular: Bit +currency-plural: Bits currency-separator: ',' currency-decimal: . number-abbreviation-thousands: k number-abbreviation-millions: m -number-abbreviation-billions: b +number-abbreviation-billions: md # Console log -command-give-log: "&7Ajouté &c%amount% %currency% &7au solde de &c%player%&7. Solde: &c%new_balance% %currency%" -command-reset-log: "&7Réinitialisé le solde de &c%player%&7. Solde: &c%new_balance% %currency%" -command-set-log: "&7Défini le solde de &c%player%&7. Solde: &c%new_balance% %currency%" -command-take-log: "&7Retiré &c%amount% %currency% &7du solde de &c%player%&7. Solde: &c%new_balance% %currency%" +command-give-log: "&7Ajout de &c%amount% %currency% &7au solde de &c%player%&7. Solde: &c%new_balance% %currency%" +command-reset-log: "&7Réinitialisation du solde de &c%player%&7. Solde: &c%new_balance% %currency%" +command-set-log: "&7Définition du solde de &c%player%&7. Solde: &c%new_balance% %currency%" +command-take-log: "&7Retrait de &c%amount% %currency% &7du solde de &c%player%&7. Solde: &c%new_balance% %currency%" # Misc -no-permission: '&cVous n''avez pas la permission pour cela!' -no-console: '&cSeuls les joueurs peuvent exécuter cette commande.' +no-permission: '&cVous n''avez pas la permission pour cela !' +only-player: '&cCette commande ne peut être exécutée que par un joueur.' invalid-amount: '&cLe montant doit être un nombre entier positif.' -unknown-player: '&cLe joueur n''a pas pu être trouvé: &b%player%' -unknown-command: '&cCommande inconnue: &b%input%' -votifier-voted: '&7Merci d''avoir voté sur &c%service%&7! &c&b%amount% &7a été ajouté à votre solde.' -leaderboard-empty-entry: Cela pourrait être vous! +unknown-player: '&cJoueur introuvable : &b%player%' +unknown-command: '&cCommande inconnue : &b%input%' +invalid-argument: '&cArgument invalide : %message%.' +command-usage: '&7Utilisation : &c/%cmd% %args%' +argument-handler-string: 'La chaîne ne peut pas être vide' +argument-handler-enum: 'Le type %enum% [%input%] n''existe pas' +argument-handler-enum-list: 'Le type %enum% [%input%] n''existe pas. Types valides : %types%' +argument-handler-value: 'La valeur [%input%] n''est pas valide' +votifier-voted: '&7Merci d''avoir voté sur %service% ! &c%amount% &7a été ajouté à votre solde.' +leaderboard-empty-entry: 'Cela pourrait être vous !' command-cooldown: '&cVeuillez patienter avant de réutiliser cette commande.' # Base Command Message base-command-color: '&7' -base-command-help: '&7Utilisez &c/bits help &7pour des informations sur les commandes.' +base-command-help: '&7Utilisez &c/bits help &7pour obtenir des informations sur les commandes.' # Help Command -command-help-description: '&8 - &c/bits help &7- Affiche le menu d''aide... Vous êtes arrivé' -command-help-title: '&cCommandes disponibles:' +command-help-title: '&cCommandes disponibles :' +command-help-description: 'Affiche le menu d''aide... Vous êtes arrivé' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- Donner des bits à un joueur &a(supporte aussi -s [SILENCIEUX])' -command-give-usage: '&7Utilisation: &c/bits give [-s]' -command-give-success: '&c%player% &7a reçu &c%amount% &c%currency%&7.' +command-give-description: 'Donner des bits à un joueur' +command-give-success: '&c%amount% &c%currency% &7ont été donnés à &c%player%&7.' command-give-received: '&7Vous avez reçu &c%amount% &c%currency%&7.' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- Donne des bits à tous les joueurs en ligne &a(supporte aussi -s [SILENCIEUX])' -command-giveall-usage: '&7Utilisation: &c/bits giveall [*] [-s]' -command-giveall-success: '&7Donné &c%amount% &c%currency% &7à tous les joueurs en ligne.' +command-giveall-description: 'Donner des bits à tous les joueurs en ligne' +command-giveall-success: '&7Don de &c%amount% &c%currency% &7à tous les joueurs en ligne.' # Take Command -command-take-description: '&8 - &c/bits take &7- Retirer des bits à un joueur' -command-take-usage: '&7Utilisation: &c/bits take ' -command-take-success: '&7Retiré &c%amount% &c%currency% de &c%player%&7.' +command-take-description: 'Prendre des bits à un joueur' +command-take-success: '&7Retrait de &c%amount% &c%currency% &7à &c%player%&a&7.' command-take-not-enough: '&c%player% &7n''a pas assez de %currency% pour cela.' # Look Command -command-look-description: '&8 - &c/bits look &7- Voir les bits d''un joueur' -command-look-usage: '&7Utilisation: &c/bits look ' +command-look-description: 'Voir les bits d''un joueur' command-look-success: '&c%player% &7a &c%amount% &c%currency%&7.' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- Payer un joueur' -command-pay-usage: '&7Utilisation: &c/bits pay ' -command-pay-self: '&cVous ne pouvez pas vous payer vous-même!' +command-pay-description: 'Payer un joueur' +command-pay-self: '&cVous ne pouvez pas vous payer vous-même !' command-pay-sent: '&7Vous avez payé &c%player% %amount% &c%currency%&7.' -command-pay-received: '&7Vous avez reçu &c%amount% &c%currency% de &c%player%&7.' +command-pay-received: '&7Vous avez reçu &c%amount% &c%currency% &7de &c%player%&7.' command-pay-lacking-funds: '&cVous n''avez pas assez de %currency% pour cela.' # Set Command -command-set-description: '&8 - &c/bits set &7- Définir les bits d''un joueur' -command-set-usage: '&7Utilisation: &c/bits set ' -command-set-success: '&7Les bits de &c%player% &7ont été définis à &c%amount%&7.' +command-set-description: 'Définir les bits d''un joueur' +command-set-success: '&7Les %currency% de &c%player% &7ont été définis à &c%amount%&7.' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- Réinitialiser les bits d''un joueur' -command-reset-usage: '&7Utilisation: &c/bits reset ' -command-reset-success: '&7Les bits de &c%player% &7ont été réinitialisés.' +command-reset-description: 'Réinitialiser les bits d''un joueur' +command-reset-success: '&7Les %currency% de &c%player% &7ont été réinitialisés.' # Me Command -command-me-description: '&8 - &c/bits me &7- Voir vos bits' -command-me-usage: '&7Utilisation: &c/bits me' +command-me-description: 'Voir vos bits' command-me-success: '&7Vous avez &c%amount% &c%currency%&7.' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- Voir le classement' -command-lead-usage: '&7Utilisation: &c/bits lead [suivant|précédent|#]' +command-lead-description: 'Voir le classement' command-lead-title: '&7Classement &c(Page #%page%/%pages%)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&cPage de classement invalide.' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- Annoncer les bits d''un joueur' -command-broadcast-usage: '&7Utilisation: &c/bits broadcast ' +command-broadcast-description: 'Diffuser les bits d''un joueur' command-broadcast-message: '&c%player% &7a &c%amount% &c%currency%&7.' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- Recharge le plugin' -command-reload-usage: '&7Utilisation: &c/bits reload' +command-reload-description: 'Recharger le plugin' command-reload-success: '&7Les fichiers de configuration et de langue ont été rechargés.' # Export Command -command-export-description: '&8 - &c/bits export &7- Exporte les données dans storage.yml' -command-export-usage: '&7Utilisation: &c/bits export' +command-export-description: 'Exporter les données vers storage.yml' command-export-success: '&aLes données ont été exportées vers storage.yml.' -command-export-warning: '&cAttention: Un fichier storage.yml existe déjà. Si vous souhaitez l''écraser, utilisez &d/bits &cexport confirm.' +command-export-warning: '&eATTENTION : &cUn fichier storage.yml existe déjà. &7Si vous souhaitez l''écraser, utilisez &c/bits &cexport confirm&7.' # Import Command -command-import-description: '&8 - &c/bits import &7- Importe les données depuis storage.yml' -command-import-usage: '&7Utilisation: &c/bits import' +command-import-description: 'Importer les données depuis storage.yml' command-import-success: '&aLes données ont été importées depuis storage.yml.' -command-import-no-backup: '&cImpossible d''importer, storage.yml n''existe pas. Vous pouvez en générer un avec &d/bits export &cet l''utiliser pour transférer des données entre types de bases de données.' -command-import-warning: '&cAttention: Cette opération supprimera toutes les données de la base de données active et les remplacera par le contenu de storage.yml. &cLe type de base de données actuellement actif est &b&o&l%type%&c. &cSi vous en êtes absolument certain, utilisez &b/bits import confirm&c.' +command-import-no-backup: '&cImpossible d''importer, storage.yml n''existe pas. Vous pouvez en générer un avec &a/bits export &cet l''utiliser pour transférer des données entre types de bases de données.' +command-import-warning: '&eATTENTION : &cCette opération supprimera toutes les données de la base de données active et les remplacera par le contenu de storage.yml. &cLe type de base de données actuellement actif est &c&o&l%type%&c. &cSi vous êtes absolument sûr de cela, utilisez &a/bits import confirm&c.' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- Importer une table héritée' -command-importlegacy-usage: '&7Utilisation: &c/bits importlegacy
' -command-importlegacy-success: '&aDonnées héritées de &d%table%&a importées avec succès.' -command-importlegacy-failure: '&cÉchec de l''importation des données héritées de &d%table%&c. La table existe-t-elle?' -command-importlegacy-only-mysql: '&cCette commande est uniquement disponible lorsque MySQL est activé.' +command-importlegacy-description: 'Importer une table héritée' +command-importlegacy-success: '&aImportation réussie des données héritées de &4%table%&a.' +command-importlegacy-failure: '&cÉchec de l''importation des données héritées de &4%table%&c. La table existe-t-elle ?' +command-importlegacy-only-mysql: '&cCette commande n''est disponible que lorsque MySQL est activé.' # Version Command -command-version-description: '&8 - &c/bits version &7- Affiche les informations de version pour ColdBits' +command-version-description: 'Afficher les informations de version de ColdBits' diff --git a/src/main/resources/locale/gr_GR.yml b/src/main/resources/locale/gr_GR.yml index a6be406..3e193e5 100644 --- a/src/main/resources/locale/gr_GR.yml +++ b/src/main/resources/locale/gr_GR.yml @@ -2,118 +2,113 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: Πόντος -currency-plural: Πόντοι +currency-singular: Bit +currency-plural: Bits currency-separator: ',' currency-decimal: . number-abbreviation-thousands: χιλ -number-abbreviation-millions: εκατ -number-abbreviation-billions: δισ +number-abbreviation-millions: εκ +number-abbreviation-billions: δις # Console log -command-give-log: "&7Πρόσθεσε &c%amount% %currency% &7στον λογαριασμό του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" -command-reset-log: "&7Επαναφορά του λογαριασμού του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" -command-set-log: "&7Ορίστηκε ο λογαριασμός του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" -command-take-log: "&7Αφαίρεση &c%amount% %currency% &7από τον λογαριασμό του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" +command-give-log: "&7Προστέθηκαν &c%amount% %currency% &7στο υπόλοιπο του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" +command-reset-log: "&7Επαναφορά του υπολοίπου του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" +command-set-log: "&7Ορίστηκε το υπόλοιπο του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" +command-take-log: "&7Αφαιρέθηκαν &c%amount% %currency% &7από το υπόλοιπο του &c%player%&7. Υπόλοιπο: &c%new_balance% %currency%" # Misc no-permission: '&cΔεν έχετε άδεια για αυτό!' -no-console: '&cΜόνο οι παίκτες μπορούν να εκτελέσουν αυτήν την εντολή.' +only-player: '&cΑυτή η εντολή μπορεί να εκτελεστεί μόνο από παίκτη.' invalid-amount: '&cΤο ποσό πρέπει να είναι θετικός ακέραιος αριθμός.' unknown-player: '&cΟ παίκτης δεν βρέθηκε: &b%player%' unknown-command: '&cΆγνωστη εντολή: &b%input%' -votifier-voted: '&7Ευχαριστούμε που ψηφίσατε στο &c%service%&7! &c&b%amount% &7προστέθηκαν στο υπόλοιπό σας.' -leaderboard-empty-entry: Αυτό θα μπορούσες να είσαι εσύ! -command-cooldown: '&cΠαρακαλώ περιμένετε πριν χρησιμοποιήσετε ξανά αυτή την εντολή.' +invalid-argument: '&cΜη έγκυρο όρισμα: %message%.' +command-usage: '&7Χρήση: &c/%cmd% %args%' +argument-handler-string: 'Η συμβολοσειρά δεν μπορεί να είναι κενή' +argument-handler-enum: 'Ο τύπος %enum% [%input%] δεν υπάρχει' +argument-handler-enum-list: 'Ο τύπος %enum% [%input%] δεν υπάρχει. Έγκυροι τύποι: %types%' +argument-handler-value: 'Η τιμή [%input%] δεν είναι έγκυρη' +votifier-voted: '&7Ευχαριστούμε που ψηφίσατε στο %service%! &c%amount% &7προστέθηκαν στο υπόλοιπό σας.' +leaderboard-empty-entry: 'Αυτό θα μπορούσατε να είστε εσείς!' +command-cooldown: '&cΠαρακαλώ περιμένετε πριν χρησιμοποιήσετε ξανά αυτήν την εντολή.' # Base Command Message base-command-color: '&7' base-command-help: '&7Χρησιμοποιήστε &c/bits help &7για πληροφορίες εντολών.' # Help Command -command-help-description: '&8 - &c/bits help &7- Εμφανίζει το μενού βοήθειας... Έφτασες' command-help-title: '&cΔιαθέσιμες Εντολές:' +command-help-description: 'Εμφανίζει το μενού βοήθειας... Έχετε φτάσει' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- Δώστε πόντους σε έναν παίκτη &a(επίσης υποστηρίζει -s [ΣΙΩΠΗΛΑ])' -command-give-usage: '&7Χρήση: &c/bits give <παίκτης> <ποσό> [-s]' -command-give-success: '&c%player% &7έλαβε &c%amount% &c%currency%&7.' +command-give-description: 'Δώστε bits σε έναν παίκτη' +command-give-success: '&7Δόθηκαν &c%amount% &c%currency% &7στον &c%player%&7.' command-give-received: '&7Λάβατε &c%amount% &c%currency%&7.' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- Δίνει πόντους σε όλους τους παίκτες online &a(επίσης υποστηρίζει -s [ΣΙΩΠΗΛΑ])' -command-giveall-usage: '&7Χρήση: &c/bits giveall <ποσό> [*] [-s]' -command-giveall-success: '&7Δόθηκαν &c%amount% &c%currency% &7σε όλους τους παίκτες online.' +command-giveall-description: 'Δώστε bits σε όλους τους συνδεδεμένους παίκτες' +command-giveall-success: '&7Δόθηκαν &c%amount% &c%currency% &7σε όλους τους συνδεδεμένους παίκτες.' # Take Command -command-take-description: '&8 - &c/bits take &7- Αφαιρέστε πόντους από έναν παίκτη' -command-take-usage: '&7Χρήση: &c/bits take <παίκτης> <ποσό>' -command-take-success: '&7Αφαιρέθηκαν &c%amount% &c%currency% από &c%player%&7.' -command-take-not-enough: '&c%player% &7δεν έχει αρκετούς %currency% για αυτό.' +command-take-description: 'Πάρτε bits από έναν παίκτη' +command-take-success: '&7Αφαιρέθηκαν &c%amount% &c%currency% &7από τον &c%player%&a&7.' +command-take-not-enough: '&cΟ %player% &7δεν έχει αρκετά %currency% για αυτό.' # Look Command -command-look-description: '&8 - &c/bits look &7- Δείτε τους πόντους ενός παίκτη' -command-look-usage: '&7Χρήση: &c/bits look <παίκτης>' -command-look-success: '&c%player% &7έχει &c%amount% &c%currency%&7.' +command-look-description: 'Δείτε τα bits ενός παίκτη' +command-look-success: '&cΟ %player% &7έχει &c%amount% &c%currency%&7.' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- Πληρώστε έναν παίκτη' -command-pay-usage: '&7Χρήση: &c/bits pay <παίκτης> <ποσό>' +command-pay-description: 'Πληρώστε έναν παίκτη' command-pay-self: '&cΔεν μπορείτε να πληρώσετε τον εαυτό σας!' -command-pay-sent: '&7Πληρώσατε &c%player% %amount% &c%currency%&7.' -command-pay-received: '&7Πληρωθήκατε &c%amount% &c%currency% από &c%player%&7.' -command-pay-lacking-funds: '&cΔεν έχετε αρκετούς %currency% για αυτό.' +command-pay-sent: '&7Πληρώσατε τον &c%player% με %amount% &c%currency%&7.' +command-pay-received: '&7Σας πλήρωσε ο &c%player% &7με &c%amount% &c%currency%&7.' +command-pay-lacking-funds: '&cΔεν έχετε αρκετά %currency% για αυτό.' # Set Command -command-set-description: '&8 - &c/bits set &7- Ορίστε τους πόντους ενός παίκτη' -command-set-usage: '&7Χρήση: &c/bits set <παίκτης> <ποσό>' -command-set-success: '&7Οι πόντοι του &c%player% &7ορίστηκαν σε &c%amount%&7.' +command-set-description: 'Ορίστε τα bits ενός παίκτη' +command-set-success: '&7Τα %currency% του &c%player% &7ορίστηκαν σε &c%amount%&7.' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- Επαναφορά των πόντων ενός παίκτη' -command-reset-usage: '&7Χρήση: &c/bits reset <παίκτης>' -command-reset-success: '&7Οι πόντοι του &c%player% &7επαναφέρθηκαν.' +command-reset-description: 'Επαναφέρετε τα bits ενός παίκτη' +command-reset-success: '&7Έγινε επαναφορά των %currency% για τον &c%player%&7.' # Me Command -command-me-description: '&8 - &c/bits me &7- Δείτε τους πόντους σας' -command-me-usage: '&7Χρήση: &c/bits me' +command-me-description: 'Δείτε τα bits σας' command-me-success: '&7Έχετε &c%amount% &c%currency%&7.' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- Δείτε τον πίνακα κατάταξης' -command-lead-usage: '&7Χρήση: &c/bits lead [επόμενη|προηγούμενη|#]' -command-lead-title: '&7Πίνακας Κατάταξης &c(Σελίδα #%page%/%pages%)' +command-lead-description: 'Δείτε την κατάταξη' +command-lead-title: '&7Κατάταξη &c(Σελίδα #%page%/%pages%)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&cΜη έγκυρη σελίδα κατάταξης.' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- Ανακοινώστε τους πόντους ενός παίκτη' -command-broadcast-usage: '&7Χρήση: &c/bits broadcast <παίκτης>' -command-broadcast-message: '&c%player% &7έχει &c%amount% &c%currency%&7.' +command-broadcast-description: 'Μεταδώστε τα bits ενός παίκτη' +command-broadcast-message: '&cΟ %player% &7έχει &c%amount% &c%currency%&7.' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- Επαναφορτώνει το plugin' -command-reload-usage: '&7Χρήση: &c/bits reload' +command-reload-description: 'Επαναφορτώνει το plugin' command-reload-success: '&7Τα αρχεία ρυθμίσεων και γλώσσας επαναφορτώθηκαν.' # Export Command -command-export-description: '&8 - &c/bits export &7- Εξάγει τα δεδομένα στο αρχείο storage.yml' -command-export-usage: '&7Χρήση: &c/bits export' -command-export-success: '&aΤα δεδομένα εξάχθηκαν στο αρχείο storage.yml.' -command-export-warning: '&cΠροειδοποίηση: Το αρχείο storage.yml υπάρχει ήδη. Εάν θέλετε να το αντικαταστήσετε, χρησιμοποιήστε &d/bits &cexport confirm.' +command-export-description: 'Εξάγει τα δεδομένα στο storage.yml' +command-export-success: '&aΤα δεδομένα εξήχθησαν στο storage.yml.' +command-export-warning: '&eΠΡΟΕΙΔΟΠΟΙΗΣΗ: &cΥπάρχει ήδη ένα αρχείο storage.yml. &7Αν θέλετε να το αντικαταστήσετε, χρησιμοποιήστε &c/bits &cexport confirm&7.' # Import Command -command-import-description: '&8 - &c/bits import &7- Εισάγει τα δεδομένα από το αρχείο storage.yml' -command-import-usage: '&7Χρήση: &c/bits import' -command-import-success: '&aΤα δεδομένα εισήχθησαν από το αρχείο storage.yml.' -command-import-no-backup: '&cΑδύνατη η εισαγωγή, το αρχείο storage.yml δεν υπάρχει. Μπορείτε να δημιουργήσετε ένα με &d/bits export &cκαι να το χρησιμοποιήσετε για μεταφορά δεδομένων μεταξύ τύπων βάσης δεδομένων.' -command-import-warning: '&cΠροειδοποίηση: Αυτή η ενέργεια θα διαγράψει όλα τα δεδομένα από την ενεργή βάση δεδομένων και θα τα αντικαταστήσει με τα περιεχόμενα του αρχείου storage.yml. &cΟ ενεργός τύπος βάσης δεδομένων είναι &b&o&l%type%&c. &cΕάν είστε απόλυτα σίγουροι για αυτό, χρησιμοποιήστε &b/bits import confirm&c.' +command-import-description: 'Εισάγει τα δεδομένα από το storage.yml' +command-import-success: '&aΤα δεδομένα εισήχθησαν από το storage.yml.' +command-import-no-backup: '&cΑδύνατη η εισαγωγή, το storage.yml δεν υπάρχει. Μπορείτε να δημιουργήσετε ένα με &a/bits export &cκαι να το χρησιμοποιήσετε για να μεταφέρετε δεδομένα μεταξύ τύπων βάσεων δεδομένων.' +command-import-warning: '&eΠΡΟΕΙΔΟΠΟΙΗΣΗ: &cΑυτή η λειτουργία θα διαγράψει όλα τα δεδομένα από την ενεργή βάση δεδομένων και θα τα αντικαταστήσει με τα περιεχόμενα του storage.yml. &cΟ τρέχων ενεργός τύπος βάσης δεδομένων είναι &c&o&l%type%&c. &cΑν είστε απόλυτα σίγουροι για αυτό, χρησιμοποιήστε &a/bits import confirm&c.' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- Εισαγωγή παλιάς βάσης δεδομένων' -command-importlegacy-usage: '&7Χρήση: &c/bits importlegacy <βάση>' -command-importlegacy-success: '&aΤα δεδομένα από την παλιά βάση &d%table%&a εισήχθησαν με επιτυχία.' -command-importlegacy-failure: '&cΗ εισαγωγή των δεδομένων από την παλιά βάση &d%table% &cαπέτυχε. Υπάρχει η βάση;' -command-importlegacy-only-mysql: '&cΑυτή η εντολή είναι διαθέσιμη μόνο όταν έχετε ενεργοποιήσει το MySQL.' +command-importlegacy-description: 'Εισαγωγή παλαιού πίνακα' +command-importlegacy-success: '&aΕπιτυχής εισαγωγή παλαιών δεδομένων από &4%table%&a.' +command-importlegacy-failure: '&cΑποτυχία εισαγωγής παλαιών δεδομένων από &4%table%&c. Υπάρχει ο πίνακας;' +command-importlegacy-only-mysql: '&cΑυτή η εντολή είναι διαθέσιμη μόνο όταν έχετε ενεργοποιήσει τη MySQL.' # Version Command -command-version-description: '&8 - &c/bits version &7- Εμφανίζει τις πληροφορίες έκδοσης του ColdBits' +command-version-description: 'Εμφανίζει τις πληροφορίες έκδοσης του ColdBits' diff --git a/src/main/resources/locale/hu_HU.yml b/src/main/resources/locale/hu_HU.yml index 24ba3d7..ed1d649 100644 --- a/src/main/resources/locale/hu_HU.yml +++ b/src/main/resources/locale/hu_HU.yml @@ -2,118 +2,113 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: Pont -currency-plural: Pontok +currency-singular: Bit +currency-plural: Bit currency-separator: ',' currency-decimal: . -number-abbreviation-thousands: ezer +number-abbreviation-thousands: e number-abbreviation-millions: m number-abbreviation-billions: mrd # Console log -command-give-log: "&7Hozzáadva &c%amount% %currency% &7a(z) &c%player%&7 egyenlegéhez. Egyenleg: &c%new_balance% %currency%" +command-give-log: "&7Hozzáadva &c%amount% %currency% &7játékos &c%player%&7 egyenlegéhez. Egyenleg: &c%new_balance% %currency%" command-reset-log: "&7Visszaállítva &c%player%&7 egyenlege. Egyenleg: &c%new_balance% %currency%" command-set-log: "&7Beállítva &c%player%&7 egyenlege. Egyenleg: &c%new_balance% %currency%" -command-take-log: "&7Levélve &c%amount% %currency% &7a(z) &c%player%&7 egyenlegéből. Egyenleg: &c%new_balance% %currency%" +command-take-log: "&7Levonva &c%amount% %currency% &7játékos &c%player%&7 egyenlegéből. Egyenleg: &c%new_balance% %currency%" # Misc no-permission: '&cNincs jogosultságod ehhez!' -no-console: '&cCsak játékosok hajthatják végre ezt a parancsot.' +only-player: '&cEzt a parancsot csak játékos hajthatja végre.' invalid-amount: '&cAz összegnek pozitív egész számnak kell lennie.' unknown-player: '&cA játékos nem található: &b%player%' unknown-command: '&cIsmeretlen parancs: &b%input%' -votifier-voted: '&7Köszönjük a szavazatot a &c%service%&7 oldalán! &c&b%amount% &7került hozzáadásra az egyenlegedhez.' -leaderboard-empty-entry: Ez lehetnél te is! -command-cooldown: '&cKérlek várj mielőtt újra használod ezt a parancsot.' +invalid-argument: '&cÉrvénytelen argumentum: %message%.' +command-usage: '&7Használat: &c/%cmd% %args%' +argument-handler-string: 'A szöveg nem lehet üres' +argument-handler-enum: '%enum% típus [%input%] nem létezik' +argument-handler-enum-list: '%enum% típus [%input%] nem létezik. Érvényes típusok: %types%' +argument-handler-value: 'Az érték [%input%] érvénytelen' +votifier-voted: '&7Köszönjük, hogy szavaztál a %service% oldalon! &c%amount% &7hozzáadva az egyenlegedhez.' +leaderboard-empty-entry: 'Ez lehetnél te!' +command-cooldown: '&cKérlek várj, mielőtt újra használnád ezt a parancsot.' # Base Command Message base-command-color: '&7' -base-command-help: '&7Használd a &c/bits help &7parancsot a parancsok megtekintéséhez.' +base-command-help: '&7Használd a &c/bits help &7parancsot információkért.' # Help Command -command-help-description: '&8 - &c/bits help &7- Megjeleníti a súgó menüt... Megérkeztél' command-help-title: '&cElérhető Parancsok:' +command-help-description: 'Megjeleníti a súgó menüt... Megérkeztél' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- Pontokat ad egy játékosnak &a(támogatja a -s [CSENDBEN] kapcsolót is)' -command-give-usage: '&7Használat: &c/bits give <összeg> [-s]' -command-give-success: '&c%player% &7kapott &c%amount% &c%currency%&7.' -command-give-received: '&7Kaptál &c%amount% &c%currency%&7.' +command-give-description: 'Bit adása egy játékosnak' +command-give-success: '&c%player% &7játékos kapott &c%amount% &c%currency%&7-et.' +command-give-received: '&7Kaptál &c%amount% &c%currency%&7-et.' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- Minden online játékosnak ad pontokat &a(támogatja a -s [CSENDBEN] kapcsolót is)' -command-giveall-usage: '&7Használat: &c/bits giveall <összeg> [*] [-s]' -command-giveall-success: '&7Adtál &c%amount% &c%currency% &7minden online játékosnak.' +command-giveall-description: 'Bit adása minden online játékosnak' +command-giveall-success: '&7Adva &c%amount% &c%currency% &7minden online játékosnak.' # Take Command -command-take-description: '&8 - &c/bits take &7- Pontokat vesz el egy játékostól' -command-take-usage: '&7Használat: &c/bits take <összeg>' -command-take-success: '&7Elvettél &c%amount% &c%currency% &c%player%&7-tól.' -command-take-not-enough: '&c%player% &7nem rendelkezik elegendő %currency%-al.' +command-take-description: 'Bit elvétele egy játékostól' +command-take-success: '&7Elvéve &c%amount% &c%currency% &7játékostól &c%player%&a&7.' +command-take-not-enough: '&c%player% &7játékosnak nincs elég %currency% ehhez.' # Look Command -command-look-description: '&8 - &c/bits look &7- Megnézi egy játékos pontjait' -command-look-usage: '&7Használat: &c/bits look ' -command-look-success: '&c%player% &7rendelkezik &c%amount% &c%currency%-al.' +command-look-description: 'Játékos bitjeinek megtekintése' +command-look-success: '&c%player% &7játékosnak &c%amount% &c%currency%&7 van.' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- Fizess egy játékosnak' -command-pay-usage: '&7Használat: &c/bits pay <összeg>' -command-pay-self: '&cNem fizethetsz magadnak!' -command-pay-sent: '&7Fizettél &c%player% %amount% &c%currency%-al.' -command-pay-received: '&7Fizettek neked &c%amount% &c%currency%-t &c%player% által.' -command-pay-lacking-funds: '&cNincs elegendő %currency%-od ehhez.' +command-pay-description: 'Bit fizetése egy játékosnak' +command-pay-self: '&cNem fizethetsz saját magadnak!' +command-pay-sent: '&7Fizettél &c%player% játékosnak %amount% &c%currency%&7-et.' +command-pay-received: '&7Kaptál &c%amount% &c%currency%&7-et &c%player%&7 játékostól.' +command-pay-lacking-funds: '&cNincs elég %currency% ehhez.' # Set Command -command-set-description: '&8 - &c/bits set &7- Beállítja egy játékos pontjait' -command-set-usage: '&7Használat: &c/bits set <összeg>' -command-set-success: '&7A &c%player% &7pontjai be lettek állítva &c%amount%-ra&7.' +command-set-description: 'Játékos bitjeinek beállítása' +command-set-success: '&7Beállítva &c%player% &7játékos %currency% értéke &c%amount%&7-re.' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- Visszaállítja egy játékos pontjait' -command-reset-usage: '&7Használat: &c/bits reset ' -command-reset-success: '&7A &c%player% &7pontjai vissza lettek állítva.' +command-reset-description: 'Játékos bitjeinek visszaállítása' +command-reset-success: '&7Visszaállítva &c%player%&7 játékos %currency% értéke.' # Me Command -command-me-description: '&8 - &c/bits me &7- Megnézi a saját pontjaidat' -command-me-usage: '&7Használat: &c/bits me' -command-me-success: '&7Neked van &c%amount% &c%currency%-od&7.' +command-me-description: 'Saját bitjeid megtekintése' +command-me-success: '&7Neked &c%amount% &c%currency%&7 van.' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- Megnézi a ranglistát' -command-lead-usage: '&7Használat: &c/bits lead [következő|előző|#]' +command-lead-description: 'Ranglista megtekintése' command-lead-title: '&7Ranglista &c(Oldal #%page%/%pages%)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&cÉrvénytelen ranglista oldal.' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- Egy játékos pontjainak kihirdetése' -command-broadcast-usage: '&7Használat: &c/bits broadcast ' -command-broadcast-message: '&c%player% &7rendelkezik &c%amount% &c%currency%-al.' +command-broadcast-description: 'Játékos bitjeinek közvetítése' +command-broadcast-message: '&c%player% &7játékosnak &c%amount% &c%currency%&7 van.' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- Újratölti a plugint' -command-reload-usage: '&7Használat: &c/bits reload' +command-reload-description: 'Plugin újratöltése' command-reload-success: '&7A konfigurációs és nyelvi fájlok újratöltve.' # Export Command -command-export-description: '&8 - &c/bits export &7- Az adatokat exportálja a storage.yml fájlba' -command-export-usage: '&7Használat: &c/bits export' +command-export-description: 'Adatok exportálása a storage.yml fájlba' command-export-success: '&aAz adatok exportálva a storage.yml fájlba.' -command-export-warning: '&cFigyelem: A storage.yml fájl már létezik. Ha felül szeretnéd írni, használd a &d/bits &cexport confirm parancsot.' +command-export-warning: '&eFIGYELEM: &cA storage.yml fájl már létezik. &7Ha felül szeretnéd írni, használd a &c/bits &cexport confirm&7 parancsot.' # Import Command -command-import-description: '&8 - &c/bits import &7- Az adatokat importálja a storage.yml fájlból' -command-import-usage: '&7Használat: &c/bits import' +command-import-description: 'Adatok importálása a storage.yml fájlból' command-import-success: '&aAz adatok importálva a storage.yml fájlból.' -command-import-no-backup: '&cNem sikerült importálni, a storage.yml fájl nem létezik. Generálhatsz egyet a &d/bits export &cparanccsal, és használhatod az adatok átvitelére az adatbázistípusok között.' -command-import-warning: '&cFigyelem: Ez a művelet törli az összes adatot az aktív adatbázisból, és felváltja a storage.yml tartalmával. &cAz aktuálisan aktív adatbázis típusa &b&o&l%type%&c. &cHa biztos vagy ebben, használd a &b/bits import confirm parancsot.' +command-import-no-backup: '&cNem lehet importálni, a storage.yml nem létezik. Létrehozhatsz egyet a &a/bits export &cparanccsal, és használhatod adatok átvitelére különböző adatbázis típusok között.' +command-import-warning: '&eFIGYELEM: &cEz a művelet törölni fog minden adatot az aktív adatbázisból, és lecseréli a storage.yml tartalmával. &cAz aktuálisan aktív adatbázis típus: &c&o&l%type%&c. &cHa teljesen biztos vagy ebben, használd a &a/bits import confirm&c parancsot.' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- Régi táblázat importálása' -command-importlegacy-usage: '&7Használat: &c/bits importlegacy ' -command-importlegacy-success: '&aA régi adatok sikeresen importálva a &d%table% táblából.' -command-importlegacy-failure: '&cNem sikerült importálni a régi adatokat a &d%table% táblából. Létezik a táblázat?' +command-importlegacy-description: 'Örökölt tábla importálása' +command-importlegacy-success: '&aSikeresen importálva az örökölt adatok innen: &4%table%&a.' +command-importlegacy-failure: '&cNem sikerült importálni az örökölt adatokat innen: &4%table%&c. Létezik a tábla?' command-importlegacy-only-mysql: '&cEz a parancs csak akkor érhető el, ha a MySQL engedélyezve van.' # Version Command -command-version-description: '&8 - &c/bits version &7- Megjeleníti a ColdBits verzió adatait' +command-version-description: 'ColdBits verzió információk megjelenítése' diff --git a/src/main/resources/locale/id_ID.yml b/src/main/resources/locale/id_ID.yml index 73a58ef..73086fa 100644 --- a/src/main/resources/locale/id_ID.yml +++ b/src/main/resources/locale/id_ID.yml @@ -2,8 +2,8 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: Poin -currency-plural: Poin +currency-singular: Bit +currency-plural: Bit currency-separator: ',' currency-decimal: . number-abbreviation-thousands: rb @@ -11,109 +11,104 @@ number-abbreviation-millions: jt number-abbreviation-billions: m # Console log -command-give-log: "&7Ditambahkan &c%amount% %currency% &7ke saldo &c%player%&7. Saldo: &c%new_balance% %currency%" -command-reset-log: "&7Direset saldo &c%player%&7. Saldo: &c%new_balance% %currency%" -command-set-log: "&7Ditetapkan saldo &c%player%&7. Saldo: &c%new_balance% %currency%" -command-take-log: "&7Diambil &c%amount% %currency% &7dari saldo &c%player%&7. Saldo: &c%new_balance% %currency%" +command-give-log: "&7Menambahkan &c%amount% %currency% &7ke saldo &c%player%&7. Saldo: &c%new_balance% %currency%" +command-reset-log: "&7Mereset saldo &c%player%&7. Saldo: &c%new_balance% %currency%" +command-set-log: "&7Menetapkan saldo &c%player%&7. Saldo: &c%new_balance% %currency%" +command-take-log: "&7Mengambil &c%amount% %currency% &7dari saldo &c%player%&7. Saldo: &c%new_balance% %currency%" # Misc -no-permission: '&cKamu tidak memiliki izin untuk melakukan itu!' -no-console: '&cHanya pemain yang dapat menjalankan perintah ini.' -invalid-amount: '&cJumlah harus berupa angka bulat positif.' -unknown-player: '&cPemain tidak dapat ditemukan: &b%player%' +no-permission: '&cAnda tidak memiliki izin untuk itu!' +only-player: '&cPerintah ini hanya dapat dijalankan oleh pemain.' +invalid-amount: '&cJumlah harus berupa bilangan bulat positif.' +unknown-player: '&cPemain tidak ditemukan: &b%player%' unknown-command: '&cPerintah tidak dikenal: &b%input%' -votifier-voted: '&7Terima kasih telah memberikan suara di &c%service%&7! &c&b%amount% &7telah ditambahkan ke saldo kamu.' -leaderboard-empty-entry: Ini bisa jadi kamu! -command-cooldown: '&cTolong tunggu sebelum menggunakan perintah ini lagi.' +invalid-argument: '&cArgumen tidak valid: %message%.' +command-usage: '&7Penggunaan: &c/%cmd% %args%' +argument-handler-string: 'String tidak boleh kosong' +argument-handler-enum: 'Tipe %enum% [%input%] tidak ada' +argument-handler-enum-list: 'Tipe %enum% [%input%] tidak ada. Tipe yang valid: %types%' +argument-handler-value: 'Nilai [%input%] tidak valid' +votifier-voted: '&7Terima kasih telah memilih di %service%! &c%amount% &7telah ditambahkan ke saldo Anda.' +leaderboard-empty-entry: 'Ini bisa jadi Anda!' +command-cooldown: '&cHarap tunggu sebelum menggunakan perintah itu lagi.' # Base Command Message base-command-color: '&7' base-command-help: '&7Gunakan &c/bits help &7untuk informasi perintah.' # Help Command -command-help-description: '&8 - &c/bits help &7- Menampilkan menu bantuan... Kamu telah sampai' command-help-title: '&cPerintah Tersedia:' +command-help-description: 'Menampilkan menu bantuan... Anda telah tiba' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- Berikan poin kepada pemain &a(juga mendukung -s [DIAM])' -command-give-usage: '&7Penggunaan: &c/bits give [-s]' +command-give-description: 'Berikan bit ke pemain' command-give-success: '&c%player% &7telah diberi &c%amount% &c%currency%&7.' -command-give-received: '&7Kamu telah menerima &c%amount% &c%currency%&7.' +command-give-received: '&7Anda telah menerima &c%amount% &c%currency%&7.' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- Memberi semua pemain online poin &a(juga mendukung -s [DIAM])' -command-giveall-usage: '&7Penggunaan: &c/bits giveall [*] [-s]' -command-giveall-success: '&7Memberikan &c%amount% &c%currency% &7kepada semua pemain online.' +command-giveall-description: 'Berikan bit ke semua pemain online' +command-giveall-success: '&7Memberikan &c%amount% &c%currency% &7ke semua pemain online.' # Take Command -command-take-description: '&8 - &c/bits take &7- Mengambil poin dari pemain' -command-take-usage: '&7Penggunaan: &c/bits take ' -command-take-success: '&7Mengambil &c%amount% &c%currency% dari &c%player%&7.' +command-take-description: 'Ambil bit dari pemain' +command-take-success: '&7Mengambil &c%amount% &c%currency% &7dari &c%player%&a&7.' command-take-not-enough: '&c%player% &7tidak memiliki cukup %currency% untuk itu.' # Look Command -command-look-description: '&8 - &c/bits look &7- Lihat poin pemain' -command-look-usage: '&7Penggunaan: &c/bits look ' +command-look-description: 'Lihat bit pemain' command-look-success: '&c%player% &7memiliki &c%amount% &c%currency%&7.' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- Bayar pemain' -command-pay-usage: '&7Penggunaan: &c/bits pay ' -command-pay-self: '&cKamu tidak dapat membayar diri sendiri!' -command-pay-sent: '&7Kamu telah membayar &c%player% %amount% &c%currency%&7.' -command-pay-received: '&7Kamu telah dibayar &c%amount% &c%currency% oleh &c%player%&7.' -command-pay-lacking-funds: '&cKamu tidak memiliki cukup %currency% untuk itu.' +command-pay-description: 'Bayar pemain' +command-pay-self: '&cAnda tidak dapat membayar diri sendiri!' +command-pay-sent: '&7Anda membayar &c%player% %amount% &c%currency%&7.' +command-pay-received: '&7Anda dibayar &c%amount% &c%currency% &7oleh &c%player%&7.' +command-pay-lacking-funds: '&cAnda tidak memiliki cukup %currency% untuk itu.' # Set Command -command-set-description: '&8 - &c/bits set &7- Menetapkan poin seorang pemain' -command-set-usage: '&7Penggunaan: &c/bits set ' -command-set-success: '&7Menetapkan poin &c%player% &7menjadi &c%amount%&7.' +command-set-description: 'Tetapkan bit pemain' +command-set-success: '&7Menetapkan %currency% dari &c%player% &7menjadi &c%amount%&7.' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- Mengatur ulang poin pemain' -command-reset-usage: '&7Penggunaan: &c/bits reset ' -command-reset-success: '&7Mengatur ulang poin untuk &c%player%&7.' +command-reset-description: 'Reset bit pemain' +command-reset-success: '&7Reset %currency% untuk &c%player%&7.' # Me Command -command-me-description: '&8 - &c/bits me &7- Lihat poinmu' -command-me-usage: '&7Penggunaan: &c/bits me' -command-me-success: '&7Kamu memiliki &c%amount% &c%currency%&7.' +command-me-description: 'Lihat bit Anda' +command-me-success: '&7Anda memiliki &c%amount% &c%currency%&7.' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- Lihat papan peringkat' -command-lead-usage: '&7Penggunaan: &c/bits lead [next|prev|#]' +command-lead-description: 'Lihat papan peringkat' command-lead-title: '&7Papan Peringkat &c(Halaman #%page%/%pages%)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&cHalaman papan peringkat tidak valid.' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- Umumkan poin seorang pemain' -command-broadcast-usage: '&7Penggunaan: &c/bits broadcast ' +command-broadcast-description: 'Siarkan bit pemain' command-broadcast-message: '&c%player% &7memiliki &c%amount% &c%currency%&7.' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- Memuat ulang plugin' -command-reload-usage: '&7Penggunaan: &c/bits reload' -command-reload-success: '&7Konfigurasi dan file bahasa telah dimuat ulang.' +command-reload-description: 'Muat ulang plugin' +command-reload-success: '&7File konfigurasi dan locale telah dimuat ulang.' # Export Command -command-export-description: '&8 - &c/bits export &7- Mengekspor data ke storage.yml' -command-export-usage: '&7Penggunaan: &c/bits export' +command-export-description: 'Ekspor data ke storage.yml' command-export-success: '&aData telah diekspor ke storage.yml.' -command-export-warning: '&cPeringatan: File storage.yml sudah ada. Jika kamu ingin menimpanya, gunakan &d/bits &cexport confirm.' +command-export-warning: '&ePERINGATAN: &cFile storage.yml sudah ada. &7Jika Anda ingin menimpanya, gunakan &c/bits &cexport confirm&7.' # Import Command -command-import-description: '&8 - &c/bits import &7- Mengimpor data dari storage.yml' -command-import-usage: '&7Penggunaan: &c/bits import' +command-import-description: 'Impor data dari storage.yml' command-import-success: '&aData telah diimpor dari storage.yml.' -command-import-no-backup: '&cTidak dapat mengimpor, storage.yml tidak ada. Kamu dapat menghasilkan satu dengan &d/bits export &cdan menggunakannya untuk mentransfer data antar jenis basis data.' -command-import-warning: '&cPeringatan: Operasi ini akan menghapus semua data dari basis data aktif dan menggantinya dengan isi dari storage.yml. &cJenis basis data aktif saat ini adalah &b&o&l%type%&c. &cJika kamu benar-benar yakin, gunakan &b/bits import confirm&c.' +command-import-no-backup: '&cTidak dapat mengimpor, storage.yml tidak ada. Anda dapat membuat satu dengan &a/bits export &cdan menggunakannya untuk mentransfer data antar tipe database.' +command-import-warning: '&ePERINGATAN: &cOperasi ini akan menghapus semua data dari database aktif dan menggantinya dengan konten storage.yml. &cTipe database yang saat ini aktif adalah &c&o&l%type%&c. &cJika Anda benar-benar yakin tentang ini, gunakan &a/bits import confirm&c.' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- Mengimpor tabel lama' -command-importlegacy-usage: '&7Penggunaan: &c/bits importlegacy ' -command-importlegacy-success: '&aBerhasil mengimpor data lama dari &d%table%&a.' -command-importlegacy-failure: '&cGagal mengimpor data lama dari &d%table%&c. Apakah tabelnya ada?' -command-importlegacy-only-mysql: '&cPerintah ini hanya tersedia jika MySQL diaktifkan.' +command-importlegacy-description: 'Impor tabel lama' +command-importlegacy-success: '&aBerhasil mengimpor data lama dari &4%table%&a.' +command-importlegacy-failure: '&cGagal mengimpor data lama dari &4%table%&c. Apakah tabel itu ada?' +command-importlegacy-only-mysql: '&cPerintah ini hanya tersedia saat Anda mengaktifkan MySQL.' # Version Command -command-version-description: '&8 - &c/bits version &7- Menampilkan informasi versi untuk ColdBits' +command-version-description: 'Tampilkan info versi ColdBits' diff --git a/src/main/resources/locale/ja_JP.yml b/src/main/resources/locale/ja_JP.yml index 6d77e98..cbb83b5 100644 --- a/src/main/resources/locale/ja_JP.yml +++ b/src/main/resources/locale/ja_JP.yml @@ -2,8 +2,8 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: ポイント -currency-plural: ポイント +currency-singular: ビット +currency-plural: ビット currency-separator: ',' currency-decimal: . number-abbreviation-thousands: 千 @@ -11,109 +11,104 @@ number-abbreviation-millions: 百万 number-abbreviation-billions: 十億 # Console log -command-give-log: "&7&c%amount% %currency% &7を &c%player%&7の残高に追加しました。残高: &c%new_balance% %currency%" -command-reset-log: "&7&c%player%&7の残高をリセットしました。残高: &c%new_balance% %currency%" -command-set-log: "&7&c%player%&7の残高を設定しました。残高: &c%new_balance% %currency%" -command-take-log: "&7&c%amount% %currency% &7を &c%player%&7の残高から取りました。残高: &c%new_balance% %currency%" +command-give-log: "&7&c%player%&7の残高に&c%amount% %currency%&7を追加しました。残高:&c%new_balance% %currency%" +command-reset-log: "&7&c%player%&7の残高をリセットしました。残高:&c%new_balance% %currency%" +command-set-log: "&7&c%player%&7の残高を設定しました。残高:&c%new_balance% %currency%" +command-take-log: "&7&c%player%&7の残高から&c%amount% %currency%&7を取りました。残高:&c%new_balance% %currency%" # Misc -no-permission: '&cその操作を行う権限がありません!' -no-console: '&cこのコマンドはプレイヤーのみが実行できます。' +no-permission: '&cこの操作を行う権限がありません!' +only-player: '&cこのコマンドはプレイヤーのみが実行できます。' invalid-amount: '&c金額は正の整数でなければなりません。' -unknown-player: '&cプレイヤーが見つかりませんでした: &b%player%' -unknown-command: '&c不明なコマンド: &b%input%' -votifier-voted: '&7&c%service%&7に投票していただきありがとうございます! &c&b%amount% &7が残高に追加されました。' -leaderboard-empty-entry: ここにあなたが入るかも! -command-cooldown: '&cコマンドの再使用までお待ちください。' +unknown-player: '&cプレイヤーが見つかりませんでした:&b%player%' +unknown-command: '&c不明なコマンド:&b%input%' +invalid-argument: '&c無効な引数:%message%。' +command-usage: '&7使用法:&c/%cmd% %args%' +argument-handler-string: '文字列は空にできません' +argument-handler-enum: '%enum%タイプ[%input%]は存在しません' +argument-handler-enum-list: '%enum%タイプ[%input%]は存在しません。有効なタイプ:%types%' +argument-handler-value: '値[%input%]は無効です' +votifier-voted: '&7%service%での投票ありがとうございます!&c%amount%&7があなたの残高に追加されました。' +leaderboard-empty-entry: 'ここにあなたの名前が!' +command-cooldown: '&cそのコマンドを再度使用する前にお待ちください。' # Base Command Message base-command-color: '&7' -base-command-help: '&7コマンド情報は &c/bits help &7を使用してください。' +base-command-help: '&7コマンド情報には&c/bits help&7を使用してください。' # Help Command -command-help-description: '&8 - &c/bits help &7- ヘルプメニューを表示します... 到着しました' command-help-title: '&c利用可能なコマンド:' +command-help-description: 'ヘルプメニューを表示します...到着しました' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- プレイヤーにポイントを与えます &a(-s [静かに] をサポート)' -command-give-usage: '&7使用方法: &c/bits give <プレイヤー> <金額> [-s]' -command-give-success: '&c%player% &7に &c%amount% &c%currency%&7 を与えました。' -command-give-received: '&7あなたは &c%amount% &c%currency%&7 を受け取りました。' +command-give-description: 'プレイヤーにビットを与える' +command-give-success: '&c%player%&7に&c%amount% &c%currency%&7を与えました。' +command-give-received: '&7あなたは&c%amount% &c%currency%&7を受け取りました。' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- オンラインの全プレイヤーにポイントを与えます &a(-s [静かに] をサポート)' -command-giveall-usage: '&7使用方法: &c/bits giveall <金額> [*] [-s]' -command-giveall-success: '&7オンラインの全プレイヤーに &c%amount% &c%currency% &7を与えました。' +command-giveall-description: 'オンラインの全プレイヤーにビットを与える' +command-giveall-success: '&7オンラインの全プレイヤーに&c%amount% &c%currency%&7を与えました。' # Take Command -command-take-description: '&8 - &c/bits take &7- プレイヤーからポイントを取り上げます' -command-take-usage: '&7使用方法: &c/bits take <プレイヤー> <金額>' -command-take-success: '&7&c%player% から &c%amount% &c%currency%&7 を取り上げました。' -command-take-not-enough: '&c%player% &7は十分な %currency% を持っていません。' +command-take-description: 'プレイヤーからビットを取る' +command-take-success: '&c%player%&7から&c%amount% &c%currency%&7を取りました。' +command-take-not-enough: '&c%player%&7はそのために十分な%currency%を持っていません。' # Look Command -command-look-description: '&8 - &c/bits look &7- プレイヤーのポイントを確認します' -command-look-usage: '&7使用方法: &c/bits look <プレイヤー>' -command-look-success: '&c%player% &7は &c%amount% &c%currency%&7 を持っています。' +command-look-description: 'プレイヤーのビットを見る' +command-look-success: '&c%player%&7は&c%amount% &c%currency%&7を持っています。' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- プレイヤーに支払います' -command-pay-usage: '&7使用方法: &c/bits pay <プレイヤー> <金額>' -command-pay-self: '&c自分に支払うことはできません!' -command-pay-sent: '&7あなたは &c%player% に %amount% &c%currency%&7 を支払いました。' -command-pay-received: '&7あなたは &c%player% から &c%amount% &c%currency% を受け取りました。' -command-pay-lacking-funds: '&cそのための十分な %currency% がありません。' +command-pay-description: 'プレイヤーに支払う' +command-pay-self: '&c自分自身に支払うことはできません!' +command-pay-sent: '&7あなたは&c%player%に%amount% &c%currency%&7を支払いました。' +command-pay-received: '&7あなたは&c%player%&7から&c%amount% &c%currency%&7を支払われました。' +command-pay-lacking-funds: '&cそのために十分な%currency%がありません。' # Set Command -command-set-description: '&8 - &c/bits set &7- プレイヤーのポイントを設定します' -command-set-usage: '&7使用方法: &c/bits set <プレイヤー> <金額>' -command-set-success: '&7&c%player% のポイントを &c%amount%&7 に設定しました。' +command-set-description: 'プレイヤーのビットを設定する' +command-set-success: '&c%player%&7の%currency%を&c%amount%&7に設定しました。' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- プレイヤーのポイントをリセットします' -command-reset-usage: '&7使用方法: &c/bits reset <プレイヤー>' -command-reset-success: '&7&c%player% の %currency% をリセットしました。' +command-reset-description: 'プレイヤーのビットをリセットする' +command-reset-success: '&c%player%&7の%currency%をリセットしました。' # Me Command -command-me-description: '&8 - &c/bits me &7- 自分のポイントを確認します' -command-me-usage: '&7使用方法: &c/bits me' -command-me-success: '&7あなたは &c%amount% &c%currency%&7 を持っています。' +command-me-description: '自分のビットを見る' +command-me-success: '&7あなたは&c%amount% &c%currency%&7を持っています。' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- ランキングを表示します' -command-lead-usage: '&7使用方法: &c/bits lead [次|前|#]' -command-lead-title: '&7ランキング &c(ページ #%page%/%pages%)' -command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-description: 'リーダーボードを見る' +command-lead-title: '&7リーダーボード&c(ページ#%page%/%pages%)' +command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&c無効なリーダーボードページです。' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- プレイヤーのポイントを放送します' -command-broadcast-usage: '&7使用方法: &c/bits broadcast <プレイヤー>' -command-broadcast-message: '&c%player% &7は &c%amount% &c%currency%&7 を持っています。' +command-broadcast-description: 'プレイヤーのビットを放送する' +command-broadcast-message: '&c%player%&7は&c%amount% &c%currency%&7を持っています。' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- プラグインをリロードします' -command-reload-usage: '&7使用方法: &c/bits reload' -command-reload-success: '&7設定ファイルとロケールファイルをリロードしました。' +command-reload-description: 'プラグインをリロードする' +command-reload-success: '&7設定とロケールファイルがリロードされました。' # Export Command -command-export-description: '&8 - &c/bits export &7- データを storage.yml にエクスポートします' -command-export-usage: '&7使用方法: &c/bits export' -command-export-success: '&aデータが storage.yml にエクスポートされました。' -command-export-warning: '&c注意: storage.yml ファイルは既に存在します。上書きするには &d/bits &cexport confirm を使用してください。' +command-export-description: 'データをstorage.ymlにエクスポートする' +command-export-success: '&aデータがstorage.ymlにエクスポートされました。' +command-export-warning: '&e警告:&cstorage.ymlファイルが既に存在します。&7上書きしたい場合は&c/bits &cexport confirm&7を使用してください。' # Import Command -command-import-description: '&8 - &c/bits import &7- storage.yml からデータをインポートします' -command-import-usage: '&7使用方法: &c/bits import' -command-import-success: '&aデータが storage.yml からインポートされました。' -command-import-no-backup: '&cインポートできません。storage.yml が存在しません。 &d/bits export &cを使用して生成し、それを使ってデータベース間のデータを転送できます。' -command-import-warning: '&c注意: この操作は、アクティブなデータベースのすべてのデータを削除し、storage.yml の内容に置き換えます。 &c現在アクティブなデータベースの種類は &b&o&l%type%&c です。 &cこれが確実な場合、&b/bits import confirm&c を使用してください。' +command-import-description: 'storage.ymlからデータをインポートする' +command-import-success: '&astorage.ymlからデータがインポートされました。' +command-import-no-backup: '&cインポートできません、storage.ymlが存在しません。&a/bits export&cで生成し、データベースタイプ間でデータを転送するために使用できます。' +command-import-warning: '&e警告:&cこの操作は、アクティブなデータベースからすべてのデータを削除し、storage.ymlの内容に置き換えます。&c現在アクティブなデータベースタイプは&c&o&l%type%&cです。&cこれについて絶対に確信がある場合は、&a/bits import confirm&cを使用してください。' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- レガシーテーブルをインポートします' -command-importlegacy-usage: '&7使用方法: &c/bits importlegacy <テーブル>' -command-importlegacy-success: '&aレガシーデータが &d%table%&a から正常にインポートされました。' -command-importlegacy-failure: '&c&d%table%&c からレガシーデータをインポートできませんでした。テーブルは存在しますか?' -command-importlegacy-only-mysql: '&cこのコマンドは、MySQL が有効な場合のみ利用可能です。' +command-importlegacy-description: 'レガシーテーブルをインポートする' +command-importlegacy-success: '&a&4%table%&aからレガシーデータのインポートに成功しました。' +command-importlegacy-failure: '&c&4%table%&cからレガシーデータのインポートに失敗しました。テーブルは存在しますか?' +command-importlegacy-only-mysql: '&cこのコマンドはMySQLが有効になっている場合にのみ使用できます。' # Version Command -command-version-description: '&8 - &c/bits version &7- ColdBits のバージョン情報を表示します' +command-version-description: 'ColdBitsのバージョン情報を表示する' diff --git a/src/main/resources/locale/pt_PT.yml b/src/main/resources/locale/pt_PT.yml index 28fbfa1..b8c35cb 100644 --- a/src/main/resources/locale/pt_PT.yml +++ b/src/main/resources/locale/pt_PT.yml @@ -2,118 +2,113 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: Ponto -currency-plural: Pontos +currency-singular: Bit +currency-plural: Bits currency-separator: ',' currency-decimal: . -number-abbreviation-thousands: k -number-abbreviation-millions: m -number-abbreviation-billions: b +number-abbreviation-thousands: mil +number-abbreviation-millions: M +number-abbreviation-billions: MM # Console log command-give-log: "&7Adicionado &c%amount% %currency% &7ao saldo de &c%player%&7. Saldo: &c%new_balance% %currency%" -command-reset-log: "&7Resetado o saldo de &c%player%&7. Saldo: &c%new_balance% %currency%" +command-reset-log: "&7Reiniciado o saldo de &c%player%&7. Saldo: &c%new_balance% %currency%" command-set-log: "&7Definido o saldo de &c%player%&7. Saldo: &c%new_balance% %currency%" command-take-log: "&7Retirado &c%amount% %currency% &7do saldo de &c%player%&7. Saldo: &c%new_balance% %currency%" # Misc -no-permission: '&cVocê não tem permissão para isso!' -no-console: '&cApenas jogadores podem executar este comando.' -invalid-amount: '&cO valor deve ser um número inteiro positivo.' +no-permission: '&cNão tens permissão para isso!' +only-player: '&cEste comando só pode ser executado por um jogador.' +invalid-amount: '&cA quantidade deve ser um número inteiro positivo.' unknown-player: '&cJogador não encontrado: &b%player%' unknown-command: '&cComando desconhecido: &b%input%' -votifier-voted: '&7Obrigado por votar em &c%service%&7! &c&b%amount% &7foram adicionados ao seu saldo.' -leaderboard-empty-entry: Isto pode ser você! -command-cooldown: '&cPor favor, aguarde antes de usar este comando novamente.' +invalid-argument: '&cArgumento inválido: %message%.' +command-usage: '&7Uso: &c/%cmd% %args%' +argument-handler-string: 'A string não pode estar vazia' +argument-handler-enum: 'O tipo %enum% [%input%] não existe' +argument-handler-enum-list: 'O tipo %enum% [%input%] não existe. Tipos válidos: %types%' +argument-handler-value: 'O valor [%input%] não é válido' +votifier-voted: '&7Obrigado por votar em %service%! &c%amount% &7foi adicionado ao teu saldo.' +leaderboard-empty-entry: 'Isto poderia ser tu!' +command-cooldown: '&cPor favor, espera antes de usar esse comando novamente.' # Base Command Message base-command-color: '&7' -base-command-help: '&7Use &c/bits help &7para informações sobre os comandos.' +base-command-help: '&7Usa &c/bits help &7para informações de comandos.' # Help Command -command-help-description: '&8 - &c/bits help &7- Exibe o menu de ajuda... Você chegou' command-help-title: '&cComandos Disponíveis:' +command-help-description: 'Mostra o menu de ajuda... Chegaste' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- Dar pontos a um jogador &a(também suporta -s [SILENCIOSO])' -command-give-usage: '&7Uso: &c/bits give [-s]' +command-give-description: 'Dar bits a um jogador' command-give-success: '&c%player% &7recebeu &c%amount% &c%currency%&7.' -command-give-received: '&7Você recebeu &c%amount% &c%currency%&7.' +command-give-received: '&7Recebeste &c%amount% &c%currency%&7.' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- Dá pontos a todos os jogadores online &a(também suporta -s [SILENCIOSO])' -command-giveall-usage: '&7Uso: &c/bits giveall [*] [-s]' +command-giveall-description: 'Dar bits a todos os jogadores online' command-giveall-success: '&7Dado &c%amount% &c%currency% &7a todos os jogadores online.' # Take Command -command-take-description: '&8 - &c/bits take &7- Tirar pontos de um jogador' -command-take-usage: '&7Uso: &c/bits take ' -command-take-success: '&7Tirou &c%amount% &c%currency% de &c%player%&7.' -command-take-not-enough: '&c%player% &7não tem %currency% suficiente para isso.' +command-take-description: 'Tirar bits de um jogador' +command-take-success: '&7Retirado &c%amount% &c%currency% &7de &c%player%&a&7.' +command-take-not-enough: '&c%player% &7não tem %currency% suficientes para isso.' # Look Command -command-look-description: '&8 - &c/bits look &7- Ver os pontos de um jogador' -command-look-usage: '&7Uso: &c/bits look ' +command-look-description: 'Ver os bits de um jogador' command-look-success: '&c%player% &7tem &c%amount% &c%currency%&7.' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- Pagar a um jogador' -command-pay-usage: '&7Uso: &c/bits pay ' -command-pay-self: '&cVocê não pode pagar a si mesmo!' -command-pay-sent: '&7Você pagou &c%player% %amount% &c%currency%&7.' -command-pay-received: '&7Você recebeu &c%amount% &c%currency% de &c%player%&7.' -command-pay-lacking-funds: '&cVocê não tem %currency% suficiente para isso.' +command-pay-description: 'Pagar a um jogador' +command-pay-self: '&cNão podes pagar a ti mesmo!' +command-pay-sent: '&7Pagaste a &c%player% %amount% &c%currency%&7.' +command-pay-received: '&7Recebeste &c%amount% &c%currency% &7de &c%player%&7.' +command-pay-lacking-funds: '&cNão tens %currency% suficientes para isso.' # Set Command -command-set-description: '&8 - &c/bits set &7- Definir os pontos de um jogador' -command-set-usage: '&7Uso: &c/bits set ' -command-set-success: '&7Pontos de &c%player% &7definidos para &c%amount%&7.' +command-set-description: 'Definir os bits de um jogador' +command-set-success: '&7Definido os %currency% de &c%player% &7para &c%amount%&7.' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- Reiniciar os pontos de um jogador' -command-reset-usage: '&7Uso: &c/bits reset ' -command-reset-success: '&7Pontos de &c%player% &7foram reiniciados.' +command-reset-description: 'Reiniciar os bits de um jogador' +command-reset-success: '&7Reiniciado os %currency% de &c%player%&7.' # Me Command -command-me-description: '&8 - &c/bits me &7- Ver seus pontos' -command-me-usage: '&7Uso: &c/bits me' -command-me-success: '&7Você tem &c%amount% &c%currency%&7.' +command-me-description: 'Ver os teus bits' +command-me-success: '&7Tens &c%amount% &c%currency%&7.' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- Ver o leaderboard' -command-lead-usage: '&7Uso: &c/bits lead [next|prev|#]' -command-lead-title: '&7Leaderboard &c(Página #%page%/%pages%)' +command-lead-description: 'Ver a tabela de classificação' +command-lead-title: '&7Tabela de Classificação &c(Página #%page%/%pages%)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&cPágina da tabela de classificação inválida.' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- Anunciar os pontos de um jogador' -command-broadcast-usage: '&7Uso: &c/bits broadcast ' +command-broadcast-description: 'Transmitir os bits de um jogador' command-broadcast-message: '&c%player% &7tem &c%amount% &c%currency%&7.' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- Recarrega o plugin' -command-reload-usage: '&7Uso: &c/bits reload' -command-reload-success: '&7Ficheiros de configuração e de idioma foram recarregados.' +command-reload-description: 'Recarregar o plugin' +command-reload-success: '&7Os ficheiros de configuração e de idioma foram recarregados.' # Export Command -command-export-description: '&8 - &c/bits export &7- Exporta os dados para storage.yml' -command-export-usage: '&7Uso: &c/bits export' -command-export-success: '&aDados salvos foram exportados para storage.yml.' -command-export-warning: '&cAviso: Um ficheiro storage.yml já existe. Se deseja sobrescrevê-lo, utilize &d/bits &cexport confirm.' +command-export-description: 'Exportar os dados para storage.yml' +command-export-success: '&aOs dados foram exportados para storage.yml.' +command-export-warning: '&eAVISO: &cJá existe um ficheiro storage.yml. &7Se quiseres substitui-lo, usa &c/bits &cexport confirm&7.' # Import Command -command-import-description: '&8 - &c/bits import &7- Importa os dados de storage.yml' -command-import-usage: '&7Uso: &c/bits import' -command-import-success: '&aDados salvos foram importados de storage.yml.' -command-import-no-backup: '&cNão foi possível importar, storage.yml não existe. Pode gerar um com &d/bits export &ce usar para transferir dados entre tipos de base de dados.' -command-import-warning: '&cAviso: Esta operação irá apagar todos os dados da base de dados ativa e substituí-los com o conteúdo de storage.yml. &cO tipo de base de dados atualmente ativo é &b&o&l%type%&c. &cSe tiver a certeza, utilize &b/bits import confirm&c.' +command-import-description: 'Importar os dados de storage.yml' +command-import-success: '&aOs dados foram importados de storage.yml.' +command-import-no-backup: '&cNão é possível importar, storage.yml não existe. Podes gerar um com &a/bits export &ce usá-lo para transferir dados entre tipos de base de dados.' +command-import-warning: '&eAVISO: &cEsta operação irá apagar todos os dados da base de dados ativa e substituí-los pelo conteúdo de storage.yml. &cO tipo de base de dados atualmente ativo é &c&o&l%type%&c. &cSe tens a certeza absoluta disto, usa &a/bits import confirm&c.' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- Importar uma tabela legada' -command-importlegacy-usage: '&7Uso: &c/bits importlegacy ' -command-importlegacy-success: '&aDados legados de &d%table%&a importados com sucesso.' -command-importlegacy-failure: '&cFalha ao importar dados legados de &d%table%&c. A tabela existe?' -command-importlegacy-only-mysql: '&cEste comando está disponível apenas quando o MySQL está ativado.' +command-importlegacy-description: 'Importar uma tabela legacy' +command-importlegacy-success: '&aImportação bem-sucedida de dados legacy de &4%table%&a.' +command-importlegacy-failure: '&cFalha ao importar dados legacy de &4%table%&c. A tabela existe?' +command-importlegacy-only-mysql: '&cEste comando só está disponível quando tens o MySQL ativado.' # Version Command -command-version-description: '&8 - &c/bits version &7- Exibe as informações de versão do ColdBits' +command-version-description: 'Mostrar as informações de versão do ColdBits' diff --git a/src/main/resources/locale/vi_VN.yml b/src/main/resources/locale/vi_VN.yml index cc49bbb..96cf72d 100644 --- a/src/main/resources/locale/vi_VN.yml +++ b/src/main/resources/locale/vi_VN.yml @@ -2,118 +2,113 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: Điểm -currency-plural: Điểm +currency-singular: Bit +currency-plural: Bit currency-separator: ',' currency-decimal: . -number-abbreviation-thousands: k -number-abbreviation-millions: triệu -number-abbreviation-billions: tỷ +number-abbreviation-thousands: N +number-abbreviation-millions: Tr +number-abbreviation-billions: T # Console log command-give-log: "&7Đã thêm &c%amount% %currency% &7vào số dư của &c%player%&7. Số dư: &c%new_balance% %currency%" -command-reset-log: "&7Đặt lại số dư của &c%player%&7. Số dư: &c%new_balance% %currency%" +command-reset-log: "&7Đã đặt lại số dư của &c%player%&7. Số dư: &c%new_balance% %currency%" command-set-log: "&7Đã đặt số dư của &c%player%&7. Số dư: &c%new_balance% %currency%" command-take-log: "&7Đã lấy &c%amount% %currency% &7từ số dư của &c%player%&7. Số dư: &c%new_balance% %currency%" # Misc -no-permission: '&cBạn không có quyền để làm điều đó!' -no-console: '&cChỉ người chơi mới có thể thực hiện lệnh này.' -invalid-amount: '&cSố tiền phải là số nguyên dương.' -unknown-player: '&cKhông thể tìm thấy người chơi: &b%player%' -unknown-command: '&cLệnh không tồn tại: &b%input%' -votifier-voted: '&7Cảm ơn bạn đã bình chọn trên &c%service%&7! &c&b%amount% &7đã được thêm vào số dư của bạn.' -leaderboard-empty-entry: Đây có thể là bạn! -command-cooldown: '&cVui lòng chờ trước khi sử dụng lệnh này lần nữa.' +no-permission: '&cBạn không có quyền cho việc đó!' +only-player: '&cLệnh này chỉ có thể được thực hiện bởi người chơi.' +invalid-amount: '&cSố lượng phải là một số nguyên dương.' +unknown-player: '&cKhông tìm thấy người chơi: &b%player%' +unknown-command: '&cLệnh không xác định: &b%input%' +invalid-argument: '&cĐối số không hợp lệ: %message%.' +command-usage: '&7Cách sử dụng: &c/%cmd% %args%' +argument-handler-string: 'Chuỗi không thể trống' +argument-handler-enum: 'Loại %enum% [%input%] không tồn tại' +argument-handler-enum-list: 'Loại %enum% [%input%] không tồn tại. Các loại hợp lệ: %types%' +argument-handler-value: 'Giá trị [%input%] không hợp lệ' +votifier-voted: '&7Cảm ơn bạn đã bình chọn trên %service%! &c%amount% &7đã được thêm vào số dư của bạn.' +leaderboard-empty-entry: 'Đây có thể là bạn!' +command-cooldown: '&cVui lòng đợi trước khi sử dụng lệnh đó lần nữa.' # Base Command Message base-command-color: '&7' -base-command-help: '&7Sử dụng &c/bits help &7để biết thông tin về các lệnh.' +base-command-help: '&7Sử dụng &c/bits help &7để biết thông tin lệnh.' # Help Command -command-help-description: '&8 - &c/bits help &7- Hiển thị menu trợ giúp... Bạn đã đến đây' command-help-title: '&cCác Lệnh Có Sẵn:' +command-help-description: 'Hiển thị menu trợ giúp... Bạn đã đến' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- Cấp điểm cho một người chơi &a(cũng hỗ trợ -s [IM LẶNG])' -command-give-usage: '&7Sử dụng: &c/bits give [-s]' -command-give-success: '&c%player% &7đã nhận được &c%amount% &c%currency%&7.' +command-give-description: 'Cho một người chơi một số bit' +command-give-success: '&c%player% &7đã được cho &c%amount% &c%currency%&7.' command-give-received: '&7Bạn đã nhận được &c%amount% &c%currency%&7.' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- Cấp điểm cho tất cả người chơi đang online &a(cũng hỗ trợ -s [IM LẶNG])' -command-giveall-usage: '&7Sử dụng: &c/bits giveall [*] [-s]' -command-giveall-success: '&7Đã cấp &c%amount% &c%currency% &7cho tất cả người chơi đang online.' +command-giveall-description: 'Cho tất cả người chơi trực tuyến một số bit' +command-giveall-success: '&7Đã cho &c%amount% &c%currency% &7cho tất cả người chơi trực tuyến.' # Take Command -command-take-description: '&8 - &c/bits take &7- Lấy điểm từ một người chơi' -command-take-usage: '&7Sử dụng: &c/bits take ' -command-take-success: '&7Đã lấy &c%amount% &c%currency% từ &c%player%&7.' +command-take-description: 'Lấy bit từ một người chơi' +command-take-success: '&7Đã lấy &c%amount% &c%currency% &7từ &c%player%&a&7.' command-take-not-enough: '&c%player% &7không có đủ %currency% cho việc đó.' # Look Command -command-look-description: '&8 - &c/bits look &7- Xem điểm của một người chơi' -command-look-usage: '&7Sử dụng: &c/bits look ' +command-look-description: 'Xem bit của một người chơi' command-look-success: '&c%player% &7có &c%amount% &c%currency%&7.' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- Thanh toán cho một người chơi' -command-pay-usage: '&7Sử dụng: &c/bits pay ' -command-pay-self: '&cBạn không thể tự trả cho mình!' +command-pay-description: 'Trả tiền cho một người chơi' +command-pay-self: '&cBạn không thể tự trả tiền cho mình!' command-pay-sent: '&7Bạn đã trả &c%player% %amount% &c%currency%&7.' -command-pay-received: '&7Bạn đã nhận được &c%amount% &c%currency% từ &c%player%&7.' +command-pay-received: '&7Bạn đã được trả &c%amount% &c%currency% &7bởi &c%player%&7.' command-pay-lacking-funds: '&cBạn không có đủ %currency% cho việc đó.' # Set Command -command-set-description: '&8 - &c/bits set &7- Đặt điểm cho một người chơi' -command-set-usage: '&7Sử dụng: &c/bits set ' -command-set-success: '&7Điểm của &c%player% &7đã được đặt thành &c%amount%&7.' +command-set-description: 'Đặt bit của một người chơi' +command-set-success: '&7Đã đặt %currency% của &c%player% &7thành &c%amount%&7.' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- Đặt lại điểm của một người chơi' -command-reset-usage: '&7Sử dụng: &c/bits reset ' -command-reset-success: '&7Điểm của &c%player% &7đã được đặt lại.' +command-reset-description: 'Đặt lại bit của một người chơi' +command-reset-success: '&7Đã đặt lại %currency% cho &c%player%&7.' # Me Command -command-me-description: '&8 - &c/bits me &7- Xem điểm của bạn' -command-me-usage: '&7Sử dụng: &c/bits me' +command-me-description: 'Xem bit của bạn' command-me-success: '&7Bạn có &c%amount% &c%currency%&7.' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- Xem bảng xếp hạng' -command-lead-usage: '&7Sử dụng: &c/bits lead [next|prev|#]' -command-lead-title: '&7Bảng Xếp Hạng &c(Trang #%page%/%pages%)' +command-lead-description: 'Xem bảng xếp hạng' +command-lead-title: '&7Bảng xếp hạng &c(Trang #%page%/%pages%)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&cTrang bảng xếp hạng không hợp lệ.' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- Phát sóng điểm của một người chơi' -command-broadcast-usage: '&7Sử dụng: &c/bits broadcast ' +command-broadcast-description: 'Phát sóng bit của một người chơi' command-broadcast-message: '&c%player% &7có &c%amount% &c%currency%&7.' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- Tải lại plugin' -command-reload-usage: '&7Sử dụng: &c/bits reload' -command-reload-success: '&7Các tệp cấu hình và ngôn ngữ đã được tải lại.' +command-reload-description: 'Tải lại plugin' +command-reload-success: '&7Các tập tin cấu hình và ngôn ngữ đã được tải lại.' # Export Command -command-export-description: '&8 - &c/bits export &7- Xuất dữ liệu vào storage.yml' -command-export-usage: '&7Sử dụng: &c/bits export' -command-export-success: '&aDữ liệu đã được xuất vào storage.yml.' -command-export-warning: '&cLưu ý: Tệp storage.yml đã tồn tại. Nếu muốn ghi đè, hãy sử dụng &d/bits &cexport confirm.' +command-export-description: 'Xuất dữ liệu sang storage.yml' +command-export-success: '&aDữ liệu đã được xuất sang storage.yml.' +command-export-warning: '&eCẢNH BÁO: &cTệp storage.yml đã tồn tại. &7Nếu bạn muốn ghi đè lên nó, hãy sử dụng &c/bits &cexport confirm&7.' # Import Command -command-import-description: '&8 - &c/bits import &7- Nhập dữ liệu từ storage.yml' -command-import-usage: '&7Sử dụng: &c/bits import' +command-import-description: 'Nhập dữ liệu từ storage.yml' command-import-success: '&aDữ liệu đã được nhập từ storage.yml.' -command-import-no-backup: '&cKhông thể nhập, storage.yml không tồn tại. Bạn có thể tạo một tệp với &d/bits export &cvà sử dụng nó để chuyển dữ liệu giữa các loại cơ sở dữ liệu.' -command-import-warning: '&cLưu ý: Thao tác này sẽ xóa tất cả dữ liệu từ cơ sở dữ liệu hiện tại và thay thế bằng nội dung của storage.yml. &cLoại cơ sở dữ liệu hiện tại là &b&o&l%type%&c. &cNếu bạn chắc chắn, hãy sử dụng &b/bits import confirm&c.' +command-import-no-backup: '&cKhông thể nhập, storage.yml không tồn tại. Bạn có thể tạo ra một tệp với &a/bits export &cvà sử dụng nó để chuyển dữ liệu giữa các loại cơ sở dữ liệu.' +command-import-warning: '&eCẢNH BÁO: &cThao tác này sẽ xóa tất cả dữ liệu từ cơ sở dữ liệu đang hoạt động và thay thế bằng nội dung của storage.yml. &cLoại cơ sở dữ liệu hiện đang hoạt động là &c&o&l%type%&c. &cNếu bạn hoàn toàn chắc chắn về điều này, hãy sử dụng &a/bits import confirm&c.' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- Nhập bảng cũ' -command-importlegacy-usage: '&7Sử dụng: &c/bits importlegacy ' -command-importlegacy-success: '&aĐã nhập dữ liệu cũ từ &d%table%&a thành công.' -command-importlegacy-failure: '&cKhông thể nhập dữ liệu cũ từ &d%table%&c. Bảng có tồn tại không?' -command-importlegacy-only-mysql: '&cLệnh này chỉ khả dụng khi MySQL được kích hoạt.' +command-importlegacy-description: 'Nhập bảng legacy' +command-importlegacy-success: '&aNhập dữ liệu legacy từ &4%table%&a thành công.' +command-importlegacy-failure: '&cKhông thể nhập dữ liệu legacy từ &4%table%&c. Bảng này có tồn tại không?' +command-importlegacy-only-mysql: '&cLệnh này chỉ khả dụng khi bạn đã kích hoạt MySQL.' # Version Command -command-version-description: '&8 - &c/bits version &7- Hiển thị thông tin phiên bản cho ColdBits' +command-version-description: 'Hiển thị thông tin phiên bản của ColdBits' diff --git a/src/main/resources/locale/zh_CN.yml b/src/main/resources/locale/zh_CN.yml index a07c4d4..f3edb4b 100644 --- a/src/main/resources/locale/zh_CN.yml +++ b/src/main/resources/locale/zh_CN.yml @@ -2,118 +2,113 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: 点 -currency-plural: 点 +currency-singular: 比特 +currency-plural: 比特 currency-separator: ',' currency-decimal: . number-abbreviation-thousands: 千 number-abbreviation-millions: 百万 -number-abbreviation-billions: 十亿 +number-abbreviation-billions: 亿 # Console log -command-give-log: "&7已将 &c%amount% %currency% &7添加到 &c%player%&7 的余额中。余额: &c%new_balance% %currency%" -command-reset-log: "&7已重置 &c%player%&7 的余额。余额: &c%new_balance% %currency%" -command-set-log: "&7已设置 &c%player%&7 的余额。余额: &c%new_balance% %currency%" -command-take-log: "&7已从 &c%player%&7 的余额中取出 &c%amount% %currency%。余额: &c%new_balance% %currency%" +command-give-log: "&7已添加 &c%amount% %currency% &7到 &c%player%&7 的余额。余额:&c%new_balance% %currency%" +command-reset-log: "&7已重置 &c%player%&7 的余额。余额:&c%new_balance% %currency%" +command-set-log: "&7已设置 &c%player%&7 的余额。余额:&c%new_balance% %currency%" +command-take-log: "&7已从 &c%player%&7 的余额中扣除 &c%amount% %currency%&7。余额:&c%new_balance% %currency%" # Misc no-permission: '&c你没有权限执行此操作!' -no-console: '&c只有玩家才能执行此命令。' +only-player: '&c此命令只能由玩家执行。' invalid-amount: '&c数量必须是正整数。' -unknown-player: '&c找不到玩家: &b%player%' -unknown-command: '&c未知命令: &b%input%' -votifier-voted: '&7感谢你在 &c%service%&7 上投票! &c&b%amount% &7已添加到你的余额。' -leaderboard-empty-entry: 这可能是你! -command-cooldown: '&c请稍等再使用此命令。' +unknown-player: '&c找不到玩家:&b%player%' +unknown-command: '&c未知命令:&b%input%' +invalid-argument: '&c无效参数:%message%。' +command-usage: '&7用法:&c/%cmd% %args%' +argument-handler-string: '字符串不能为空' +argument-handler-enum: '%enum%类型[%input%]不存在' +argument-handler-enum-list: '%enum%类型[%input%]不存在。有效类型:%types%' +argument-handler-value: '值[%input%]无效' +votifier-voted: '&7感谢你在%service%上投票!&c%amount% &7已添加到你的余额。' +leaderboard-empty-entry: '这可能是你!' +command-cooldown: '&c请稍等再使用该命令。' # Base Command Message base-command-color: '&7' base-command-help: '&7使用 &c/bits help &7获取命令信息。' # Help Command -command-help-description: '&8 - &c/bits help &7- 显示帮助菜单... 你已经到了' -command-help-title: '&c可用命令:' +command-help-title: '&c可用命令:' +command-help-description: '显示帮助菜单...你已到达' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- 给某个玩家点数 &a(支持 -s [静默模式])' -command-give-usage: '&7用法: &c/bits give <玩家> <数量> [-s]' -command-give-success: '&c%player% &7已收到 &c%amount% &c%currency%&7。' -command-give-received: '&7你已收到 &c%amount% &c%currency%&7。' +command-give-description: '给玩家比特' +command-give-success: '&c%player% &7获得了 &c%amount% &c%currency%&7。' +command-give-received: '&7你获得了 &c%amount% &c%currency%&7。' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- 给所有在线玩家点数 &a(支持 -s [静默模式])' -command-giveall-usage: '&7用法: &c/bits giveall <数量> [*] [-s]' -command-giveall-success: '&7已给所有在线玩家 &c%amount% &c%currency%&7。' +command-giveall-description: '给所有在线玩家比特' +command-giveall-success: '&7给所有在线玩家 &c%amount% &c%currency%&7。' # Take Command -command-take-description: '&8 - &c/bits take &7- 从玩家那里取走点数' -command-take-usage: '&7用法: &c/bits take <玩家> <数量>' -command-take-success: '&7已从 &c%player% &7取走 &c%amount% &c%currency%&7。' -command-take-not-enough: '&c%player% &7没有足够的 %currency% 。' +command-take-description: '从玩家处扣除比特' +command-take-success: '&7从 &c%player%&7 处扣除了 &c%amount% &c%currency%&a&7。' +command-take-not-enough: '&c%player% &7没有足够的%currency%。' # Look Command -command-look-description: '&8 - &c/bits look &7- 查看某个玩家的点数' -command-look-usage: '&7用法: &c/bits look <玩家>' +command-look-description: '查看玩家的比特' command-look-success: '&c%player% &7拥有 &c%amount% &c%currency%&7。' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- 向某个玩家支付点数' -command-pay-usage: '&7用法: &c/bits pay <玩家> <数量>' -command-pay-self: '&c你不能给自己支付点数!' -command-pay-sent: '&7你已支付 &c%amount% &c%currency% 给 &c%player%&7。' -command-pay-received: '&7你已收到 &c%amount% &c%currency% 来自 &c%player%&7。' -command-pay-lacking-funds: '&c你没有足够的 %currency% 来进行此操作。' +command-pay-description: '支付给玩家' +command-pay-self: '&c你不能支付给自己!' +command-pay-sent: '&7你向 &c%player% 支付了 %amount% &c%currency%&7。' +command-pay-received: '&7你收到了来自 &c%player%&7 的 &c%amount% &c%currency%&7。' +command-pay-lacking-funds: '&c你没有足够的%currency%。' # Set Command -command-set-description: '&8 - &c/bits set &7- 设置某个玩家的点数' -command-set-usage: '&7用法: &c/bits set <玩家> <数量>' -command-set-success: '&7已将 &c%player% 的点数设置为 &c%amount%&7。' +command-set-description: '设置玩家的比特' +command-set-success: '&7将 &c%player% &7的%currency%设置为 &c%amount%&7。' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- 重置某个玩家的点数' -command-reset-usage: '&7用法: &c/bits reset <玩家>' -command-reset-success: '&7已重置 &c%player% 的 %currency%&7。' +command-reset-description: '重置玩家的比特' +command-reset-success: '&7已重置 &c%player%&7 的%currency%。' # Me Command -command-me-description: '&8 - &c/bits me &7- 查看你的点数' -command-me-usage: '&7用法: &c/bits me' +command-me-description: '查看你的比特' command-me-success: '&7你拥有 &c%amount% &c%currency%&7。' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- 查看排行榜' -command-lead-usage: '&7用法: &c/bits lead [next|prev|#]' -command-lead-title: '&7排行榜 &c(页 #%page%/%pages%)' +command-lead-description: '查看排行榜' +command-lead-title: '&7排行榜 &c(第 #%page%/%pages% 页)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&c无效的排行榜页面。' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- 广播某个玩家的点数' -command-broadcast-usage: '&7用法: &c/bits broadcast <玩家>' +command-broadcast-description: '广播玩家的比特' command-broadcast-message: '&c%player% &7拥有 &c%amount% &c%currency%&7。' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- 重新加载插件' -command-reload-usage: '&7用法: &c/bits reload' -command-reload-success: '&7配置文件和语言文件已重新加载。' +command-reload-description: '重新加载插件' +command-reload-success: '&7配置和语言文件已重新加载。' # Export Command -command-export-description: '&8 - &c/bits export &7- 将数据导出到 storage.yml' -command-export-usage: '&7用法: &c/bits export' +command-export-description: '导出数据到 storage.yml' command-export-success: '&a数据已导出到 storage.yml。' -command-export-warning: '&c注意: storage.yml 文件已存在。如果你想覆盖它,请使用 &d/bits &cexport confirm。' +command-export-warning: '&e警告:&cstorage.yml 文件已存在。 &7如果你想覆盖它,请使用 &c/bits &cexport confirm&7。' # Import Command -command-import-description: '&8 - &c/bits import &7- 从 storage.yml 导入数据' -command-import-usage: '&7用法: &c/bits import' -command-import-success: '&a数据已从 storage.yml 导入。' -command-import-no-backup: '&c无法导入,storage.yml 文件不存在。你可以使用 &d/bits export &c生成一个文件,并将其用于在数据库类型之间传输数据。' -command-import-warning: '&c注意: 此操作将删除当前数据库中的所有数据,并将其替换为 storage.yml 的内容。 &c当前激活的数据库类型是 &b&o&l%type%&c。 &c如果你确定,请使用 &b/bits import confirm&c。' +command-import-description: '从 storage.yml 导入数据' +command-import-success: '&a已从 storage.yml 导入数据。' +command-import-no-backup: '&c无法导入,storage.yml 不存在。你可以使用 &a/bits export &c生成一个,用于在数据库类型之间传输数据。' +command-import-warning: '&e警告:&c此操作将删除活动数据库中的所有数据,并用 storage.yml 的内容替换它。&c当前活动的数据库类型是 &c&o&l%type%&c。&c如果你对此绝对确定,请使用 &a/bits import confirm&c。' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- 导入旧表' -command-importlegacy-usage: '&7用法: &c/bits importlegacy <表>' -command-importlegacy-success: '&a已成功从 &d%table%&a 导入旧数据。' -command-importlegacy-failure: '&c从 &d%table%&c 导入旧数据失败。表是否存在?' +command-importlegacy-description: '导入旧表' +command-importlegacy-success: '&a成功从 &4%table%&a 导入旧数据。' +command-importlegacy-failure: '&c从 &4%table%&c 导入旧数据失败。该表是否存在?' command-importlegacy-only-mysql: '&c此命令仅在启用 MySQL 时可用。' # Version Command -command-version-description: '&8 - &c/bits version &7- 显示 ColdBits 的版本信息' +command-version-description: '显示 ColdBits 的版本信息' diff --git a/src/main/resources/locale/zh_TW.yml b/src/main/resources/locale/zh_TW.yml index 1957228..3c52428 100644 --- a/src/main/resources/locale/zh_TW.yml +++ b/src/main/resources/locale/zh_TW.yml @@ -2,118 +2,113 @@ prefix: '&8「ɻAA7C℟BBo&#A597D0l&#C5B6E4d&#E6D4F8B&#CEA5F7i&#B677F7t E48F6s&8」&7» ' # Currency -currency-singular: 點 -currency-plural: 點 +currency-singular: 比特 +currency-plural: 比特 currency-separator: ',' currency-decimal: . number-abbreviation-thousands: 千 number-abbreviation-millions: 百萬 -number-abbreviation-billions: 十億 +number-abbreviation-billions: 億 # Console log -command-give-log: "&7已將 &c%amount% %currency% &7添加到 &c%player%&7 的餘額中。餘額: &c%new_balance% %currency%" -command-reset-log: "&7已重置 &c%player%&7 的餘額。餘額: &c%new_balance% %currency%" -command-set-log: "&7已設定 &c%player%&7 的餘額。餘額: &c%new_balance% %currency%" -command-take-log: "&7已從 &c%player%&7 的餘額中取出 &c%amount% %currency%。餘額: &c%new_balance% %currency%" +command-give-log: "&7已添加 &c%amount% %currency% &7到 &c%player%&7 的餘額。餘額:&c%new_balance% %currency%" +command-reset-log: "&7已重置 &c%player%&7 的餘額。餘額:&c%new_balance% %currency%" +command-set-log: "&7已設置 &c%player%&7 的餘額。餘額:&c%new_balance% %currency%" +command-take-log: "&7已從 &c%player%&7 的餘額中扣除 &c%amount% %currency%&7。餘額:&c%new_balance% %currency%" # Misc no-permission: '&c你沒有權限執行此操作!' -no-console: '&c只有玩家才能執行此命令。' +only-player: '&c此命令只能由玩家執行。' invalid-amount: '&c數量必須是正整數。' -unknown-player: '&c找不到玩家: &b%player%' -unknown-command: '&c未知的命令: &b%input%' -votifier-voted: '&7感謝你在 &c%service%&7 上投票! &c&b%amount% &7已加入到你的餘額中。' -leaderboard-empty-entry: 這可能是你! -command-cooldown: '&c請稍候再使用此命令。' +unknown-player: '&c找不到玩家:&b%player%' +unknown-command: '&c未知命令:&b%input%' +invalid-argument: '&c無效參數:%message%。' +command-usage: '&7用法:&c/%cmd% %args%' +argument-handler-string: '字串不能為空' +argument-handler-enum: '%enum%類型[%input%]不存在' +argument-handler-enum-list: '%enum%類型[%input%]不存在。有效類型:%types%' +argument-handler-value: '值[%input%]無效' +votifier-voted: '&7感謝你在%service%上投票!&c%amount% &7已添加到你的餘額。' +leaderboard-empty-entry: '這可能是你!' +command-cooldown: '&c請稍等再使用該命令。' # Base Command Message base-command-color: '&7' -base-command-help: '&7使用 &c/bits help &7來獲取命令資訊。' +base-command-help: '&7使用 &c/bits help &7獲取命令資訊。' # Help Command -command-help-description: '&8 - &c/bits help &7- 顯示幫助選單... 你已到達' -command-help-title: '&c可用的命令:' +command-help-title: '&c可用命令:' +command-help-description: '顯示幫助選單...你已到達' +command-help-list-description: '&8 - &c/%cmd% %subcmd% %args% &7- %desc%' +command-help-list-description-no-args: '&8 - &c/%cmd% %subcmd% &7- %desc%' # Give Command -command-give-description: '&8 - &c/bits give &7- 給予玩家點數 &a(亦支援 -s [靜默])' -command-give-usage: '&7用法: &c/bits give <玩家> <數量> [-s]' -command-give-success: '&c%player% &7已獲得 &c%amount% &c%currency%&7。' -command-give-received: '&7你已獲得 &c%amount% &c%currency%&7。' +command-give-description: '給玩家比特' +command-give-success: '&c%player% &7獲得了 &c%amount% &c%currency%&7。' +command-give-received: '&7你獲得了 &c%amount% &c%currency%&7。' # Give All Command -command-giveall-description: '&8 - &c/bits giveall &7- 給予所有在線玩家點數 &a(亦支援 -s [靜默])' -command-giveall-usage: '&7用法: &c/bits giveall <數量> [*] [-s]' -command-giveall-success: '&7已給予所有在線玩家 &c%amount% &c%currency%&7。' +command-giveall-description: '給所有線上玩家比特' +command-giveall-success: '&7給所有線上玩家 &c%amount% &c%currency%&7。' # Take Command -command-take-description: '&8 - &c/bits take &7- 從玩家那裡扣除點數' -command-take-usage: '&7用法: &c/bits take <玩家> <數量>' -command-take-success: '&7已從 &c%player% &7扣除 &c%amount% &c%currency%&7。' -command-take-not-enough: '&c%player% &7沒有足夠的 %currency%。' +command-take-description: '從玩家處扣除比特' +command-take-success: '&7從 &c%player%&7 處扣除了 &c%amount% &c%currency%&a&7。' +command-take-not-enough: '&c%player% &7沒有足夠的%currency%。' # Look Command -command-look-description: '&8 - &c/bits look &7- 查看玩家的點數' -command-look-usage: '&7用法: &c/bits look <玩家>' +command-look-description: '查看玩家的比特' command-look-success: '&c%player% &7擁有 &c%amount% &c%currency%&7。' # Pay Command -command-pay-description: '&8 - &c/bits pay &7- 給予玩家點數' -command-pay-usage: '&7用法: &c/bits pay <玩家> <數量>' -command-pay-self: '&c你不能給自己支付!' -command-pay-sent: '&7你已給予 &c%player% %amount% &c%currency%&7。' -command-pay-received: '&7你已從 &c%player% &7收到 &c%amount% &c%currency%&7。' -command-pay-lacking-funds: '&c你沒有足夠的 %currency%。' +command-pay-description: '支付給玩家' +command-pay-self: '&c你不能支付給自己!' +command-pay-sent: '&7你向 &c%player% 支付了 %amount% &c%currency%&7。' +command-pay-received: '&7你收到了來自 &c%player%&7 的 &c%amount% &c%currency%&7。' +command-pay-lacking-funds: '&c你沒有足夠的%currency%。' # Set Command -command-set-description: '&8 - &c/bits set &7- 設定玩家的點數' -command-set-usage: '&7用法: &c/bits set <玩家> <數量>' -command-set-success: '&7已將 &c%player% &7的點數設定為 &c%amount%&7。' +command-set-description: '設置玩家的比特' +command-set-success: '&7將 &c%player% &7的%currency%設置為 &c%amount%&7。' # Reset Command -command-reset-description: '&8 - &c/bits reset &7- 重置玩家的點數' -command-reset-usage: '&7用法: &c/bits reset <玩家>' -command-reset-success: '&7已重置 &c%player% &7的 %currency%。' +command-reset-description: '重置玩家的比特' +command-reset-success: '&7已重置 &c%player%&7 的%currency%。' # Me Command -command-me-description: '&8 - &c/bits me &7- 查看你的點數' -command-me-usage: '&7用法: &c/bits me' +command-me-description: '查看你的比特' command-me-success: '&7你擁有 &c%amount% &c%currency%&7。' # Lead Command -command-lead-description: '&8 - &c/bits lead &7- 查看排行榜' -command-lead-usage: '&7用法: &c/bits lead [next|prev|#]' -command-lead-title: '&7排行榜 &c(頁數 #%page%/%pages%)' +command-lead-description: '查看排行榜' +command-lead-title: '&7排行榜 &c(第 #%page%/%pages% 頁)' command-lead-entry: '&c%position%). &c%player% &7- &c%amount% %currency%' +command-lead-usage: '&c無效的排行榜頁面。' # Broadcast Command -command-broadcast-description: '&8 - &c/bits broadcast &7- 廣播玩家的點數' -command-broadcast-usage: '&7用法: &c/bits broadcast <玩家>' +command-broadcast-description: '廣播玩家的比特' command-broadcast-message: '&c%player% &7擁有 &c%amount% &c%currency%&7。' # Reload Command -command-reload-description: '&8 - &c/bits reload &7- 重新載入插件' -command-reload-usage: '&7用法: &c/bits reload' -command-reload-success: '&7設定檔和語言檔已重新載入。' +command-reload-description: '重新載入插件' +command-reload-success: '&7配置和語言檔案已重新載入。' # Export Command -command-export-description: '&8 - &c/bits export &7- 將資料匯出到 storage.yml' -command-export-usage: '&7用法: &c/bits export' -command-export-success: '&a資料已匯出到 storage.yml。' -command-export-warning: '&c注意: storage.yml 檔案已存在。如需覆蓋,請使用 &d/bits &cexport confirm。' +command-export-description: '導出數據到 storage.yml' +command-export-success: '&a數據已導出到 storage.yml。' +command-export-warning: '&e警告:&cstorage.yml 檔案已存在。 &7如果你想覆蓋它,請使用 &c/bits &cexport confirm&7。' # Import Command -command-import-description: '&8 - &c/bits import &7- 從 storage.yml 匯入資料' -command-import-usage: '&7用法: &c/bits import' -command-import-success: '&a資料已從 storage.yml 匯入。' -command-import-no-backup: '&c無法匯入,storage.yml 不存在。你可以使用 &d/bits export &c生成一個檔案,並用於在資料庫類型之間轉移資料。' -command-import-warning: '&c注意: 此操作將刪除當前資料庫中的所有資料,並用 storage.yml 的內容取代。 &c當前啟用的資料庫類型為 &b&o&l%type%&c。 &c如果你確定,請使用 &b/bits import confirm&c。' +command-import-description: '從 storage.yml 導入數據' +command-import-success: '&a已從 storage.yml 導入數據。' +command-import-no-backup: '&c無法導入,storage.yml 不存在。你可以使用 &a/bits export &c生成一個,用於在數據庫類型之間傳輸數據。' +command-import-warning: '&e警告:&c此操作將刪除活動數據庫中的所有數據,並用 storage.yml 的內容替換它。&c當前活動的數據庫類型是 &c&o&l%type%&c。&c如果你對此絕對確定,請使用 &a/bits import confirm&c。' # Import Legacy Command -command-importlegacy-description: '&8 - &c/bits importlegacy &7- 匯入舊表格' -command-importlegacy-usage: '&7用法: &c/bits importlegacy <表格>' -command-importlegacy-success: '&a已成功從 &d%table%&a 匯入舊資料。' -command-importlegacy-failure: '&c無法從 &d%table%&c 匯入舊資料。表格是否存在?' +command-importlegacy-description: '導入舊表' +command-importlegacy-success: '&a成功從 &4%table%&a 導入舊數據。' +command-importlegacy-failure: '&c從 &4%table%&c 導入舊數據失敗。該表是否存在?' command-importlegacy-only-mysql: '&c此命令僅在啟用 MySQL 時可用。' # Version Command -command-version-description: '&8 - &c/bits version &7- 顯示 ColdBits 的版本資訊' +command-version-description: '顯示 ColdBits 的版本信息' diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 80d760c..31d06ac 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,24 +1,20 @@ name: ColdBits version: '@version@' authors: [padrewin] -website: 'https://github.com/Cold-Development/ColdBits' -description: An economy and currency system based on premium currency +website: 'https://github.com/Cold-Development/ColdBits/' +description: A point based currency system main: dev.padrewin.coldbits.ColdBits api-version: '1.13' load: STARTUP -softdepend: [Vault, Votifier, PlaceholderAPI, nightcore] +softdepend: [Vault, Treasury, Votifier, PlaceholderAPI, TokenManager, GamePoints, NexEngine] loadbefore: [mcMMO] folia-supported: true libraries: - - 'com.mysql:mysql-connector-j:9.0.0' + - 'com.mysql:mysql-connector-j:9.1.0' - 'org.xerial:sqlite-jdbc:3.46.0.0' -commands: - bits: - aliases: [bits, cbits, coldbits, cb, bit, coldbit, cbit] - description: Root command for ColdBits permissions: coldbits.*: - description: Gives access to all ColdBits commands + description: Gives access to all coldbits commands children: coldbits.give: true coldbits.giveall: true @@ -36,6 +32,9 @@ permissions: coldbits.convert: true coldbits.importlegacy: true coldbits.version: true + coldbits.basecommand: + description: Gives access to the base command + default: true coldbits.give: description: Gives access to the give command default: op