summaryrefslogtreewikicommitdiff
path: root/src/main/java/cat/freya/khs/command/Help.java
diff options
context:
space:
mode:
authorFreya Murphy <freya@freyacat.org>2025-09-06 23:11:25 -0400
committerFreya Murphy <freya@freyacat.org>2025-09-06 23:11:25 -0400
commit67aba9081bb73aeaa822b059e8ca6defc8352a2f (patch)
treecba7c5c8c9a0286b491b0b0784a27730ce58696e /src/main/java/cat/freya/khs/command/Help.java
parentadd wiki for cgit (diff)
downloadkenshinshideandseek-67aba9081bb73aeaa822b059e8ca6defc8352a2f.tar.gz
kenshinshideandseek-67aba9081bb73aeaa822b059e8ca6defc8352a2f.tar.bz2
kenshinshideandseek-67aba9081bb73aeaa822b059e8ca6defc8352a2f.zip
rename pacakges dev.tylerm -> cat.freya
Diffstat (limited to 'src/main/java/cat/freya/khs/command/Help.java')
-rw-r--r--src/main/java/cat/freya/khs/command/Help.java87
1 files changed, 87 insertions, 0 deletions
diff --git a/src/main/java/cat/freya/khs/command/Help.java b/src/main/java/cat/freya/khs/command/Help.java
new file mode 100644
index 0000000..6d7a1f3
--- /dev/null
+++ b/src/main/java/cat/freya/khs/command/Help.java
@@ -0,0 +1,87 @@
+package cat.freya.khs.command;
+
+import cat.freya.khs.Main;
+import cat.freya.khs.command.util.ICommand;
+import cat.freya.khs.util.Pair;
+import org.bukkit.ChatColor;
+import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.stream.Collectors;
+
+import static cat.freya.khs.configuration.Config.errorPrefix;
+import static cat.freya.khs.configuration.Localization.message;
+
+public class Help implements ICommand {
+
+ public void execute(Player sender, String[] args) {
+ final int pageSize = 4;
+ List<Pair<String, ICommand>> commands = Main.getInstance().getCommandGroup().getCommands();
+ int pages = (commands.size() - 1) / pageSize + 1;
+ int page;
+ try {
+ if(args.length < 1) {
+ page = 1;
+ } else {
+ page = Integer.parseInt(args[0]);
+ if (page < 1) {
+ throw new IllegalArgumentException("Inavlid Input");
+ }
+ }
+ } catch (Exception e) {
+ sender.sendMessage(errorPrefix + message("WORLDBORDER_INVALID_INPUT").addAmount(args[0]));
+ return;
+ }
+ String spacer = ChatColor.GRAY + "?" + ChatColor.WHITE;
+ StringBuilder message = new StringBuilder();
+ message.append(String.format("%s================ %sHelp: Page (%s/%s) %s================",
+ ChatColor.AQUA, ChatColor.WHITE, page, pages, ChatColor.AQUA));
+ int lines = 0;
+ for(Pair<String, ICommand> pair : commands.stream().skip((long) (page - 1) * pageSize).limit(pageSize).collect(Collectors.toList())) {
+ ICommand command = pair.getRight();
+ String label = pair.getLeft();
+ String start = label.substring(0, label.indexOf(" "));
+ String invoke = label.substring(label.indexOf(" ")+1);
+ message.append(String.format("\n%s %s/%s %s%s %s%s\n%s %s%s%s",
+ spacer,
+ ChatColor.AQUA,
+ start,
+ ChatColor.WHITE,
+ invoke,
+ ChatColor.BLUE,
+ command.getUsage(),
+ spacer,
+ ChatColor.GRAY,
+ ChatColor.ITALIC,
+ command.getDescription()
+ ));
+ lines += 2;
+ }
+ if(lines / 2 < pageSize) {
+ for(int i = 0; i < pageSize * 2 - lines; i++) {
+ message.append("\n").append(spacer);
+ }
+ }
+ message.append("\n").append(ChatColor.AQUA).append("===============================================");
+ sender.sendMessage(message.toString());
+ }
+
+ public String getLabel() {
+ return "help";
+ }
+
+ public String getUsage() {
+ return "<*page>";
+ }
+
+ public String getDescription() {
+ return "Get the commands for the plugin";
+ }
+
+ public List<String> autoComplete(@NotNull String parameter, @NotNull String typed) {
+ return Collections.singletonList(parameter);
+ }
+
+}