package sourcecoded.quantum;
import net.minecraft.command.CommandBase;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.CompressedStreamTools;
import net.minecraft.nbt.NBTSizeTracker;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
import sourcecoded.quantum.api.discovery.DiscoveryManager;
import sourcecoded.quantum.network.MessageDiscoveryImport;
import sourcecoded.quantum.network.NetworkHandler;
import sourcecoded.quantum.proxy.ClientProxy;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
public class QAClientCommand extends CommandBase {
@Override
public String getCommandName() {
return "quantumC";
}
@Override
public String getCommandUsage(ICommandSender p_71518_1_) {
return "/quantumC <discoveries> <import|export> [fileName]";
}
public int getRequiredPermissionLevel() {
return 0;
}
@Override
public void processCommand(ICommandSender sender, String[] args) {
if (args.length < 2) wrong(sender);
String filename = EnumChatFormatting.getTextWithoutFormattingCodes(sender.getCommandSenderName());
if (args.length == 3)
filename = args[2];
if (!filename.contains(".")) {
filename += ".discoveries";
}
if (args[0].equalsIgnoreCase("discoveries")) {
if (args[1].equalsIgnoreCase("import")) {
File importFile = new File(ClientProxy.discoveryImportDir, filename);
if (importFile.exists()) {
//Import discoveries from JSON file
try {
NBTTagCompound compound = CompressedStreamTools.func_152458_a(importFile, NBTSizeTracker.field_152451_a);
NBTTagCompound quantumTag = DiscoveryManager.getQuantumTag((EntityPlayer) sender);
if (quantumTag.hasKey("discoveries"))
quantumTag.removeTag("discoveries");
quantumTag.setTag("discoveries", compound);
NetworkHandler.wrapper.sendToServer(new MessageDiscoveryImport(quantumTag));
importSuccessful(sender);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else doesNotExist(sender, filename, importFile);
} else if (args[1].equalsIgnoreCase("export")) {
File exportFile = new File(ClientProxy.discoveryExportDir, filename);
//Export discoveries to file
try {
if (exportFile.exists()) {
doesExist(sender, filename, exportFile);
return;
}
CompressedStreamTools.write(DiscoveryManager.getDiscoveriesTag((EntityPlayer) sender), exportFile);
exportSuccessful(sender, exportFile);
} catch (IOException e) {
e.printStackTrace();
}
} else wrong(sender);
} else wrong(sender);
}
public void wrong(ICommandSender sender) {
throw new WrongUsageException(getCommandUsage(sender));
}
public void doesNotExist(ICommandSender sender, String filename, File path) {
sender.addChatMessage(new ChatComponentText(String.format("File: %s does not exist in path: %s", filename, path.getAbsolutePath())).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED)));
}
public void doesExist(ICommandSender sender, String filename, File path) {
sender.addChatMessage(new ChatComponentText(String.format("File: %s already exists in path: %s", filename, path.getAbsolutePath())).setChatStyle(new ChatStyle().setColor(EnumChatFormatting.RED)));
}
public void exportSuccessful(ICommandSender sender, File file) {
String message = "[{\"text\":\"Discoveries Export Successful! \",\"color\":\"aqua\"},{\"text\":\"%s\",\"color\":\"light_purple\",\"italic\":\"true\",\"underlined\":\"true\",\"clickEvent\":{\"action\":\"open_file\",\"value\":\"%s\"}}]";
message = String.format(message, file.getName(), file.getAbsolutePath());
sender.addChatMessage(IChatComponent.Serializer.func_150699_a(message));
}
public void importSuccessful(ICommandSender sender) {
String message = "[{\"text\":\"Discoveries Import Successful!\",\"color\":\"aqua\"}]";
sender.addChatMessage(IChatComponent.Serializer.func_150699_a(message));
}
}