&& (!BlockType.isRedstoneBlock(westSideAbove) || westSide == 0)
&& (!BlockType.isRedstoneBlock(eastSideAbove) || eastSide == 0)
&& (!BlockType.isRedstoneBlock(westSideBelow) || westSide != 0)
&& (!BlockType.isRedstoneBlock(eastSideBelow) || eastSide != 0)) {
// Possible blocks north / south
handleDirectWireInput(new Vector(x - 1, y, z), isOn, v);
handleDirectWireInput(new Vector(x + 1, y, z), isOn, v);
handleDirectWireInput(new Vector(x - 1, y - 1, z), isOn, v);
handleDirectWireInput(new Vector(x + 1, y - 1, z), isOn, v);
}
if (!BlockType.isRedstoneBlock(northSide)
&& !BlockType.isRedstoneBlock(southSide)
&& (!BlockType.isRedstoneBlock(northSideAbove) || northSide == 0)
&& (!BlockType.isRedstoneBlock(southSideAbove) || southSide == 0)
&& (!BlockType.isRedstoneBlock(northSideBelow) || northSide != 0)
&& (!BlockType.isRedstoneBlock(southSideBelow) || southSide != 0)) {
// Possible blocks west / east
handleDirectWireInput(new Vector(x, y, z - 1), isOn, v);
handleDirectWireInput(new Vector(x, y, z + 1), isOn, v);
handleDirectWireInput(new Vector(x, y - 1, z - 1), isOn, v);
handleDirectWireInput(new Vector(x, y - 1, z + 1), isOn, v);
}
// Can be triggered from below
handleDirectWireInput(new Vector(x, y + 1, z), isOn, v);
return newLevel;
}
// For redstone wires, the code already exited this method
// Non-wire blocks proceed
handleDirectWireInput(new Vector(x - 1, y, z), isOn, v);
handleDirectWireInput(new Vector(x + 1, y, z), isOn, v);
handleDirectWireInput(new Vector(x - 1, y - 1, z), isOn, v);
handleDirectWireInput(new Vector(x + 1, y - 1, z), isOn, v);
handleDirectWireInput(new Vector(x, y, z - 1), isOn, v);
handleDirectWireInput(new Vector(x, y, z + 1), isOn, v);
handleDirectWireInput(new Vector(x, y - 1, z - 1), isOn, v);
handleDirectWireInput(new Vector(x, y - 1, z + 1), isOn, v);
// Can be triggered from below
handleDirectWireInput(new Vector(x, y + 1, z), isOn, v);
return newLevel;
} finally {
w.destroyFake();
}