diff --git a/.gitignore b/.gitignore index 4c59a71..9ede845 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,3 @@ build/ out/ .idea/ libs/ -run/ \ No newline at end of file diff --git a/README.md b/README.md index 0af72de..f2fa45e 100644 --- a/README.md +++ b/README.md @@ -1,37 +1,24 @@ # ItemEconomy II -

-image -

+ItemEconomy II is a fork of [ItemEconomy](https://modrinth.com/plugin/itemeconomy), keeping it updated to later versions of Minecraft. -**ItemEconomy II** is a fork of [ItemEconomy](https://modrinth.com/plugin/itemeconomy), keeping it updated to later versions of Minecraft and adding new features. +This PaperMC plugin integrates with Vault to provide a unique, item-based economy system for your Minecraft server. Instead of relying solely on virtual balances, players use in-game items as physical currency, adding a layer of immersion and realism to your economy. +Features: -This PaperMC plugin integrates with VaultUnlocked to provide a unique, item-based economy system for your Minecraft server. Instead of relying solely on virtual balances, players use in-game items as physical currency, adding a layer of immersion and realism to your economy. +- Item-Based Currency: Set any Minecraft item as your server's currency (default: diamonds). +- Vault Integration: Fully compatible with Vault, enabling seamless interaction with other economy-based plugins. +- Customizable Formatting: Define how your currency is displayed, including singular and plural forms. -ItemEconomy is as powerful as you need and as simple as you want, with every feature being optional. +## Configuration Example: +```yaml +item: "diamond" # Define the item to be used as currency. +singular: "diamond" # Singular form of the currency. +plural: "diamonds" # Plural form of the currency. +format: "{}$" # Customize how the currency is displayed in messages. +``` +This configuration will use diamonds as the currency, displayed as {amount}$, e.g., "5 diamonds" or "1 diamond". -## Features -- **Item-Based Currency:** Set any Minecraft item as your server's currency (diamonds by default). -- **VaultUnlocked Integration:** Fully compatible with VaultUnlocked, enabling seamless interaction with other economy-based plugins. -- **Simple logic:** Just checks if the user has the item/how many when queried. -- **Customizable Formatting:** Define how your currency is displayed, including singular and plural forms. -- **Ender Chest support:** Items on Ender Chests are counted in the user balance. -- **Built-int optional balance and pay commands** with support for permissions. -- **Translation support** with per-user language and per-language currency name. +## Usage: -## Configuration -An updated example configuration file is available [here](https://github.com/adrianvic/ItemEconomy/blob/main/src/main/resources/config.yml). - -## Usage - Players can earn, trade, and store the configured item as physical currency. -- Once they spend the currency, that amount of the item will be subtracted from their inventory. +- Integrates seamlessly with Vault-compatible plugins for shops, auctions, and more. - Administrators can customize the item and formatting to match their server's theme. - -## Commands -
-
/balance
-
Prints player balance, permission is `iteco.balance` but is allowed by default. Requires permission `iteco.balance.others` to specify other user.
-
/pay
-
Transfers money from your account to another player's, permission is `iteco.pay` but is allowed by default.
-
/itecoreload
-
Reloads the plugin configuration, requires permission `iteco.reload`.
-
diff --git a/build.gradle.kts b/build.gradle.kts index 35e0edf..bbc19a2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -106,4 +106,4 @@ tasks.withType { tasks.runServer { minecraftVersion("1.21") -} \ No newline at end of file +} diff --git a/src/main/java/io/github/adrianvic/itemeconomy/Config.java b/src/main/java/io/github/adrianvic/itemeconomy/Config.java index b5dac25..2f2bb4f 100644 --- a/src/main/java/io/github/adrianvic/itemeconomy/Config.java +++ b/src/main/java/io/github/adrianvic/itemeconomy/Config.java @@ -1,120 +1,17 @@ package io.github.adrianvic.itemeconomy; -import org.bukkit.ChatColor; import org.bukkit.Material; -import org.bukkit.entity.Player; - -import java.util.*; public class Config { - private static Map entries = new HashMap<>(); - private static UnrealConfig uConf; + public static Material ITEM; + public static String FORMAT; + public static String PLURAL; + public static String SINGULAR; - public static void loadConfig(UnrealConfig conf) { - uConf = conf; - entries.put("item", "diamond"); - entries.put("format", "{} $"); - entries.put("plural", "diamonds"); - entries.put("singular", "diamond"); - entries.put("ender_chest", "balance"); - entries.put("commands", "true"); - entries.put("player", "&a{}"); - entries.put("localization", "default"); - getAvailableLocales().forEach(l -> entries.put("plural_%s".formatted(l.getLanguage()), entries.get("plural"))); - getAvailableLocales().forEach(l -> entries.put("singular_%s".formatted(l.getLanguage()), entries.get("singular"))); - - Map missingValues = new HashMap<>(); - - for (Map.Entry e : entries.entrySet()) { - String val = (String) conf.get(e.getKey()); - - if (val != null) { - entries.put(e.getKey(), val); - } else { - missingValues.put(e.getKey(), e.getValue()); - } - } - - missingValues.forEach((key, value) -> { - conf.put(key, value); - Main.getInstance().getLogger().info("Generating new config entry that was missing: %s: %s".formatted(key, value)); - }); - conf.save(); - } - - public static String get(String entry) { - return entries.get(entry); - } - - public static boolean is(String entry, String value) { - return entries.get(entry).equals(value); - } - - public static boolean safeIs(String entry, String value) { - return is(entry.toLowerCase(Locale.ROOT), value.toLowerCase(Locale.ROOT)); - } - - public static String getCurrencyText(int amount, String lang) { - String plural = entries.get("plural_%s".formatted(lang)); - String singular = entries.get("singular_%s".formatted(lang)); - - if (plural == null || singular == null) { - plural = entries.get("plural"); - singular = entries.get("singular"); - } - - return ChatColor.translateAlternateColorCodes('&', entries.get("format") - .replace("{}", String.valueOf(amount)) - .replace("$", (amount != 1) ? plural : singular) - + ChatColor.RESET - ); - } - - public static String getCurrencyText(int amount, Locale locale) { - return getCurrencyText(amount, locale.getLanguage()); - } - - public static String getCurrencyText(int amount) { - return getCurrencyText(amount, getServerLocale().getLanguage()); - } - - - public static Locale getServerLocale() { - Locale locale = Locale.forLanguageTag(entries.get("localization")); - if (locale.getCountry().isEmpty()) { - locale = Locale.getDefault(); - } - - return locale; - } - - public static UnrealConfig getuConf() { - return uConf; - } - - public static Material ecoItem() { - try { - return Material.valueOf(Config.get("item").toUpperCase()); - } catch (IllegalArgumentException e) { - Main.getInstance().getLogger().warning("Invalid item was set as economy item, disabling."); - Main.getInstance().getServer().getPluginManager().disablePlugin(Main.getInstance()); - } - - return Material.DIAMOND; - } - - public static String playerPrefix(String playerName) { - return ChatColor.translateAlternateColorCodes('&', entries.get("player").replace("{}", playerName)) + ChatColor.RESET; - } - - public static String playerPrefix(Player player) { - return playerPrefix(player.getName()); - } - - public static Set getAvailableLocales() { - return Set.of( - Locale.forLanguageTag("en"), - Locale.forLanguageTag("pt") - ); - } + public static void loadConfig(UnrealConfig conf) { + ITEM = Material.valueOf(((String)conf.get("item")).toUpperCase()); + FORMAT = (String)conf.get("format"); + PLURAL = (String)conf.get("plural"); + SINGULAR = (String)conf.get("singular"); + } } diff --git a/src/main/java/io/github/adrianvic/itemeconomy/Main.java b/src/main/java/io/github/adrianvic/itemeconomy/Main.java index 3b999ee..63b19f9 100644 --- a/src/main/java/io/github/adrianvic/itemeconomy/Main.java +++ b/src/main/java/io/github/adrianvic/itemeconomy/Main.java @@ -1,148 +1,50 @@ package io.github.adrianvic.itemeconomy; -import java.util.*; - -import io.github.adrianvic.itemeconomy.commands.Balance; -import io.github.adrianvic.itemeconomy.commands.Pay; -import io.github.adrianvic.itemeconomy.commands.Reload; +import java.util.Arrays; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; import net.milkbowl.vault.economy.Economy; import org.bukkit.Bukkit; import org.bukkit.Material; import org.bukkit.entity.Player; -import org.bukkit.inventory.Inventory; import org.bukkit.inventory.ItemStack; import org.bukkit.plugin.ServicePriority; import org.bukkit.plugin.java.JavaPlugin; public class Main extends JavaPlugin { - private static Main instance; - private static Economy economy; + public void onEnable() { + Config.loadConfig(new UnrealConfig(this, this.getDataFolder(), "config.yml")); + Bukkit.getServicesManager().register(Economy.class, new VaultLayer(), this, ServicePriority.High); + } - public void onEnable() { - instance = this; - Config.loadConfig(new UnrealConfig(this, this.getDataFolder(), "config.yml")); - getLogger().info(Messages.ENABLING.get( - "ItemEconomy", - getDescription().getVersion(), - Config.getServerLocale() - )); - economy = new VaultLayer(); - Bukkit.getServicesManager().register(Economy.class, economy, this, ServicePriority.High); + public void onDisable() { + super.onDisable(); + } - getCommand("itecoreload").setExecutor(new Reload()); - if (Config.safeIs("commands", "true")) { - getCommand("balance").setExecutor(new Balance()); - getCommand("pay").setExecutor(new Pay()); - } - } + public static List getInventory(Player player) { + return Arrays.stream(player.getInventory().getContents()).map((o) -> { + return o == null ? new ItemStack(Material.AIR) : o; + }).toList(); + } - public void onDisable() { - super.onDisable(); - } + public static boolean removeItems(Player player, Material type, int amount) { + if (player.getInventory().all(type).values().stream().mapToInt(ItemStack::getAmount).sum() < amount) { + return false; + } else { + player.getInventory().removeItem(new ItemStack[]{new ItemStack(type, amount)}); + return true; + } + } - public static JavaPlugin getInstance() { - return instance; - } + public static void addItems(Player player, Material type, int amount) { + HashMap nope = player.getInventory().addItem(new ItemStack[]{new ItemStack(type, amount)}); + Iterator var4 = nope.values().iterator(); - public static Economy getEconomy() { - return economy; - } + while(var4.hasNext()) { + ItemStack v = (ItemStack)var4.next(); + player.getWorld().dropItemNaturally(player.getLocation(), v); + } - public enum InventoryID { - INVENTORY, - ENDER_CHEST - } - - public static Inventory getInventory(Player player, InventoryID inventory) { - Inventory inv = player.getInventory(); - - switch (inventory) { - case INVENTORY -> inv = player.getInventory(); - case ENDER_CHEST -> { - if (Config.is("ender_chest", "balance")) { - inv = player.getEnderChest(); - } else { - inv = getInstance().getServer().createInventory(null, 9); - } - } - } - - return inv; - } - - public static List getInventoryList(Player player, InventoryID inventory) { - Inventory inv = getInventory(player, inventory); - return Arrays.stream(inv.getContents()).map((o) -> o == null ? new ItemStack(Material.AIR) : o).toList(); - } - - public static List getInventoryList(Player player) { - return getInventoryList(player, InventoryID.INVENTORY); - } - - public static double getBalance(Player player, InventoryID inventory) { - return getInventoryList(player, inventory).stream().filter(Objects::nonNull).filter((i) -> i.getType().equals(Config.ecoItem())).mapToInt(ItemStack::getAmount).sum(); - } - - public static double getBalance(Player player) { - double total = 0.0D; - - for (InventoryID id : InventoryID.values()) { - total += getBalance(player, id); - } - - return total; - } - - public static double getBalance(String player) { - return getBalance(Bukkit.getPlayer(player)); - } - - public static boolean removeItems(Player player, Material type, int amount) { - int remaining = amount; - - remaining = removeFrom(player.getInventory(), type, remaining); - if (remaining > 0) { - remaining = removeFrom(player.getEnderChest(), type, remaining); - } - - return remaining == 0; - } - - private static int removeFrom(Inventory inv, Material type, int amount) { - if (amount <= 0) return 0; - - for (ItemStack stack : inv.all(type).values()) { - int take = Math.min(stack.getAmount(), amount); - stack.setAmount(stack.getAmount() - take); - amount -= take; - if (amount == 0) break; - } - - return amount; - } - - public static void addItems(Player player, Material type, int amount) { - if (amount <= 0) return; - - HashMap invOverflow = - getInventory(player, InventoryID.INVENTORY) - .addItem(new ItemStack(type, amount)); - - int overflowAmount = invOverflow.values() - .stream() - .mapToInt(ItemStack::getAmount) - .sum(); - - if (overflowAmount <= 0) { - return; - } - - HashMap echestOverflow = - getInventory(player, InventoryID.ENDER_CHEST) - .addItem(new ItemStack(type, overflowAmount)); - - for (ItemStack overflow : echestOverflow.values()) { - player.getWorld().dropItemNaturally(player.getLocation(), overflow); - } - } + } } diff --git a/src/main/java/io/github/adrianvic/itemeconomy/Messages.java b/src/main/java/io/github/adrianvic/itemeconomy/Messages.java deleted file mode 100644 index 33102ce..0000000 --- a/src/main/java/io/github/adrianvic/itemeconomy/Messages.java +++ /dev/null @@ -1,51 +0,0 @@ -package io.github.adrianvic.itemeconomy; - -import io.github.adrianvic.itemeconomy.commands.Utils; -import org.bukkit.ChatColor; -import org.bukkit.entity.Player; - -import java.util.Locale; -import java.util.ResourceBundle; - -public enum Messages { - ENABLING("enabling"), - BALANCE_SUCCESSFUL("balance-successful"), - BALANCE_OTHER_SUCCESSFUL("balance-other-successful"), - MUST_BE_PLAYER_TO_ISSUE_COMMAND("must-be-player-to-issue-command"), - PAY_SUCCESSFUL("pay-successful"), - PAY_RECEIVED("pay-received"), - PAY_COULD_NOT_REALIZE_TRANSACTION("pay-could-not-realize-transaction"), - PAY_COULD_NOT_FIND_TARGET("pay-could-not-find-target"), - PAY_NOT_ENOUGH_MONEY("pay-not-enough-money"), - PAY_INVALID_AMOUNT("pay-invalid-amount"), - RELOADING("reloading"), - RELOAD_ERROR("reload-error"), - RELOAD_FINISHED("reload-finished"); - - - private final String path; - Messages(String path) { this.path = path; } - - private String raw(Locale locale) { - ResourceBundle bundle = ResourceBundle.getBundle("messages", locale); - return bundle.getString(path); - } - - public String get(Locale locale, Object... args) { - String pattern = raw(locale); - try { - return ChatColor.translateAlternateColorCodes('&', args.length == 0 ? pattern : String.format(pattern, args)); - } catch (Exception e) { - return pattern; - } - } - - public String get(Player player, Object... args) { - Locale locale = Utils.localeOrDefault(player); - return get(locale, args); - } - - public String get(Object... args) { - return get(Config.getServerLocale(), args); - } -} diff --git a/src/main/java/io/github/adrianvic/itemeconomy/VaultLayer.java b/src/main/java/io/github/adrianvic/itemeconomy/VaultLayer.java index 7810800..cc1260d 100644 --- a/src/main/java/io/github/adrianvic/itemeconomy/VaultLayer.java +++ b/src/main/java/io/github/adrianvic/itemeconomy/VaultLayer.java @@ -1,12 +1,14 @@ package io.github.adrianvic.itemeconomy; import java.util.List; +import java.util.Objects; import net.milkbowl.vault.economy.Economy; import net.milkbowl.vault.economy.EconomyResponse; import net.milkbowl.vault.economy.EconomyResponse.ResponseType; import org.bukkit.Bukkit; import org.bukkit.OfflinePlayer; import org.bukkit.entity.Player; +import org.bukkit.inventory.ItemStack; public class VaultLayer implements Economy { public boolean isEnabled() { @@ -14,7 +16,7 @@ public class VaultLayer implements Economy { } public String getName() { - return "ItemEconomy II"; + return "ItemEconomy"; } public boolean hasBankSupport() { @@ -26,15 +28,15 @@ public class VaultLayer implements Economy { } public String format(double amount) { - return Config.getCurrencyText((int) amount); + return Config.FORMAT.replace("{}", String.valueOf(amount)); } public String currencyNamePlural() { - return Config.get("plural"); + return Config.PLURAL; } public String currencyNameSingular() { - return Config.get("singular"); + return Config.SINGULAR; } public boolean hasAccount(String playerName) { @@ -42,11 +44,14 @@ public class VaultLayer implements Economy { } public double getBalance(String playerName) { - return Main.getBalance(playerName); + Player player = Bukkit.getPlayer(playerName); + return player != null ? (double)Main.getInventory(player).stream().filter(Objects::nonNull).filter((i) -> { + return i.getType().equals(Config.ITEM); + }).mapToInt(ItemStack::getAmount).sum() : 0.0D; } public boolean has(String playerName, double amount) { - return Main.getBalance(playerName) >= amount; + return this.getBalance(playerName) >= amount; } public EconomyResponse withdrawPlayer(String playerName, double amount) { @@ -55,13 +60,13 @@ public class VaultLayer implements Economy { } else if (amount < 0.0D) { return this.depositPlayer(playerName, -amount); } else if (!this.has(playerName, amount)) { - return new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "Insufficient founds."); + return new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "Недостаточно средств"); } else { Player player; if ((player = Bukkit.getPlayer(playerName)) == null) { - return new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "This player is offline."); + return new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "Игрок офлайн"); } else { - return !Main.removeItems(player, Config.ecoItem(), (int)amount) ? new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "Insufficient founds.") : new EconomyResponse(amount, this.getBalance(playerName), ResponseType.SUCCESS, (String)null); + return !Main.removeItems(player, Config.ITEM, (int)amount) ? new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "Недостаточно средств") : new EconomyResponse(amount, this.getBalance(playerName), ResponseType.SUCCESS, (String)null); } } } @@ -74,9 +79,9 @@ public class VaultLayer implements Economy { } else { Player player; if ((player = Bukkit.getPlayer(playerName)) == null) { - return new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "This player is offline."); + return new EconomyResponse(amount, this.getBalance(playerName), ResponseType.FAILURE, "Игрок офлайн"); } else { - Main.addItems(player, Config.ecoItem(), (int)amount); + Main.addItems(player, Config.ITEM, (int)amount); return new EconomyResponse(amount, this.getBalance(playerName), ResponseType.SUCCESS, (String)null); } } diff --git a/src/main/java/io/github/adrianvic/itemeconomy/commands/Balance.java b/src/main/java/io/github/adrianvic/itemeconomy/commands/Balance.java deleted file mode 100644 index e5e93f7..0000000 --- a/src/main/java/io/github/adrianvic/itemeconomy/commands/Balance.java +++ /dev/null @@ -1,49 +0,0 @@ -package io.github.adrianvic.itemeconomy.commands; - -import io.github.adrianvic.itemeconomy.Config; -import io.github.adrianvic.itemeconomy.Main; -import io.github.adrianvic.itemeconomy.Messages; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.stream.Collectors; - -public class Balance implements CommandExecutor, TabCompleter { - @Override - public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String @NotNull [] strings) { - if ((commandSender.isOp() || commandSender.hasPermission("iteco.balance.others")) && strings.length > 0) { - double amount = Main.getEconomy().getBalance(strings[0]); - commandSender.sendMessage(Messages.BALANCE_OTHER_SUCCESSFUL.get( - Utils.localeOrDefault(commandSender), - Config.playerPrefix(strings[0]), - Config.getCurrencyText((int) amount, Utils.localeOrDefault(commandSender)) - )); - } else { - if (commandSender instanceof Player player) { - double amount = Main.getEconomy().getBalance(player); - commandSender.sendMessage(Messages.BALANCE_SUCCESSFUL.get(player, Config.getCurrencyText((int) amount, Utils.localeOrDefault(commandSender)))); - } else { - commandSender.sendMessage(Messages.MUST_BE_PLAYER_TO_ISSUE_COMMAND.get()); - } - } - return true; - } - - @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String @NotNull [] args) { - if ((sender.isOp() || sender.hasPermission("iteco.balance.others")) && args.length == 1) { - return Bukkit.getOnlinePlayers() - .stream() - .map(Player::getName) - .collect(Collectors.toList()); - } - return List.of(); - } -} diff --git a/src/main/java/io/github/adrianvic/itemeconomy/commands/Pay.java b/src/main/java/io/github/adrianvic/itemeconomy/commands/Pay.java deleted file mode 100644 index f87cb38..0000000 --- a/src/main/java/io/github/adrianvic/itemeconomy/commands/Pay.java +++ /dev/null @@ -1,79 +0,0 @@ -package io.github.adrianvic.itemeconomy.commands; - -import io.github.adrianvic.itemeconomy.Config; -import io.github.adrianvic.itemeconomy.Main; -import io.github.adrianvic.itemeconomy.Messages; -import net.milkbowl.vault.economy.EconomyResponse; -import org.bukkit.Bukkit; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.bukkit.command.TabCompleter; -import org.bukkit.entity.Player; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; - -import java.util.List; -import java.util.Locale; -import java.util.stream.Collectors; - -public class Pay implements CommandExecutor, TabCompleter { - @Override - public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String @NotNull [] strings) { - if (strings.length < 2) { - commandSender.sendMessage(command.getUsage()); - return false; - } - - int amount; - - try { - amount = Integer.parseInt(strings[1]); - String amountString = Config.getCurrencyText(amount, Utils.localeOrDefault(commandSender)); - - if (commandSender instanceof Player player && Main.getEconomy().has(player, amount)) { - if (Bukkit.getPlayer(strings[0]) instanceof Player target) { - EconomyResponse withdrawResponse = Main.getEconomy().withdrawPlayer(player.getName(), amount); - if (withdrawResponse.transactionSuccess()) { - EconomyResponse depositResponse = Main.getEconomy().depositPlayer(target.getName(), amount); - if (depositResponse.transactionSuccess()) { - commandSender.sendMessage(Messages.PAY_SUCCESSFUL.get( - Utils.localeOrDefault(commandSender), - amountString, - Config.playerPrefix(target))); - target.sendMessage(Messages.PAY_RECEIVED.get(target, amountString, Config.playerPrefix(player))); - } else { - commandSender.sendMessage(Messages.PAY_COULD_NOT_REALIZE_TRANSACTION.get(Utils.localeOrDefault(commandSender), depositResponse.errorMessage)); - Main.getEconomy().depositPlayer(player.getName(), amount); - } - } else { - commandSender.sendMessage(Messages.PAY_COULD_NOT_REALIZE_TRANSACTION.get(Utils.localeOrDefault(commandSender), withdrawResponse.errorMessage));; - } - } else { - commandSender.sendMessage(Messages.PAY_COULD_NOT_FIND_TARGET.get(Utils.localeOrDefault(commandSender))); - } - } else { - commandSender.sendMessage(Messages.PAY_NOT_ENOUGH_MONEY.get(Utils.localeOrDefault(commandSender))); - } - } catch (NumberFormatException nfe) { - commandSender.sendMessage(Messages.PAY_INVALID_AMOUNT.get(Utils.localeOrDefault(commandSender))); - return true; - } - - return true; - } - - @Override - public @Nullable List onTabComplete(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label, @NotNull String @NotNull [] args) { - if (sender instanceof Player player) { - if (args.length == 1) { - return Bukkit.getOnlinePlayers() - .stream() - .map(Player::getName) - .collect(Collectors.toList()); - } - } - - return List.of(); - } -} diff --git a/src/main/java/io/github/adrianvic/itemeconomy/commands/Reload.java b/src/main/java/io/github/adrianvic/itemeconomy/commands/Reload.java deleted file mode 100644 index b0d8514..0000000 --- a/src/main/java/io/github/adrianvic/itemeconomy/commands/Reload.java +++ /dev/null @@ -1,30 +0,0 @@ -package io.github.adrianvic.itemeconomy.commands; - -import io.github.adrianvic.itemeconomy.Config; -import io.github.adrianvic.itemeconomy.Main; -import io.github.adrianvic.itemeconomy.Messages; -import io.github.adrianvic.itemeconomy.UnrealConfig; -import org.bukkit.command.Command; -import org.bukkit.command.CommandExecutor; -import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; - -import java.util.Locale; - -public class Reload implements CommandExecutor { - - @Override - public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s, @NotNull String @NotNull [] strings) { - Locale locale = Utils.localeOrDefault(commandSender); - try { - commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOADING.get(locale))); - Config.loadConfig(new UnrealConfig(Main.getInstance(), Main.getInstance().getDataFolder(), "config.yml")); - commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOAD_FINISHED.get(locale))); - return true; - } catch (Exception e) { - commandSender.sendMessage("[ECONOMY] %s".formatted(Messages.RELOAD_ERROR.get(locale))); - e.printStackTrace(); - return false; - } - } -} diff --git a/src/main/java/io/github/adrianvic/itemeconomy/commands/Utils.java b/src/main/java/io/github/adrianvic/itemeconomy/commands/Utils.java deleted file mode 100644 index aceb749..0000000 --- a/src/main/java/io/github/adrianvic/itemeconomy/commands/Utils.java +++ /dev/null @@ -1,15 +0,0 @@ -package io.github.adrianvic.itemeconomy.commands; - -import io.github.adrianvic.itemeconomy.Config; -import io.github.adrianvic.itemeconomy.Main; -import org.bukkit.command.CommandSender; -import org.bukkit.entity.Player; - -import java.util.Locale; - -public class Utils { - public static Locale localeOrDefault(CommandSender sender) { - return (sender instanceof Player p) ? Locale.forLanguageTag(p.getLocale().replace('_', '-')) : Config.getServerLocale(); - } - -} diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 1b2d06d..f4834d2 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -1,7 +1,4 @@ -item: "diamond" # MUST be a valid item. +item: "diamond" singular: "diamond" plural: "diamonds" -format: "&b{} $" # {} unfolds to amount and $ to singular or plural. -commands: "true" # Enables or disables plugin commands. -player: "&b{}" # {} unfolds to player name. -localization: "default" # can be "en" and "pt" too, if set to anything else uses system locale. \ No newline at end of file +format: "{}$" \ No newline at end of file diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties deleted file mode 100644 index 77e17f5..0000000 --- a/src/main/resources/messages.properties +++ /dev/null @@ -1,13 +0,0 @@ -enabling=enabling -balance-successful=balance-successful -balance-other-successful=balance-other-successful -must-be-player-to-issue-command=must-be-player-to-issue-command -pay-successful=pay-successful -pay-received=pay-received -pay-could-not-realize-transaction=pay-could-not-realize-transaction -pay-could-not-find-target=pay-could-not-find-target -pay-not-enough-money=pay-not-enough-money -pay-invalid-amount=pay-invalid-amount -reloading=reloading -reload-error=reload-error -reload-finished=reload-finished \ No newline at end of file diff --git a/src/main/resources/messages_en.properties b/src/main/resources/messages_en.properties deleted file mode 100644 index 95f9873..0000000 --- a/src/main/resources/messages_en.properties +++ /dev/null @@ -1,13 +0,0 @@ -enabling=Starting %s version %s with locale '%s'. -balance-successful=You have %s. -balance-other-successful=%s has %s. -must-be-player-to-issue-command=You must be a player to issue this command. -pay-successful=Transaction of %s to %s was successfully realized. -pay-received=You received %s from %s. -pay-could-not-realize-transaction=Could not realize transaction: %s -pay-could-not-find-target=Could not find target player. -pay-not-enough-money=You don't have enough money. -pay-invalid-amount=The amount you tried to pay is not valid. -reloading=Reloading... -reload-error=An error occurred while reloading the config, please check your logs. -reload-finished=Reload complete. \ No newline at end of file diff --git a/src/main/resources/messages_pt.properties b/src/main/resources/messages_pt.properties deleted file mode 100644 index e11dc4c..0000000 --- a/src/main/resources/messages_pt.properties +++ /dev/null @@ -1,13 +0,0 @@ -enabling=Iniciando %s verso %s com localizao para %s. -balance-successful=Voc tem %s. -balance-other-successful=%s possui %s. -must-be-player-to-issue-command=Voc precisa ser um jogador para executar esse comando. -pay-successful=Transao de %s para %s realizada com sucesso. -pay-received=Voc recebeu %s de %s. -pay-could-not-realize-transaction=No foi possvel realizar a transao: %s -pay-could-not-find-target=No foi possvel encontrar o jogador-alvo. -pay-not-enough-money=Voc no tem dinheiro suficiente. -pay-invalid-amount=A quantidade que voc tentou enviar invlida. -reloading=Recarregando... -reload-error=Ocorreu um erro ao recarregar, por favor, verifique seu registro. -reload-finished=Carregamento completo. \ No newline at end of file diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml index 75cefe8..60f5404 100644 --- a/src/main/resources/plugin.yml +++ b/src/main/resources/plugin.yml @@ -1,32 +1,6 @@ name: ItemEconomy main: io.github.adrianvic.itemeconomy.Main -version: 1.3.1 -depend: [Vault] +version: 1.0 +depend: +- Vault api-version: '1.21' -commands: - itecoreload: - description: Reloads the config for ItemEconomy - usage: "/itecoreload" - permission: iteco.reload - default: op - balance: - description: Prints your balance - usage: "/balance" - aliases: [bal] - permission: iteco.balance - pay: - description: Transfers money from your balance to other player - usage: "/pay " - permission: iteco.pay -permissions: - iteco.reload: - description: "Permission to use the command '/itecoreload'." - default: false - iteco.balance: - description: "Permission to use the command '/balance'." - default: true - children: - iteco.balance.others: false - iteco.pay: - description: "Permission to use the command '/pay'." - default: true \ No newline at end of file