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<>(); } }