Skip to content

Commit 60a4225

Browse files
authored
Make command help messages configurable (#155)
2 parents 0ab55d3 + 93bc612 commit 60a4225

File tree

4 files changed

+185
-36
lines changed

4 files changed

+185
-36
lines changed

src/main/java/pro/cloudnode/smp/bankaccounts/BankConfig.java

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,56 @@ public int invoiceNotifyInterval() {
462462
return Objects.requireNonNull(config.getString("messages.types." + Account.Type.getType(type)));
463463
}
464464

465+
// messages.help.bank.header
466+
public @NotNull Optional<@NotNull Component> messagesHelpBankHeader() {
467+
final @Nullable String message = config.getString("messages.help.bank.header");
468+
if (message == null || message.isEmpty()) return Optional.empty();
469+
return Optional.of(MiniMessage.miniMessage().deserialize(message));
470+
}
471+
472+
// messages.help.bank.commands.
473+
public @NotNull Optional<@NotNull Component> messagesHelpBankCommands(final @NotNull HelpCommandsBank key, final @NotNull String command, final @NotNull String arguments) {
474+
final @Nullable String message = config.getString("messages.help.bank.commands." + key.path);
475+
if (message == null || message.isEmpty()) return Optional.empty();
476+
return Optional.of(MiniMessage.miniMessage().deserialize(
477+
message
478+
.replace("<command>", command),
479+
Placeholder.unparsed("arguments", arguments)
480+
));
481+
}
482+
483+
// messages.help.bank.footer
484+
public @NotNull Optional<@NotNull Component> messagesHelpBankFooter() {
485+
final @Nullable String message = config.getString("messages.help.bank.footer");
486+
if (message == null || message.isEmpty()) return Optional.empty();
487+
return Optional.of(MiniMessage.miniMessage().deserialize(message));
488+
}
489+
490+
// messages.help.invoice.header
491+
public @NotNull Optional<@NotNull Component> messagesHelpInvoiceHeader() {
492+
final @Nullable String message = config.getString("messages.help.invoice.header");
493+
if (message == null || message.isEmpty()) return Optional.empty();
494+
return Optional.of(MiniMessage.miniMessage().deserialize(message));
495+
}
496+
497+
// messages.help.invoice.commands.
498+
public @NotNull Optional<@NotNull Component> messagesHelpInvoiceCommands(final @NotNull HelpCommandsInvoice key, final @NotNull String command, final @NotNull String arguments) {
499+
final @Nullable String message = config.getString("messages.help.invoice.commands." + key.path);
500+
if (message == null || message.isEmpty()) return Optional.empty();
501+
return Optional.of(MiniMessage.miniMessage().deserialize(
502+
message
503+
.replace("<command>", command),
504+
Placeholder.unparsed("arguments", arguments)
505+
));
506+
}
507+
508+
// messages.help.invoice.footer
509+
public @NotNull Optional<@NotNull Component> messagesHelpInvoiceFooter() {
510+
final @Nullable String message = config.getString("messages.help.invoice.footer");
511+
if (message == null || message.isEmpty()) return Optional.empty();
512+
return Optional.of(MiniMessage.miniMessage().deserialize(message));
513+
}
514+
465515
// messages.errors.no-accounts
466516
public @NotNull Component messagesErrorsNoAccounts() {
467517
return MiniMessage.miniMessage().deserialize(Objects.requireNonNull(config.getString("messages.errors.no-accounts")));
@@ -1407,4 +1457,48 @@ public int invoiceNotifyInterval() {
14071457
.replace("<version>", version)
14081458
);
14091459
}
1460+
1461+
public enum HelpCommandsBank {
1462+
BALANCE("balance"),
1463+
BALANCE_OTHER("balance-other"),
1464+
TRANSFER("transfer"),
1465+
HISTORY("history"),
1466+
CREATE("create"),
1467+
CREATE_OTHER("create-other"),
1468+
FREEZE("freeze"),
1469+
UNFREEZE("unfreeze"),
1470+
DELETE("delete"),
1471+
INSTRUMENT("instrument"),
1472+
WHOIS("whois"),
1473+
BALTOP("baltop"),
1474+
POS("pos"),
1475+
SETBALANCE("setbalance"),
1476+
RENAME("rename"),
1477+
RELOAD("reload"),
1478+
INVOICES("invoices"),
1479+
;
1480+
1481+
public final @NotNull String path;
1482+
1483+
HelpCommandsBank(final @NotNull String path) {
1484+
this.path = path;
1485+
}
1486+
}
1487+
1488+
public enum HelpCommandsInvoice {
1489+
CREATE("create"),
1490+
CREATE_PLAYER("create-player"),
1491+
VIEW("view"),
1492+
PAY("pay"),
1493+
SEND("send"),
1494+
LIST("list"),
1495+
LIST_OTHER("list-other"),
1496+
;
1497+
1498+
public final @NotNull String path;
1499+
1500+
HelpCommandsInvoice(final @NotNull String path) {
1501+
this.path = path;
1502+
}
1503+
}
14101504
}

