package tv.mineinthebox.essentials.commands;
import java.util.ArrayList;
import java.util.List;
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.helpers.EffectType;
import tv.mineinthebox.essentials.helpers.EnumHelper;
import tv.mineinthebox.essentials.interfaces.CommandTemplate;
import tv.mineinthebox.essentials.interfaces.XPlayer;
public class CmdEffect extends CommandTemplate {
private final List<String> enumdata = new ArrayList<String>();
public CmdEffect(xEssentials pl, Command cmd, CommandSender sender) {
super(pl, cmd, sender);
enumdata.add("help");
enumdata.add("list");
enumdata.add("stop");
for(EffectType type : EffectType.values()) {
enumdata.add(type.name());
}
}
public List<String> onTabComplete(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("effect")) {
if(args.length == 1) {
if(sender.hasPermission(PermissionKey.CMD_EFFECT.getPermission())) {
List<String> newdata = new ArrayList<String>();
for(String data : enumdata) {
if(data.startsWith(args[0].toUpperCase())) {
newdata.add(data);
}
}
return newdata;
}
}
}
return null;
}
public boolean execute(CommandSender sender, Command cmd, String[] args) {
if(cmd.getName().equalsIgnoreCase("effect")) {
if(sender.hasPermission(PermissionKey.CMD_EFFECT.getPermission())) {
if(sender instanceof Player) {
if(args.length == 0) {
showHelp();
} else if(args.length == 1) {
if(args[0].equalsIgnoreCase("help")) {
showHelp();
} else if(args[0].equalsIgnoreCase("list")) {
String list = "";
int i = 1;
for(EffectType type : EffectType.values()) {
if(i == EffectType.values().length) {
list += type.name();
} else {
list += type.name() + ", ";
}
i++;
}
sendMessage(list);
} else if(args[0].equalsIgnoreCase("stop")) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName());
if(xp.hasEffects()) {
xp.setEffect(null);
sendMessage("effects disabled!");
} else {
sendMessage("you dont wear any effects!");
}
} else {
if(EnumHelper.isDefined(EffectType.class, args[0].toUpperCase())) {
XPlayer xp = pl.getManagers().getPlayerManager().getPlayer(sender.getName());
EffectType type = EnumHelper.getEnum(EffectType.class, args[0].toUpperCase());
xp.setEffect(type);
sendMessage("effect has been set!");
} else {
sendMessage("effect does not exist!");
}
}
}
} else {
getWarning(WarningType.PLAYER_ONLY);
}
} else {
getWarning(WarningType.NO_PERMISSION);
}
}
return false;
}
@Override
public void showHelp() {
sender.sendMessage(ChatColor.GOLD + ".oO___[effect help]___Oo.");
sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/effect help " + ChatColor.WHITE + ": shows help");
sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/effect list " + ChatColor.WHITE + ": shows the list of effects");
sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/effect <name> " + ChatColor.WHITE + ": uses an effect on the player");
sender.sendMessage(ChatColor.DARK_GRAY + "Default: " + ChatColor.GRAY + "/effect stop " + ChatColor.WHITE + ": removes the effect");
}
}