Vector3f top = material.getTop();
int topX = top.getFloorX();
int topY = top.getFloorY();
int topZ = top.getFloorZ();
IntVector4 v;
while ((v = fifo.read()) != null) {
int center = getLightLevel(light, v.getX(), v.getY(), v.getZ());
log("(Higher) checking center (W = " + v.getW() + ")", v, center);
if (center <= 1 || v.getW() != center) {
continue;
}
BlockMaterial m = material.get(v.getX(), v.getY(), v.getZ());
if (m == BlockMaterial.UNGENERATED) {
continue;
}
final boolean boundary = v.getX() == baseX || v.getX() == (topX - 1) || v.getY() == baseY || v.getY() == topY - 1 || v.getZ() == baseZ || v.getZ() == topZ - 1;
for (BlockFace face : allFaces) {
IntVector3 off = face.getIntOffset();
int nx = v.getX() + off.getX();
int ny = v.getY() + off.getY();
int nz = v.getZ() + off.getZ();
if (boundary && (nx < baseX || nx >= topX || ny <= baseY || ny >= topY || nz < baseZ || nz >= topZ)) {
continue;
}
BlockMaterial other = material.get(nx, ny, nz);