// Copyright (c) 2015, Christopher "BlayTheNinth" Baker
package net.blay09.mods.eirairc.command.extension;
import net.blay09.mods.eirairc.api.EiraIRCAPI;
import net.blay09.mods.eirairc.api.SubCommand;
import net.blay09.mods.eirairc.api.irc.IRCConnection;
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.config.base.ServiceConfig;
import net.blay09.mods.eirairc.config.base.ServiceSettings;
import net.blay09.mods.eirairc.util.Utils;
import net.minecraft.command.ICommandSender;
import java.util.List;
public class CommandGhost implements SubCommand {
@Override
public String getCommandName() {
return "ghost";
}
@Override
public String getCommandUsage(ICommandSender sender) {
return "eirairc:commands.ghost.usage";
}
@Override
public String[] getAliases() {
return null;
}
@Override
public boolean processCommand(ICommandSender sender, IRCContext context, String[] args, boolean serverSide) {
IRCConnection connection;
if(args.length > 0) {
connection = EiraIRCAPI.parseContext(null, args[0], null).getConnection();
if(connection == null) {
Utils.sendLocalizedMessage(sender, "error.serverNotFound", args[0]);
return true;
}
} else {
if(context == null) {
Utils.sendLocalizedMessage(sender, "error.specifyServer");
return true;
}
connection = context.getConnection();
}
ServerConfig serverConfig = ConfigurationHandler.getOrCreateServerConfig(connection.getHost());
ServiceSettings settings = ServiceConfig.getSettings(connection.getHost(), connection.getServerType());
if(settings.hasGhostCommand()) {
AuthManager.NickServData nickServData = AuthManager.getNickServData(serverConfig.getIdentifier());
if(nickServData != null) {
connection.irc(settings.getGhostCommand(nickServData.username, nickServData.password));
}
} else {
Utils.sendLocalizedMessage(sender, "general.notSupported", "GHOST");
}
return true;
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return Utils.isOP(sender);
}
@Override
public void addTabCompletionOptions(List<String> list, ICommandSender sender, String[] args) {
if(args.length == 0) {
Utils.addConnectionsToList(list);
}
}
@Override
public boolean isUsernameIndex(String[] args, int idx) {
return false;
}
@Override
public boolean hasQuickCommand() {
return true;
}
}