public void run(Source source, String[] args) { if (args.length == 1) { // TODO: Support user modes if (args[0].contains("#")) { if (Server.getServer().getChannelHandler().getChannel(args[0]) != null) { source.send( new ModeChannelCodec( args[0], Server.getServer().getChannelHandler().getChannel(args[0]).getModes())); } } } else if (args.length == 2) { if (args[0].contains("#") && Server.getServer().getChannelHandler().getChannel(args[0]) != null) { Channel chan = Server.getServer().getChannelHandler().getChannel(args[0]); if (args[1].contains("+")) { modifyChannelMode(args, chan, source, true); } else if (args[1].contains("-")) { modifyChannelMode(args, chan, source, false); } } } else if (args.length >= 3) { if (args[0].contains("#") && Server.getServer().getChannelHandler().getChannel(args[0]) != null) { Channel chan = Server.getServer().getChannelHandler().getChannel(args[0]); if (chan.getUserList().containsKey(source) && chan.getUserList().get(source).getUserModes().contains(ChannelUserMode.OP)) { if (args[1].contains("+")) { addRemoveModeChannel(args, chan, source, true); } else if (args[1].contains("-")) { addRemoveModeChannel(args, chan, source, false); } } } } }