src/main/java/pro/cloudnode/smp/bankaccounts/commands/BankCommand.java

Lines changed: 23 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package pro.cloudnode.smp.bankaccounts.commands;
22

3-
import net.kyori.adventure.text.Component;
4-
import net.kyori.adventure.text.minimessage.MiniMessage;
53
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
64
import org.bukkit.Material;
75
import org.bukkit.OfflinePlayer;
@@ -12,6 +10,7 @@
1210
import org.jetbrains.annotations.Nullable;
1311
import pro.cloudnode.smp.bankaccounts.Account;
1412
import pro.cloudnode.smp.bankaccounts.BankAccounts;
13+
import pro.cloudnode.smp.bankaccounts.BankConfig;
1514
import pro.cloudnode.smp.bankaccounts.Command;
1615
import pro.cloudnode.smp.bankaccounts.Permissions;
1716
import pro.cloudnode.smp.bankaccounts.Transaction;
@@ -211,7 +210,7 @@ else if (args.length == 3 && sender.hasPermission(Permissions.INSTRUMENT_CREATE_
211210
if (args.length == 0) return overview(sender);
212211
final @NotNull String @NotNull [] argsSubset = Arrays.copyOfRange(args, 1, args.length);
213212
return switch (args[0]) {
214-
case "help" -> help(sender);
213+
case "help" -> help(sender, label);
215214
case "bal", "balance", "account", "accounts" ->
216215
balance(sender, Arrays.copyOfRange(args, 1, args.length), label);
217216
case "reload" -> reload(sender);
@@ -243,45 +242,44 @@ else if (args.length == 3 && sender.hasPermission(Permissions.INSTRUMENT_CREATE_
243242
/**
244243
* Plugin help
245244
*/
246-
public static @NotNull Message help(final @NotNull CommandSender sender) {
247-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<dark_gray>---</dark_gray>"));
248-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<green>Available commands:"));
249-
sender.sendMessage(Component.empty());
245+
public static @NotNull CommandResult help(final @NotNull CommandSender sender, final @NotNull String label) {
246+
BankAccounts.getInstance().config().messagesHelpBankHeader().ifPresent(sender::sendMessage);
250247
if (sender.hasPermission(Permissions.BALANCE_SELF))
251-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank balance ><green>/bank balance <gray>[account]</gray></green> <white>- Check your accounts</click>"));
248+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.BALANCE, label + " balance", "[account]").ifPresent(sender::sendMessage);
252249
if (sender.hasPermission(Permissions.BALANCE_OTHER))
253-
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>"));
250+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.BALANCE, label + " balance", "--player <player>").ifPresent(sender::sendMessage);
254251
if (sender.hasPermission(Permissions.TRANSFER_SELF) || sender.hasPermission(Permissions.TRANSFER_OTHER))
255-
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>"));
252+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.TRANSFER, label + " transfer", "<from> <to> <amount> [description]").ifPresent(sender::sendMessage);
256253
if (sender.hasPermission(Permissions.HISTORY))
257-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank transactions ><green>/bank transactions <gray><account> [page=1]</gray></green> <white>- List transactions</click>"));
254+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.HISTORY, label + " history", "<account> [page=1]").ifPresent(sender::sendMessage);
258255
if (sender.hasPermission(Permissions.ACCOUNT_CREATE))
259-
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>"));
256+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.CREATE, label + " create", "<PERSONAL|BUSINESS" + (sender.hasPermission(Permissions.ACCOUNT_CREATE_VAULT) ? "|VAULT" : "") + ">").ifPresent(sender::sendMessage);
260257
if (sender.hasPermission(Permissions.ACCOUNT_CREATE_OTHER))
261-
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>"));
258+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.CREATE, label + " create", "<PERSONAL|BUSINESS" + (sender.hasPermission(Permissions.ACCOUNT_CREATE_VAULT) ? "|VAULT" : "") + "> --player <player>").ifPresent(sender::sendMessage);
262259
if (sender.hasPermission(Permissions.FREEZE)) {
263-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank freeze ><green>/bank freeze <gray><account></gray></green> <white>- Freeze an account</click>"));
264-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank unfreeze ><green>/bank unfreeze <gray><account></gray></green> <white>- Unfreeze an account</click>"));
260+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.FREEZE, label + " freeze", "<account>").ifPresent(sender::sendMessage);
261+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.UNFREEZE, label + " unfreeze", "<account>").ifPresent(sender::sendMessage);
265262
}
266263
if (sender.hasPermission(Permissions.DELETE))
267-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank delete ><green>/bank delete <gray><account></gray></green> <white>- Delete an account</click>"));
264+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.DELETE, label + " delete", "<account>").ifPresent(sender::sendMessage);
268265
if (sender.hasPermission(Permissions.INSTRUMENT_CREATE))
269-
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>"));
266+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.INSTRUMENT, label + " instrument", "<account>" + (sender.hasPermission(Permissions.INSTRUMENT_CREATE_OTHER) ? " [player]" : "")).ifPresent(sender::sendMessage);
270267
if (sender.hasPermission(Permissions.WHOIS))
271-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank whois ><green>/bank whois <gray><account></gray></green> <white>- Get information about an account</click>"));
268+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.WHOIS, label + " whois", "<account>").ifPresent(sender::sendMessage);
272269
if (sender.hasPermission(Permissions.BALTOP))
273-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/baltop ><green>/baltop <gray>[personal|business|player] [page=1]</gray></green> <white>- Top balance leaderboard</click>"));
270+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.BALTOP, "baltop", "[personal|business|player] [page=1]").ifPresent(sender::sendMessage);
274271
if (sender.hasPermission(Permissions.POS_CREATE))
275-
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>"));
272+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.POS, "pos", "<account> <price> [description]").ifPresent(sender::sendMessage);
276273
if (sender.hasPermission(Permissions.SET_BALANCE))
277-
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>"));
274+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.SETBALANCE, label + " setbalance", "<account> <balance|Infinity>").ifPresent(sender::sendMessage);
278275
if (sender.hasPermission(Permissions.SET_NAME))
279-
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>"));
276+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.RENAME, label + " setname", "<account> [name]").ifPresent(sender::sendMessage);
280277
if (sender.hasPermission(Permissions.RELOAD))
281-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/bank reload><green>/bank reload</green> <white>- Reload plugin configuration</click>"));
278+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.RELOAD, label + " reload", "").ifPresent(sender::sendMessage);
282279
if (Stream.of(Permissions.INVOICE_CREATE, Permissions.INVOICE_VIEW, Permissions.INVOICE_SEND, Permissions.TRANSFER_SELF, Permissions.TRANSFER_OTHER).anyMatch(sender::hasPermission))
283-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/invoice help><green>/invoice help</green> <white>- See invoicing commands</click>"));
284-
return new Message(sender, "<dark_gray>---</dark_gray>");
280+
BankAccounts.getInstance().config().messagesHelpBankCommands(BankConfig.HelpCommandsBank.INVOICES, "invoice help", "").ifPresent(sender::sendMessage);
281+
BankAccounts.getInstance().config().messagesHelpBankFooter().ifPresent(sender::sendMessage);
282+
return CommandResult.DO_NOTHING;
285283
}
286284

