// Norwegian stave church
var y0 = 0;
// ground
fill(-20, y0 - 1, -20, 20, y0 - 1, 20, 'stone');
fill(-20, y0, -20, 20, y0, 20, 'grass_block');
// floor
fill(-7, y0 + 1, -10, 7, y0 + 1, 10, 'spruce_planks');
// walls (dark timber)
var x, y, z;
for (y = y0 + 2; y <= y0 + 9; y++) {
for (x = -7; x <= 7; x++) {
pb(x, y, -10, 'dark_oak_planks');
pb(x, y, 10, 'dark_oak_planks');
}
for (z = -10; z <= 10; z++) {
pb(-7, y, z, 'dark_oak_planks');
pb(7, y, z, 'dark_oak_planks');
}
}
// door
fill(-1, y0 + 2, -10, 1, y0 + 4, -10, 'air');
ps(0, y0 + 2, -10, 'dark_oak_door[facing=north,half=lower,hinge=left]');
ps(0, y0 + 3, -10, 'dark_oak_door[facing=north,half=upper,hinge=left]');
// small round windows
for (z = -6; z <= 6; z = z + 4) {
pb(-7, y0 + 7, z, 'glass');
pb(7, y0 + 7, z, 'glass');
}
// roof (gable, spruce stairs)
var step;
for (z = -10; z <= 10; z++) {
for (step = 0; step <= 7; step++) {
ps(-7 + step, y0 + 10 + step, z, 'spruce_stairs[facing=east]');
ps(7 - step, y0 + 10 + step, z, 'spruce_stairs[facing=west]');
}
}
// tower over the nave
for (y = y0 + 10; y <= y0 + 20; y++) {
for (x = -3; x <= 3; x++) {
pb(x, y, -3, 'dark_oak_planks');
pb(x, y, 3, 'dark_oak_planks');
}
for (z = -3; z <= 3; z++) {
pb(-3, y, z, 'dark_oak_planks');
pb(3, y, z, 'dark_oak_planks');
}
}
// tower roof
for (step = 0; step <= 3; step++) {
for (x = -3 + step; x <= 3 - step; x++) {
for (z = -3 + step; z <= 3 - step; z++) {
pb(x, y0 + 21 + step, z, 'spruce_planks');
}
}
}
// spire
fill(0, y0 + 25, 0, 0, y0 + 27, 0, 'dark_oak_fence');
// covered walkway posts
for (z = -10; z <= 10; z = z + 2) {
fill(-10, y0 + 1, z, -10, y0 + 4, z, 'dark_oak_log');
fill(10, y0 + 1, z, 10, y0 + 4, z, 'dark_oak_log');
}
for (z = -10; z <= 10; z++) {
for (x = -10; x <= -8; x++) { pb(x, y0 + 5, z, 'spruce_slab'); }
for (x = 8; x <= 10; x++) { pb(x, y0 + 5, z, 'spruce_slab'); }
}
// benches inside
for (z = -6; z <= 6; z = z + 2) {
for (x = -4; x <= -2; x++) { ps(x, y0 + 2, z, 'spruce_stairs[facing=north]'); }
for (x = 2; x <= 4; x++) { ps(x, y0 + 2, z, 'spruce_stairs[facing=north]'); }
}
// raised chancel at the far end
fill(-4, y0 + 2, 7, 4, y0 + 2, 9, 'stone_bricks');
pb(0, y0 + 3, 9, 'stone_bricks');
// lanterns
for (z = -6; z <= 6; z = z + 4) {
pb(-6, y0 + 6, z, 'lantern');
pb(6, y0 + 6, z, 'lantern');
}
// stair up to the gallery
for (step = 0; step <= 4; step++) {
ps(-5, y0 + 2 + step, -8 + step, 'spruce_stairs[facing=south]');
}
fill(-6, y0 + 6, -9, 6, y0 + 6, -6, 'spruce_planks');
// path
for (z = -11; z >= -18; z--) {
fill(-1, y0, z, 1, y0, z, 'gravel');
}