// Japanese gassho-zukuri farmhouse with a big steep thatched roof
var x, y, z, i;
// ground
fill(4, 10, 4, 58, 11, 58, 'dirt');
fill(4, 12, 4, 58, 12, 58, 'grass_block');
// water channel with stone edges
fill(8, 12, 10, 9, 12, 50, 'water');
fill(7, 12, 10, 7, 12, 50, 'stone');
fill(10, 12, 10, 10, 12, 50, 'stone');
// vegetable patch
fill(44, 12, 20, 52, 12, 34, 'farmland');
fill(48, 12, 20, 48, 12, 34, 'water');
for (x = 44; x <= 52; x++) {
for (z = 20; z <= 34; z++) {
if (x === 48) continue;
if ((x + z) % 2 === 0) ps(x, 13, z, 'wheat[age=7]');
else ps(x, 13, z, 'carrots[age=7]');
}
}
// stone plot edge
for (x = 14; x <= 42; x++) { pb(x, 13, 12, 'cobblestone'); pb(x, 13, 46, 'cobblestone'); }
for (z = 12; z <= 46; z++) { pb(14, 13, z, 'cobblestone'); pb(42, 13, z, 'cobblestone'); }
// house base
fill(18, 13, 18, 36, 13, 40, 'stone_bricks');
// walls - white plaster with dark wood posts
fill(18, 14, 18, 36, 18, 18, 'white_terracotta');
fill(18, 14, 40, 36, 18, 40, 'white_terracotta');
fill(18, 14, 18, 18, 18, 40, 'white_terracotta');
fill(36, 14, 18, 36, 18, 40, 'white_terracotta');
for (x = 18; x <= 36; x += 4) {
fill(x, 14, 18, x, 18, 18, 'dark_oak_log');
fill(x, 14, 40, x, 18, 40, 'dark_oak_log');
}
for (z = 18; z <= 40; z += 4) {
fill(18, 14, z, 18, 18, z, 'dark_oak_log');
fill(36, 14, z, 36, 18, z, 'dark_oak_log');
}
// windows
for (z = 21; z <= 37; z += 4) {
ps(18, 16, z, 'white_stained_glass_pane');
ps(18, 17, z, 'white_stained_glass_pane');
ps(36, 16, z, 'white_stained_glass_pane');
ps(36, 17, z, 'white_stained_glass_pane');
}
// door
fill(27, 14, 18, 27, 15, 18, 'air');
ps(27, 14, 18, 'dark_oak_door[facing=north,half=lower,hinge=left]');
ps(27, 15, 18, 'dark_oak_door[facing=north,half=upper,hinge=left]');
// second floor
fill(19, 19, 19, 35, 19, 39, 'spruce_planks');
// big steep thatched roof (A-frame), ridge along Z at x=27
for (z = 18; z <= 40; z++) {
for (i = 0; i <= 8; i++) {
var yr = 20 + i * 2;
fill(19 + i, yr, z, 19 + i, yr + 1, z, 'hay_block');
fill(35 - i, yr, z, 35 - i, yr + 1, z, 'hay_block');
}
fill(27, 36, z, 27, 37, z, 'hay_block');
ps(27, 38, z, 'spruce_slab[type=top]');
}
// gable triangles
for (i = 0; i <= 8; i++) {
for (x = 19 + i; x <= 35 - i; x++) {
pb(x, 20 + i * 2, 18, 'white_terracotta');
pb(x, 21 + i * 2, 18, 'white_terracotta');
pb(x, 20 + i * 2, 40, 'white_terracotta');
pb(x, 21 + i * 2, 40, 'white_terracotta');
}
}
for (y = 20; y <= 36; y++) { pb(27, y, 18, 'dark_oak_log'); pb(27, y, 40, 'dark_oak_log'); }
for (y = 22; y <= 30; y += 4) {
for (x = 22; x <= 32; x++) { ps(x, y, 18, 'white_stained_glass_pane'); ps(x, y, 40, 'white_stained_glass_pane'); }
}
// clear inside
fill(19, 14, 19, 35, 18, 39, 'air');
for (i = 1; i <= 8; i++) {
fill(19 + i, 20, 19, 35 - i, 19 + i * 2, 39, 'air');
}
// stairs up to the loft
for (i = 0; i <= 5; i++) {
ps(21, 14 + i, 25 - i, 'spruce_stairs[facing=north]');
}
fill(21, 19, 19, 21, 19, 20, 'air');
// interior - hearth room
for (x = 24; x <= 32; x++) for (z = 26; z <= 34; z++) pb(x, 14, z, 'green_carpet');
fill(27, 13, 30, 28, 13, 30, 'stone');
ps(27, 13, 30, 'campfire[lit=true]');
pb(24, 14, 27, 'crafting_table');
pb(25, 14, 27, 'furnace');
pb(26, 14, 27, 'barrel');
pb(33, 14, 33, 'chest');
ps(31, 14, 32, 'spruce_slab[type=bottom]');
ps(20, 14, 22, 'cauldron[level=0]');
pb(24, 17, 24, 'lantern');
pb(31, 17, 35, 'lantern');
placeBed(33, 14, 22, 'white', 'north');
placeBed(33, 14, 25, 'white', 'north');
// loft
for (x = 22; x <= 32; x += 3) pb(x, 20, 25, 'hay_block');
pb(26, 20, 30, 'barrel');
pb(28, 20, 30, 'chest');
pb(27, 24, 28, 'lantern');
// a couple of trees
fill(48, 13, 40, 48, 17, 40, 'oak_log');
makeSphere(48, 18, 40, 'oak_leaves', 3, true);
fill(12, 13, 26, 12, 16, 26, 'spruce_log');
makeSphere(12, 17, 26, 'spruce_leaves', 3, true);
// path
fill(27, 12, 10, 27, 12, 17, 'gravel');