All pastes #400111 Raw Edit

Someone

public java v1 · immutable
·published 2007-03-18 14:01 UTC
rendered paste body
	String opModes = "qaohv"; // Modes that give users power			String cParamModes = "flk"; // Channel modes that require parameters			// All other modes are channel modes without parameters, with the exception of "bie"			boolean added = true;			char[] array = line.substring(line.indexOf(tok[2]) + tok[2].length() +1).split("\\s+")[0].toCharArray();			Hashtable<Integer,String> add = new Hashtable<Integer,String>();			Hashtable<Integer,String> remove = new Hashtable<Integer,String>();			int i = 0;			for (char m : array) {				if (m == '+') { added = true; }				else if (m == '-') { added = false; }				if (opModes.contains("" + m)) {					(added ? add : remove).put(i, "" + m);					i++;				}				else if (cParamModes.contains("" + m) || m == 'b' || m == 'e' || m == 'f') { i++; }			}			String modeLine = new String(array);			String[] params = line.substring(line.indexOf(modeLine) + modeLine.length() + 1).split("\\s+");			Channel c = storage.getChannel(tok[2]);			if (c == null) { con.log("Unknown channel, modes set! (" + tok[2] + ")"); return; }			for (int index : add.keySet()) {				if (index >= params.length) { break; }				String mode = add.get(index);				switch (mode.toCharArray()[0]) {				case 'q': c.addOwner(params[index]); break;				case 'a': c.addAdmin(params[index]); break;				case 'o': c.addOp(params[index]); break;				case 'h': c.addHalfOp(params[index]); break;				case 'v': c.addVoice(params[index]); break;				default: break;				}			}			for (int index : remove.keySet()) {				if (index >= params.length) { break; }				String mode = remove.get(index);				switch (mode.toCharArray()[0]) {				case 'q': c.delOwner(params[index]); break;				case 'a': c.delAdmin(params[index]); break;				case 'o': c.delOp(params[index]); break;				case 'h': c.delHalfOp(params[index]); break;				case 'v': c.delVoice(params[index]); break;				default: break;				}			}						add = remove = null;