BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / commands / amenities / HubCommand.java
HubCommand.java
Raw
package com.lifeknight.relaymcbungeemain.commands.amenities;

import com.lifeknight.relaymcbungeemain.Main;
import com.lifeknight.relaymcbungeemain.player.SmartPlayer;
import com.lifeknight.relaymcbungeemain.utilities.PlayerUtilities;
import com.lifeknight.relayutils.basic.Miscellaneous;
import com.lifeknight.relayutils.basic.Text;
import com.lifeknight.relayutils.game.MainGame;
import com.lifeknight.relayutils.player.Group;
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 HubCommand extends Command implements TabExecutor {
    public HubCommand() {
        super("hub", null, "lobby", "l");
    }

    private static final List<String> HUB_NAMES = Miscellaneous.with(Text.toStringList(MainGame.getEnabledGames()), "main");

    @Override
    public void execute(CommandSender sender, String[] arguments) {
        if (!(sender instanceof ProxiedPlayer)) return;
        ProxiedPlayer proxiedPlayer = (ProxiedPlayer) sender;
        SmartPlayer smartPlayer = SmartPlayer.getSmartPlayer(proxiedPlayer);
        if (!smartPlayer.isInGroupOrHigher(Group.CHAMPION) && Main.networkIsFull() && smartPlayer.getServer().isLimbo()) {
            smartPlayer.sendLimboQueuePosition(true);
            return;
        }
        if (arguments.length == 0) {
            smartPlayer.sendToHub();
        } else {
            try {

            MainGame mainGame = PlayerUtilities.getHubServer(arguments[0]);
            smartPlayer.sendToServer(mainGame);
            } catch (Exception e) {
                smartPlayer.sendErrorMessage("Unknown server \"%s%s%s.\"", ChatColor.YELLOW, arguments[0], ChatColor.RED);
            }
        }
    }

    private static void tellPlayerServers(SmartPlayer smartPlayer) {
        smartPlayer.sendInfoMessage("Hub names: %s%s", ChatColor.GREEN, Text.separateWithCommas(HUB_NAMES));
    }

    @Override
    public Iterable<String> onTabComplete(CommandSender sender, String[] arguments) {
        if (arguments.length == 1) {
            return Text.returnStartingEntries(HUB_NAMES, arguments[0], true);
        }
        return new ArrayList<>();
    }
}