package com.lifeknight.relaymchub.commands.menu; import com.lifeknight.relaymchub.miscellaneous.SmartGUIUtils; import com.lifeknight.relaymcutils.player.SmartPlayer; 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 QueueCommand implements CommandExecutor, TabExecutor { private final static List<String> GAMES; static { GAMES = new ArrayList<>(); for (GameType gameType : GameType.getGameTypes(true, false)) { GAMES.add(gameType.getCodeName()); } } @Override public boolean onCommand(CommandSender sender, Command command, String label, String[] arguments) { if (!(sender instanceof Player)) return true; Player player = (Player) sender; SmartPlayer smartPlayer = SmartPlayer.getSmartPlayer(player); if (arguments.length > 0) { String game = arguments[0]; GameType gameType = GameType.getGameType(game.toLowerCase()); if (gameType != null && gameType.isEnabled()) { if (gameType.getMainGame() == MainGame.PARTY) { SmartGUIUtils.selectGameMode(player, gameType); } else { SmartGUIUtils.queueGui(smartPlayer, gameType); } return true; } else { if ("party".equalsIgnoreCase(arguments[0])) { SmartGUIUtils.getPartyModesGui().open(player); } else { tellPlayerGames(smartPlayer); } } } else { tellPlayerGames(smartPlayer); } return true; } private static void tellPlayerGames(SmartPlayer smartPlayer) { smartPlayer.sendInfoMessage("Available games: %s%s", ChatColor.GREEN, Text.separateWithCommas(GAMES)); } @Override public List<String> onTabComplete(CommandSender commandSender, Command command, String s, String[] args) { if (args.length > 1) { return new ArrayList<>(); } return Text.returnStartingEntries(GAMES, args.length > 0 ? args[0] : null, true); } }