287285
/**

src/main/java/pro/cloudnode/smp/bankaccounts/commands/InvoiceCommand.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.jetbrains.annotations.Nullable;
1010
import pro.cloudnode.smp.bankaccounts.Account;
1111
import pro.cloudnode.smp.bankaccounts.BankAccounts;
12+
import pro.cloudnode.smp.bankaccounts.BankConfig;
1213
import pro.cloudnode.smp.bankaccounts.Command;
1314
import pro.cloudnode.smp.bankaccounts.Invoice;
1415
import pro.cloudnode.smp.bankaccounts.Permissions;
@@ -125,25 +126,24 @@ else if (args.length == 3) {
125126
* <p>{@code /invoice help}</p>
126127
*/
127128
public static @NotNull CommandResult help(final @NotNull CommandSender sender, final @NotNull String label) {
128-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<dark_gray>---</dark_gray>"));
129-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<green>Available commands:"));
130-
sender.sendMessage(Component.empty());
129+
BankAccounts.getInstance().config().messagesHelpInvoiceHeader().ifPresent(sender::sendMessage);
131130
if (sender.hasPermission(Permissions.INVOICE_CREATE)) {
132-
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>"));
133-
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>"));
131+
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.CREATE, label + " create", "<account> <amount> [description]").ifPresent(sender::sendMessage);
132+
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.CREATE_PLAYER, label + " create", "<player> <amount> [description] --player <player>").ifPresent(sender::sendMessage);
134133
}
135134
if (sender.hasPermission(Permissions.INVOICE_VIEW))
136-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " view ><green>/" + label + " view <gray><invoice></gray></green> <white>- View invoice details</white></click>"));
135+
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.VIEW, label + " view", "<invoice>").ifPresent(sender::sendMessage);
137136
if (sender.hasPermission(Permissions.TRANSFER_SELF) || sender.hasPermission(Permissions.TRANSFER_OTHER))
138-
sender.sendMessage(MiniMessage.miniMessage().deserialize("<click:suggest_command:/" + label + " pay ><green>/" + label + " pay <gray><invoice> <account></gray></green> <white>- Pay an invoice</white></click>"));
137+
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.PAY, label + " pay", "<invoice> <account>").ifPresent(sender::sendMessage);
139138
if (sender.hasPermission(Permissions.INVOICE_SEND))
140-
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>"));
139+
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.SEND, label + " send", "<invoice> <player>").ifPresent(sender::sendMessage);
141140
if (sender.hasPermission(Permissions.INVOICE_VIEW)) {
142-
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>"));
141+
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.LIST, label + " list", "[all|sent|received] [page]").ifPresent(sender::sendMessage);
143142
if (sender.hasPermission(Permissions.INVOICE_VIEW_OTHER))
144-
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>"));
143+
BankAccounts.getInstance().config().messagesHelpInvoiceCommands(BankConfig.HelpCommandsInvoice.LIST_OTHER, label + " list", "[all|sent|received] [page] --player <player>").ifPresent(sender::sendMessage);
145144
}
146-
return new Message(sender, "<dark_gray>---</dark_gray>");
145+
BankAccounts.getInstance().config().messagesHelpInvoiceFooter().ifPresent(sender::sendMessage);
146+
return CommandResult.DO_NOTHING;
147147
}
148148

149149
/**

0 commit comments

Comments
 (0)