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

import com.lifeknight.relaymcbungeemain.Main;
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.ChatColor;
import net.md_5.bungee.api.CommandSender;
import net.md_5.bungee.api.plugin.Command;

import java.util.List;

public class MaintenanceCommand extends Command {
    public MaintenanceCommand() {
        super("maintenance", null);
    }

    public static final List<String> COMMANDS = Miscellaneous.getList(
            "on",
            "off",
            "whitelist"
    );

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

        if (arguments.length > 0) {
            switch (COMMANDS.indexOf(arguments[0].toLowerCase())) {
                case 0:
                    Main.setMaintenanceMode(true);
                    CommandUtilities.sendInfoMessage(sender, "MAINTENANCE: %s", ChatColor.GREEN + "ON");
                    break;
                case 1:
                    Main.setMaintenanceMode(false);
                    CommandUtilities.sendInfoMessage(sender, "MAINTENANCE: %s", ChatColor.RED + "OFF");
                    break;
                case 2:
                    if (arguments.length > 1) {
                        String name = arguments[1];
                        SmartPlayer toWhitelist = SmartPlayer.getOrCreate(name);

                        if (toWhitelist == null) {
                            CommandUtilities.noPlayerFound(sender, name);
                        } else {
                            if (Main.whitelistedPlayers.contains(toWhitelist.getUUID())) {
                                Main.whitelistedPlayers.remove(toWhitelist.getUUID());
                                CommandUtilities.sendSuccessMessage(sender, "Removed %s%s%s from the whitelist.", ChatColor.YELLOW, toWhitelist.getFormattedName(), ChatColor.GREEN);
                            } else {
                                Main.whitelistedPlayers.add(toWhitelist.getUUID());
                                CommandUtilities.sendSuccessMessage(sender, "Added %s%s%s to the whitelist.", ChatColor.YELLOW, toWhitelist.getFormattedName(), ChatColor.GREEN);
                            }
                            Main.save();
                        }
                    } else {
                        CommandUtilities.sendInfoMessage(sender, "Whitelisted players: " + Text.separateWithCommas(Miscellaneous.processList(Main.whitelistedPlayers, uuid -> SmartPlayer.getOrCreate(uuid).getName())));
                    }
                    break;
                default:
                    CommandUtilities.sendCommandsMessage(sender, COMMANDS);
                    break;
            }
        } else {
            CommandUtilities.sendUsageMessage(sender, "/maintenance on/off/whitelist");
            CommandUtilities.sendInfoMessage(sender, "Maintenance right now: %s", Main.maintenanceMode ? ChatColor.GREEN + "ON" : ChatColor.RED + "OFF");
        }
    }
}