BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / commands / amenities / FriendCommand.java
FriendCommand.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 FriendCommand extends Command implements TabExecutor {
    public FriendCommand() {
        super("friend", null, "f");
    }

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

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

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

        if (arguments.length == 0) {
            friender.sendCommandsMessage(COMMANDS);
        } else {
            switch (COMMANDS.indexOf(arguments[0].toLowerCase())) {
                case 0:
                    if (arguments.length > 1) {
                        friender.addFriend(arguments[1]);
                    } else {
                        friender.sendUsageMessage("/friend add [player]");
                    }
                    break;
                case 1:
                    if (arguments.length > 1) {
                        friender.unfriendPlayer(arguments[1]);
                    } else {
                        friender.sendUsageMessage("/friend remove [player]");
                    }
                    break;
                case 2:
                    if (arguments.length > 1) {
                        try {
                            int page = Integer.parseInt(arguments[1]);
                            friender.listFriends(page);
                        } catch (Exception exception) {
                            friender.sendUsageMessage("/friend list [page]");
                        }
                    } else {
                        friender.listFriends(1);
                    }
                    break;
                case 3:
                    if (arguments.length > 1) {
                        friender.tryAcceptFriendRequest(arguments[1]);
                    } else {
                        friender.sendUsageMessage("/friend accept [player]");
                    }
                    break;
                default:
                    friender.addFriend(arguments[0]);
                    break;
            }
        }
    }

    @Override
    public Iterable<String> onTabComplete(CommandSender sender, String[] arguments) {
        if (!(sender instanceof ProxiedPlayer)) return new ArrayList<>();
        SmartPlayer smartPlayer = SmartPlayer.getSmartPlayer((ProxiedPlayer) sender);
        switch (arguments.length) {
            case 1:
                return Text.returnStartingEntries(COMMANDS, arguments[0], true);
            case 2:
                if (COMMANDS.indexOf(arguments[0].toLowerCase()) == 0) {
                    return Text.returnStartingEntries(smartPlayer.getNamesOfPlayersOnServer(), arguments[1], true);
                }
                break;
        }
        return new ArrayList<>();
    }
}