public void updateLight(int x, int y) {
		BlockType b = getBlockAt(x, y);
		boolean air = false;
		if (b == null) {
			air = true;
			byte l = (byte) 0x0;
			int airCount = 0;
			for (int i = y; i > 0; i--) {
				airCount++;
			}
			l += airCount / 40;
			setLight(x, y, l);
			if (getTopY(x) > y)
				return;
		}
		if (b == BlockType.GRASS && getTopY(x) == y) {
			addLightSource(x, y);
		} else if (b == BlockType.GRASS) {
			setLight(x,y, (byte) (getLightAt(x, y)+3));
		}
		byte topLight = getLightAt(x, y - 1);
		if (Maths.randomize(0, air ? 4 : 1) == 1) {
			setLight(x, y, (byte) (topLight + 1));
			return;
		} else {
			setLight(x, y, topLight);
		}
	}