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

import com.lifeknight.relaymcbungeemain.commands.CommandUtilities;
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;
import net.md_5.bungee.api.plugin.TabExecutor;

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

import static net.md_5.bungee.api.ChatColor.GREEN;
import static net.md_5.bungee.api.ChatColor.YELLOW;

public class ManhuntQuitsCommand extends Command implements TabExecutor {
    private static final List<String> COMMANDS = Miscellaneous.getList("set", "view");

    public ManhuntQuitsCommand() {
        super("manhuntquits");
    }

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

        if (arguments.length > 0) {
            switch (COMMANDS.indexOf(arguments[0].toLowerCase())) {
                case 0:
                    if (arguments.length > 1) {
                        String name = arguments[1];
                        SmartPlayer player = SmartPlayer.getSmartPlayerOrNick(name);
                        if (player == null) {
                            CommandUtilities.noPlayerFound(commandSender, name);
                        } else {
                            if (arguments.length > 2) {
                                try {
                                    int quits = Integer.parseInt(arguments[2]);
                                    int original = player.getManhuntQuits();
                                    player.setManhuntQuits(quits);
                                    if (player.getManhuntQuits() == 0 && original != 0) {
                                        player.unBanFromManhunt();
                                    } else if (player.getManhuntQuits() >= 3 && original < 3) {
                                        player.setManhuntQuits(player.getManhuntQuits() - 1);
                                        player.manhuntQuit();
                                    }
                                    CommandUtilities.sendSuccessMessage(commandSender, "Updated quits for %s%s.", player.getFormattedName(), GREEN);
                                } catch (Exception exception) {
                                    CommandUtilities.sendUsageMessage(commandSender, "/manhuntquits set [player] [quits]");
                                }
                            } else {
                                CommandUtilities.sendUsageMessage(commandSender, "/manhuntquits set [player] [quits]");
                            }
                        }
                    }
                    break;
                case 1:
                    if (arguments.length > 1) {
                        String name = arguments[1];
                        SmartPlayer player = SmartPlayer.getSmartPlayerOrNick(name);
                        if (player == null) {
                            CommandUtilities.noPlayerFound(commandSender, name);
                        } else {
                            CommandUtilities.sendInfoMessage(commandSender, "%s%s quits: %d", player.getPossessiveFormattedName(), YELLOW, player.getManhuntQuits());
                        }
                    }
                    break;
            }
        } else {
            CommandUtilities.sendInfoMessage(commandSender, "");
        }
    }

    @Override
    public Iterable<String> onTabComplete(CommandSender commandSender, String[] arguments) {
        if (CommandUtilities.isStaff(commandSender)) {
            if (arguments.length == 1) {
                return Text.returnStartingEntries(COMMANDS, arguments[0], true);
            }
        }

        return new ArrayList<>();
    }
}