From bc9f28fdb0aa848d2508a586f76043770586d09e Mon Sep 17 00:00:00 2001 From: w4sb0y Date: Wed, 2 Sep 2026 21:46:55 +0300 Subject: [PATCH 1/3] Changed Vault messages to be user-translateble using AI. --- .../command/bank/BalanceSubcommand.java | 4 +- .../command/bank/CreateSubcommand.java | 4 +- .../command/bank/DeleteSubcommand.java | 4 +- .../command/bank/DepositSubcommand.java | 115 +++++++++--------- .../command/bank/InfoSubcommand.java | 4 +- .../command/bank/WithdrawSubcommand.java | 15 +-- .../ezeconomy/core/VaultEconomyImpl.java | 74 +++++++---- src/main/resources/languages/en.yml | 13 ++ src/main/resources/languages/es.yml | 13 ++ src/main/resources/languages/fr.yml | 13 ++ src/main/resources/languages/nl.yml | 13 ++ src/main/resources/languages/zh.yml | 13 ++ src/main/resources/messages.yml | 65 ++++++++++ 13 files changed, 246 insertions(+), 104 deletions(-) diff --git a/src/main/java/com/skyblockexp/ezeconomy/command/bank/BalanceSubcommand.java b/src/main/java/com/skyblockexp/ezeconomy/command/bank/BalanceSubcommand.java index 0b0340d8..49ca11a3 100644 --- a/src/main/java/com/skyblockexp/ezeconomy/command/bank/BalanceSubcommand.java +++ b/src/main/java/com/skyblockexp/ezeconomy/command/bank/BalanceSubcommand.java @@ -40,9 +40,9 @@ public boolean execute(CommandSender sender, String[] args) { private boolean handleEconomyFailure(CommandSender sender, EconomyResponse response) { if (response == null || response.type == EconomyResponse.ResponseType.FAILURE || response.type == EconomyResponse.ResponseType.NOT_IMPLEMENTED) { - String message = response == null ? "Bank operation failed." : response.errorMessage; + String message = response == null ? null : response.errorMessage; if (message == null || message.isBlank()) { - message = "Bank operation failed."; + message = com.skyblockexp.ezeconomy.util.MessageUtils.format(plugin, "bank_operation_failed"); } sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, message)); return true; diff --git a/src/main/java/com/skyblockexp/ezeconomy/command/bank/CreateSubcommand.java b/src/main/java/com/skyblockexp/ezeconomy/command/bank/CreateSubcommand.java index 5635eb23..ae29091c 100644 --- a/src/main/java/com/skyblockexp/ezeconomy/command/bank/CreateSubcommand.java +++ b/src/main/java/com/skyblockexp/ezeconomy/command/bank/CreateSubcommand.java @@ -46,9 +46,9 @@ public boolean execute(CommandSender sender, String[] args) { private boolean handleEconomyFailure(CommandSender sender, EconomyResponse response) { if (response == null || response.type == EconomyResponse.ResponseType.FAILURE || response.type == EconomyResponse.ResponseType.NOT_IMPLEMENTED) { - String message = response == null ? "Bank operation failed." : response.errorMessage; + String message = response == null ? null : response.errorMessage; if (message == null || message.isBlank()) { - message = "Bank operation failed."; + message = MessageUtils.format(plugin, "bank_operation_failed"); } sender.sendMessage(MessageUtils.color(plugin, message)); return true; diff --git a/src/main/java/com/skyblockexp/ezeconomy/command/bank/DeleteSubcommand.java b/src/main/java/com/skyblockexp/ezeconomy/command/bank/DeleteSubcommand.java index cb2977f1..c6cde0ff 100644 --- a/src/main/java/com/skyblockexp/ezeconomy/command/bank/DeleteSubcommand.java +++ b/src/main/java/com/skyblockexp/ezeconomy/command/bank/DeleteSubcommand.java @@ -38,9 +38,9 @@ public boolean execute(CommandSender sender, String[] args) { private boolean handleEconomyFailure(CommandSender sender, EconomyResponse response) { if (response == null || response.type == EconomyResponse.ResponseType.FAILURE || response.type == EconomyResponse.ResponseType.NOT_IMPLEMENTED) { - String message = response == null ? "Bank operation failed." : response.errorMessage; + String message = response == null ? null : response.errorMessage; if (message == null || message.isBlank()) { - message = "Bank operation failed."; + message = com.skyblockexp.ezeconomy.util.MessageUtils.format(plugin, "bank_operation_failed"); } sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, message)); return true; diff --git a/src/main/java/com/skyblockexp/ezeconomy/command/bank/DepositSubcommand.java b/src/main/java/com/skyblockexp/ezeconomy/command/bank/DepositSubcommand.java index 1fd27736..e234f78f 100644 --- a/src/main/java/com/skyblockexp/ezeconomy/command/bank/DepositSubcommand.java +++ b/src/main/java/com/skyblockexp/ezeconomy/command/bank/DepositSubcommand.java @@ -1,39 +1,39 @@ -package com.skyblockexp.ezeconomy.command.bank; - +package com.skyblockexp.ezeconomy.command.bank; + import com.skyblockexp.ezeconomy.command.Subcommand; import com.skyblockexp.ezeconomy.core.EzEconomyPlugin; import com.skyblockexp.ezeconomy.util.NumberUtil; import com.skyblockexp.ezeconomy.api.storage.StorageProvider; import net.milkbowl.vault.economy.EconomyResponse; import org.bukkit.command.CommandSender; - -/** - * Subcommand for /bank deposit [currency] - */ -public class DepositSubcommand implements Subcommand { - private final EzEconomyPlugin plugin; - - public DepositSubcommand(EzEconomyPlugin plugin) { - this.plugin = plugin; - } - - @Override - public boolean execute(CommandSender sender, String[] args) { - if (!sender.hasPermission("ezeconomy.bank.deposit") && !sender.hasPermission("ezeconomy.bank.admin")) { - com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "no_permission"); - return true; - } - if (args.length < 1) { - com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "usage_bank_deposit"); - return true; - } - - // Resolve bank name and amount: - // /bank deposit — deposits into the sender's own bank - // /bank deposit — deposits into the named bank - final String bankName; - final String amountStr; - final String currency; + +/** + * Subcommand for /bank deposit [currency] + */ +public class DepositSubcommand implements Subcommand { + private final EzEconomyPlugin plugin; + + public DepositSubcommand(EzEconomyPlugin plugin) { + this.plugin = plugin; + } + + @Override + public boolean execute(CommandSender sender, String[] args) { + if (!sender.hasPermission("ezeconomy.bank.deposit") && !sender.hasPermission("ezeconomy.bank.admin")) { + com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "no_permission"); + return true; + } + if (args.length < 1) { + com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "usage_bank_deposit"); + return true; + } + + // Resolve bank name and amount: + // /bank deposit — deposits into the sender's own bank + // /bank deposit — deposits into the named bank + final String bankName; + final String amountStr; + final String currency; if (args.length == 1) { if (!(sender instanceof org.bukkit.entity.Player)) { com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "only_players"); @@ -47,12 +47,12 @@ public boolean execute(CommandSender sender, String[] args) { amountStr = args[1]; currency = args.length >= 3 ? args[2] : plugin.getDefaultCurrency(); } - - Double amount = NumberUtil.parseDouble(amountStr); - if (amount == null || amount <= 0) { - com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "invalid_amount"); - return true; - } + + Double amount = NumberUtil.parseDouble(amountStr); + if (amount == null || amount <= 0) { + com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "invalid_amount"); + return true; + } StorageProvider storage = plugin.getStorageOrWarn(); if (storage == null) return true; @@ -73,27 +73,24 @@ public boolean execute(CommandSender sender, String[] args) { } return true; } - String formattedAmount = plugin.getCurrencyFormatter().formatPriceForMessage(amount, currency); - java.util.HashMap placeholders = new java.util.HashMap<>(); - placeholders.put("name", bankName); - placeholders.put("amount", formattedAmount); - placeholders.put("currency", currency); - com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "deposited", placeholders); - return true; - } - private boolean handleEconomyFailure(CommandSender sender, EconomyResponse response, String bankName) { - if (response == null || response.type == EconomyResponse.ResponseType.FAILURE - || response.type == EconomyResponse.ResponseType.NOT_IMPLEMENTED) { - String message = response == null ? null : response.errorMessage; - if (message != null && message.startsWith("Bank does not exist")) { - com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "bank_not_found", - java.util.Map.of("name", bankName)); - } else { - String fallback = (message == null || message.isBlank()) ? "Bank operation failed." : message; - sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, fallback)); - } - return true; - } - return false; - } + String formattedAmount = plugin.getCurrencyFormatter().formatPriceForMessage(amount, currency); + java.util.HashMap placeholders = new java.util.HashMap<>(); + placeholders.put("name", bankName); + placeholders.put("amount", formattedAmount); + placeholders.put("currency", currency); + com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "deposited", placeholders); + return true; + } + private boolean handleEconomyFailure(CommandSender sender, EconomyResponse response, String bankName) { + if (response == null || response.type == EconomyResponse.ResponseType.FAILURE + || response.type == EconomyResponse.ResponseType.NOT_IMPLEMENTED) { + String message = response == null ? null : response.errorMessage; + String fallback = (message == null || message.isBlank()) + ? com.skyblockexp.ezeconomy.util.MessageUtils.format(plugin, "bank_operation_failed") + : message; + sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, fallback)); + return true; + } + return false; + } } diff --git a/src/main/java/com/skyblockexp/ezeconomy/command/bank/InfoSubcommand.java b/src/main/java/com/skyblockexp/ezeconomy/command/bank/InfoSubcommand.java index fe0b71f8..8043da3f 100644 --- a/src/main/java/com/skyblockexp/ezeconomy/command/bank/InfoSubcommand.java +++ b/src/main/java/com/skyblockexp/ezeconomy/command/bank/InfoSubcommand.java @@ -51,9 +51,9 @@ public boolean execute(CommandSender sender, String[] args) { private boolean handleEconomyFailure(CommandSender sender, EconomyResponse response) { if (response == null || response.type == EconomyResponse.ResponseType.FAILURE || response.type == EconomyResponse.ResponseType.NOT_IMPLEMENTED) { - String message = response == null ? "Bank operation failed." : response.errorMessage; + String message = response == null ? null : response.errorMessage; if (message == null || message.isBlank()) { - message = "Bank operation failed."; + message = com.skyblockexp.ezeconomy.util.MessageUtils.format(plugin, "bank_operation_failed"); } sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, message)); return true; diff --git a/src/main/java/com/skyblockexp/ezeconomy/command/bank/WithdrawSubcommand.java b/src/main/java/com/skyblockexp/ezeconomy/command/bank/WithdrawSubcommand.java index d94b4aa5..c8cd6bbb 100644 --- a/src/main/java/com/skyblockexp/ezeconomy/command/bank/WithdrawSubcommand.java +++ b/src/main/java/com/skyblockexp/ezeconomy/command/bank/WithdrawSubcommand.java @@ -67,7 +67,7 @@ public boolean execute(CommandSender sender, String[] args) { } catch (Exception ex) { // Roll back the bank withdrawal if wallet credit fails unexpectedly. storage.depositBank(bankName, currency, amount); - sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, "Bank operation failed.")); + com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "bank_operation_failed"); return true; } } @@ -84,15 +84,10 @@ private boolean handleEconomyFailure(CommandSender sender, EconomyResponse respo if (response == null || response.type == EconomyResponse.ResponseType.FAILURE || response.type == EconomyResponse.ResponseType.NOT_IMPLEMENTED) { String message = response == null ? null : response.errorMessage; - if (message != null && message.startsWith("Bank does not exist")) { - com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "bank_not_found", - java.util.Map.of("name", bankName)); - } else if (message != null && message.startsWith("Insufficient funds")) { - com.skyblockexp.ezeconomy.util.MessageUtils.send(sender, plugin, "not_enough_money"); - } else { - String fallback = (message == null || message.isBlank()) ? "Bank operation failed." : message; - sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, fallback)); - } + String fallback = (message == null || message.isBlank()) + ? com.skyblockexp.ezeconomy.util.MessageUtils.format(plugin, "bank_operation_failed") + : message; + sender.sendMessage(com.skyblockexp.ezeconomy.util.MessageUtils.color(plugin, fallback)); return true; } return false; diff --git a/src/main/java/com/skyblockexp/ezeconomy/core/VaultEconomyImpl.java b/src/main/java/com/skyblockexp/ezeconomy/core/VaultEconomyImpl.java index 2b53f5b6..c175ff67 100644 --- a/src/main/java/com/skyblockexp/ezeconomy/core/VaultEconomyImpl.java +++ b/src/main/java/com/skyblockexp/ezeconomy/core/VaultEconomyImpl.java @@ -17,6 +17,7 @@ import net.milkbowl.vault.economy.EconomyResponse; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.OfflinePlayer; +import com.skyblockexp.ezeconomy.util.MessageUtils; /** * Vault Economy implementation for EzEconomy. @@ -106,12 +107,12 @@ public String format(double amount) { @Override public String currencyNamePlural() { - return "Dollars"; + return message("vault_currency_plural"); } @Override public String currencyNameSingular() { - return "Dollar"; + return message("vault_currency_singular"); } @Override @@ -180,7 +181,7 @@ public EconomyResponse withdrawPlayer(OfflinePlayer player, double amount) { public EconomyResponse withdrawPlayer(OfflinePlayer player, double amount, String currency) { StorageProvider storage = getStorageProvider(); if (storage == null) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Storage unavailable"); + return failure("vault_storage_unavailable"); } UUID uuid = player.getUniqueId(); if (canUseFastVaultMutations(storage)) { @@ -189,14 +190,14 @@ public EconomyResponse withdrawPlayer(OfflinePlayer player, double amount, Strin double balance = result.getBalance(); return success ? new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null) - : new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, INSUFFICIENT_FUNDS); + : failure("vault_insufficient_funds", balance); } EconomyMutationResult result = storage.withdrawAndGetBalance(uuid, currency, amount); boolean success = result.isSuccess(); double balance = result.getBalance(); return success ? new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null) - : new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, INSUFFICIENT_FUNDS); + : failure("vault_insufficient_funds", balance); } @Override @@ -213,21 +214,21 @@ public EconomyResponse depositPlayer(OfflinePlayer player, double amount) { public EconomyResponse depositPlayer(OfflinePlayer player, double amount, String currency) { StorageProvider storage = getStorageProvider(); if (storage == null) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Storage unavailable"); + return failure("vault_storage_unavailable"); } if (canUseFastVaultMutations(storage)) { EconomyMutationResult result = mutateFastPlayerBalance(storage, player.getUniqueId(), currency, amount, false); double balance = result.getBalance(); return result.isSuccess() ? new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null) - : new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, "Deposit failed"); + : failure("vault_deposit_failed", balance); } EconomyMutationResult result = storage.depositAndGetBalance(player.getUniqueId(), currency, amount); boolean success = result.isSuccess(); double balance = result.getBalance(); return success ? new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null) - : new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, "Deposit failed"); + : failure("vault_deposit_failed", balance); } // --- Bank methods --- @@ -246,11 +247,12 @@ public EconomyResponse createBank(String name, OfflinePlayer player) { return notSupported(); } if (storage.bankExists(name)) { - return new EconomyResponse(0, storage.getBankBalance(name), EconomyResponse.ResponseType.FAILURE, "Bank already exists"); + return failure("vault_bank_already_exists", storage.getBankBalance(name), + java.util.Map.of("name", name)); } boolean created = storage.createBank(name, player.getUniqueId()); if (!created) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Unable to create bank"); + return failure("vault_bank_create_failed"); } return new EconomyResponse(0, 0, EconomyResponse.ResponseType.SUCCESS, null); } @@ -264,11 +266,11 @@ public EconomyResponse deleteBank(String name) { return notSupported(); } if (!storage.bankExists(name)) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Bank does not exist"); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } boolean deleted = storage.deleteBank(name); if (!deleted) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, "Unable to delete bank"); + return failure("vault_bank_delete_failed"); } return new EconomyResponse(0, 0, EconomyResponse.ResponseType.SUCCESS, null); } @@ -282,7 +284,7 @@ public EconomyResponse bankBalance(String name) { return notSupported(); } if (!storage.bankExists(name)) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } double balance = storage.getBankBalance(name, plugin.getDefaultCurrency()); return new EconomyResponse(balance, balance, EconomyResponse.ResponseType.SUCCESS, null); @@ -297,12 +299,12 @@ public EconomyResponse bankHas(String name, double amount) { return notSupported(); } if (!storage.bankExists(name)) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } String currency = plugin.getDefaultCurrency(); double balance = storage.getBankBalance(name, currency); if (balance < amount) { - return new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, INSUFFICIENT_FUNDS); + return failure("vault_insufficient_funds", balance); } return new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null); } @@ -320,10 +322,10 @@ public EconomyResponse bankWithdraw(String name, double amount) { boolean success = result.isSuccess(); double balance = result.getBalance(); if (!success && "Bank does not exist".equalsIgnoreCase(result.getFailureReason())) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } if (!success) { - return new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, INSUFFICIENT_FUNDS); + return failure("vault_insufficient_funds", balance); } return new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null); } @@ -339,7 +341,7 @@ public EconomyResponse bankDeposit(String name, double amount) { String currency = plugin.getDefaultCurrency(); EconomyMutationResult result = storage.depositBankAndGetBalance(name, currency, amount); if (!result.isSuccess() && "Bank does not exist".equalsIgnoreCase(result.getFailureReason())) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } double balance = result.getBalance(); return new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null); @@ -360,11 +362,11 @@ public EconomyResponse isBankOwner(String name, OfflinePlayer player) { return notSupported(); } if (!storage.bankExists(name)) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } double balance = storage.getBankBalance(name, plugin.getDefaultCurrency()); if (!storage.isBankOwner(name, player.getUniqueId())) { - return new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, "Not a bank owner"); + return failure("vault_not_bank_owner", balance); } return new EconomyResponse(0, balance, EconomyResponse.ResponseType.SUCCESS, null); } @@ -384,11 +386,11 @@ public EconomyResponse isBankMember(String name, OfflinePlayer player) { return notSupported(); } if (!storage.bankExists(name)) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } double balance = storage.getBankBalance(name, plugin.getDefaultCurrency()); if (!storage.isBankMember(name, player.getUniqueId())) { - return new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, "Not a bank member"); + return failure("vault_not_bank_member", balance); } return new EconomyResponse(0, balance, EconomyResponse.ResponseType.SUCCESS, null); } @@ -403,7 +405,25 @@ public List getBanks() { } private EconomyResponse notSupported() { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, "Bank support not implemented"); + return new EconomyResponse(0, 0, EconomyResponse.ResponseType.NOT_IMPLEMENTED, + message("vault_bank_support_not_implemented")); + } + + private EconomyResponse failure(String key) { + return failure(key, 0); + } + + private EconomyResponse failure(String key, double balance) { + return new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, message(key)); + } + + private EconomyResponse failure(String key, double balance, Map placeholders) { + return new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, + MessageUtils.format(plugin, key, placeholders)); + } + + private String message(String key) { + return MessageUtils.format(plugin, key); } private StorageProvider getStorageProvider() { @@ -569,7 +589,7 @@ public EconomyResponse bankBalance(String name, String currency) { return notSupported(); } if (!storage.bankExists(name)) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } double balance = storage.getBankBalance(name, currency); return new EconomyResponse(balance, balance, EconomyResponse.ResponseType.SUCCESS, null); @@ -582,7 +602,7 @@ public EconomyResponse bankDeposit(String name, String currency, double amount) } EconomyMutationResult result = storage.depositBankAndGetBalance(name, currency, amount); if (!result.isSuccess() && "Bank does not exist".equalsIgnoreCase(result.getFailureReason())) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } double balance = result.getBalance(); return new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null); @@ -597,10 +617,10 @@ public EconomyResponse bankWithdraw(String name, String currency, double amount) boolean success = result.isSuccess(); double balance = result.getBalance(); if (!success && "Bank does not exist".equalsIgnoreCase(result.getFailureReason())) { - return new EconomyResponse(0, 0, EconomyResponse.ResponseType.FAILURE, BANK_DOES_NOT_EXIST); + return failure("vault_bank_not_found", 0, java.util.Map.of("name", name)); } return success ? new EconomyResponse(amount, balance, EconomyResponse.ResponseType.SUCCESS, null) - : new EconomyResponse(0, balance, EconomyResponse.ResponseType.FAILURE, INSUFFICIENT_FUNDS); + : failure("vault_insufficient_funds", balance); } } diff --git a/src/main/resources/languages/en.yml b/src/main/resources/languages/en.yml index 61860842..83ff98c6 100644 --- a/src/main/resources/languages/en.yml +++ b/src/main/resources/languages/en.yml @@ -52,6 +52,19 @@ set: "&aSet {player}'s balance to {balance}." tax_usage: "&7Use /tax reset to clear all totals." daily_reset: "&aDaily reward cooldown reset for {player}." storage_unavailable: "&cStorage provider unavailable. Check server logs." +bank_operation_failed: "&cBank operation failed." +vault_storage_unavailable: "&cStorage provider unavailable. Check server logs." +vault_insufficient_funds: "&cInsufficient funds." +vault_deposit_failed: "&cDeposit failed." +vault_bank_already_exists: "&cBank '{name}' already exists." +vault_bank_create_failed: "&cUnable to create bank." +vault_bank_not_found: "&cBank '{name}' does not exist." +vault_bank_delete_failed: "&cUnable to delete bank." +vault_not_bank_owner: "&cYou are not a bank owner." +vault_not_bank_member: "&cYou are not a bank member." +vault_bank_support_not_implemented: "&cBank support is not implemented." +vault_currency_plural: "Dollars" +vault_currency_singular: "Dollar" multi_currency_disabled: "&cMulti-currency is not enabled on this server." cleanup_usage: "&eThis will remove orphaned UUIDs (player files with no known player) from storage. Type /ezeconomy cleanup confirm to proceed." cleanup_preview_empty: "&aNo orphaned player entries found. Nothing will be deleted." diff --git a/src/main/resources/languages/es.yml b/src/main/resources/languages/es.yml index 561d76ee..8a468cbf 100644 --- a/src/main/resources/languages/es.yml +++ b/src/main/resources/languages/es.yml @@ -49,6 +49,19 @@ tax_total: "&6Total Recaudado: &f{amount}" tax_reset: "&aTodos los totales de impuestos han sido reiniciados." daily_reset: "&aReinicio del enfriamiento de recompensa diaria para {player}." storage_unavailable: "&cProveedor de almacenamiento no disponible. Verifique los registros del servidor." +bank_operation_failed: "&cLa operación bancaria falló." +vault_storage_unavailable: "&cProveedor de almacenamiento no disponible. Verifique los registros del servidor." +vault_insufficient_funds: "&cFondos insuficientes." +vault_deposit_failed: "&cEl depósito falló." +vault_bank_already_exists: "&cEl banco '{name}' ya existe." +vault_bank_create_failed: "&cNo se pudo crear el banco." +vault_bank_not_found: "&cEl banco '{name}' no existe." +vault_bank_delete_failed: "&cNo se pudo eliminar el banco." +vault_not_bank_owner: "&cNo eres propietario del banco." +vault_not_bank_member: "&cNo eres miembro del banco." +vault_bank_support_not_implemented: "&cEl soporte bancario no está implementado." +vault_currency_plural: "Dólares" +vault_currency_singular: "Dólar" multi_currency_disabled: "&cLa multi-moneda no está habilitada en este servidor." cleanup_usage: "&eEsto eliminará los UUID huérfanos (archivos de jugadores sin jugador conocido) del almacenamiento. Escribe /ezeconomy cleanup confirm para continuar." cleanup_preview_empty: "&aNo se encontraron entradas de jugadores huérfanos. No se eliminará nada." diff --git a/src/main/resources/languages/fr.yml b/src/main/resources/languages/fr.yml index 76a32096..114c1c5d 100644 --- a/src/main/resources/languages/fr.yml +++ b/src/main/resources/languages/fr.yml @@ -48,6 +48,19 @@ tax_total: "&6Total Collecté: &f{amount}" tax_reset: "&aTous les totaux de taxes ont été réinitialisés." daily_reset: "&aRéinitialisation du délai de récupération de la récompense quotidienne pour {player}." storage_unavailable: "&cFournisseur de stockage indisponible. Vérifiez les journaux du serveur." +bank_operation_failed: "&cL'opération bancaire a échoué." +vault_storage_unavailable: "&cFournisseur de stockage indisponible. Vérifiez les journaux du serveur." +vault_insufficient_funds: "&cFonds insuffisants." +vault_deposit_failed: "&cLe dépôt a échoué." +vault_bank_already_exists: "&cLa banque '{name}' existe déjà." +vault_bank_create_failed: "&cImpossible de créer la banque." +vault_bank_not_found: "&cLa banque '{name}' n'existe pas." +vault_bank_delete_failed: "&cImpossible de supprimer la banque." +vault_not_bank_owner: "&cVous n'êtes pas propriétaire de la banque." +vault_not_bank_member: "&cVous n'êtes pas membre de la banque." +vault_bank_support_not_implemented: "&cLa prise en charge des banques n'est pas implémentée." +vault_currency_plural: "Dollars" +vault_currency_singular: "Dollar" multi_currency_disabled: "&cLe multi-devise n'est pas activé sur ce serveur." cleanup_usage: "&eCela supprimera les UUID orphelins (fichiers de joueurs sans joueur connu) du stockage. Tapez /ezeconomy cleanup confirm pour continuer." cleanup_preview_empty: "&aAucune entrée de joueur orpheline trouvée. Rien ne sera supprimé." diff --git a/src/main/resources/languages/nl.yml b/src/main/resources/languages/nl.yml index 69a42e77..ff227d2d 100644 --- a/src/main/resources/languages/nl.yml +++ b/src/main/resources/languages/nl.yml @@ -49,6 +49,19 @@ tax_total: "&6Totaal Geïnd: &f{amount}" tax_reset: "&aAlle belasting totalen zijn gereset." daily_reset: "&aDagelijkse beloning cooldown opnieuw ingesteld voor {player}." storage_unavailable: "&cOpslagprovider niet beschikbaar. Controleer server logs." +bank_operation_failed: "&cBankbewerking mislukt." +vault_storage_unavailable: "&cOpslagprovider niet beschikbaar. Controleer server logs." +vault_insufficient_funds: "&cOnvoldoende saldo." +vault_deposit_failed: "&cStorting mislukt." +vault_bank_already_exists: "&cBank '{name}' bestaat al." +vault_bank_create_failed: "&cBank kan niet worden aangemaakt." +vault_bank_not_found: "&cBank '{name}' bestaat niet." +vault_bank_delete_failed: "&cBank kan niet worden verwijderd." +vault_not_bank_owner: "&cJe bent geen eigenaar van deze bank." +vault_not_bank_member: "&cJe bent geen lid van deze bank." +vault_bank_support_not_implemented: "&cBankondersteuning is niet geïmplementeerd." +vault_currency_plural: "Dollars" +vault_currency_singular: "Dollar" multi_currency_disabled: "&cMulti-valuta is niet ingeschakeld op deze server." cleanup_usage: "&eDit zal verweesde UUID's (spelerbestanden zonder bekende speler) uit opslag verwijderen. Typ /ezeconomy cleanup confirm om door te gaan." cleanup_preview_empty: "&aGeen verweesde spelersvermeldingen gevonden. Er wordt niets verwijderd." diff --git a/src/main/resources/languages/zh.yml b/src/main/resources/languages/zh.yml index bdb64ae1..f198a44e 100644 --- a/src/main/resources/languages/zh.yml +++ b/src/main/resources/languages/zh.yml @@ -47,6 +47,19 @@ tax_total: "&6总征收: &f{amount}" tax_reset: "&a所有税收总计已重置。" daily_reset: "&a已为 {player} 重置每日奖励冷却。" storage_unavailable: "&c存储提供程序不可用。请检查服务器日志。" +bank_operation_failed: "&c银行操作失败。" +vault_storage_unavailable: "&c存储提供程序不可用。请检查服务器日志。" +vault_insufficient_funds: "&c余额不足。" +vault_deposit_failed: "&c存款失败。" +vault_bank_already_exists: "&c银行“{name}”已存在。" +vault_bank_create_failed: "&c无法创建银行。" +vault_bank_not_found: "&c银行“{name}”不存在。" +vault_bank_delete_failed: "&c无法删除银行。" +vault_not_bank_owner: "&c你不是该银行的所有者。" +vault_not_bank_member: "&c你不是该银行的成员。" +vault_bank_support_not_implemented: "&c银行支持尚未实现。" +vault_currency_plural: "美元" +vault_currency_singular: "美元" multi_currency_disabled: "&c此服务器未启用多货币功能。" cleanup_usage: "&e这将从存储中删除孤立的 UUID(无已知玩家的玩家文件)。输入 /ezeconomy cleanup confirm 继续。" cleanup_preview_empty: "&a未找到孤立的玩家条目。不会删除任何内容。" diff --git a/src/main/resources/messages.yml b/src/main/resources/messages.yml index 90f3223b..62fedb51 100644 --- a/src/main/resources/messages.yml +++ b/src/main/resources/messages.yml @@ -55,6 +55,19 @@ messages: tax_usage: "&7Use /tax reset to clear all totals." daily_reset: "&aDaily reward cooldown reset for {player}." storage_unavailable: "&cStorage provider unavailable. Check server logs." + bank_operation_failed: "&cBank operation failed." + vault_storage_unavailable: "&cStorage provider unavailable. Check server logs." + vault_insufficient_funds: "&cInsufficient funds." + vault_deposit_failed: "&cDeposit failed." + vault_bank_already_exists: "&cBank '{name}' already exists." + vault_bank_create_failed: "&cUnable to create bank." + vault_bank_not_found: "&cBank '{name}' does not exist." + vault_bank_delete_failed: "&cUnable to delete bank." + vault_not_bank_owner: "&cYou are not a bank owner." + vault_not_bank_member: "&cYou are not a bank member." + vault_bank_support_not_implemented: "&cBank support is not implemented." + vault_currency_plural: "Dollars" + vault_currency_singular: "Dollar" multi_currency_disabled: "&cMulti-currency is not enabled on this server." cleanup_usage: "&eThis will remove orphaned UUIDs (player files with no known player) from storage. Type /ezeconomy cleanup confirm to proceed." cleanup_preview_empty: "&aNo orphaned player entries found. Nothing will be deleted." @@ -124,6 +137,19 @@ messages: tax_reset: "&aAlle belasting totalen zijn gereset." daily_reset: "&aDagelijkse beloning cooldown opnieuw ingesteld voor {player}." storage_unavailable: "&cOpslagprovider niet beschikbaar. Controleer server logs." + bank_operation_failed: "&cBankbewerking mislukt." + vault_storage_unavailable: "&cOpslagprovider niet beschikbaar. Controleer server logs." + vault_insufficient_funds: "&cOnvoldoende saldo." + vault_deposit_failed: "&cStorting mislukt." + vault_bank_already_exists: "&cBank '{name}' bestaat al." + vault_bank_create_failed: "&cBank kan niet worden aangemaakt." + vault_bank_not_found: "&cBank '{name}' bestaat niet." + vault_bank_delete_failed: "&cBank kan niet worden verwijderd." + vault_not_bank_owner: "&cJe bent geen eigenaar van deze bank." + vault_not_bank_member: "&cJe bent geen lid van deze bank." + vault_bank_support_not_implemented: "&cBankondersteuning is niet geïmplementeerd." + vault_currency_plural: "Dollars" + vault_currency_singular: "Dollar" multi_currency_disabled: "&cMulti-valuta is niet ingeschakeld op deze server." cleanup_usage: "&eDit zal verweesde UUID's (spelerbestanden zonder bekende speler) uit opslag verwijderen. Typ /ezeconomy cleanup confirm om door te gaan." cleanup_preview_empty: "&aGeen verweesde spelersvermeldingen gevonden. Er wordt niets verwijderd." @@ -190,6 +216,19 @@ messages: tax_reset: "&aTodos los totales de impuestos han sido reiniciados." daily_reset: "&aReinicio del enfriamiento de recompensa diaria para {player}." storage_unavailable: "&cProveedor de almacenamiento no disponible. Verifique los registros del servidor." + bank_operation_failed: "&cLa operación bancaria falló." + vault_storage_unavailable: "&cProveedor de almacenamiento no disponible. Verifique los registros del servidor." + vault_insufficient_funds: "&cFondos insuficientes." + vault_deposit_failed: "&cEl depósito falló." + vault_bank_already_exists: "&cEl banco '{name}' ya existe." + vault_bank_create_failed: "&cNo se pudo crear el banco." + vault_bank_not_found: "&cEl banco '{name}' no existe." + vault_bank_delete_failed: "&cNo se pudo eliminar el banco." + vault_not_bank_owner: "&cNo eres propietario del banco." + vault_not_bank_member: "&cNo eres miembro del banco." + vault_bank_support_not_implemented: "&cEl soporte bancario no está implementado." + vault_currency_plural: "Dólares" + vault_currency_singular: "Dólar" multi_currency_disabled: "&cLa multi-moneda no está habilitada en este servidor." cleanup_usage: "&eEsto eliminará los UUID huérfanos (archivos de jugadores sin jugador conocido) del almacenamiento. Escribe /ezeconomy cleanup confirm para continuar." cleanup_preview_empty: "&aNo se encontraron entradas de jugadores huérfanos. No se eliminará nada." @@ -257,6 +296,19 @@ messages: tax_usage: "&7Utilisez /tax reset pour effacer tous les totaux." daily_reset: "&aRéinitialisation du délai de récupération de la récompense quotidienne pour {player}." storage_unavailable: "&cFournisseur de stockage indisponible. Vérifiez les journaux du serveur." + bank_operation_failed: "&cL'opération bancaire a échoué." + vault_storage_unavailable: "&cFournisseur de stockage indisponible. Vérifiez les journaux du serveur." + vault_insufficient_funds: "&cFonds insuffisants." + vault_deposit_failed: "&cLe dépôt a échoué." + vault_bank_already_exists: "&cLa banque '{name}' existe déjà." + vault_bank_create_failed: "&cImpossible de créer la banque." + vault_bank_not_found: "&cLa banque '{name}' n'existe pas." + vault_bank_delete_failed: "&cImpossible de supprimer la banque." + vault_not_bank_owner: "&cVous n'êtes pas propriétaire de la banque." + vault_not_bank_member: "&cVous n'êtes pas membre de la banque." + vault_bank_support_not_implemented: "&cLa prise en charge des banques n'est pas implémentée." + vault_currency_plural: "Dollars" + vault_currency_singular: "Dollar" multi_currency_disabled: "&cLe multi-devise n'est pas activé sur ce serveur." cleanup_usage: "&eCela supprimera les UUID orphelins (fichiers de joueurs sans joueur connu) du stockage. Tapez /ezeconomy cleanup confirm pour continuer." cleanup_preview_empty: "&aAucune entrée de joueur orpheline trouvée. Rien ne sera supprimé." @@ -321,6 +373,19 @@ messages: tax_reset: "&a所有税收总计已重置。" daily_reset: "&a已为 {player} 重置每日奖励冷却。" storage_unavailable: "&c存储提供程序不可用。请检查服务器日志。" + bank_operation_failed: "&c银行操作失败。" + vault_storage_unavailable: "&c存储提供程序不可用。请检查服务器日志。" + vault_insufficient_funds: "&c余额不足。" + vault_deposit_failed: "&c存款失败。" + vault_bank_already_exists: "&c银行“{name}”已存在。" + vault_bank_create_failed: "&c无法创建银行。" + vault_bank_not_found: "&c银行“{name}”不存在。" + vault_bank_delete_failed: "&c无法删除银行。" + vault_not_bank_owner: "&c你不是该银行的所有者。" + vault_not_bank_member: "&c你不是该银行的成员。" + vault_bank_support_not_implemented: "&c银行支持尚未实现。" + vault_currency_plural: "美元" + vault_currency_singular: "美元" multi_currency_disabled: "&c此服务器未启用多货币功能。" cleanup_usage: "&e这将从存储中删除孤立的 UUID(无已知玩家的玩家文件)。输入 /ezeconomy cleanup confirm 继续。" cleanup_preview_empty: "&a未找到孤立的玩家条目。不会删除任何内容。" From 1a4e6d6faba1569c7aabdb2527c913786fb68384 Mon Sep 17 00:00:00 2001 From: w4sb0y Date: Wed, 2 Sep 2026 21:48:14 +0300 Subject: [PATCH 2/3] Changed Vault messages to be user-translateble using AI. --- src/main/resources/languages/nl.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/resources/languages/nl.yml b/src/main/resources/languages/nl.yml index ff227d2d..b0ae8b6f 100644 --- a/src/main/resources/languages/nl.yml +++ b/src/main/resources/languages/nl.yml @@ -2,12 +2,12 @@ set: "&aSaldo van {player} ingesteld op {balance}." only_players: "&cDit commando kan alleen door spelers worden gebruikt." no_permission: "&cJe hebt geen toestemming om dit commando te gebruiken." usage_balance: "&eGebruik: /balance [speler] [devise]" - usage_eco: "&eGebruik: /eco [devise]" +usage_eco: "&eGebruik: /eco [devise]" usage_ezeconomy: "&eGebruik: /ezeconomy " usage_daily_reset: "&eGebruik: /ezeconomy daily reset " - usage_pay: "&eGebruik: /pay [devise]" +usage_pay: "&eGebruik: /pay [devise]" usage_bank: "&eGebruik: /bank ..." - usage_currency: "&eGebruik: /currency convert " +usage_currency: "&eGebruik: /currency convert " invalid_amount: "&cOngeldig bedrag." not_enough_money: "&cJe hebt niet genoeg geld." paid: "&aJe hebt {player} {amount} betaald." From 62d18e6b48d740d7e14aa4144c7818771fcf0e3b Mon Sep 17 00:00:00 2001 From: w4sb0y Date: Thu, 3 Sep 2026 00:31:56 +0300 Subject: [PATCH 3/3] Fix --- pom.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/pom.xml b/pom.xml index 7c551190..5dcac22c 100644 --- a/pom.xml +++ b/pom.xml @@ -539,4 +539,3 @@ -