BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / commands / amenities / BlockCommand.java
BlockCommand.java
Raw
package com.lifeknight.relaymcbungeemain.commands.amenities;

import com.lifeknight.relaymcbungeemain.player.SmartPlayer;
import com.lifeknight.relayutils.basic.Text;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.connection.ProxiedPlayer;
import net.md_5.bungee.api.plugin.Command;
import net.md_5.bungee.api.plugin.TabExecutor;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

public class BlockCommand extends Command implements TabExecutor {
    public BlockCommand() {
        super("block", null);
    }

    private final static List<String> COMMANDS = Arrays.asList(
            "add",
            "remove",
            "list");

    @Override
    public void execute(CommandSender sender, String[] arguments) {
        if (!(sender instanceof ProxiedPlayer)) return;

        SmartPlayer blocker = SmartPlayer.getSmartPlayer((ProxiedPlayer) sender);

        if (arguments.length == 0) {
            blocker.sendCommandsMessage(COMMANDS);
        } else {
            switch (COMMANDS.indexOf(arguments[0].toLowerCase())) {
                case 0:
                    if (arguments.length > 1) {
                        blocker.blockPlayer(arguments[1]);
                    } else {
                        blocker.sendUsageMessage("/block add [player]");
                    }
                    break;
                case 1:
                    if (arguments.length > 1) {
                        blocker.unblockPlayer(arguments[1]);
                    } else {
                        blocker.sendUsageMessage("/block remove [player]");
                    }
                    break;
                case 2:
                    if (arguments.length > 1) {
                        try {
                            int page = Integer.parseInt(arguments[1]);
                            blocker.listBlockedPlayers(page);
                        } catch (Exception exception) {
                            blocker.sendUsageMessage("/block list [page]");
                        }
                    } else {
                        blocker.listBlockedPlayers(1);
                    }
                    break;
                default:
                    blocker.blockPlayer(arguments[0]);
                    break;
            }
        }
    }

    @Override
    public Iterable<String> onTabComplete(CommandSender sender, String[] args) {
        if (args.length >= 2) return new ArrayList<>();
        return Text.returnStartingEntries(COMMANDS, args.length > 0 ? args[0] : null, true);
    }
}