package com.forgeessentials.scripting.command;
import java.util.HashMap;
import java.util.Map;
import java.util.Map.Entry;
import net.minecraft.command.ICommandSender;
import net.minecraftforge.permission.PermissionLevel;
import com.forgeessentials.core.commands.ForgeEssentialsCommandBase;
import com.forgeessentials.core.misc.Translator;
import com.forgeessentials.data.v2.DataManager;
import com.forgeessentials.scripting.TimedTask;
import com.forgeessentials.util.output.ChatOutputHandler;
public class CommandTimedTask extends ForgeEssentialsCommandBase
{
private static Map<String, TimedTask> taskList = new HashMap<String, TimedTask>();
private static final String syntax = "/timedtask [add|remove|list] <interval> <name> <command> Regularily run a command as the console. Not to be abused.";
public CommandTimedTask()
{
taskList = DataManager.getInstance().loadAll(TimedTask.class);
}
@Override
public String getCommandName()
{
return "timedtask";
}
@Override
public String getCommandUsage(ICommandSender sender)
{
return syntax;
}
@Override
public void processCommand(ICommandSender sender, String[] args)
{
if (args.length == 0)
{
ChatOutputHandler.chatNotification(sender, syntax);
}
else if (args[0].equalsIgnoreCase("create"))
{
String command = "";
for (int i = 3; i < args.length; i++)
{
command = command + args[i] + " ";
}
TimedTask task = new TimedTask(Integer.parseInt(args[2]), command, args[1]);
taskList.put(args[1], task);
DataManager.getInstance().save(task, task.getName());
ChatOutputHandler.chatConfirmation(sender, "Added timed task " + args[1]);
}
else if (args[0].equalsIgnoreCase("remove"))
{
taskList.remove(args[1]);
DataManager.getInstance().delete(TimedTask.class, args[1]);
ChatOutputHandler.chatConfirmation(sender, "Removed timed task " + args[1]);
}
else if (args[0].equalsIgnoreCase("list"))
{
ChatOutputHandler.chatNotification(sender, "Listing all registered timed tasks");
for (Entry<String, TimedTask> task : taskList.entrySet())
{
ChatOutputHandler.chatNotification(sender, Translator.format("%s1 - %s2", task.getKey(), task.getValue().getCommand()));
}
}
}
@Override
public boolean canConsoleUseCommand()
{
return true;
}
@Override
public String getPermissionNode()
{
return "fe.script.timedtask";
}
@Override
public PermissionLevel getPermissionLevel()
{
return PermissionLevel.OP;
}
}