// Copyright (c) 2015, Christopher "BlayTheNinth" Baker
package net.blay09.mods.eirairc.command;
import net.blay09.mods.eirairc.ConnectionManager;
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.ConfigurationHandler;
import net.blay09.mods.eirairc.config.ServerConfig;
import net.blay09.mods.eirairc.util.ConfigHelper;
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 CommandNick implements SubCommand {
@Override
public String getCommandName() {
return "nick";
}
@Override
public String getCommandUsage(ICommandSender sender) {
return "eirairc:commands.nick.usage";
}
@Override
public String[] getAliases() {
return null;
}
@Override
public boolean processCommand(ICommandSender sender, IRCContext context, String[] args, boolean serverSide) throws CommandException {
if(args.length < 1) {
throw new WrongUsageException(getCommandUsage(sender));
}
if(args.length >= 2) {
ServerConfig serverConfig = ConfigHelper.resolveServerConfig(args[0]);
if(serverConfig == null) {
Utils.sendLocalizedMessage(sender, "error.serverNotFound", args[0]);
return true;
}
String nick = args[1];
Utils.sendLocalizedMessage(sender, "commands.nick", serverConfig.getAddress(), nick);
serverConfig.setNick(nick);
IRCConnection connection = ConnectionManager.getConnection(serverConfig.getIdentifier());
if(connection != null) {
connection.nick(nick);
}
} else {
String nick = args[0];
if(context == null) {
Utils.sendLocalizedMessage(sender, "commands.nick", "Global", nick);
for(ServerConfig serverConfig : ConfigurationHandler.getServerConfigs()) {
if(serverConfig.getAddress().equals(Globals.TWITCH_SERVER)) {
continue;
}
if(serverConfig.getNick() == null || serverConfig.getNick().isEmpty()) {
IRCConnection connection = ConnectionManager.getConnection(serverConfig.getIdentifier());
if(connection != null) {
connection.nick(ConfigHelper.formatNick(nick));
}
}
}
} else {
IRCConnection connection = context.getConnection();
if(connection.isTwitch()) {
return true;
}
connection.nick(ConfigHelper.formatNick(nick));
ServerConfig serverConfig = ConfigHelper.getServerConfig(connection);
serverConfig.setNick(nick);
}
}
ConfigurationHandler.save();
return true;
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return Utils.isOP(sender);
}
@Override
public void addTabCompletionOptions(List<String> list, ICommandSender sender, String[] args) {
}
@Override
public boolean isUsernameIndex(String[] args, int idx) {
return false;
}
@Override
public boolean hasQuickCommand() {
return true;
}
}