package net.blay09.mods.eirairc.command; 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.api.irc.IRCUser; import net.blay09.mods.eirairc.config.settings.BotSettings; import net.blay09.mods.eirairc.util.ConfigHelper; import net.blay09.mods.eirairc.util.MessageFormat; import net.blay09.mods.eirairc.util.Utils; import net.minecraft.command.CommandException; import net.minecraft.command.ICommandSender; import net.minecraft.command.WrongUsageException; import net.minecraft.util.IChatComponent; import org.apache.commons.lang3.StringUtils; import java.util.List; /** * @author soniex2 */ public class CommandCTCP implements SubCommand { @Override public String getCommandName() { return "ctcp"; } @Override public String getCommandUsage(ICommandSender sender) { return "eirairc:commands.ctcp.usage"; } @Override public String[] getAliases() { return null; } @Override public boolean processCommand(ICommandSender sender, IRCContext context, String[] args, boolean serverSide) throws CommandException { if (!ConfigHelper.getBotSettings(context).allowCTCP.get()){ Utils.sendLocalizedMessage(sender, "commands.ctcp.disabled"); return true; } if (args.length < 2) { throw new WrongUsageException(getCommandUsage(sender)); } IRCContext target = EiraIRCAPI.parseContext(null, args[0], null); if (target.getContextType() == IRCContext.ContextType.Error) { Utils.sendLocalizedMessage(sender, target.getName(), args[0]); return true; } else if (target.getContextType() == IRCContext.ContextType.IRCUser) { if (!ConfigHelper.getBotSettings(context).allowCTCP.get()) { Utils.sendLocalizedMessage(sender, "commands.ctcp.disabled"); return true; } } String message = StringUtils.join(args, " ", 1, args.length).trim(); if (message.isEmpty()) { throw new WrongUsageException(getCommandUsage(sender)); } String format = "{MESSAGE}"; BotSettings botSettings = ConfigHelper.getBotSettings(target); IRCUser botUser = target.getConnection().getBotUser(); String ircMessage = message; if (serverSide) { ircMessage = MessageFormat.formatMessage(format, target.getConnection(), target, botUser, message, MessageFormat.Target.IRC, MessageFormat.Mode.Message); } target.ctcpMessage(ircMessage); format = "{MESSAGE}"; if (target.getContextType() == IRCContext.ContextType.IRCChannel) { format = botSettings.getMessageFormat().mcSendChannelMessage; } else if (target.getContextType() == IRCContext.ContextType.IRCUser) { format = botSettings.getMessageFormat().mcSendPrivateMessage; } IChatComponent chatComponent = MessageFormat.formatChatComponent(format, target.getConnection(), target, botUser, message, MessageFormat.Target.IRC, MessageFormat.Mode.Message); EiraIRCAPI.getChatHandler().addChatMessage(sender, chatComponent, target); 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 false; } }