← Back to Gallery

Loading 3D viewer…

Dutch smock windmill home (bare)

by Jorge Barbero

Dimensions
88×76×88
Blocks
15,430
Compute Time
0.9s
Generation Time
3.9s
Model
claude-opus-5
Created
September 1, 2026
windmilldutcharchitectureautoevalbare
Prompt

User Prompt

a Dutch canal-side smock windmill converted into a miller's home: octagonal tarred-timber tower on a whitewashed brick base, thatched cap with four lattice sails, a wooden stage gallery balcony ringing the tower, dormer windows, and a furnished two-level interior with a staircase up to the grinding floor

Enhanced Prompt

bare condition: no docs read, no prepare_build guidance applied. Plain fill/pb/ps only, hand-rolled loops, no palettes/terrain/stair helpers.

Photos

Exterior
Exteriorexterior
Ground floor
Ground floorinterior
Grinding floor
Grinding floorinterior
CraftScript Source
// windmill house

var i, j, x, y, z, r, d;

// ground
fill(-30, -2, -30, 30, -1, 30, "dirt");
fill(-30, 0, -30, 30, 0, 30, "grass_block");

// canal
fill(20, -2, -30, 30, 0, 30, "air");
fill(20, -2, -30, 30, -1, 30, "water");

// brick base, octagon-ish, radius 9, 8 blocks tall
for (y = 0; y <= 7; y++) {
    for (x = -9; x <= 9; x++) {
        for (z = -9; z <= 9; z++) {
            if (Math.abs(x) <= 9 && Math.abs(z) <= 9 && (Math.abs(x) + Math.abs(z)) <= 12) {
                var inner = (Math.abs(x) <= 8 && Math.abs(z) <= 8 && (Math.abs(x) + Math.abs(z)) <= 11);
                if (!inner) {
                    pb(x, y, z, "white_concrete");
                }
            }
        }
    }
}

// floor
for (x = -9; x <= 9; x++) {
    for (z = -9; z <= 9; z++) {
        if ((Math.abs(x) + Math.abs(z)) <= 11 && Math.abs(x) <= 8 && Math.abs(z) <= 8) {
            pb(x, 0, z, "oak_planks");
        }
    }
}

// tower, dark wood, tapering
for (y = 8; y <= 19; y++) {
    r = 8 - (y - 8) * 0.25;
    for (x = -9; x <= 9; x++) {
        for (z = -9; z <= 9; z++) {
            d = Math.sqrt(x * x + z * z);
            if (d <= r && d > r - 1.2) {
                pb(x, y, z, "dark_oak_planks");
            }
        }
    }
}

// balcony platform around the tower
for (x = -11; x <= 11; x++) {
    for (z = -11; z <= 11; z++) {
        d = Math.sqrt(x * x + z * z);
        if (d <= 11 && d > 7.5) {
            pb(x, 8, z, "oak_planks");
        }
        if (d <= 11 && d > 10) {
            pb(x, 9, z, "oak_fence");
        }
    }
}

// second floor
for (x = -8; x <= 8; x++) {
    for (z = -8; z <= 8; z++) {
        d = Math.sqrt(x * x + z * z);
        if (d <= 7) pb(x, 8, z, "oak_planks");
    }
}

// hollow out the inside
for (y = 1; y <= 19; y++) {
    if (y == 8) continue;
    for (x = -8; x <= 8; x++) {
        for (z = -8; z <= 8; z++) {
            d = Math.sqrt(x * x + z * z);
            var rr = (y <= 7) ? 7.5 : (8 - (y - 8) * 0.25) - 1.2;
            if (d <= rr) pb(x, y, z, "air");
        }
    }
}

// thatched roof cone
for (i = 0; i <= 10; i++) {
    r = 7 - i * 0.7;
    y = 20 + i;
    for (x = -8; x <= 8; x++) {
        for (z = -8; z <= 8; z++) {
            d = Math.sqrt(x * x + z * z);
            if (d <= r) pb(x, y, z, "hay_block");
        }
    }
}
pb(0, 31, 0, "hay_block");

