package advancedsystemsmanager.commands;
import advancedsystemsmanager.AdvancedSystemsManager;
import advancedsystemsmanager.api.network.IPacketSync;
import advancedsystemsmanager.helpers.LocalizationHelper;
import advancedsystemsmanager.network.ASMPacket;
import advancedsystemsmanager.network.PacketHandler;
import advancedsystemsmanager.reference.Names;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.client.Minecraft;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import java.util.Arrays;
import java.util.List;
public class CommandTheme implements ISubCommand, IPacketSync
{
private static List<String> commands = Arrays.asList("list", "load", "save");
int id;
@Override
public int getPermissionLevel()
{
return 0;
}
@Override
public String getCommandName()
{
return "theme";
}
@Override
public void handleCommand(ICommandSender sender, String[] arguments)
{
if (sender instanceof EntityPlayerMP)
{
ASMPacket packet = PacketHandler.getCommandPacket();
packet.writeByte(id);
packet.writeByte(commands.indexOf(arguments[1]));
packet.writeByte(Math.max(arguments.length - 2, 0));
for (int i = 2; i < arguments.length; i++)
{
packet.writeStringToBuffer(arguments[i]);
}
packet.sendPlayerPacket((EntityPlayerMP)sender);
} else
{
throw new CommandException(Names.COMMAND_PLAYER_ONLY);
}
}
@Override
public List<String> addTabCompletionOptions(ICommandSender sender, String[] args)
{
return commands;
}
@Override
public boolean isVisible(ICommandSender sender)
{
return sender instanceof EntityPlayerMP;
}
@Override
public void setId(int id)
{
this.id = id;
}
@Override
@SideOnly(Side.CLIENT)
public boolean readData(ASMPacket packet)
{
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
int command = packet.readByte();
String[] args = new String[packet.readByte()];
for (int i = 0; i < args.length; i++)
{
args[i] = packet.readStringFromBuffer();
}
switch (command)
{
case 0:
List<String> themes = AdvancedSystemsManager.themeHandler.getThemes();
String list = "";
for (int i = 0; i < themes.size(); i++)
{
list += themes.get(i);
if (i < themes.size() - 1) list += ", ";
}
LocalizationHelper.addChatMessageFormatted(player, Names.COMMAND_THEME_LIST + Names.COMMAND_OUTPUT, list);
break;
case 1:
if (args.length > 1) throw new CommandException(Names.COMMAND_THEME_LOAD + Names.COMMAND_SYNTAX);
if (!AdvancedSystemsManager.themeHandler.setTheme(args.length == 1 ? args[0] : "default"))
{
throw new CommandException(Names.COMMAND_THEME_LOAD + Names.COMMAND_FAILED, args[0]);
}
LocalizationHelper.addChatMessage(player, Names.COMMAND_THEME_LOAD + Names.COMMAND_OUTPUT);
break;
case 2:
if (args.length != 1) throw new CommandException(Names.COMMAND_THEME_SAVE + Names.COMMAND_SYNTAX);
AdvancedSystemsManager.themeHandler.saveTheme(args[0]);
LocalizationHelper.addChatMessage(player, Names.COMMAND_THEME_SAVE + Names.COMMAND_OUTPUT);
break;
}
return false;
}
}