← Back to Gallery

Loading 3D viewer…

Hanseatic Speicher on the Quay (bare)

by Jorge Barbero

Dimensions
64×48×64
Blocks
34,931
Compute Time
0.4s
Generation Time
3.9s
Model
claude-opus-5
Created
September 23, 2026
hanseaticwarehousecanalbareautoeval
Prompt

User Prompt

a Hanseatic brick-gothic merchant's warehouse-house (Speicher) on a canal quay: tall narrow red-brick facade with a stepped crow gable, a timber hoist beam and pulley at the gable peak, small arched windows in irregular rows, two interior floors connected by a wooden stair, sacks and barrels stored on the upper loft, cobbled quay and mooring bollards at the water's edge

Enhanced Prompt

condition=bare; no documentation consulted; naive CraftScript using only fill/pb/ps.

Photos

Quay facade
Quay facadeexterior
Ground floor
Ground floorinterior
Loft
Loftinterior
Stair
Stairinterior
CraftScript Source
// Hanseatic brick warehouse on a canal quay

// ground
fill(0, 0, 0, 63, 5, 47, 'stone');
fill(0, 6, 0, 63, 6, 47, 'grass_block');
// canal
fill(0, 0, 48, 63, 5, 63, 'stone');
fill(0, 6, 48, 63, 9, 63, 'air');
fill(0, 3, 48, 63, 5, 63, 'water');
// cobbled quay strip
fill(0, 6, 43, 63, 6, 47, 'cobblestone');

var x, y, z, i;

// ---- main warehouse box ----
// walls: x20..32, z28..42, from y7 to y20
fill(20, 7, 28, 32, 20, 42, 'bricks');
// hollow it out
fill(21, 7, 29, 31, 20, 41, 'air');
// ground floor and upper floor
fill(21, 7, 29, 31, 7, 41, 'oak_planks');
fill(21, 13, 29, 31, 13, 41, 'oak_planks');

// ---- roof: gable along Z, slopes east and west ----
for (z = 28; z <= 42; z++) {
    for (i = 0; i < 7; i++) {
        ps(20 + i, 21 + i, z, 'brick_stairs[facing=east]');
        ps(32 - i, 21 + i, z, 'brick_stairs[facing=west]');
    }
    pb(26, 27, z, 'brick_slab');
}

// ---- stepped crow gable on the canal side (z=42) ----
for (i = 0; i < 7; i++) {
    fill(20 + i, 21 + i, 42, 32 - i, 21 + i, 42, 'bricks');
    fill(20 + i, 21 + i, 43, 32 - i, 21 + i, 43, 'bricks');
}
// back gable
for (i = 0; i < 7; i++) {
    fill(20 + i, 21 + i, 28, 32 - i, 21 + i, 28, 'bricks');
}

// ---- hoist beam at the gable peak ----
ps(26, 27, 44, 'oak_log[axis=z]');
ps(26, 27, 45, 'oak_log[axis=z]');
pb(26, 26, 45, 'iron_chain');
pb(26, 25, 45, 'iron_chain');
pb(26, 24, 45, 'barrel');

// ---- windows, small, in rows ----
// front facade z=42
for (i = 0; i < 3; i++) {
    x = 22 + i * 4;
    fill(x, 10, 42, x + 1, 11, 42, 'glass_pane');
    fill(x, 16, 42, x + 1, 17, 42, 'glass_pane');
}
// side walls
for (z = 31; z <= 40; z += 3) {
    fill(20, 10, z, 20, 11, z, 'glass_pane');
    fill(32, 10, z, 32, 11, z, 'glass_pane');
    fill(20, 16, z, 20, 17, z, 'glass_pane');
    fill(32, 16, z, 32, 17, z, 'glass_pane');
}

// ---- door ----
fill(25, 8, 42, 27, 9, 42, 'air');
ps(26, 8, 42, 'dark_oak_door[facing=south,half=lower,hinge=left]');
ps(26, 9, 42, 'dark_oak_door[facing=south,half=upper,hinge=left]');
// loft hoist doors
fill(25, 14, 42, 27, 15, 42, 'air');
ps(26, 14, 42, 'dark_oak_door[facing=south,half=lower,hinge=left]');
ps(26, 15, 42, 'dark_oak_door[facing=south,half=upper,hinge=left]');

// ---- wooden stair between the two floors ----
fill(29, 13, 33, 30, 13, 38, 'air');
for (i = 0; i < 6; i++) {
    ps(29, 8 + i, 33 + i, 'oak_stairs[facing=south]');
    ps(30, 8 + i, 33 + i, 'oak_stairs[facing=south]');
}

// ---- interior: ground floor ----
pb(22, 8, 31, 'barrel');
pb(23, 8, 31, 'barrel');
pb(22, 9, 31, 'barrel');
pb(22, 8, 34, 'chest');
pb(24, 8, 39, 'crafting_table');
pb(25, 8, 39, 'barrel');
pb(30, 8, 30, 'barrel');
pb(29, 8, 30, 'hay_block');
pb(23, 12, 35, 'torch');
pb(28, 12, 38, 'torch');

// ---- interior: loft with sacks and barrels ----
for (i = 0; i < 4; i++) {
    pb(22 + i, 14, 30, 'hay_block');
    pb(22 + i, 15, 30, 'hay_block');
}
for (i = 0; i < 3; i++) {
    pb(22 + i, 14, 32, 'hay_block');
}
pb(28, 14, 31, 'barrel');
pb(29, 14, 31, 'barrel');
pb(28, 15, 31, 'barrel');
pb(28, 14, 34, 'barrel');
pb(24, 14, 40, 'barrel');
pb(25, 14, 40, 'hay_block');
pb(23, 18, 35, 'torch');
pb(29, 18, 38, 'torch');

// ---- quay: mooring bollards ----
for (x = 14; x <= 44; x += 5) {
    pb(x, 7, 45, 'oak_log');
    pb(x, 8, 45, 'oak_fence');
}
// a couple of crates on the quay
pb(21, 7, 44, 'barrel');
pb(22, 7, 44, 'barrel');
pb(30, 7, 44, 'hay_block');
// lamps along the quay
for (x = 18; x <= 40; x += 11) {
    pb(x, 7, 44, 'oak_fence');
    pb(x, 8, 44, 'oak_fence');
    pb(x, 9, 44, 'lantern');
}
// a path to the door
fill(26, 6, 43, 26, 6, 47, 'stone_bricks');
// some grass and flowers around
for (x = 6; x <= 58; x += 3) {
    for (z = 10; z <= 26; z += 3) {
        pb(x, 7, z, 'short_grass');
    }
}
pb(10, 7, 20, 'oak_sapling');
pb(46, 7, 22, 'oak_sapling');

Static Renders

Hanseatic Speicher on the Quay (bare) isometric viewisometric
Hanseatic Speicher on the Quay (bare) front viewfront
Hanseatic Speicher on the Quay (bare) side viewside
Hanseatic Speicher on the Quay (bare) back viewback
Hanseatic Speicher on the Quay (bare) top viewtop