// Scottish whisky distillery
var y0 = 8;
// ground
fill(0, y0 - 1, 0, 79, y0 - 1, 67, 'dirt');
fill(0, y0, 0, 79, y0, 67, 'grass_block');
// river
fill(0, y0 - 1, 0, 79, y0, 8, 'water');
// still house: long stone building
var x1 = 20, x2 = 46, z1 = 24, z2 = 38;
fill(x1, y0 + 1, z1, x2, y0 + 10, z2, 'stone_bricks');
fill(x1 + 1, y0 + 1, z1 + 1, x2 - 1, y0 + 10, z2 - 1, 'air');
fill(x1, y0 + 1, z1, x2, y0 + 1, z2, 'stone_bricks');
// whitewash the outside walls
fill(x1, y0 + 3, z1, x2, y0 + 9, z1, 'white_concrete');
fill(x1, y0 + 3, z2, x2, y0 + 9, z2, 'white_concrete');
fill(x1, y0 + 3, z1, x1, y0 + 9, z2, 'white_concrete');
fill(x2, y0 + 3, z1, x2, y0 + 9, z2, 'white_concrete');
// windows
for (var wx = x1 + 3; wx < x2 - 2; wx += 4) {
fill(wx, y0 + 4, z1, wx + 1, y0 + 6, z1, 'glass_pane');
fill(wx, y0 + 4, z2, wx + 1, y0 + 6, z2, 'glass_pane');
}
// door
fill(32, y0 + 2, z2, 33, y0 + 3, z2, 'air');
ps(32, y0 + 2, z2, 'oak_door[facing=north,half=lower,hinge=left]');
ps(32, y0 + 3, z2, 'oak_door[facing=north,half=upper,hinge=left]');
// roof (slate stairs)
var mid = Math.floor((z1 + z2) / 2);
for (var x = x1; x <= x2; x++) {
for (var i = 0; i <= mid - z1; i++) {
ps(x, y0 + 11 + i, z1 + i, 'deepslate_tile_stairs[facing=south]');
ps(x, y0 + 11 + i, z2 - i, 'deepslate_tile_stairs[facing=north]');
}
}
// kiln tower with pagoda roof
var kx = 50, kz = 31;
fill(kx - 4, y0 + 1, kz - 4, kx + 4, y0 + 18, kz + 4, 'stone_bricks');
fill(kx - 3, y0 + 1, kz - 3, kx + 3, y0 + 18, kz + 3, 'air');
fill(kx - 4, y0 + 1, kz - 4, kx + 4, y0 + 1, kz + 4, 'stone_bricks');
// pagoda roof: two square layers
for (var s = 0; s < 4; s++) {
fill(kx - 5 + s, y0 + 19 + s, kz - 5 + s, kx + 5 - s, y0 + 19 + s, kz + 5 - s, 'deepslate_tiles');
}
for (var s2 = 0; s2 < 3; s2++) {
fill(kx - 4 + s2, y0 + 24 + s2, kz - 4 + s2, kx + 4 - s2, y0 + 24 + s2, kz + 4 - s2, 'deepslate_tiles');
}
pb(kx, y0 + 27, kz, 'copper_block');
// copper pot stills inside
for (var c = 0; c < 3; c++) {
var cx = 26 + c * 6;
fill(cx - 1, y0 + 2, 29, cx + 1, y0 + 5, 31, 'copper_block');
fill(cx, y0 + 6, 30, cx, y0 + 8, 30, 'copper_block');
}
// casks
for (var b = 0; b < 8; b++) {
pb(22 + b * 2, y0 + 2, 36, 'barrel');
pb(22 + b * 2, y0 + 3, 36, 'barrel');
}
// mezzanine
fill(x1 + 1, y0 + 6, 34, x2 - 1, y0 + 6, z2 - 1, 'oak_planks');
for (var l = 0; l < 5; l++) {
ps(24, y0 + 2 + l, 33, 'ladder[facing=south]');
}
for (var b2 = 0; b2 < 6; b2++) {
pb(26 + b2 * 3, y0 + 7, 36, 'barrel');
}
// lanterns
for (var lz = 27; lz <= 35; lz += 4) {
pb(28, y0 + 9, lz, 'lantern');
pb(38, y0 + 9, lz, 'lantern');
}
// low stone wall
for (var px = 12; px <= 62; px++) {
pb(px, y0 + 1, 48, 'cobblestone_wall');
pb(px, y0 + 1, 16, 'cobblestone_wall');
}
for (var pz = 16; pz <= 48; pz++) {
pb(12, y0 + 1, pz, 'cobblestone_wall');
pb(62, y0 + 1, pz, 'cobblestone_wall');
}
// path
fill(32, y0, 39, 33, y0, 48, 'gravel');
// a couple of trees
placeTree(16, y0 + 1, 20, 'oak');
placeTree(58, y0 + 1, 44, 'oak');