BungeeMain / src / main / java / com / lifeknight / relaymcbungeemain / commands / game / SpectateCommand.java
SpectateCommand.java
Raw
package com.lifeknight.relaymcbungeemain.commands.game;

import com.lifeknight.relaymcbungeemain.player.SmartPlayer;
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;

public class SpectateCommand extends Command {
    public SpectateCommand() {
        super("spectate", null);
    }

    @Override
    public void execute(CommandSender sender, String[] arguments) {
        if (sender instanceof ProxiedPlayer) {
            SmartPlayer smartPlayer = SmartPlayer.getSmartPlayer((ProxiedPlayer) sender);
            if (arguments.length == 0) {
                smartPlayer.sendErrorMessage("/spectate [player]");
            } else {
                if (!smartPlayer.isInGroupOrHigher(Group.TIERII)) {
                    smartPlayer.sendChampionPurchaseMessage();
                    return;
                }
                SmartPlayer spectator = SmartPlayer.getSmartPlayerOrNick(arguments[0]);
                if (spectator == null) {
                    smartPlayer.noPlayerFound(arguments[0]);
                } else if (!spectator.isOnline()) {
                    smartPlayer.sendErrorMessage("%s%s%s is not online!", ChatColor.YELLOW, spectator.getFormattedName(), ChatColor.RED);
                } else {
                    if (arguments.length > 1) {
                        if (smartPlayer.isStaff()) {
                            SmartPlayer toSpectate = SmartPlayer.getSmartPlayerOrNick(arguments[1]);
                            if (toSpectate == null) {
                                smartPlayer.noPlayerFound(arguments[1]);
                            } else if (!toSpectate.isOnline()) {
                                smartPlayer.sendErrorMessage("%s%s%s is not online!", ChatColor.YELLOW, toSpectate.getFormattedName(), ChatColor.RED);
                            } else {
                                spectateForPlayer(spectator, toSpectate);
                                smartPlayer.sendSuccessMessage("Made %s%s spectate %s%s.", spectator.getFormattedName(), ChatColor.GREEN, toSpectate.getFormattedName(), ChatColor.GREEN);
                            }
                        } else {
                            smartPlayer.sendInsufficientPermissionsMessage();
                        }
                    } else {
                        spectateForPlayer(smartPlayer, spectator);
                    }
                }
            }
        }
    }

    public static void spectateForPlayer(SmartPlayer spectator, SmartPlayer toSpectate) {
        spectator.spectatePlayer(toSpectate);
    }
}