diff --git a/src/main/java/pw/kaboom/icontrolu/Commands.java b/src/main/java/pw/kaboom/icontrolu/Commands.java index 76e0a93..20583a3 100644 --- a/src/main/java/pw/kaboom/icontrolu/Commands.java +++ b/src/main/java/pw/kaboom/icontrolu/Commands.java @@ -6,6 +6,7 @@ import org.bukkit.ChatColor; import org.bukkit.command.Command; import org.bukkit.command.CommandExecutor; import org.bukkit.command.CommandSender; +import org.bukkit.command.ConsoleCommandSender; import org.bukkit.entity.Player; @@ -21,67 +22,73 @@ class CommandIcu implements CommandExecutor { } public boolean onCommand(CommandSender sender, Command command, String label, String[] args) { - Player controller = (Player)sender; - if (args.length == 0) { - controller.sendMessage(ChatColor.RED + "Usage: /" + label + " "); - } else if (args[0].equalsIgnoreCase("control")) { - if (args.length == 1) { - controller.sendMessage(ChatColor.RED + "Usage: /" + label + " control "); - } else { - Player target = Bukkit.getPlayer(args[1]); - if (target != null) { - if (target == controller) { - controller.sendMessage("You are already controlling yourself"); - } else if (main.targetFor.containsKey(controller.getUniqueId())) { - controller.sendMessage("You are already controlling \"" + target.getName() + "\""); - } else if (main.controllerFor.containsKey(target.getUniqueId())) { - controller.sendMessage("Player \"" + target.getName() + "\" is already being controlled"); - } else if (main.targetFor.containsKey(target.getUniqueId())) { - controller.sendMessage("Player \"" + target.getName() + "\" is already controlling another player"); - } else if (controller.canSee(target) == false) { - controller.sendMessage("You may not control this player"); - } else { - controller.teleport(target); + if (sender instanceof ConsoleCommandSender) { + sender.sendMessage("Command has to be run by a player"); + } else { + Player controller = (Player) sender; - controller.getInventory().setContents(target.getInventory().getContents()); - - main.targetFor.put(controller.getUniqueId(), target); - main.controllerFor.put(target.getUniqueId(), controller); - - controller.sendMessage("You are now controlling \"" + target.getName() + "\""); - } + if (args.length == 0) { + controller.sendMessage(ChatColor.RED + "Usage: /" + label + " "); + } else if (args[0].equalsIgnoreCase("control")) { + if (args.length == 1) { + controller.sendMessage(ChatColor.RED + "Usage: /" + label + " control "); } else { - controller.sendMessage("Player \"" + args[1] + "\" not found"); - } - } - } else if (args[0].equalsIgnoreCase("stop")) { - Player target = main.targetFor.get(controller.getUniqueId()); - if (target != null) { - main.targetFor.remove(controller.getUniqueId()); - main.controllerFor.remove(target.getUniqueId()); - - final Player controllerRun = controller; - - Bukkit.getScheduler().scheduleSyncDelayedTask(main, new Runnable() { - public void run() { - for (Player player: Bukkit.getOnlinePlayers()) { - player.showPlayer(main, controllerRun); + Player target = Bukkit.getPlayer(args[1]); + if (target != null) { + if (target == controller) { + controller.sendMessage("You are already controlling yourself"); + } else if (main.targetFor.containsKey(controller.getUniqueId())) { + controller.sendMessage("You are already controlling \"" + target.getName() + "\""); + } else if (main.controllerFor.containsKey(target.getUniqueId())) { + controller.sendMessage("Player \"" + target.getName() + "\" is already being controlled"); + } else if (main.targetFor.containsKey(target.getUniqueId())) { + controller.sendMessage("Player \"" + target.getName() + "\" is already controlling another player"); + } else if (controller.canSee(target) == false) { + controller.sendMessage("You may not control this player"); + } else { + controller.teleport(target); + + controller.getInventory().setContents(target.getInventory().getContents()); + + main.targetFor.put(controller.getUniqueId(), target); + main.controllerFor.put(target.getUniqueId(), controller); + + controller.sendMessage("You are now controlling \"" + target.getName() + "\""); } - - Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard(); - Team team = scoreboard.getTeam("iControlU_List"); - if (team != null && team.hasEntry(controllerRun.getName()) == true) { - team.removeEntry(controllerRun.getName()); - } - - controllerRun.removePotionEffect(PotionEffectType.INVISIBILITY); - controllerRun.sendMessage("You are now visible"); + } else { + controller.sendMessage("Player \"" + args[1] + "\" not found"); } - }, 200L); + } + } else if (args[0].equalsIgnoreCase("stop")) { + Player target = main.targetFor.get(controller.getUniqueId()); - controller.sendMessage("You are no longer controlling \"" + target.getName() + "\". You are invisible for 10 seconds."); - } else { - controller.sendMessage("You are not controlling anyone at the moment"); + if (target != null) { + main.targetFor.remove(controller.getUniqueId()); + main.controllerFor.remove(target.getUniqueId()); + + final Player controllerRun = controller; + + Bukkit.getScheduler().scheduleSyncDelayedTask(main, new Runnable() { + public void run() { + for (Player player: Bukkit.getOnlinePlayers()) { + player.showPlayer(main, controllerRun); + } + + Scoreboard scoreboard = Bukkit.getScoreboardManager().getMainScoreboard(); + Team team = scoreboard.getTeam("iControlU_List"); + if (team != null && team.hasEntry(controllerRun.getName()) == true) { + team.removeEntry(controllerRun.getName()); + } + + controllerRun.removePotionEffect(PotionEffectType.INVISIBILITY); + controllerRun.sendMessage("You are now visible"); + } + }, 200L); + + controller.sendMessage("You are no longer controlling \"" + target.getName() + "\". You are invisible for 10 seconds."); + } else { + controller.sendMessage("You are not controlling anyone at the moment"); + } } } return true;