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