}
public boolean execute(int x, int y, int z, boolean neighbours) {
// Spout.getLogger().info("Resolving lower for " + x + ", " + y + ", " + z);
for (int f = 0; f < allFaces.length; f++) {
BlockFace face = allFaces[f];
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);
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 = previousLevel - nMaterial.getOpacity() - 1;