package com.lifeknight.relaymchub.commands.queue; import com.lifeknight.relaymchub.player.HubPlayer; import com.lifeknight.relayutils.basic.Text; import com.lifeknight.relayutils.game.GameType; import com.lifeknight.relayutils.game.MainGame; import net.md_5.bungee.api.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; import org.bukkit.command.TabExecutor; import org.bukkit.entity.Player; import java.util.ArrayList; import java.util.List; public class DuelCommand implements CommandExecutor, TabExecutor { private final static List<String> GAMES; static { GAMES = new ArrayList<>(); for (GameType gameType : MainGame.DUELS.getGameTypes()) { if (!gameType.isExplicitParty()) { GAMES.add(gameType.getSuffix().toLowerCase()); } } } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { if (!(sender instanceof Player) || !command.getName().equalsIgnoreCase("duel")) { return true; } HubPlayer hubPlayer = HubPlayer.getHubPlayer((Player) sender); if (args.length == 0) { hubPlayer.showDuelPlayerSearch(); } else if (args.length == 1) { hubPlayer.duelPlayer(args[0]); } else { if (args[0].equalsIgnoreCase("custom")) { hubPlayer.showCustomDuelsQueueGui(!args[1].equalsIgnoreCase("self")); return true; } GameType gameType = args.length > 2 ? GameType.DUELS_CUSTOM : GameType.getGameType("duels" + args[1]); if (gameType == null || gameType.getMainGame() != MainGame.DUELS || gameType.isExplicitParty()) { tellPlayerCommands(hubPlayer); } else { hubPlayer.duelPlayer(args[0], gameType); } } return true; } private static void tellPlayerCommands(HubPlayer hubPlayer) { hubPlayer.sendInfoMessage("Available duels: %s%s", ChatColor.GREEN, Text.separateWithCommas(GAMES)); } @Override public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] args) { if (args.length != 2) { return new ArrayList<>(); } return Text.returnStartingEntries(GAMES, args[1], true); } }