// Mississippi paddle steamer at a wooden dock
// river water and bed
fill(0, 0, 0, 55, 6, 63, 'sand');
fill(12, 7, 0, 55, 10, 63, 'water');
// river bank on the west
fill(0, 7, 0, 11, 11, 63, 'dirt');
fill(0, 12, 0, 11, 12, 63, 'grass_block');
// hull: white box, 40 long, 14 wide
fill(18, 8, 10, 31, 12, 48, 'white_concrete');
fill(19, 9, 11, 30, 12, 47, 'air');
// deck
fill(18, 13, 10, 31, 13, 48, 'spruce_planks');
// second deck
fill(18, 14, 12, 31, 17, 46, 'white_concrete');
fill(19, 14, 13, 30, 16, 45, 'air');
fill(18, 18, 12, 31, 18, 46, 'spruce_planks');
// third deck
fill(20, 19, 14, 29, 22, 44, 'white_concrete');
fill(21, 19, 15, 28, 21, 43, 'air');
fill(20, 23, 14, 29, 23, 44, 'spruce_planks');
// pilot house
fill(22, 24, 26, 27, 27, 32, 'white_concrete');
fill(23, 24, 27, 26, 26, 31, 'air');
fill(22, 24, 26, 27, 26, 26, 'glass');
fill(22, 24, 32, 27, 26, 32, 'glass');
fill(22, 28, 26, 27, 28, 32, 'spruce_planks');
// smokestacks
fill(21, 19, 18, 22, 34, 19, 'black_concrete');
fill(27, 19, 18, 28, 34, 19, 'black_concrete');
pb(20, 35, 18, 'black_concrete');
pb(23, 35, 19, 'black_concrete');
pb(26, 35, 18, 'black_concrete');
pb(29, 35, 19, 'black_concrete');
// railings on the decks
var i;
for (i = 18; i <= 31; i++) {
pb(i, 14, 10, 'oak_fence');
pb(i, 14, 48, 'oak_fence');
pb(i, 19, 12, 'oak_fence');
pb(i, 19, 46, 'oak_fence');
}
for (i = 10; i <= 48; i++) {
pb(18, 14, i, 'oak_fence');
pb(31, 14, i, 'oak_fence');
}
for (i = 12; i <= 46; i++) {
pb(18, 19, i, 'oak_fence');
pb(31, 19, i, 'oak_fence');
}
// windows on the second deck
for (i = 15; i <= 43; i = i + 3) {
pb(18, 15, i, 'glass_pane');
pb(31, 15, i, 'glass_pane');
pb(18, 16, i, 'glass_pane');
pb(31, 16, i, 'glass_pane');
}
// paddle wheel at the stern (red)
var a, y2, z2;
for (a = 0; a < 360; a = a + 10) {
y2 = Math.round(12 + 6 * Math.sin(a * Math.PI / 180));
z2 = Math.round(53 + 6 * Math.cos(a * Math.PI / 180));
pb(19, y2, z2, 'red_concrete');
pb(30, y2, z2, 'red_concrete');
}
for (a = 0; a < 360; a = a + 45) {
y2 = Math.round(12 + 6 * Math.sin(a * Math.PI / 180));
z2 = Math.round(53 + 6 * Math.cos(a * Math.PI / 180));
fill(19, y2, z2, 30, y2, z2, 'red_concrete');
}
fill(19, 12, 53, 30, 12, 53, 'oak_log');
// interior: a few things
for (i = 0; i < 3; i++) {
var fy = 14 + i * 5;
pb(22, fy, 20, 'crafting_table');
pb(24, fy, 22, 'red_carpet');
pb(25, fy, 22, 'red_carpet');
pb(27, fy, 25, 'chest');
pb(23, fy, 30, 'barrel');
}
ps(24, 14, 40, 'red_bed[facing=north,part=foot]');
ps(24, 14, 39, 'red_bed[facing=north,part=head]');
pb(26, 17, 30, 'lantern');
pb(26, 22, 30, 'lantern');
// ladder between decks
for (i = 14; i <= 22; i++) {
ps(19, i, 20, 'ladder[facing=east]');
}
// wooden dock
fill(12, 12, 18, 17, 12, 40, 'spruce_planks');
for (i = 18; i <= 40; i = i + 4) {
fill(17, 8, i, 17, 11, i, 'oak_log');
}
pb(14, 13, 20, 'barrel');
pb(15, 13, 20, 'barrel');
pb(14, 13, 30, 'chest');
placeTree(5, 13, 20, 'oak');
placeTree(6, 13, 35, 'oak');