diff options
author | Freya Murphy <freya@freyacat.org> | 2025-09-06 23:11:25 -0400 |
---|---|---|
committer | Freya Murphy <freya@freyacat.org> | 2025-09-06 23:11:25 -0400 |
commit | 67aba9081bb73aeaa822b059e8ca6defc8352a2f (patch) | |
tree | cba7c5c8c9a0286b491b0b0784a27730ce58696e /src/main/java/cat/freya/khs/command/Help.java | |
parent | add wiki for cgit (diff) | |
download | kenshinshideandseek-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.java | 87 |
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); + } + +} |