// Copyright (c) 2015, Christopher "BlayTheNinth" Baker
package net.blay09.mods.eirairc.command;
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.IRCChannel;
import net.blay09.mods.eirairc.api.irc.IRCConnection;
import net.blay09.mods.eirairc.api.irc.IRCContext;
import net.blay09.mods.eirairc.config.ChannelConfig;
import net.blay09.mods.eirairc.config.ConfigurationHandler;
import net.blay09.mods.eirairc.config.ServerConfig;
import net.blay09.mods.eirairc.irc.IRCChannelImpl;
import net.blay09.mods.eirairc.util.ChatComponentBuilder;
import net.blay09.mods.eirairc.util.Utils;
import net.minecraft.command.ICommandSender;
import java.util.List;
public class CommandWho implements SubCommand {
@Override
public String getCommandName() {
return "who";
}
@Override
public String getCommandUsage(ICommandSender sender) {
return "eirairc:commands.who.usage";
}
@Override
public String[] getAliases() {
return null;
}
@Override
public boolean processCommand(ICommandSender sender, IRCContext context, String[] args, boolean serverSide) {
IRCContext target = null;
if(args.length > 0) {
target = EiraIRCAPI.parseContext(null, args[0], null);
if(target.getContextType() == IRCContext.ContextType.Error) {
Utils.sendLocalizedMessage(sender, target.getName(), args[0]);
return true;
}
} else {
if(context != null) {
target = context;
}
}
if(target == null) {
boolean foundAny = false;
for(IRCConnection connection : ConnectionManager.getConnections()) {
for(IRCChannel channel : connection.getChannels()) {
foundAny = true;
Utils.sendUserList(sender, connection, channel);
}
}
if(!foundAny) {
ChatComponentBuilder.create().color('c').lang("eirairc:error.notConnectedToIRC").send(sender);
}
} else if(target.getContextType() == IRCContext.ContextType.IRCChannel) {
Utils.sendUserList(sender, target.getConnection(), (IRCChannelImpl) target);
} else if(target.getContextType() == IRCContext.ContextType.IRCConnection) {
for(IRCChannel channel : target.getConnection().getChannels()) {
Utils.sendUserList(sender, target.getConnection(), channel);
}
}
return true;
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return true;
}
@Override
public void addTabCompletionOptions(List<String> list, ICommandSender sender, String[] args) {
if(args.length == 0) {
for(ServerConfig serverConfig : ConfigurationHandler.getServerConfigs()) {
for(ChannelConfig channelConfig : serverConfig.getChannelConfigs()) {
list.add(channelConfig.getName());
}
}
}
}
@Override
public boolean isUsernameIndex(String[] args, int idx) {
return false;
}
@Override
public boolean hasQuickCommand() {
return true;
}
}