// Thai stilt house on a river bank
var groundY = 10;
var deckY = 17;
var walkY = 18;
// ground
fill(0, 0, 0, 63, groundY, 63, 'dirt');
fill(0, groundY, 0, 63, groundY, 63, 'grass_block');
// river along the north side
fill(0, groundY - 3, 0, 63, groundY, 22, 'water');
fill(0, groundY - 4, 0, 63, groundY - 4, 22, 'sand');
// stilts
var x, z, y;
for (x = 20; x <= 40; x = x + 4) {
for (z = 18; z <= 42; z = z + 4) {
fill(x, groundY - 3, z, x, deckY - 1, z, 'oak_log');
}
}
// deck floor
fill(20, deckY, 18, 40, deckY, 42, 'oak_planks');
// walls of the house
fill(20, walkY, 18, 40, walkY + 4, 34, 'dark_oak_planks');
fill(21, walkY, 19, 39, walkY + 4, 33, 'air');
// door on the south wall
fill(30, walkY, 34, 30, walkY + 1, 34, 'air');
// windows
for (z = 22; z <= 32; z = z + 4) {
fill(20, walkY + 2, z, 20, walkY + 2, z, 'air');
fill(40, walkY + 2, z, 40, walkY + 2, z, 'air');
ps(19, walkY + 2, z, 'oak_trapdoor[facing=west,half=bottom,open=true]');
ps(41, walkY + 2, z, 'oak_trapdoor[facing=east,half=bottom,open=true]');
}
for (x = 24; x <= 36; x = x + 4) {
fill(x, walkY + 2, 18, x, walkY + 2, 18, 'air');
}
// gable roof
var roofY = walkY + 5;
for (z = 18; z <= 34; z++) {
for (y = 0; y <= 10; y++) {
ps(20 + y, roofY + y, z, 'brick_stairs[facing=east]');
ps(40 - y, roofY + y, z, 'brick_stairs[facing=west]');
}
ps(30, roofY + 10, z, 'brick_slab[type=top]');
}
// gable ends
for (y = 0; y <= 10; y++) {
fill(20 + y, roofY + y, 18, 40 - y, roofY + y, 18, 'dark_oak_planks');
fill(20 + y, roofY + y, 34, 40 - y, roofY + y, 34, 'dark_oak_planks');
}
// kalae finials
for (y = 1; y <= 3; y++) {
pb(30 - y, roofY + 10 + y, 18, 'oak_log');
pb(30 + y, roofY + 10 + y, 18, 'oak_log');
pb(30 - y, roofY + 10 + y, 34, 'oak_log');
pb(30 + y, roofY + 10 + y, 34, 'oak_log');
}
// veranda railing
for (x = 20; x <= 40; x++) {
pb(x, walkY, 42, 'oak_fence');
}
for (z = 35; z <= 42; z++) {
pb(20, walkY, z, 'oak_fence');
pb(40, walkY, z, 'oak_fence');
}
// stairs from the ground up to the veranda
for (y = 0; y <= 7; y++) {
ps(29, groundY + 1 + y, 50 - y, 'oak_stairs[facing=north]');
ps(30, groundY + 1 + y, 50 - y, 'oak_stairs[facing=north]');
ps(31, groundY + 1 + y, 50 - y, 'oak_stairs[facing=north]');
}
// interior furniture
pb(26, walkY, 24, 'oak_fence');
pb(26, walkY + 1, 24, 'oak_pressure_plate');
pb(25, walkY, 24, 'red_carpet');
pb(27, walkY, 24, 'red_carpet');
pb(24, walkY, 30, 'chest');
pb(34, walkY, 30, 'crafting_table');
placeBed(35, walkY, 22, 'red', 'north');
for (x = 24; x <= 36; x = x + 6) {
pb(x, walkY + 4, 26, 'lantern');
}
// a few plants outside
for (x = 6; x <= 58; x = x + 7) {
pb(x, groundY + 1, 48, 'grass');
pb(x + 2, groundY + 1, 54, 'oak_sapling');
}