TotalFreedomMod/src/me/StevenLawson/TotalFreedomMod/Commands/Command_potion.java

182 lines
6.6 KiB
Java
Raw Normal View History

package me.StevenLawson.TotalFreedomMod.Commands;
import java.util.ArrayList;
import java.util.List;
import me.StevenLawson.TotalFreedomMod.TFM_AdminList;
2013-01-16 14:48:56 +00:00
import me.StevenLawson.TotalFreedomMod.TFM_Util;
2013-01-07 15:33:54 +00:00
import me.StevenLawson.TotalFreedomMod.TotalFreedomMod;
2013-12-01 11:13:39 +00:00
import net.minecraft.util.org.apache.commons.lang3.StringUtils;
import org.bukkit.ChatColor;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
@CommandPermissions(level = AdminLevel.OP, source = SourceType.BOTH)
@CommandParameters(
description = "Manipulate potion effects. Duration is measured in server ticks (~20 ticks per second).",
2013-08-14 14:55:37 +00:00
usage = "/<command> <list | clear [target name] | add <type> <duration> <amplifier> [target name]>")
public class Command_potion extends TFM_Command
{
@Override
public boolean run(CommandSender sender, Player sender_p, Command cmd, String commandLabel, String[] args, boolean senderIsConsole)
{
if (args.length == 1 || args.length == 2)
{
if (args[0].equalsIgnoreCase("list"))
{
List<String> potionEffectTypeNames = new ArrayList<String>();
for (PotionEffectType potion_effect_type : PotionEffectType.values())
{
if (potion_effect_type != null)
{
potionEffectTypeNames.add(potion_effect_type.getName());
}
}
playerMsg("Potion effect types: " + StringUtils.join(potionEffectTypeNames, ", "), ChatColor.AQUA);
}
2013-01-07 15:33:54 +00:00
else if (args[0].equalsIgnoreCase("clearall"))
{
if (!(TFM_AdminList.isSuperAdmin(sender) || senderIsConsole))
2013-01-07 15:33:54 +00:00
{
playerMsg(TotalFreedomMod.MSG_NO_PERMS);
return true;
}
2013-01-16 14:48:56 +00:00
TFM_Util.adminAction(sender.getName(), "Cleared all potion effects from all players", true);
2013-01-07 15:33:54 +00:00
for (Player target : server.getOnlinePlayers())
{
for (PotionEffect potion_effect : target.getActivePotionEffects())
{
target.removePotionEffect(potion_effect.getType());
}
}
}
else if (args[0].equalsIgnoreCase("clear"))
{
Player target = sender_p;
if (args.length == 2)
{
try
{
target = getPlayer(args[1]);
}
catch (PlayerNotFoundException ex)
{
playerMsg(ex.getMessage(), ChatColor.RED);
return true;
}
}
if (!target.equals(sender_p))
{
if (!TFM_AdminList.isSuperAdmin(sender))
{
playerMsg("Only superadmins can clear potion effects from other players.");
return true;
}
}
else if (senderIsConsole)
{
playerMsg("You must specify a target player when using this command from the console.");
return true;
}
2012-09-20 03:17:10 +00:00
for (PotionEffect potion_effect : target.getActivePotionEffects())
{
target.removePotionEffect(potion_effect.getType());
}
playerMsg("Cleared all active potion effects " + (!target.equals(sender_p) ? "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 = sender_p;
if (args.length == 5)
{
try
{
target = getPlayer(args[4]);
}
catch (PlayerNotFoundException ex)
{
playerMsg(ex.getMessage(), ChatColor.RED);
return true;
}
}
if (!target.equals(sender_p))
{
if (!TFM_AdminList.isSuperAdmin(sender))
{
sender.sendMessage("Only superadmins can apply potion effects to other players.");
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;
}
int duration;
try
{
duration = Integer.parseInt(args[2]);
}
catch (NumberFormatException ex)
{
playerMsg("Invalid potion duration.", ChatColor.RED);
return true;
}
int amplifier;
try
{
amplifier = Integer.parseInt(args[3]);
}
catch (NumberFormatException ex)
{
playerMsg("Invalid potion amplifier.", ChatColor.RED);
return true;
}
PotionEffect new_effect = potion_effect_type.createEffect(duration, amplifier);
target.addPotionEffect(new_effect, true);
playerMsg(
"Added potion effect: " + new_effect.getType().getName()
+ ", Duration: " + new_effect.getDuration()
+ ", Amplifier: " + new_effect.getAmplifier()
+ (!target.equals(sender_p) ? " to player " + target.getName() + "." : " to yourself."), ChatColor.AQUA);
return true;
}
else
{
return false;
}
}
else
{
return false;
}
return true;
}
}