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.util.Locator;
import me.fromgate.reactions.util.message.M;
import org.bukkit.Location;
import org.bukkit.command.CommandSender;
import java.util.ArrayList;
import java.util.List;
@CmdDefine(command = "react", description = M.CMD_INFO, permission = "reactions.config",
subCommands = {"info"}, allowConsole = true, shortDescription = "&3/react info <activator> [f|a|r]")
public class CmdInfo extends Cmd {
@Override
public boolean execute(CommandSender sender, String[] args) {
String id = args.length > 1 ? args[1] : "";
if (id.isEmpty()) return false;
String far = args.length > 2 ? args[2] : "";
if (Activators.contains(id)) {
printActInfo(sender, id, far);
} else if (id.equalsIgnoreCase("menu")) {
InventoryMenu.printMenu(sender, far);
} else M.printMSG(sender, "cmd_unknownbutton", id);
return true;
}
private void printActInfo(CommandSender sender, String activatorName, String far) {
Activator act = Activators.get(activatorName);
boolean f;
boolean a;
boolean r;
if (far.isEmpty()) {
f = true;
a = true;
r = true;
} else {
f = far.contains("f") || far.equalsIgnoreCase("flag") || far.equalsIgnoreCase("flags");
a = far.contains("a") || far.equalsIgnoreCase("action") || far.equalsIgnoreCase("actions");
r = far.contains("r") || far.equalsIgnoreCase("reaction") || far.equalsIgnoreCase("me/fromgate/reactions");
}
M.printMSG(sender, "&5☆ &d&l" + M.MSG_ACTINFOTITLE.getText("NOCOLOR") + " &r&5☆");
M.printMSG(sender, "msg_actinfo", act.getName(), act.getType(), act.getGroup());
M.printMSG(sender, "msg_actinfo2", act.getFlags().size(), act.getActions().size(), act.getReactions().size());
if (f && (!act.getFlags().isEmpty())) {
List<String> flg = new ArrayList<>();
for (int i = 0; i < act.getFlags().size(); i++) {
flg.add((act.getFlags().get(i).not ? "&4! &e" : " &e") + act.getFlags().get(i).flag + " &3= &a" + act.getFlags().get(i).value);
}
M.printPage(sender, flg, M.LST_FLAGS, 1, 100, true);
}
if (a && (!act.getActions().isEmpty())) {
List<String> flg = new ArrayList<>();
for (int i = 0; i < act.getActions().size(); i++) {
String action = act.getActions().get(i).flag;
String param = act.getActions().get(i).value;
if (action.equalsIgnoreCase("tp")) {
Location loc = Locator.parseCoordinates(param);//Util.parseLocation(param);
if (loc != null) param = Locator.locationToStringFormated(loc);
}
flg.add(" &e" + action + " &3= &a" + param);
}
M.printPage(sender, flg, M.LST_ACTIONS, 1, 100, true);
}
if (r && (!act.getReactions().isEmpty())) {
List<String> flg = new ArrayList<>();
for (int i = 0; i < act.getReactions().size(); i++) {
String action = act.getReactions().get(i).flag;
String param = act.getReactions().get(i).value;
if (action.equalsIgnoreCase("tp")) {
Location loc = Locator.parseCoordinates(param);
if (loc != null) param = Locator.locationToStringFormated(loc);
}
flg.add(" &e" + action + " &3= &a" + param);
}
M.printPage(sender, flg, M.LST_REACTIONS, 1, 100, true);
}
}
}