Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
94 changes: 94 additions & 0 deletions src/main/java/pro/cloudnode/smp/bankaccounts/BankConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,56 @@ public int invoiceNotifyInterval() {
return Objects.requireNonNull(config.getString("messages.types." + Account.Type.getType(type)));
}

// messages.help.bank.header
public @NotNull Optional<@NotNull Component> messagesHelpBankHeader() {
final @Nullable String message = config.getString("messages.help.bank.header");
if (message == null || message.isEmpty()) return Optional.empty();
return Optional.of(MiniMessage.miniMessage().deserialize(message));
}

// messages.help.bank.commands.
public @NotNull Optional<@NotNull Component> messagesHelpBankCommands(final @NotNull HelpCommandsBank key, final @NotNull String command, final @NotNull String arguments) {
final @Nullable String message = config.getString("messages.help.bank.commands." + key.path);
if (message == null || message.isEmpty()) return Optional.empty();
return Optional.of(MiniMessage.miniMessage().deserialize(
message
.replace("<command>", command),
Placeholder.unparsed("arguments", arguments)
));
}

// messages.help.bank.footer
public @NotNull Optional<@NotNull Component> messagesHelpBankFooter() {
final @Nullable String message = config.getString("messages.help.bank.footer");
if (message == null || message.isEmpty()) return Optional.empty();
return Optional.of(MiniMessage.miniMessage().deserialize(message));
}

// messages.help.invoice.header
public @NotNull Optional<@NotNull Component> messagesHelpInvoiceHeader() {
final @Nullable String message = config.getString("messages.help.invoice.header");
if (message == null || message.isEmpty()) return Optional.empty();
return Optional.of(MiniMessage.miniMessage().deserialize(message));
}

// messages.help.invoice.commands.
public @NotNull Optional<@NotNull Component> messagesHelpInvoiceCommands(final @NotNull HelpCommandsInvoice key, final @NotNull String command, final @NotNull String arguments) {
final @Nullable String message = config.getString("messages.help.invoice.commands." + key.path);
if (message == null || message.isEmpty()) return Optional.empty();
return Optional.of(MiniMessage.miniMessage().deserialize(
message
.replace("<command>", command),
Placeholder.unparsed("arguments", arguments)
));
}

// messages.help.invoice.footer
public @NotNull Optional<@NotNull Component> messagesHelpInvoiceFooter() {
final @Nullable String message = config.getString("messages.help.invoice.footer");
if (message == null || message.isEmpty()) return Optional.empty();
return Optional.of(MiniMessage.miniMessage().deserialize(message));
}

// messages.errors.no-accounts
public @NotNull Component messagesErrorsNoAccounts() {
return MiniMessage.miniMessage().deserialize(Objects.requireNonNull(config.getString("messages.errors.no-accounts")));
Expand Down Expand Up @@ -1407,4 +1457,48 @@ public int invoiceNotifyInterval() {
.replace("<version>", version)
);
}

public enum HelpCommandsBank {
BALANCE("balance"),
BALANCE_OTHER("balance-other"),
TRANSFER("transfer"),
HISTORY("history"),
CREATE("create"),
CREATE_OTHER("create-other"),
FREEZE("freeze"),
UNFREEZE("unfreeze"),
DELETE("delete"),
INSTRUMENT("instrument"),
WHOIS("whois"),
BALTOP("baltop"),
POS("pos"),
SETBALANCE("setbalance"),
RENAME("rename"),
RELOAD("reload"),
INVOICES("invoices"),
;

public final @NotNull String path;

HelpCommandsBank(final @NotNull String path) {
this.path = path;
}
}

