public void render(Screen screen) {
		Vector2i pos = getPlayers().get(0).getPos().toVector2i();
		int xOffset = pos.getX() - screen.w / 2;
		int yOffset = pos.getY() - screen.h / 2;
		screen.setOffset(xOffset, yOffset);

		int x0 = xOffset >> 4;
		int x1 = (xOffset + screen.w + 16) >> 4;
		int y0 = yOffset >> 4;
		int y1 = (yOffset + screen.h + 16) >> 4;

		for (int y = y0; y < y1; y++) {
			for (int x = x0; x < x1; x++) {
				getTile(x, y).render(screen);
			}
		}

		List<Entity> entities = getEntities();
		List<Player> players = new ArrayList<Player>();
		for (Entity e : entities) {
			if (!(e.tag.contains("player"))) e.render(screen);
			else players.add((Player) e);
		}

		for (OnlinePlayers op : onlinePlayers) {
			if (op != null) {
				op.render(screen);
			}
		}

		for (Player p : players) {
			p.render(screen);
		}
	}