// Copyright (c) 2015, Christopher "BlayTheNinth" Baker
package net.blay09.mods.eirairc.command.extension;
import net.blay09.mods.eirairc.ConnectionManager;
import net.blay09.mods.eirairc.api.EiraIRCAPI;
import net.blay09.mods.eirairc.api.SubCommand;
import net.blay09.mods.eirairc.api.irc.IRCContext;
import net.blay09.mods.eirairc.config.AuthManager;
import net.blay09.mods.eirairc.config.ConfigurationHandler;
import net.blay09.mods.eirairc.config.ServerConfig;
import net.blay09.mods.eirairc.util.ChatComponentBuilder;
import net.blay09.mods.eirairc.util.Globals;
import net.blay09.mods.eirairc.util.Utils;
import net.minecraft.command.CommandException;
import net.minecraft.command.ICommandSender;
import net.minecraft.command.WrongUsageException;
import java.util.List;
public class CommandTwitch implements SubCommand {
@Override
public String getCommandName() {
return "twitch";
}
@Override
public String getCommandUsage(ICommandSender sender) {
return "eirairc:commands.twitch.usage";
}
@Override
public String[] getAliases() {
return null;
}
@Override
public boolean processCommand(ICommandSender sender, IRCContext context, String[] args, boolean serverSide) throws CommandException {
if(EiraIRCAPI.isConnectedTo(Globals.TWITCH_SERVER)) {
ChatComponentBuilder.create().color('c').lang("eirairc:error.alreadyConnected", "Twitch").send(sender);
return true;
}
if(args.length == 0) {
if(ConfigurationHandler.hasServerConfig(Globals.TWITCH_SERVER)) {
Utils.sendLocalizedMessage(sender, "commands.connect", "Twitch");
ServerConfig serverConfig = ConfigurationHandler.getOrCreateServerConfig(Globals.TWITCH_SERVER);
ConnectionManager.connectTo(serverConfig);
return true;
} else {
if(serverSide) {
throw new WrongUsageException(getCommandUsage(sender));
} else {
ChatComponentBuilder.create().color('c').lang("eirairc:general.serverOnlyCommand").send(sender);
return true;
}
}
} else {
if(args.length < 2) {
throw new WrongUsageException("eirairc:commands.twitch.usage");
}
ServerConfig serverConfig = ConfigurationHandler.getOrCreateServerConfig(Globals.TWITCH_SERVER);
serverConfig.setNick(args[0]);
AuthManager.putServerPassword(serverConfig.getIdentifier(), args[1]);
serverConfig.getOrCreateChannelConfig("#" + serverConfig.getNick());
serverConfig.getGeneralSettings().readOnly.set(false);
serverConfig.getBotSettings().messageFormat.set("Twitch");
ConfigurationHandler.addServerConfig(serverConfig);
ConfigurationHandler.save();
Utils.sendLocalizedMessage(sender, "commands.connect", "Twitch");
ConnectionManager.connectTo(serverConfig);
return true;
}
}
@Override
public void addTabCompletionOptions(List<String> list, ICommandSender sender, String[] args) {}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return Utils.isOP(sender);
}
@Override
public boolean isUsernameIndex(String[] args, int idx) {
return false;
}
@Override
public boolean hasQuickCommand() {
return true;
}
}