package com.lifeknight.relaymcbungeemain.commands.game; import com.lifeknight.relaymcbungeemain.player.SmartPlayer; import com.lifeknight.relayutils.basic.Text; import com.lifeknight.relayutils.game.GameType; 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.List; public class PlayCommand extends Command implements TabExecutor { private final static List<String> GAMES; static { GAMES = new ArrayList<>(); for (GameType gameType : GameType.getGameTypes(true, false)) { GAMES.add(gameType.getCodeName()); } } public PlayCommand() { super("play", null); } @Override public void execute(CommandSender sender, String[] arguments) { if (!(sender instanceof ProxiedPlayer)) return; ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender; SmartPlayer smartPlayer = SmartPlayer.getSmartPlayer(proxiedPlayer); if (!smartPlayer.isOnHub()) { smartPlayer.sendErrorMessage("You can only use the play command in lobbies!"); return; } if (arguments.length > 0) { String game = arguments[0]; GameType gameType = GameType.getGameType(game.toLowerCase()); if (gameType != null && gameType.isEnabled()) { smartPlayer.queueGame(gameType); } else { tellPlayerGames(smartPlayer); } } else { tellPlayerGames(smartPlayer); } } private static void tellPlayerGames(SmartPlayer smartPlayer) { smartPlayer.sendInfoMessage("Available games: %s%s", ChatColor.GREEN, Text.separateWithCommas(GAMES)); } @Override public Iterable<String> onTabComplete(CommandSender sender, String[] args) { if (args.length > 1) { return new ArrayList<>(); } return Text.returnStartingEntries(GAMES, args.length > 0 ? args[0] : null, true); } }