// sails - four blades in a cross
fill(0, 26, -1, 0, 26, -5, "dark_oak_log[axis=z]");
for (i = 1; i <= 14; i++) {
    pb(i, 26, -6, "oak_fence");
    pb(-i, 26, -6, "oak_fence");
    pb(0, 26 + i, -6, "oak_fence");
    pb(0, 26 - i, -6, "oak_fence");
    if (i <= 10) {
        pb(i, 27, -6, "white_wool");
        pb(-i, 25, -6, "white_wool");
        pb(1, 26 + i, -6, "white_wool");
        pb(-1, 26 - i, -6, "white_wool");
    }
}

// door
fill(0, 1, 8, 0, 2, 9, "air");
ps(0, 1, 9, "oak_door[facing=south,half=lower,hinge=left]");
ps(0, 2, 9, "oak_door[facing=south,half=upper,hinge=left]");

// windows
pb(9, 3, 0, "glass_pane");
pb(9, 4, 0, "glass_pane");
pb(-9, 3, 0, "glass_pane");
pb(-9, 4, 0, "glass_pane");
pb(0, 3, -9, "glass_pane");
pb(0, 4, -9, "glass_pane");
pb(6, 13, 0, "glass_pane");
pb(-6, 13, 0, "glass_pane");
pb(0, 13, 6, "glass_pane");
pb(0, 13, -6, "glass_pane");

// ladder up to the second floor
for (y = 1; y <= 8; y++) {
    ps(-6, y, -2, "ladder[facing=south]");
}
pb(-6, 8, -2, "air");

// furniture, ground floor
pb(2, 1, -5, "crafting_table");
pb(3, 1, -5, "furnace[facing=south]");
pb(4, 1, -5, "chest[facing=south]");
pb(-2, 1, 4, "oak_stairs[facing=north]");
pb(-1, 1, 4, "oak_stairs[facing=north]");
pb(0, 1, 2, "oak_fence");
pb(0, 2, 2, "oak_pressure_plate");
pb(3, 1, 3, "barrel");
pb(0, 6, 0, "lantern[hanging=true]");
pb(4, 1, 0, "red_bed[facing=north,part=foot]");
pb(4, 2, 0, "red_bed[facing=north,part=head]");

// furniture, grinding floor
pb(0, 9, -2, "smooth_stone");
pb(1, 9, -2, "smooth_stone");
pb(0, 9, -1, "smooth_stone");
pb(1, 9, -1, "smooth_stone");
pb(3, 9, 2, "hay_block");
pb(3, 9, 3, "hay_block");
pb(-3, 9, 2, "barrel");
pb(0, 17, 0, "lantern[hanging=true]");

// path
for (z = 10; z <= 18; z++) {
    pb(-1, 0, z, "gravel");
    pb(0, 0, z, "gravel");
    pb(1, 0, z, "gravel");
}

// a couple of trees
for (i = 0; i < 5; i++) pb(15, 1 + i, 12, "oak_log[axis=y]");
for (x = 13; x <= 17; x++) for (z = 10; z <= 14; z++) for (y = 6; y <= 7; y++) pb(x, y, z, "oak_leaves[persistent=true]");
for (i = 0; i < 5; i++) pb(-15, 1 + i, -12, "oak_log[axis=y]");
for (x = -17; x <= -13; x++) for (z = -14; z <= -10; z++) for (y = 6; y <= 7; y++) pb(x, y, z, "oak_leaves[persistent=true]");

Static Renders

Dutch smock windmill home (bare) isometric viewisometric
Dutch smock windmill home (bare) front viewfront
Dutch smock windmill home (bare) side viewside
Dutch smock windmill home (bare) back viewback
Dutch smock windmill home (bare) top viewtop