diff --git a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java index 719b0795..7b7bbc1f 100644 --- a/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java +++ b/src/main/java/me/totalfreedom/totalfreedommod/command/Command_potion.java @@ -17,7 +17,7 @@ import org.bukkit.potion.PotionEffectType; @CommandPermissions(level = Rank.OP, source = SourceType.BOTH) @CommandParameters( description = "Manipulate your potion effects. Duration is measured in server ticks (~20 ticks per second).", - usage = "/ [target name]>", + usage = "/ [target name]>", aliases="effect") public class Command_potion extends FreedomCommand { @@ -25,153 +25,149 @@ public class Command_potion extends FreedomCommand @Override public boolean run(CommandSender sender, Player playerSender, Command cmd, String commandLabel, String[] args, boolean senderIsConsole) { - if (args.length == 1 || args.length == 2) + switch (args.length) { - if (args[0].equalsIgnoreCase("list")) - { - List potionEffectTypeNames = new ArrayList<>(); - for (PotionEffectType potion_effect_type : PotionEffectType.values()) + case 1: + if (args[0].equalsIgnoreCase("list")) { - if (potion_effect_type != null) + List potionEffectTypeNames = new ArrayList<>(); + for (PotionEffectType potion_effect_type : PotionEffectType.values()) { - potionEffectTypeNames.add(potion_effect_type.getName()); + if (potion_effect_type != null) + { + potionEffectTypeNames.add(potion_effect_type.getName()); + } } + msg("Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "), ChatColor.AQUA); } - msg("Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "), ChatColor.AQUA); - } - else if (args[0].equalsIgnoreCase("clearall")) - { - if (!(plugin.sl.isStaff(sender) || senderIsConsole)) + else if (args[0].equalsIgnoreCase("clearall")) { - noPerms(); - return true; - } - FUtil.staffAction(sender.getName(), "Cleared all potion effects from all players", true); - for (Player target : server.getOnlinePlayers()) - { - for (PotionEffect potion_effect : target.getActivePotionEffects()) + if (!(plugin.sl.isStaff(sender) || senderIsConsole)) { - target.removePotionEffect(potion_effect.getType()); + noPerms(); + return true; } - } - } - else if (args[0].equalsIgnoreCase("clear")) - { - Player target = playerSender; - if (args.length == 2) + FUtil.staffAction(sender.getName(), "Cleared all potion effects from all players", true); + for (Player target : server.getOnlinePlayers()) + { + for (PotionEffect potion_effect : target.getActivePotionEffects()) + { + target.removePotionEffect(potion_effect.getType()); + } + } + } + + case 2: + if (args[0].equalsIgnoreCase("clear")) { - target = getPlayer(args[1], true); + Player target = playerSender; + if(args.length == 2) + { + if (!plugin.sl.isStaff(sender) && !target.equals(getPlayer(sender.getName()))) + { + msg(ChatColor.RED + "Only staff can clear potion effects from other players."); + return true; + } + target = getPlayer(args[1], true); + } + else + { + if (senderIsConsole) + { + msg("You must specify a target player when using this command from the console."); + return true; + } + } if (target == null) { msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); return true; } - } - if (senderIsConsole) - { - msg("You must specify a target player when using this command from the console."); - return true; - } - - if (!plugin.sl.isStaff(sender)) - { - msg(ChatColor.RED + "Only staff can clear potion effects from other players."); - return true; - } - - for (PotionEffect potion_effect : target.getActivePotionEffects()) - { - target.removePotionEffect(potion_effect.getType()); - } - - msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA); - } - else - { - return false; - } - } - else if (args.length == 4 || args.length == 5) - { - if (args[0].equalsIgnoreCase("add")) - { - Player target = playerSender; - - if (args.length == 5) - { - target = getPlayer(args[4]); - - if (target == null || plugin.sl.isVanished(target.getName()) && !plugin.sl.isStaff(sender)) + for (PotionEffect potion_effect : target.getActivePotionEffects()) { - msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + target.removePotionEffect(potion_effect.getType()); + } + + msg("Cleared all active potion effects " + (!target.equals(playerSender) ? "from player " + target.getName() + "." : "from yourself."), ChatColor.AQUA); + } + break; + + case 4: + case 5: + if (args[0].equalsIgnoreCase("add")) + { + Player target = playerSender; + + if (args.length == 5) + { + if (!plugin.sl.isStaff(sender) && !getPlayer(args[4]).equals(getPlayer(sender.getName()))) + { + sender.sendMessage(ChatColor.RED + "Only staff can apply potion effects to other players."); + return true; + } + + target = getPlayer(args[4]); + + if (target == null || plugin.sl.isVanished(target.getName()) && !plugin.sl.isStaff(sender)) + { + msg(FreedomCommand.PLAYER_NOT_FOUND, ChatColor.RED); + return true; + } + } + else + { + if (senderIsConsole) + { + sender.sendMessage("You must specify a target player when using this command from the console."); + return true; + } + } + + PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]); + if (potion_effect_type == null) + { + sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type."); return true; } - } - if (senderIsConsole) - { - sender.sendMessage("You must specify a target player when using this command from the console."); - return true; - } + int duration; + try + { + duration = Integer.parseInt(args[2]); + duration = Math.min(duration, 100000); + } + catch (NumberFormatException ex) + { + msg("Invalid potion duration.", ChatColor.RED); + return true; + } - if (!plugin.sl.isStaff(sender)) - { - sender.sendMessage(ChatColor.RED + "Only staff can apply potion effects to other players."); - return true; - } + int amplifier; + try + { + amplifier = Integer.parseInt(args[3]); + amplifier = Math.min(amplifier, 100000); + } + catch (NumberFormatException ex) + { + msg("Invalid potion amplifier.", ChatColor.RED); + return true; + } - PotionEffectType potion_effect_type = PotionEffectType.getByName(args[1]); - if (potion_effect_type == null) - { - sender.sendMessage(ChatColor.AQUA + "Invalid potion effect type."); - return true; + PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier); + target.addPotionEffect(new_effect, true); + msg( + "Added potion effect: " + new_effect.getType().getName() + + ", Duration: " + new_effect.getDuration() + + ", Amplifier: " + new_effect.getAmplifier() + + (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA); } - - int duration; - try - { - duration = Integer.parseInt(args[2]); - duration = Math.min(duration, 100000); - } - catch (NumberFormatException ex) - { - msg("Invalid potion duration.", ChatColor.RED); - return true; - } - - int amplifier; - try - { - amplifier = Integer.parseInt(args[3]); - amplifier = Math.min(amplifier, 100000); - } - catch (NumberFormatException ex) - { - msg("Invalid potion amplifier.", ChatColor.RED); - return true; - } - - PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier); - target.addPotionEffect(new_effect, true); - msg( - "Added potion effect: " + new_effect.getType().getName() - + ", Duration: " + new_effect.getDuration() - + ", Amplifier: " + new_effect.getAmplifier() - + (!target.equals(playerSender) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA); - - return true; - } - else - { + break; + default: return false; - } - } - else - { - return false; } return true; } @@ -179,50 +175,54 @@ public class Command_potion extends FreedomCommand @Override public List getTabCompleteOptions(CommandSender sender, Command command, String alias, String[] args) { - if (args.length == 1) + switch (args.length) { - List arguments = new ArrayList<>(); - arguments.addAll(Arrays.asList("list", "clear", "add")); - if (plugin.sl.isStaff(sender)) - { - arguments.add("clearall"); - } - return arguments; - } - else if (args.length == 2) - { - if (args[0].equals("clear")) - { + case 1: + List arguments = new ArrayList<>(); + arguments.addAll(Arrays.asList("list", "clear", "add")); if (plugin.sl.isStaff(sender)) { - return FUtil.getPlayerList(); + arguments.add("clearall"); } - } - else if (args[0].equals("add")) - { - return getAllPotionTypes(); - } - } - else if (args.length == 3) - { - if (args[0].equals("add")) - { - return Arrays.asList(""); - } - } - else if (args.length == 4) - { - if (args[0].equals("add")) - { - return Arrays.asList(""); - } - } - else if (args.length == 5 && plugin.sl.isStaff(sender)) - { - if (args[0].equals("add")) - { - return FUtil.getPlayerList(); - } + return arguments; + + case 2: + if (args[0].equals("clear")) + { + if (plugin.sl.isStaff(sender)) + { + return FUtil.getPlayerList(); + } + } + else if (args[0].equals("add")) + { + return getAllPotionTypes(); + } + break; + + case 3: + if (args[0].equals("add")) + { + return Arrays.asList(""); + } + break; + + case 4: + if (args[0].equals("add")) + { + return Arrays.asList(""); + } + break; + + case 5: + if (plugin.sl.isStaff(sender)) + { + if (args[0].equals("add")) + { + return FUtil.getPlayerList(); + } + } + break; } return Collections.emptyList();