package tv.mineinthebox.essentials.commands; import org.bukkit.Bukkit; import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import tv.mineinthebox.essentials.xEssentials; import tv.mineinthebox.essentials.enums.PermissionKey; import tv.mineinthebox.essentials.interfaces.CommandTemplate; import tv.mineinthebox.essentials.interfaces.XPlayer; public class CmdSpectate extends CommandTemplate { private final xEssentials pl; public CmdSpectate(xEssentials pl, Command cmd, CommandSender sender) { super(pl, cmd, sender); this.pl = pl; } @SuppressWarnings("deprecation") public boolean execute(CommandSender sender, Command cmd, String[] args) { if(cmd.getName().equalsIgnoreCase("spectate")) { if(sender.hasPermission(PermissionKey.CMD_SPECTATE.getPermission())) { if(sender instanceof Player) { if(args.length == 0) { showHelp(); } else if(args.length == 1) { if(args[0].equalsIgnoreCase("stop")) { XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName()); if(xp.isSpectate()) { xp.stopSpectate(); sendMessage("successfully stopped spectate."); } else { sendMessage("you never spectated someone!"); } } else { Player target = Bukkit.getPlayer(args[0]); if(target instanceof Player) { if(sender.getName().equalsIgnoreCase(target.getName())) { sendMessage("you cannot spectate yourself!"); return false; } XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName()); xp.spectate(target); sendMessage("successfully spectating player " + target.getName()); } } } } else { getWarning(WarningType.PLAYER_ONLY); } } else { getWarning(WarningType.NO_PERMISSION); } } return false; } @Override public void showHelp() { sender.sendMessage(ChatColor.GOLD + ".oO___[spectate]___Oo."); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/spectate " + ChatColor.WHITE + ": shows help"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/spectate <player> " + ChatColor.WHITE + ": spectates someone"); sender.sendMessage(ChatColor.RED + "Admin: " + ChatColor.GRAY + "/spectate stop " + ChatColor.WHITE + ": stops the current spectate session"); } }