// Copyright (c) 2015, Christopher "BlayTheNinth" Baker package net.blay09.mods.eirairc.command.interop; 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.util.ConfigHelper; 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 InterOpCommandUserModeBase implements SubCommand { private final String name; private final String mode; private final boolean useHostMask; public InterOpCommandUserModeBase(String name, String mode, boolean useHostMask) { this.name = name; this.mode = mode; this.useHostMask = useHostMask; } @Override public boolean processCommand(ICommandSender sender, IRCContext context, String[] args, boolean serverSide) throws CommandException { if (args.length < 2) { throw new WrongUsageException(getCommandUsage(sender)); } IRCContext targetChannel = EiraIRCAPI.parseContext(null, args[0], IRCContext.ContextType.IRCChannel); if (targetChannel.getContextType() == IRCContext.ContextType.Error) { Utils.sendLocalizedMessage(sender, targetChannel.getName(), args[0]); return true; } if (!ConfigHelper.getBotSettings(targetChannel).interOp.get()) { Utils.sendLocalizedMessage(sender, "commands.interop.disabled"); return true; } if (args[1].contains("@")) { targetChannel.getConnection().mode(targetChannel.getName(), mode, args[1]); Utils.sendLocalizedMessage(sender, "commands." + name, args[1], targetChannel.getName()); } else { IRCContext targetUser = EiraIRCAPI.parseContext(targetChannel, args[1], IRCContext.ContextType.IRCUser); if (targetUser.getContextType() == IRCContext.ContextType.Error) { Utils.sendLocalizedMessage(sender, targetUser.getName(), args[1]); return true; } targetChannel.getConnection().mode(targetChannel.getName(), mode, useHostMask ? ("*!*@" + ((IRCUser) targetUser).getHostname()) : targetUser.getName()); Utils.sendLocalizedMessage(sender, "commands." + name, targetUser.getName(), targetChannel.getName()); } return true; } @Override public boolean canCommandSenderUseCommand(ICommandSender sender) { return Utils.isOP(sender); } @Override public boolean hasQuickCommand() { return false; } @Override public String getCommandUsage(ICommandSender sender) { return "eirairc:commands." + name + ".usage"; } @Override public String[] getAliases() { return null; } @Override public String getCommandName() { return name; } @Override public boolean isUsernameIndex(String[] args, int idx) { return false; } @Override public void addTabCompletionOptions(List<String> list, ICommandSender sender, String[] args) { } }