return true;
}
BlockMaterial m = material.get(x, y, z);
ByteBitSet centerOcclusionSet = m.getOcclusion(m.getData());
for (int f = 0; f < allFaces.length; f++) {
BlockFace face = allFaces[f];
if (centerOcclusionSet.get(face)) {
continue;
}
IntVector3 offset = face.getIntOffset();
int nx = x + offset.getX();
int ny = y + offset.getY();
int nz = z + offset.getZ();
short nId = material.getId(nx, ny, nz);
if (nId == BlockMaterial.UNGENERATED.getId()) {
continue;
}
int neighborLight = manager.getLightLevel(light, nx, ny, nz, true);
if (neighborLight >= lightLevel - 1) {
continue;
}
short nData = material.getData(nx, ny, nz);
BlockMaterial nMaterial = BlockMaterial.get(nId, nData);
ByteBitSet occlusionSet = nMaterial.getOcclusion(nData);
if (occlusionSet.get(face.getOpposite())) {
continue;
}
int newLight = targetLevel - nMaterial.getOpacity() - 1;
// Spout.getLogger().info("new light " + newLight + " neighbor light " + neighborLight + " for neighbor " + nx + ", " + ny + ", " + nz);