public enum HelpCommandsInvoice {
CREATE("create"),
CREATE_PLAYER("create-player"),
VIEW("view"),
PAY("pay"),
SEND("send"),
LIST("list"),
LIST_OTHER("list-other"),
;

public final @NotNull String path;

HelpCommandsInvoice(final @NotNull String path) {
this.path = path;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
package pro.cloudnode.smp.bankaccounts.commands;

import net.kyori.adventure.text.Component;
import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import org.bukkit.Material;
import org.bukkit.OfflinePlayer;
Expand All @@ -12,6 +10,7 @@
import org.jetbrains.annotations.Nullable;
import pro.cloudnode.smp.bankaccounts.Account;
import pro.cloudnode.smp.bankaccounts.BankAccounts;
import pro.cloudnode.smp.bankaccounts.BankConfig;
import pro.cloudnode.smp.bankaccounts.Command;
import pro.cloudnode.smp.bankaccounts.Permissions;
import pro.cloudnode.smp.bankaccounts.Transaction;
Expand Down Expand Up @@ -211,7 +210,7 @@ else if (args.length == 3 && sender.hasPermission(Permissions.INSTRUMENT_CREATE_
if (args.length == 0) return overview(sender);
final @NotNull String @NotNull [] argsSubset = Arrays.copyOfRange(args, 1, args.length);
return switch (args[0]) {
case "help" -> help(sender);
case "help" -> help(sender, label);
case "bal", "balance", "account", "accounts" ->
balance(sender, Arrays.copyOfRange(args, 1, args.length), label);
case "reload" -> reload(sender);
Expand Down Expand Up @@ -243,45 +242,44 @@ else if (args.length == 3 && sender.hasPermission(Permissions.INSTRUMENT_CREATE_
/**
* Plugin help
*/
public static @NotNull Message help(final @NotNull CommandSender sender) {
sender.sendMessage(MiniMessage.miniMessage().deserialize("<dark_gray>---</dark_gray>"));
sender.sendMessage(MiniMessage.miniMessage().deserialize("<green>Available commands:"));
sender.sendMessage(Component.empty());
public static @NotNull CommandResult help(final @NotNull CommandSender sender, final @NotNull String label) {
BankAccounts.getInstance().config().messagesHelpBankHeader().ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.BALANCE_SELF))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank balance ><green>/bank balance <gray>[account]</gray></green> <white>- Check your accounts</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.BALANCE, label + " balance", "[account]").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.BALANCE_OTHER))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank balance --player ><green>/bank balance <gray>--player <player></gray></green> <white>- List another player's accounts</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.BALANCE, label + " balance", "--player <player>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.TRANSFER_SELF) || sender.hasPermission(Permissions.TRANSFER_OTHER))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank transfer ><green>/bank transfer <gray><from> <to> <amount> [description]</gray></green> <white>- Transfer money to another account</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.TRANSFER, label + " transfer", "<from> <to> <amount> [description]").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.HISTORY))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank transactions ><green>/bank transactions <gray><account> [page=1]</gray></green> <white>- List transactions</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.HISTORY, label + " history", "<account> [page=1]").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.ACCOUNT_CREATE))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank create ><green>/bank create <gray><PERSONAL|BUSINESS" + (sender.hasPermission(Permissions.ACCOUNT_CREATE_VAULT) ? "|VAULT" : "") + "></gray></green> <white>- Create a new account</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.CREATE, label + " create", "<PERSONAL|BUSINESS" + (sender.hasPermission(Permissions.ACCOUNT_CREATE_VAULT) ? "|VAULT" : "") + ">").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.ACCOUNT_CREATE_OTHER))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank create ><green>/bank create <gray><PERSONAL|BUSINESS" + (sender.hasPermission(Permissions.ACCOUNT_CREATE_VAULT) ? "|VAULT" : "") + "> --player <player></gray></green> <white>- Create an account for another player</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.CREATE, label + " create", "<PERSONAL|BUSINESS" + (sender.hasPermission(Permissions.ACCOUNT_CREATE_VAULT) ? "|VAULT" : "") + "> --player <player>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.FREEZE)) {
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank freeze ><green>/bank freeze <gray><account></gray></green> <white>- Freeze an account</click>"));
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank unfreeze ><green>/bank unfreeze <gray><account></gray></green> <white>- Unfreeze an account</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.FREEZE, label + " freeze", "<account>").ifPresent(sender::sendMessage);
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.UNFREEZE, label + " unfreeze", "<account>").ifPresent(sender::sendMessage);
}
if (sender.hasPermission(Permissions.DELETE))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank delete ><green>/bank delete <gray><account></gray></green> <white>- Delete an account</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.DELETE, label + " delete", "<account>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.INSTRUMENT_CREATE))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank instrument ><green>/bank instrument <gray><account>" + (sender.hasPermission(Permissions.INSTRUMENT_CREATE_OTHER) ? " [player]" : "") + "</gray></green> <white>- Create a new instrument</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.INSTRUMENT, label + " instrument", "<account>" + (sender.hasPermission(Permissions.INSTRUMENT_CREATE_OTHER) ? " [player]" : "")).ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.WHOIS))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank whois ><green>/bank whois <gray><account></gray></green> <white>- Get information about an account</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.WHOIS, label + " whois", "<account>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.BALTOP))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/baltop ><green>/baltop <gray>[personal|business|player] [page=1]</gray></green> <white>- Top balance leaderboard</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.BALTOP, "baltop", "[personal|business|player] [page=1]").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.POS_CREATE))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/pos ><green>/pos <gray><account> <price> [description]</gray></green> <white>- Create a new point of sale</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.POS, "pos", "<account> <price> [description]").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.SET_BALANCE))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank setbalance ><green>/bank setbalance <gray><account> <balance|Infinity></gray></green> <white>- Set an account's balance</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.SETBALANCE, label + " setbalance", "<account> <balance|Infinity>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.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>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.RENAME, label + " setname", "<account> [name]").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.RELOAD))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank reload><green>/bank reload</green> <white>- Reload plugin configuration</click>"));
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.RELOAD, label + " reload", "").ifPresent(sender::sendMessage);
if (Stream.of(Permissions.INVOICE_CREATE, Permissions.INVOICE_VIEW, Permissions.INVOICE_SEND, Permissions.TRANSFER_SELF, Permissions.TRANSFER_OTHER).anyMatch(sender::hasPermission))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/invoice help><green>/invoice help</green> <white>- See invoicing commands</click>"));
return new Message(sender, "<dark_gray>---</dark_gray>");
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.INVOICES, "invoice help", "").ifPresent(sender::sendMessage);
BankAccounts.getInstance().config().messagesHelpBankFooter().ifPresent(sender::sendMessage);
return CommandResult.DO_NOTHING;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import org.jetbrains.annotations.Nullable;
import pro.cloudnode.smp.bankaccounts.Account;
import pro.cloudnode.smp.bankaccounts.BankAccounts;
import pro.cloudnode.smp.bankaccounts.BankConfig;
import pro.cloudnode.smp.bankaccounts.Command;
import pro.cloudnode.smp.bankaccounts.Invoice;
import pro.cloudnode.smp.bankaccounts.Permissions;
Expand Down Expand Up @@ -125,25 +126,24 @@ else if (args.length == 3) {
* <p>{@code /invoice help}</p>
*/
public static @NotNull CommandResult help(final @NotNull CommandSender sender, final @NotNull String label) {
sender.sendMessage(MiniMessage.miniMessage().deserialize("<dark_gray>---</dark_gray>"));
sender.sendMessage(MiniMessage.miniMessage().deserialize("<green>Available commands:"));
sender.sendMessage(Component.empty());
BankAccounts.getInstance().config().messagesHelpInvoiceHeader().ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.INVOICE_CREATE)) {
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " create ><green>/" + label + " create <gray><account> <amount> [description]</gray></green> <white>- Create an invoice</white></click>"));
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " create ><green>/" + label + " create <gray><account> <amount> [description] --player <player></gray></green> <white>- Create and send invoice to player</white></click>"));
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.CREATE, label + " create", "<account> <amount> [description]").ifPresent(sender::sendMessage);
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.CREATE_PLAYER, label + " create", "<player> <amount> [description] --player <player>").ifPresent(sender::sendMessage);
}
if (sender.hasPermission(Permissions.INVOICE_VIEW))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " view ><green>/" + label + " view <gray><invoice></gray></green> <white>- View invoice details</white></click>"));
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.VIEW, label + " view", "<invoice>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.TRANSFER_SELF) || sender.hasPermission(Permissions.TRANSFER_OTHER))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " pay ><green>/" + label + " pay <gray><invoice> <account></gray></green> <white>- Pay an invoice</white></click>"));
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.PAY, label + " pay", "<invoice> <account>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.INVOICE_SEND))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " send ><green>/" + label + " send <gray><invoice> <player></gray></green> <white>- Send an invoice to a player</white></click>"));
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.SEND, label + " send", "<invoice> <player>").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.INVOICE_VIEW)) {
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " list ><green>/" + label + " list <gray>[all|sent|received] [page]</gray></green> <white>- List invoices</white></click>"));
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.LIST, label + " list", "[all|sent|received] [page]").ifPresent(sender::sendMessage);
if (sender.hasPermission(Permissions.INVOICE_VIEW_OTHER))
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " list ><green>/" + label + " list <gray>[all|sent|received] [page] --player <player></gray></green> <white>- List invoices of player</white></click>"));
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.LIST_OTHER, label + " list", "[all|sent|received] [page] --player <player>").ifPresent(sender::sendMessage);
}
return new Message(sender, "<dark_gray>---</dark_gray>");
BankAccounts.getInstance().config().messagesHelpInvoiceFooter().ifPresent(sender::sendMessage);
return CommandResult.DO_NOTHING;
}

/**
Expand Down
Loading
Loading