Skip to content

Commit

Permalink
rename accounts
Browse files Browse the repository at this point in the history
  • Loading branch information
zefir-git committed Jul 21, 2023
1 parent b531bb1 commit f82bc65
Show file tree
Hide file tree
Showing 3 changed files with 61 additions and 9 deletions.
21 changes: 12 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@
A multi-account economy plugin.

## Permissions
| Permission | Command | Description | Recommended group |
|------------------------------|--------------|------------------------------------------|-------------------|
| `bank.command` | `bank` | Required to use any bank command | `default` |
| `bank.balance.self` | `balance` | List your accounts and check own balance | `default` |
| `bank.account.create` | `create` | Create a new account | `default` |
| `bank.reload` | `reload` | Reload the plugin | `admin` |
| `bank.account.create.other` | `create` | Create a new account for another player | `admin` |
| `bank.account.create.bypass` | `create` | Bypass the maximum account limit | `admin` |
| `bank.set.balance` | `setbalance` | Set the balance of an account | `admin` |
| Permission | Command | Description | Recommended group |
|------------------------------|--------------|----------------------------------------------------|-------------------|
| `bank.command` | `bank` | Required to use any bank command | `default` |
| `bank.balance.self` | `balance` | List your accounts and check own balance | `default` |
| `bank.account.create` | `create` | Create a new account | `default` |
| `bank.set.name` | `setname` | Set the name of an account | `default` |
| `bank.reload` | `reload` | Reload the plugin | `admin` |
| `bank.account.create.other` | `create` | Create a new account for another player | `admin` |
| `bank.account.create.bypass` | `create` | Bypass the maximum account limit | `admin` |
| `bank.set.balance` | `setbalance` | Set the balance of an account | `admin` |
| `bank.set.name.other` | `setname` | Set the name of an account owned by another player | `admin` |
| `bank.set.name.personal` | `setname` | Allow renaming personal accounts (not recommended) | `admin` |
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,7 @@ public ArrayList<String> onTabComplete(@NotNull CommandSender sender, @NotNull C
if (sender.hasPermission("bank.reload")) suggestions.add("reload");
if (sender.hasPermission("bank.account.create")) suggestions.addAll(Arrays.asList("create", "new"));
if (sender.hasPermission("bank.set.balance")) suggestions.addAll(Arrays.asList("setbal", "setbalance"));
if (sender.hasPermission("bank.set.name")) suggestions.addAll(Arrays.asList("setname", "rename"));
}
else {
switch (args[0]) {
Expand Down Expand Up @@ -81,6 +82,13 @@ else if (args.length == 4 && args[2].equals("--player") && sender.hasPermission(
}
if (args.length == 3) suggestions.add("Infinity");
}
case "setname", "rename" -> {
if (!sender.hasPermission("bank.set.name")) return suggestions;
if (args.length == 2) {
Account[] accounts = sender.hasPermission("bank.set.name.other") ? Account.get() : Account.get(BankAccounts.getOfflinePlayer(sender));
for (Account account : accounts) suggestions.add(account.id);
}
}
}
}
return suggestions;
Expand All @@ -97,6 +105,7 @@ else switch (args[0]) {
case "reload" -> reload(sender);
case "create", "new" -> create(sender, Arrays.copyOfRange(args, 1, args.length), label);
case "setbal", "setbalance" -> setBalance(sender, Arrays.copyOfRange(args, 1, args.length), label);
case "setname", "rename" -> setName(sender, Arrays.copyOfRange(args, 1, args.length), label);
default -> sender.sendMessage(MiniMessage.miniMessage().deserialize(BankAccounts.getInstance().getConfig().getString("messages.errors.unknown-command")));
}
}
Expand Down Expand Up @@ -124,6 +133,7 @@ public static void help(@NotNull CommandSender sender, @NotNull String label) {
if (sender.hasPermission("bank.account.create")) sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank create ><green>/bank create <gray>[PERSONAL|BUSINESS]</gray></green> <white>- Create a new account</click>"));
if (sender.hasPermission("bank.account.create.other")) sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank create --player ><green>/bank create <gray>[PERSONAL|BUSINESS] --player [player]</gray></green> <white>- Create an account for another player</click>"));
if (sender.hasPermission("bank.set.balance")) sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank setbalance ><green>/bank setbalance <gray>[account] [balance]</gray></green> <white>- Set an account's balance</click>"));
if (sender.hasPermission("bank.set.name")) sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank setname ><green>/bank setname <gray>[account] [name]</gray></green> <white>- Set an account's name</click>"));
if (sender.hasPermission("bank.reload")) sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank reload><green>/bank reload</green> <white>- Reload plugin configuration</click>"));
sender.sendMessage(MiniMessage.miniMessage().deserialize("<dark_gray>---</dark_gray>"));
}
Expand Down Expand Up @@ -286,6 +296,41 @@ public static void setBalance(@NotNull CommandSender sender, String[] args, Stri
}
}

