Ejemplo n.º 1
0
	private boolean servePlayerList(PlayerListEvent event, List<String> tablist, HashMap<String, String> tablistnick) {
		if (reader.ProtocolVersion >= 47) {
			boolean ret = false;
			for (int i = 0, o = event.UUIDS.size(); i < o; i++) {
				String xUUID = event.UUIDS.get(i);
				if (!event.Onlines.get(o)) {
					if (tablist.contains(xUUID)) {
						tablist.remove(xUUID);
					}
					if (tablistnick.containsKey(xUUID)) {
						tablistnick.remove(xUUID);
					}
				}
			}

			for (int i = 0, o = event.UUIDS.size(); i < o; i++) {
				String xUUID = event.UUIDS.get(i);
				String xname = event.Nicks.get(i);
				boolean xonline = event.Onlines.get(i);
				boolean xchanged = event.Changed.get(i);
				if (tablist.contains(xUUID)) {
					// Already in tablist
					if (xchanged) {
						// Display name changed
						tablistnick.put(xUUID, xname);
						ret = true;
					} else if (!xonline) {
						// Remove us
						tablist.remove(xUUID);
						if (tablistnick.containsKey(xUUID)) {
							tablistnick.remove(xUUID);
						}
						ret = true;
					}
				} else {
					// We are not in tablist yet
					if (xchanged) {
						tablist.add(xUUID);
						tablistnick.put(xUUID, xname);
						ret = true;
					}
				}
			}
			return ret;
		} else {
			if (tablist.contains(event.name)) {
				// We are already in tablist
				if (event.online) {
					// And online (Correct)
				} else {
					// Bot not online (Suicide)
					tablist.remove(event.name);
					return true;
				}
			} else {
				// We are not in tablist yet
				if (event.online) {
					// But online (Must add)
					tablist.add(event.name);
					return true;
				} else {
					// And not online (correct)
				}
			}
		}
		return false;
	}