package me.fromgate.reactions.commands;
import com.google.common.base.Joiner;
import me.fromgate.reactions.menu.InventoryMenu;
import me.fromgate.reactions.timer.Time;
import me.fromgate.reactions.util.Delayer;
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;
import java.util.Arrays;
@CmdDefine(command = "react", description = M.CMD_SET, permission = "reactions.config", subCommands = {"set"}, allowConsole = true, shortDescription = "&3/react set delay player:<player> delay:<time> id:<id>")
public class CmdSet 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 ? Joiner.on(" ").join(Arrays.copyOfRange(args, 2, args.length)) : "";
return this.setVariable(sender, arg1, arg2);
}
private boolean setVariable(CommandSender sender, String var, String param) {
Player p = (sender instanceof Player) ? (Player) sender : null;
Param params = new Param(param, "id");
String id = params.getParam("id", "");
if (id.isEmpty()) return M.MSG_NEEDVDMID.print(sender, 'c');
if (var.equalsIgnoreCase("delay") || var.equalsIgnoreCase("d")) {
boolean add = params.getParam("add", false);
String player = params.getParam("player", "");
if (player.equalsIgnoreCase("%player%") && (p != null)) player = p.getName();
Long time = /*System.currentTimeMillis()+*/Util.parseTime(params.getParam("delay", "3s")); //дефолтная задержка три секунды
if (player.isEmpty()) Delayer.setDelay(id, time, add);
else Delayer.setPersonalDelay(player, id, time, add);
M.printMSG(sender, "cmd_delayset", player.isEmpty() ? id : player + "." + id, Time.fullTimeToString(System.currentTimeMillis() + time));
} else if (var.equalsIgnoreCase("var") || var.equalsIgnoreCase("variable") || var.equalsIgnoreCase("v")) {
String value = params.getParam("value", "");
String player = params.getParam("player", "");
Variables.setVar(player, id, value);
return M.CMD_VARSET.print(sender, player.isEmpty() ? id : player + "." + id, Variables.getVar(player, id, ""));
} else if (var.equalsIgnoreCase("menu") || var.equalsIgnoreCase("m")) {
if (InventoryMenu.set(id, params))
return M.MSG_MENUPARAMSET.print(sender, id);
else return M.MSG_MENUSETFAIL.print(sender, 'c', '4', id);
} else return false;
return true;
}
}