BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / commands / chat / ChatCommand.java
ChatCommand.java
Raw
package com.lifeknight.relaymcbungeemain.commands.chat;

import com.lifeknight.relaymcbungeemain.player.ChatType;
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 ChatCommand extends Command implements TabExecutor {
    public ChatCommand() {
        super("chat", null, "c");
    }

    private static final List<String> COMMANDS = Arrays.asList(
            "all",
            "party",
            "staff");

    private static final List<String> COMMANDS_WITH_SHORTCUTS = Arrays.asList(
            "all",
            "a",
            "party",
            "p",
            "staff",
            "s");

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

        if (arguments.length != 0) {
            switch (COMMANDS_WITH_SHORTCUTS.indexOf(arguments[0].toLowerCase())) {
                case 0:
                case 1:
                    smartPlayer.setChatType(ChatType.ALL);
                    break;
                case 2:
                case 3:
                    smartPlayer.setChatType(ChatType.PARTY);
                    break;
                case 4:
                case 5:
                   if (!smartPlayer.setChatType(ChatType.STAFF)) {
                       tellPlayerSettingCommands(smartPlayer);
                   }
                   break;
                default:
                    tellPlayerSettingCommands(smartPlayer);
                    break;
            }
        }
    }

    private static void tellPlayerSettingCommands(SmartPlayer smartPlayer) {
        smartPlayer.sendInfoMessage("Chat types: %s%s", ChatColor.GREEN, Text.separateWithCommas(COMMANDS.subList(0, smartPlayer.isStaff() ? 3 : 2)));
    }

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