package me.fromgate.reactions.commands;
import me.fromgate.reactions.activators.Activators;
import me.fromgate.reactions.menu.InventoryMenu;
import me.fromgate.reactions.timer.Timers;
import me.fromgate.reactions.util.Delayer;
import me.fromgate.reactions.util.Locator;
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;
import java.util.List;
@CmdDefine(command = "react", description = M.CMD_LIST, permission = "reactions.config",
subCommands = {"list"}, allowConsole = true, shortDescription = "&3/react list [loc|group|type] [page]")
public class CmdList extends Cmd {
@Override
public boolean execute(CommandSender sender, String[] args) {
Player player = (sender instanceof Player) ? (Player) sender : null;
int lpp = (player == null) ? 1000 : 15;
int page = 1;
String arg1 = args.length >= 2 ? args[1] : "";
String arg2 = args.length >= 3 ? args[2] : "";
String arg3 = args.length >= 4 ? args[3] : "";
if (Util.isIntegerGZ(arg1)) printAct(sender, 1, lpp);
else {
String mask = "";
if (Util.isIntegerGZ(arg2)) {
page = Integer.parseInt(arg2);
mask = arg3;
} else if (Util.isIntegerGZ(arg3)) {
page = Integer.parseInt(arg3);
mask = arg2;
}
if (arg1.equalsIgnoreCase("all")) {
printAct(sender, page, lpp);
} else if (arg1.equalsIgnoreCase("type")) {
printActType(sender, mask, page, lpp);
} else if (arg1.equalsIgnoreCase("group")) {
printActGroup(sender, mask, page, lpp);
} else if (arg1.equalsIgnoreCase("timer") || arg1.equalsIgnoreCase("timers")) {
Timers.listTimers(sender, page);
} else if (arg1.equalsIgnoreCase("delay") || arg1.equalsIgnoreCase("delays")) {
Delayer.printDelayList(sender, page, lpp);
} else if (arg1.equalsIgnoreCase("loc") || arg1.equalsIgnoreCase("location")) {
Locator.printLocList(sender, page, lpp);
} else if (arg1.equalsIgnoreCase("var") || arg1.equalsIgnoreCase("variables") || arg1.equalsIgnoreCase("variable")) {
Variables.printList(sender, page, mask);
} else if (arg1.equalsIgnoreCase("menu") || arg1.equalsIgnoreCase("menus")) {
InventoryMenu.printMenuList(sender, page, mask);
} else {
printAct(sender, page, lpp);
}
}
return true;
}
public void printAct(CommandSender sender, int page, int lpp) {
List<String> ag = Activators.getActivatorsList();
M.printPage(sender, ag, M.MSG_ACTLIST, page, lpp, true);
M.MSG_LISTCOUNT.print(sender, Activators.size(), Locator.sizeTpLoc());
}
public void printActGroup(CommandSender sender, String group, int page, int lpp) {
List<String> ag = Activators.getActivatorsListGroup(group);
M.MSG_ACTLISTGRP.print(sender, group, '6', '6');
M.printPage(sender, ag, null, page, lpp, true);
}
public void printActType(CommandSender sender, String type, int page, int lpp) {
List<String> ag = Activators.getActivatorsList(type);
M.MSG_ACTLISTTYPE.print(sender, type, '6', '6');
M.printPage(sender, ag, null, page, lpp, true);
}
}