package me.fromgate.reactions.commands;
import me.fromgate.reactions.activators.Activator;
import me.fromgate.reactions.activators.Activators;
import me.fromgate.reactions.menu.InventoryMenu;
import me.fromgate.reactions.timer.Timers;
import me.fromgate.reactions.util.Locator;
import me.fromgate.reactions.util.Param;
import me.fromgate.reactions.util.Util;
import me.fromgate.reactions.util.Variables;
import me.fromgate.reactions.util.message.M;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
@CmdDefine(command = "react", description = M.CMD_REMOVE, permission = "reactions.config",
subCommands = {"remove|rmv|del|delete"}, allowConsole = true, shortDescription = "&3/react remove [loc|activator] <id>")
public class CmdRemove extends Cmd {
@Override
public boolean execute(CommandSender sender, String[] args) {
if (args.length == 1) return false;
String arg1 = args[1];
String arg2 = args.length >= 3 ? args[2] : "";
String arg3 = args.length >= 4 ? args[3] : "";
if (args.length > 5) {
for (int i = 4; i < args.length; i++)
arg3 = arg3 + " " + args[i];
arg3 = arg3.trim();
}
if (arg2.isEmpty()) return false;
if (arg1.equalsIgnoreCase("act") || arg1.equalsIgnoreCase("activator")) {
if (Activators.contains(arg2)) {
Activators.removeActivator(arg2);
M.printMSG(sender, "msg_removebok", arg2);
Activators.saveActivators();
} else M.printMSG(sender, "msg_removebnf", arg2);
} else if (arg1.equalsIgnoreCase("loc")) {
if (Locator.removeTpLoc(arg2)) {
M.printMSG(sender, "msg_removelocok", arg2);
Locator.saveLocs();
} else M.printMSG(sender, "msg_removelocnf", arg2);
} else if (arg1.equalsIgnoreCase("timer") || arg1.equalsIgnoreCase("tmr")) {
Timers.removeTimer(sender, arg2);
} else if (arg1.equalsIgnoreCase("var") || arg1.equalsIgnoreCase("variable") || arg1.equalsIgnoreCase("variables")) {
removeVariable(sender, arg2 + (arg3.isEmpty() ? "" : " " + arg3));
} else if (arg1.equalsIgnoreCase("menu") || arg1.equalsIgnoreCase("m")) {
if (InventoryMenu.remove(arg2)) M.printMSG(sender, "msg_removemenu", arg2);
else M.printMSG(sender, "msg_removemenufail", 'c', '4', arg2);
} else if (Activators.contains(arg1)) {
Activator act = Activators.get(arg1);
if (Util.isIntegerGZ(arg3)) {
int num = Integer.parseInt(arg3);
if (arg2.equalsIgnoreCase("f") || arg2.equalsIgnoreCase("flag")) {
if (act.removeFlag(num - 1))
M.printMSG(sender, "msg_flagremoved", act.getName(), num);
else M.printMSG(sender, "msg_failedtoremoveflag", act.getName(), num);
} else if (arg2.equalsIgnoreCase("a") || arg2.equalsIgnoreCase("action")) {
if (act.removeAction(num - 1))
M.printMSG(sender, "msg_actionremoved", act.getName(), num);
else M.printMSG(sender, "msg_failedtoremoveaction", act.getName(), num);
} else if (arg2.equalsIgnoreCase("r") || arg2.equalsIgnoreCase("reaction")) {
if (act.removeReaction(num - 1))
M.printMSG(sender, "msg_reactionremoved", act.getName(), num);
else M.printMSG(sender, "msg_failedtoremovereaction", act.getName(), num);
} else return false;
Activators.saveActivators();
} else M.printMSG(sender, "msg_wrongnumber", arg3);
}
return true;
}
public boolean removeVariable(CommandSender sender, String param) {
Player p = (sender instanceof Player) ? (Player) sender : null;
Param params = new Param(param);
String player = params.getParam("player", "");
if (player.equalsIgnoreCase("%player%") && p != null) player = p.getName();
String id = params.getParam("id", "");
if (id.isEmpty()) {
return M.MSG_VARNEEDID.print(sender);
}
if (Variables.clearVar(player, id)) {
return M.MSG_VARREMOVED.print(sender, id);
}
return M.MSG_VARREMOVEFAIL.print(sender);
}
}