BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / commands / staff / MessagesCommand.java
MessagesCommand.java
Raw
package com.lifeknight.relaymcbungeemain.commands.staff;

import com.lifeknight.relaymcbungeemain.commands.CommandUtilities;
import com.lifeknight.relaymcbungeemain.player.ChatType;
import com.lifeknight.relaymcbungeemain.player.SmartPlayer;
import com.lifeknight.relayutils.basic.Miscellaneous;
import com.lifeknight.relayutils.basic.Text;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;

public class MessagesCommand extends Command {
    public MessagesCommand() {
        super("messages");
    }

    @Override
    public void execute(CommandSender commandSender, String[] arguments) {
        if (!CommandUtilities.isAdministrator(commandSender)) {
            CommandUtilities.sendInsufficientPermissionsMessage(commandSender);
            return;
        }

        if (arguments.length > 0) {
            String name = arguments[0];
            SmartPlayer smartPlayer = SmartPlayer.getSmartPlayer(name);
            if (smartPlayer == null) {
                CommandUtilities.noPlayerFound(commandSender, name);
                return;
            }

            int page = 1;
            ChatType chatType = null;

            if (arguments.length > 1) {
                String pageOrType = arguments[1];
                chatType = Miscellaneous.match(ChatType.values(), chatType1 -> Text.toComparable(chatType1).equalsIgnoreCase(pageOrType));
                if (chatType == null) {
                    try {
                        page = Integer.parseInt(pageOrType);
                    } catch (Exception exception) {
                        CommandUtilities.sendUsageMessage(commandSender, "/messages [player] (type/page) (page)");
                        return;
                    }
                }
                if (arguments.length > 2) {
                    try {
                        page = Integer.parseInt(arguments[2]);
                    } catch (Exception exception) {
                        CommandUtilities.sendUsageMessage(commandSender, "/messages [player] (type/page) (page)");
                        return;
                    }
                }
            }

            if (smartPlayer.getMaxMessagePage(chatType) < 1) {
                CommandUtilities.sendInfoMessage(commandSender, "No messages to display.");
                return;
            }

            if (page < 1) {
                CommandUtilities.sendErrorMessage(commandSender, "Page out of bounds!");
                return;
            }

            if (page > smartPlayer.getMaxMessagePage(chatType)) {
                CommandUtilities.sendErrorMessage(commandSender, "Page out of bounds! (Max %d)", smartPlayer.getMaxMessagePage(chatType));
            }

            commandSender.sendMessage(smartPlayer.getMessagesComponent(chatType, page));
        } else {
            CommandUtilities.sendUsageMessage(commandSender, "/messages [player] (type) (page)");
        }
    }
}