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 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 onTabComplete(CommandSender sender, String[] arguments) { if (arguments.length == 1) { return Text.returnStartingEntries(HUB_NAMES, arguments[0], true); } return new ArrayList<>(); } }