package mods.recipear;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import mods.recipear.api.RecipearEvent;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommand;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import cpw.mods.fml.common.network.PacketDispatcher;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.TickRegistry;
import cpw.mods.fml.relauncher.Side;
public class RecipearCommand extends CommandBase implements ICommand {
private boolean reloading = false;
private boolean outputting = false;
public int getRequiredPermissionLevel()
{
return 3;
}
@Override
public String getCommandName() {
return "recipear";
}
@Override
public void processCommand(ICommandSender sender, String[] astring)
{
String name = sender.getCommandSenderName();
if((astring.length > 0) && (astring[0].equals("reload")))
{
if(!reloading) {
RecipearLogger.info("Config reloaded by " + name);
reloading = true;
long startTime = System.currentTimeMillis();
Recipear.config.reload();
if(RecipearConfig.removeIngame) {
if(!Recipear.playertracker.active) {
Recipear.playertracker.active = true;
GameRegistry.registerPlayerTracker(Recipear.playertracker);
}
if(!Recipear.playertick.active) {
Recipear.playertick.active = true;
TickRegistry.registerScheduledTickHandler(Recipear.playertick, Side.SERVER);
}
}
Recipear.events.trigger(new RecipearEvent(Side.SERVER, false));
ConfigPacket configpacket = new ConfigPacket(RecipearConfig.debug,
RecipearConfig.removeclient,
RecipearConfig.placeholderDescription,
BannedRecipes.getBannedRecipes());
PacketDispatcher.sendPacketToAllPlayers(Recipear.getPacket(configpacket));
long endTime = System.currentTimeMillis() - startTime;
reloading = false;
RecipearLogger.info("Config reloaded by " + name + " in " + endTime + "ms");
notifyAdmins(sender, "Recipear reloaded by %s in " + endTime + "ms", new Object[] {sender.getCommandSenderName()});
}
}
else if((astring.length > 0) && (astring[0].equals("output")))
{
if(!outputting) {
outputting = true;
long startTime = System.currentTimeMillis();
RecipearOutput.clear();
Recipear.events.trigger(new RecipearEvent(Side.SERVER, true));
if(RecipearOutput.save()) {
long endTime = System.currentTimeMillis() - startTime;
notifyAdmins(sender, "%s outputted all recipes to Recipear-output.log in " + endTime + "ms", new Object[] {sender.getCommandSenderName()});
RecipearLogger.info(name + " outputted all recipes to Recipear-output.log in " + endTime + "ms");
} else {
notifyAdmins(sender, "Recipear encountered an error when saving output", new Object[] {sender.getCommandSenderName()});
RecipearLogger.severe("Recipear encountered an error when saving output");
}
outputting = false;
}
}
else if((astring.length > 0) && (astring[0].equals("types")))
{
String text = "Supported Recipear2 Types: ";
text += StringUtils.join(BannedRecipes.getBannedRecipeTypes(), ", ");
text += ".";
notifyAdmins(sender, text, new Object[] {sender.getCommandSenderName()});
}
else
{
throw new WrongUsageException(getCommandUsage(sender), new Object[0]);
}
}
@Override
public String getCommandUsage(ICommandSender icommandsender) {
return "/recipear <reload/output/types>";
}
public List addTabCompletionOptions(ICommandSender par1ICommandSender, String[] par2ArrayOfStr)
{
return par2ArrayOfStr.length == 1 ? getListOfStringsMatchingLastWord(par2ArrayOfStr, new String[] {"reload", "output", "types"}): null;
}
@Override
public int compareTo(Object arg0) {
return 0;
}
}