// 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.util.ConfigHelper;
import net.blay09.mods.eirairc.util.Utils;
import net.minecraft.command.ICommandSender;
import java.util.List;
public class CommandDisconnect implements SubCommand {
private static final String TARGET_ALL = "all";
@Override
public String getCommandName() {
return "disconnect";
}
@Override
public String getCommandUsage(ICommandSender sender) {
return "eirairc:commands.disconnect.usage";
}
@Override
public String[] getAliases() {
return null;
}
@Override
public boolean processCommand(ICommandSender sender, IRCContext context, String[] args, boolean serverSide) {
String target;
if(args.length < 1) {
if(context != null) {
target = context.getConnection().getHost();
} else {
Utils.sendLocalizedMessage(sender, "error.specifyServer");
return true;
}
} else {
target = args[0];
}
if(target.equals(TARGET_ALL)) {
Utils.sendLocalizedMessage(sender, "commands.disconnect", "IRC");
for(IRCConnection connection : ConnectionManager.getConnections()) {
connection.disconnect(ConfigHelper.getQuitMessage(connection));
}
ConnectionManager.clearConnections();
} else {
IRCConnection connection = ConnectionManager.getConnection(target);
if(connection == null) {
Utils.sendLocalizedMessage(sender, "error.notConnected", target);
return true;
}
Utils.sendLocalizedMessage(sender, "commands.disconnect", target);
connection.disconnect(ConfigHelper.getQuitMessage(connection));
}
return true;
}
@Override
public boolean canCommandSenderUseCommand(ICommandSender sender) {
return Utils.isOP(sender);
}
@Override
public boolean isUsernameIndex(String[] args, int idx) {
return false;
}
@Override
public void addTabCompletionOptions(List<String> list, ICommandSender sender, String[] args) {
list.add(TARGET_ALL);
Utils.addConnectionsToList(list);
}
@Override
public boolean hasQuickCommand() {
return true;
}
}