X : -ALL: Block.box(0, 0, 14.45, 16, 16, 16) PC: -FOOT: Stream.of( Block.box(4, 0, 14, 12, 16, 16), Block.box(12, 8, 14, 16, 14, 16), Block.box(0, 8, 14, 4, 14, 16) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get(); -HEAD: Block.box(4, 0, 14, 12, 16, 16) -RIGHT: Block.box(9, 8, 14, 16, 14, 16) -LEFT: Block.box(0, 8, 14, 7, 14, 16) C: -FOOT: Block.box(4, 0, 14, 12, 16, 16) -HEAD: Stream.of( Block.box(4, 2, 14, 12, 8, 16), Block.box(4, 8, 14, 12, 16, 16), Block.box(4, 0, 14, 12, 2, 16), Block.box(12, 2, 14, 16, 8, 16), Block.box(0, 2, 14, 4, 8, 16) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get(); -LEFT: Block.box(0, 2, 14, 7, 8, 16) -RIGHT:Block.box(9, 2, 14, 16, 8, 16) -POLE upper: Shapes.join(Stream.of( Block.box(8, 0, 6, 10, 16, 8), Block.box(6, 0, 8, 8, 16, 10), Block.box(8, 0, 8, 10, 16, 10), Block.box(6, 0, 6, 8, 16, 8) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(1, 13.5, 10, 15, 15, 11), Block.box(1, 10.5, 10, 2.5, 13.5, 11), Block.box(1, 9, 10, 15, 10.5, 11), Block.box(5.5, 10.5, 10, 10.5, 13.5, 11), Block.box(13.5, 10.5, 10, 15, 13.5, 11) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, BooleanOp.OR) below: Shapes.join(Stream.of( Block.box(1, 6.5, 10, 15, 8, 11), Block.box(1, 3.5, 10, 2.5, 6.5, 11), Block.box(1, 2, 10, 15, 3.5, 11), Block.box(5.5, 3.5, 10, 10.5, 6.5, 11), Block.box(13.5, 3.5, 10, 15, 6.5, 11) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(8, 0, 6, 10, 16, 8), Block.box(6, 0, 8, 8, 16, 10), Block.box(8, 0, 8, 10, 16, 10), Block.box(6, 0, 6, 8, 16, 8) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, BooleanOp.OR) -BED: Stream.of( Stream.of( Stream.of( Block.box(13.25, 9, -4.5, 17.75, 10, 0.5), Block.box(16.75, 10, -2.5, 17.75, 14, -1.5), Block.box(14.25, 13, -2.5, 16.75, 14, -1.5), Block.box(13.25, 10, -2.5, 14.25, 14, -1.5) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(-1.75, 9, -4.5, 2.75, 10, 0.5), Block.box(-1.75, 10, -2.5, -0.75, 14, -1.5), Block.box(-0.75, 13, -2.5, 1.75, 14, -1.5), Block.box(1.75, 10, -2.5, 2.75, 14, -1.5) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(0.75, 8, 14.5, 5.25, 9, 19.5), Block.box(1.75, 12, 16.5, 4.25, 13, 17.5), Block.box(0.75, 9, 16.5, 1.75, 13, 17.5), Block.box(4.25, 9, 16.5, 5.25, 13, 17.5) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(14.25, 9, 16.5, 15.25, 13, 17.5), Block.box(10.75, 9, 16.5, 11.75, 13, 17.5), Block.box(11.75, 12, 16.5, 14.25, 13, 17.5), Block.box(10.75, 8, 14.5, 15.25, 9, 19.5) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get(); ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(2, 0.1, 14, 4, 6.1, 16), Block.box(12, 0, 14, 14, 6, 16), Block.box(12, 0, 0, 14, 6, 2), Block.box(2, 0, 0, 4, 6, 2) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(2, 6, -4, 4, 8, 12), Block.box(2, 6, 12, 4, 8, 19), Block.box(12, 6, 12, 14, 8, 19), Block.box(12, 6, -4, 14, 8, 12), Block.box(-1.75, 8, -3, 4, 9, -1), Block.box(12, 8, -3, 17.75, 9, -1) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();, Stream.of( Block.box(2.152, 8.48, 0.82, 3.082, 14.2, 11.64), Block.box(0.902, 8.48, 0.82, 2.082, 15.2, 11.64), Block.box(4.28, 12.88, 0.92, 11.72, 14.06, 11.54), Block.box(5.03, 11.98, 0.92, 10.97, 12.91, 11.54), Block.box(13.31, 6.95, 0.82, 14.49, 13.67, 11.64), Block.box(12.31, 6.95, 0.82, 13.24, 12.67, 11.64) ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get(); ).reduce((v1, v2) -> Shapes.join(v1, v2, BooleanOp.OR)).get();