Hub / src / main / java / com / lifeknight / relaymchub / commands / menu / QueueCommand.java
QueueCommand.java
Raw
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);
    }
}