/**
* Set account name
*/
public static void setName(@NotNull CommandSender sender, String[] args, String label) {
if (!sender.hasPermission("bank.set.name")) {
sender.sendMessage(MiniMessage.miniMessage().deserialize(Objects.requireNonNull(BankAccounts.getInstance().getConfig().getString("messages.errors.no-permission"))));
return;
}
if (args.length < 2) {
sender.sendMessage(MiniMessage.miniMessage().deserialize("<yellow>(!) Usage: <white>/<command> setname " + (args.length > 0 ? args[0] : "<account>") + " <name>",
Placeholder.unparsed("command", label)
));
return;
}
Optional<Account> account = Account.get(args[0]);
if (account.isEmpty())
sender.sendMessage(MiniMessage.miniMessage().deserialize(Objects.requireNonNull(BankAccounts.getInstance().getConfig().getString("messages.errors.account-not-found"))));
else {
if (!sender.hasPermission("bank.set.name.other") && !account.get().owner.getUniqueId().equals(BankAccounts.getOfflinePlayer(sender).getUniqueId())) {
sender.sendMessage(MiniMessage.miniMessage().deserialize(Objects.requireNonNull(BankAccounts.getInstance().getConfig().getString("messages.errors.no-permission"))));
return;
}
if (!sender.hasPermission("bank.set.name.personal") && account.get().type == Account.Type.PERSONAL) {
sender.sendMessage(MiniMessage.miniMessage().deserialize(Objects.requireNonNull(BankAccounts.getInstance().getConfig().getString("messages.errors.rename-personal"))));
return;
}
String name = String.join(" ", Arrays.copyOfRange(args, 1, args.length)).trim();
name = name.length() > 32 ? name.substring(0, 32) : name;
name = name.length() == 0 ? null : name;
account.get().name = name;
account.get().save();
sender.sendMessage(accountPlaceholders(Objects.requireNonNull(BankAccounts.getInstance().getConfig().getString("messages.name-set")), account.get()));
}
}

/**
* Account placeholders
* @param string String to deserialize with MiniMessage and apply placeholders to
Expand Down
4 changes: 4 additions & 0 deletions src/main/resources/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -83,6 +83,7 @@ messages:
# <type> the account type
# <limit> the account limit for that type
max-accounts: "<red>(!) You cannot open more than <limit> <type> accounts.</red>"
rename-personal: "<red>(!) You cannot rename personal accounts.</red>"

# Account balance
# Available placeholders:
Expand Down Expand Up @@ -111,3 +112,6 @@ messages:

# Balance set (same placeholders as balance)
balance-set: "<green>(!) Successfully set <white><account></white> <gray>(<account-type>, <account-id>)</gray> balance to <white><balance-formatted></white></green>"

# Account name set (same placeholders as balance)
name-set: "<green>(!) Successfully renamed account <white><account></white>"

0 comments on commit f82bc65

Please sign in to comment.