← Back to Gallery

Loading 3D viewer…

Alpine cable-car summit station (indexed)

by Jorge Barbero

Dimensions
80×56×72
Blocks
131,422
Compute Time
5.6s
Generation Time
3m 10s
Model
claude-opus-5
Created
September 13, 2026
alpinestationcable-carautoevalindexedart-deco
Prompt

User Prompt

an alpine cable-car summit station perched on a rocky spur: a concrete-and-timber station hall with a wide overhanging eave, a steel gantry carrying the big cable bull-wheels, a gondola cabin docked at the boarding platform, a panoramic glazed waiting room with benches and a ticket counter inside, an internal timber stair down to a lower machinery floor, snow-dusted rock terrain and a support pylon with cables running downslope

Enhanced Prompt

indexed condition: prepare_build + search_docs({action:"related"}) which routed to vehicles-machines/Gondola, architecture-guide/Art Deco (§8) and block-states/Glazed terracotta. Designed from scratch as a 1930s art-deco alpine terminus: stepped setbacks, gold accent lines, quartz+concrete facade with timber louvre, hip roof with deep eaves, DIRECT process with gradient/noise palettes passed straight into fills.

Photos

Deco terminus
Deco terminusexterior
Waiting hall
Waiting hallinterior
Machinery floor
Machinery floorinterior
CraftScript Source
// === BUILD PLAN ===
// Style: 1930s art-deco alpine terminus (architecture-guide §8: stepped setbacks, gold accent
//        lines, quartz+concrete, strict symmetry) crossed with a timber louvre band.
// Footprint: T-composite — hall 23x17 (x10-32, z38-54) + machine tower 13x11 (x32-44, z41-51)
//            + cantilevered boarding deck on piers (x44-58, z42-52). Slope falls to +X.
// Height: floor Y27, walk Y28, wall top Y35, hip roof Y36->ridge Y41; tower parapet Y44,
//         bull-wheel gantry inside the glazed tower head Y36-Y42.
// Lower level: machinery floor carved under the tower, floor Y20, walk Y21, ceiling Y26.
//
// GROUND FLOOR (top-down, 1 char = 1 block, +X to the right = downslope):
//   x:10..............32 33.......44 45..........58
//   z38 ####W#####W#####
//   z42 #  ticket  |caf#  #  TOWER  #  === DECK (piers) ===
//   z46 #  BENCH ROWS   D  S=stair  D     [gondola cabin]
//   z50 #  planter/bar  #  wheels   #  === canopy over x45-50 ===
//   z54 ###GGGGGGGGGGG###
//        ^ panoramic glazing faces +Z (camera side)
//
// FRONT ELEVATION (+Z):
//        _______/^^^\_______        hip roof, 2-block eave, gold drip line
//       |LLLLLLLLLLLLLLL|           dark-oak louvre band under the eave
//       |GGGGGGGGGGGGGGG|  [][]     panorama glazing + quartz pilasters
//       |###############|  |  |     concrete plinth (black->grey->quartz gradient)
//      =====================        deepslate plinth 1 block proud
//
// MATERIALS PLAN:
//   plinth : black_concrete + polished_deepslate         — WHY: dark base = visual weight/AO
//   walls  : gradientPalette Y28->Y35 black_concrete -> gray_concrete -> light_gray_concrete
//            -> smooth_quartz {noise:0.2}                — WHY: deco value ramp, dark low/light high
//   trim   : gold_block belt course at Y30 and Y35       — WHY: deco tier lines (doc: mistake #2)
//   pilast : quartz_pillar every 4 blocks, 1 proud       — WHY: fluted pilasters = facade depth
//   louvre : dark_oak_log + spruce_planks band Y34       — WHY: the "timber" half of the brief
//   roof   : noisePalette deepslate_tile/dark_oak/cobbled_deepslate stairs — teja variation
//   steel  : iron_block/iron_bars/chain gantry + cables
//   floor  : deco checkerboard polished_blackstone x smooth_quartz + gold inlay
// Rooms: waiting hall (bench rows, planters, deco chandeliers), ticket counter + cafe corner,
//        tower vestibule (stair head, notice board), machinery floor (two bull-wheels, motor bed)
// STAIR PLAN: delta = 28-21 = 7 -> one straight flight east inside the tower,
//        staircase(34,46,21,28,"east") = 8 cells x34..x41, own floor hole + headroom, railed.
// === END PLAN ===

var floorY = 27, walkY = 28, wallTopY = 35, roofBaseY = 36;
var mFloorY = 20, mWalkY = 21, mCeilY = 26;
var hx1 = 10, hx2 = 32, hz1 = 38, hz2 = 54;          // hall
var tx1 = 32, tx2 = 44, tz1 = 41, tz2 = 51;          // machine tower

// ---------------------------------------------------------------- TERRAIN
var hn = hills({ base: 0, amp: 5, scale: 0.05, seed: 23 });
var ridgeH = function (x, z) {
  var v = 30 - x * 0.30 + hn(x, z);
  if (v < 4) v = 4; if (v > 34) v = 34;
  return Math.round(v);
};
var pad = flatten(ridgeH, { x0: 4, z0: 32, x1: 46, z1: 62 }, 26, 16);
var land = blob(34, 44, 46, { irregularity: 0.42, seed: 17 });
var rockMix = patches(['stone', 'andesite', 'tuff', 'deepslate', 'gravel'], 0.045, 8);
var ground = function (x, z) {
  var y = pad(x, z);
  var r = rockMix(x, z);
  var n = noise2d('perlin', x, z, { seed: 31, freq: 0.07 });
  if (y >= 24) return n > -0.1 ? 'snow_block' : r;
  if (y >= 16) return n > 0.22 ? 'snow_block' : r;
  return n > 0.35 ? 'coarse_dirt' : r;
};
surface(land, pad, ground, { sub: 'stone', deep: 'deepslate', depth: 6 });
checkpoint('RIDGE');

// solid rock under hall+tower so the machinery level is carved, never floating
fill(8, 10, 36, 46, 26, 56, 'stone');
fill(8, 21, 36, 46, 26, 56, 'deepslate');
checkpoint('ROCK_MASS');

// ---------------------------------------------------------------- MACHINERY LEVEL (under tower)
fill(tx1 + 1, mFloorY, tz1 + 1, tx2 - 1, mFloorY, tz2 - 1, 'polished_blackstone');
fill(tx1 + 1, mWalkY, tz1 + 1, tx2 - 1, mCeilY - 1, tz2 - 1, 'air');
fill(tx1 + 1, mCeilY, tz1 + 1, tx2 - 1, mCeilY, tz2 - 1, 'deepslate_tiles');
fill(tx1, mWalkY, tz1, tx1, mCeilY - 1, tz2, 'deepslate_bricks');
fill(tx2, mWalkY, tz1, tx2, mCeilY - 1, tz2, 'deepslate_bricks');
fill(tx1, mWalkY, tz1, tx2, mCeilY - 1, tz1, 'deepslate_bricks');
fill(tx1, mWalkY, tz2, tx2, mCeilY - 1, tz2, 'deepslate_bricks');
checkpoint('MACHINE_SHELL');

// ---------------------------------------------------------------- PLINTH + FLOORS
fill(hx1 - 1, 26, hz1 - 1, tx2 + 1, 26, hz2 + 1, 'polished_deepslate');
fill(hx1 - 1, floorY, hz1 - 1, tx2 + 1, floorY, hz2 + 1, 'polished_deepslate');   // proud plinth
// deco checkerboard lobby floor with gold inlay
var fx, fz;
for (fx = hx1; fx <= tx2; fx++) {
  for (fz = hz1; fz <= hz2; fz++) {
    if (fz < tz1 - 1 && fx > hx2) continue;
    if (fz > tz2 + 1 && fx > hx2) continue;
    pb(fx, floorY, fz, ((fx + fz) % 2 === 0) ? 'polished_blackstone' : 'smooth_quartz');
  }
}
for (fx = hx1 + 2; fx <= hx2 - 2; fx += 6) fill(fx, floorY, hz1 + 2, fx, floorY, hz2 - 2, 'gold_block');
checkpoint('FLOORS');

// ---------------------------------------------------------------- HALL WALLS (DIRECT, gradient)
var wallPal = gradientPalette(walkY, wallTopY, [
  { block: 'black_concrete', from: 0 },
  { block: 'gray_concrete', from: 0.2 },
  { block: 'light_gray_concrete', from: 0.45 },
  { block: 'smooth_quartz', from: 0.7 }
], { noise: 0.2, seed: 12 });
fill(hx1, walkY, hz1, hx2, wallTopY, hz1, wallPal);     // north
fill(hx1, walkY, hz2, hx2, wallTopY, hz2, wallPal);     // south (panorama)
fill(hx1, walkY, hz1, hx1, wallTopY, hz2, wallPal);     // west
fill(hx2, walkY, hz1, hx2, wallTopY, tz1, wallPal);     // east (above/below the tower opening)
fill(hx2, walkY, tz2, hx2, wallTopY, hz2, wallPal);
fill(hx2, 33, tz1, hx2, wallTopY, tz2, wallPal);
// tower walls, stepped setback at Y40 (deco rule: narrow as it rises)
var towerPal = gradientPalette(walkY, 44, [
  { block: 'black_concrete', from: 0 },
  { block: 'gray_concrete', from: 0.25 },
  { block: 'smooth_quartz', from: 0.55 },
  { block: 'quartz_block', from: 0.8 }
], { noise: 0.18, seed: 13 });
fill(tx1, walkY, tz1, tx2, 39, tz1, towerPal);
fill(tx1, walkY, tz2, tx2, 39, tz2, towerPal);
fill(tx2, walkY, tz1, tx2, 39, tz2, towerPal);
fill(tx1, 36, tz1, tx1, 39, tz2, towerPal);
fill(tx1 + 1, 40, tz1 + 1, tx2 - 1, 43, tz1 + 1, towerPal);   // setback tier
fill(tx1 + 1, 40, tz2 - 1, tx2 - 1, 43, tz2 - 1, towerPal);
fill(tx2 - 1, 40, tz1 + 1, tx2 - 1, 43, tz2 - 1, towerPal);
fill(tx1 + 1, 40, tz1 + 1, tx1 + 1, 43, tz2 - 1, towerPal);
fill(tx1 + 1, 44, tz1 + 1, tx2 - 1, 44, tz2 - 1, 'smooth_quartz_slab');
checkpoint('WALLS');

// gold belt courses + quartz pilasters (deco tier lines + facade depth)
fill(hx1, 30, hz1, hx2, 30, hz1, 'gold_block');
fill(hx1, 30, hz2, hx2, 30, hz2, 'gold_block');
fill(hx1, 30, hz1, hx1, 30, hz2, 'gold_block');
fill(tx1, 39, tz1, tx2, 39, tz1, 'raw_gold_block');
fill(tx1, 39, tz2, tx2, 39, tz2, 'raw_gold_block');
fill(tx2, 39, tz1, tx2, 39, tz2, 'raw_gold_block');
fill(tx1 + 1, 43, tz1 + 1, tx2 - 1, 43, tz2 - 1, 'raw_gold_block');
var qx, qz;
for (qx = hx1 + 2; qx <= hx2 - 2; qx += 4) {
  fill(qx, walkY, hz2 + 1, qx, wallTopY, hz2 + 1, 'quartz_pillar[axis=y]');
  fill(qx, walkY, hz1 - 1, qx, wallTopY, hz1 - 1, 'quartz_pillar[axis=y]');
}
for (qz = hz1 + 3; qz <= hz2 - 3; qz += 4) fill(hx1 - 1, walkY, qz, hx1 - 1, wallTopY, qz, 'quartz_pillar[axis=y]');
for (qz = tz1 + 2; qz <= tz2 - 2; qz += 4) fill(tx2 + 1, walkY, qz, tx2 + 1, 38, qz, 'quartz_pillar[axis=y]');
checkpoint('DECO_TRIM');

// ---------------------------------------------------------------- GLAZING + TIMBER LOUVRE
fill(hx1 + 2, 31, hz2, hx2 - 2, 34, hz2, 'glass_pane');            // panorama +Z
fill(hx1 + 2, walkY + 1, hz2, hx2 - 2, 29, hz2, 'glass_pane');
fill(hx1, 31, hz1 + 3, hx1, 33, hz2 - 3, 'glass_pane');            // west band
fill(hx1 + 3, 32, hz1, hx2 - 3, 33, hz1, 'glass_pane');            // north clerestory
fill(tx1, 36, tz1 + 2, tx2, 38, tz1 + 2, 'glass_pane');            // tower head glazing
fill(tx1, 36, tz2 - 2, tx2, 38, tz2 - 2, 'glass_pane');
fill(tx2, 33, tz1 + 2, tx2, 38, tz2 - 2, 'glass_pane');            // cable exit face (+X)
// timber louvre band under the eave = the "timber" of concrete-and-timber
fill(hx1 - 1, wallTopY, hz1 - 1, hx2 + 1, wallTopY, hz1 - 1, 'dark_oak_log[axis=x]');
fill(hx1 - 1, wallTopY, hz2 + 1, hx2 + 1, wallTopY, hz2 + 1, 'dark_oak_log[axis=x]');
fill(hx1 - 1, wallTopY, hz1 - 1, hx1 - 1, wallTopY, hz2 + 1, 'dark_oak_log[axis=z]');
fill(hx1, 34, hz2, hx2, 34, hz2, 'spruce_planks');
fill(hx1, 34, hz1, hx2, 34, hz1, 'spruce_planks');
checkpoint('GLAZING');

// ---------------------------------------------------------------- HIP ROOF, 2-BLOCK EAVES
var rpal = noisePalette([{ block: 'deepslate_tile_stairs', weight: 45 }, { block: 'dark_oak_stairs', weight: 35 }, { block: 'cobbled_deepslate_stairs', weight: 20 }], { seed: 6, freq: 0.14 });
var spal = noisePalette([{ block: 'deepslate_tiles', weight: 45 }, { block: 'dark_oak_planks', weight: 35 }, { block: 'cobbled_deepslate', weight: 20 }], { seed: 6, freq: 0.14 });
var ex1 = hx1 - 2, ex2 = hx2 + 2, ez1 = hz1 - 2, ez2 = hz2 + 2;
var rx, rz, dw, de, dn, ds, d, ry;
for (rx = ex1; rx <= ex2; rx++) {
  for (rz = ez1; rz <= ez2; rz++) {
    dw = rx - ex1; de = ex2 - rx; dn = rz - ez1; ds = ez2 - rz;
    d = Math.min(Math.min(dw, de), Math.min(dn, ds));
    if (d > 10) d = 10;
    ry = roofBaseY + Math.floor(d / 2);
    if (ry - 1 >= roofBaseY) fill(rx, roofBaseY, rz, rx, ry - 1, rz, spal);
    if (d >= 10) { pb(rx, ry, rz, 'dark_oak_log[axis=x]'); }
    else if (d % 2 === 0) {
      if (d === dn) roofStair(rx, ry, rz, rpal(rx, 0, rz), 'north');
      else if (d === ds) roofStair(rx, ry, rz, rpal(rx, 0, rz), 'south');
      else if (d === dw) roofStair(rx, ry, rz, rpal(rx, 0, rz), 'west');
      else roofStair(rx, ry, rz, rpal(rx, 0, rz), 'east');
    } else pb(rx, ry, rz, spal(rx, ry, rz));
  }
}
// gold drip line along the eave + soffit
fill(ex1, roofBaseY - 1, ez1, ex2, roofBaseY - 1, ez1, 'gold_block');
fill(ex1, roofBaseY - 1, ez2, ex2, roofBaseY - 1, ez2, 'gold_block');
fill(ex1, roofBaseY - 1, ez1, ex1, roofBaseY - 1, ez2, 'gold_block');
fill(ex2, roofBaseY - 1, ez1, ex2, roofBaseY - 1, ez2, 'gold_block');
checkpoint('ROOF');

// ---------------------------------------------------------------- CLEAR + LINK INTERIORS
fill(hx1 + 1, walkY, hz1 + 1, hx2 - 1, roofBaseY - 1, hz2 - 1, 'air');
fill(tx1 + 1, walkY, tz1 + 1, tx2 - 1, 43, tz2 - 1, 'air');
fill(hx2, walkY, tz1 + 3, hx2, walkY + 2, tz2 - 3, 'air');            // hall <-> tower opening
fill(hx2, walkY + 3, tz1 + 3, hx2, walkY + 3, tz2 - 3, 'dark_oak_log[axis=z]');
// exposed trusses in the hall
var tz3;
for (tz3 = hz1 + 4; tz3 <= hz2 - 4; tz3 += 5) {
  fill(hx1 + 1, roofBaseY - 1, tz3, hx2 - 1, roofBaseY - 1, tz3, 'dark_oak_log[axis=x]');
  pb(hx1 + 2, roofBaseY - 2, tz3, 'spruce_fence'); pb(hx2 - 2, roofBaseY - 2, tz3, 'spruce_fence');
}
checkpoint('CLEAR');

// ---------------------------------------------------------------- STAIR TO MACHINERY
staircase(34, 46, mWalkY, walkY, 'east', { width: 2, material: 'dark_oak_stairs', rail: true, support: 'polished_blackstone' });
var sgz;
for (sgz = 44; sgz <= 48; sgz++) { pb(33, walkY, sgz, 'iron_bars'); }
for (sgz = 34; sgz <= 42; sgz++) { pb(sgz, walkY, 44, 'iron_bars'); pb(sgz, walkY, 48, 'iron_bars'); }
ps(35, walkY + 1, 44, 'oak_wall_sign[facing=north]');
checkpoint('STAIR');

// ---------------------------------------------------------------- BULL-WHEEL GANTRY (in the tower head)
function bullWheel(cx, cy, z, r) {
  var a, i, wx, wy;
  for (a = 0; a < 360; a += 5) {
    wx = cx + Math.round(r * Math.cos(a * Math.PI / 180));
    wy = cy + Math.round(r * Math.sin(a * Math.PI / 180));
    pb(wx, wy, z, 'iron_block');
  }
  for (a = 0; a < 360; a += 45) for (i = 1; i < r; i++) pb(cx + Math.round(i * Math.cos(a * Math.PI / 180)), cy + Math.round(i * Math.sin(a * Math.PI / 180)), z, 'iron_bars');
  pb(cx, cy, z, 'iron_block');
}
fill(36, 33, tz1 + 2, 36, 42, tz1 + 2, 'iron_block');
fill(36, 33, tz2 - 2, 36, 42, tz2 - 2, 'iron_block');
fill(41, 33, tz1 + 2, 41, 42, tz1 + 2, 'iron_block');
fill(41, 33, tz2 - 2, 41, 42, tz2 - 2, 'iron_block');
fill(36, 42, tz1 + 2, 41, 42, tz1 + 2, 'iron_block');
fill(36, 42, tz2 - 2, 41, 42, tz2 - 2, 'iron_block');
bullWheel(38, 38, tz1 + 3, 4);
bullWheel(38, 38, tz2 - 3, 4);
fill(38, 38, tz1 + 4, 38, 38, tz2 - 4, 'iron_block');
checkpoint('GANTRY');

// ---------------------------------------------------------------- MACHINERY FLOOR CONTENT
bullWheel(37, mWalkY + 2, 44, 3);
fill(37, mWalkY + 2, 45, 37, mWalkY + 2, 48, 'iron_block');
bullWheel(37, mWalkY + 2, 49, 3);
ps(41, mWalkY, 43, 'blast_furnace[facing=west,lit=false]');
ps(41, mWalkY, 45, 'anvil[facing=west]');
pb(41, mWalkY, 47, 'barrel'); pb(41, mWalkY, 48, 'chest'); pb(41, mWalkY + 1, 48, 'barrel');
ps(34, mWalkY, 43, 'crafting_table'); pb(35, mWalkY, 43, 'grindstone[face=floor,facing=south]');
ps(34, mWalkY, 50, 'cauldron[level=0]');
var my;
for (my = 43; my <= 49; my += 3) { pb(33, mCeilY - 1, my, 'sea_lantern'); pb(43, mCeilY - 1, my, 'sea_lantern'); }
fill(39, mWalkY, 42, 39, mWalkY + 3, 42, 'iron_bars');
checkpoint('MACHINE_ROOM');

// ---------------------------------------------------------------- HALL INTERIOR
rug(hx1 + 3, walkY, hz2 - 6, 9, 4, 'red', 'yellow');
var ix, iz;
for (iz = hz2 - 6; iz <= hz2 - 3; iz += 3) {
  for (ix = hx1 + 3; ix <= hx1 + 16; ix++) {
    chairStair(ix, walkY, iz, 'spruce_stairs', 'north');
    pb(ix, walkY + 1, iz - 1, 'air');
  }
}
// deco ticket counter (quartz + gold) along the north wall
for (ix = hx1 + 2; ix <= hx1 + 9; ix++) {
  pb(ix, walkY, hz1 + 2, 'quartz_block');
  ps(ix, walkY + 1, hz1 + 2, 'quartz_stairs[facing=south,half=top]');
}
pb(hx1 + 5, walkY, hz1 + 2, 'gold_block');
pb(hx1 + 3, walkY, hz1 + 1, 'barrel'); pb(hx1 + 7, walkY, hz1 + 1, 'chest');
ps(hx1 + 8, walkY, hz1 + 1, 'lectern[facing=south]');
ps(hx1 + 2, walkY + 1, hz1 + 1, 'oak_wall_sign[facing=south]');
shelfWall(hx1 + 1, walkY, hz1 + 1, 'east', 4, 2);
// cafe corner (east end, by the tower door)
pb(hx2 - 5, walkY, hz1 + 3, 'dark_oak_fence'); pb(hx2 - 5, walkY + 1, hz1 + 3, 'smooth_quartz_slab');
chairStair(hx2 - 6, walkY, hz1 + 3, 'dark_oak_stairs', 'east');
chairStair(hx2 - 4, walkY, hz1 + 3, 'dark_oak_stairs', 'west');
pb(hx2 - 5, walkY, hz1 + 5, 'dark_oak_fence'); pb(hx2 - 5, walkY + 1, hz1 + 5, 'smooth_quartz_slab');
chairStair(hx2 - 6, walkY, hz1 + 5, 'dark_oak_stairs', 'east');
chairStair(hx2 - 4, walkY, hz1 + 5, 'dark_oak_stairs', 'west');
pb(hx2 - 3, walkY, hz1 + 2, 'barrel'); pb(hx2 - 2, walkY, hz1 + 2, 'smoker[facing=south]');
// planters + deco chandeliers
var cx2;
for (cx2 = hx1 + 4; cx2 <= hx2 - 4; cx2 += 6) {
  pb(cx2, roofBaseY - 2, hz1 + 6, 'chain[axis=y]'); ps(cx2, roofBaseY - 3, hz1 + 6, 'lantern[hanging=true]');
  pb(cx2, roofBaseY - 2, hz2 - 4, 'chain[axis=y]'); ps(cx2, roofBaseY - 3, hz2 - 4, 'lantern[hanging=true]');
  pb(cx2, walkY, hz2 - 1, 'flower_pot');
  pb(cx2 + 1, walkY, hz2 - 1, 'spruce_leaves'); pb(cx2 + 1, walkY - 1, hz2 - 1, 'polished_blackstone');
}
ps(hx1 + 1, walkY + 2, hz1 + 4, 'white_wall_banner[facing=east]');
ps(hx2 - 1, walkY + 2, hz2 - 4, 'red_wall_banner[facing=west]');
checkpoint('HALL_INTERIOR');

// ---------------------------------------------------------------- BOARDING DECK ON PIERS
var dx, dz;
fill(44, floorY, 42, 58, floorY, 52, noisePalette([{ block: 'smooth_stone', weight: 50 }, { block: 'light_gray_concrete', weight: 30 }, { block: 'polished_blackstone', weight: 20 }], { seed: 21, freq: 0.2 }));
fill(44, 26, 42, 58, 26, 52, 'stone_bricks');
for (dx = 46; dx <= 57; dx += 5) {
  for (dz = 43; dz <= 51; dz += 4) {
    fill(dx, pad(dx, dz), dz, dx, 25, dz, gradientPalette(pad(dx, dz), 25, [{ block: 'deepslate_bricks', from: 0 }, { block: 'stone_bricks', from: 0.4 }, { block: 'light_gray_concrete', from: 0.8 }], { noise: 0.2 }));
  }
}
for (dx = 44; dx <= 58; dx++) { pb(dx, walkY, 42, 'iron_bars'); pb(dx, walkY, 52, 'iron_bars'); }
for (dz = 42; dz <= 52; dz++) pb(58, walkY, dz, 'iron_bars');
// canopy over the inner half of the deck
for (dx = 45; dx <= 50; dx += 5) {
  for (dz = 43; dz <= 51; dz += 8) fill(dx, walkY, dz, dx, 33, dz, 'quartz_pillar[axis=y]');
}
fill(44, 34, 41, 51, 34, 53, 'smooth_quartz_slab');
fill(44, 33, 41, 51, 33, 41, 'gold_block');
fill(44, 33, 53, 51, 33, 53, 'gold_block');
lampPost(46, walkY, 42, 4, 'iron_bars');
lampPost(50, walkY, 52, 4, 'iron_bars');
pb(48, walkY, 44, 'barrel'); pb(48, walkY + 1, 44, 'barrel'); pb(49, walkY, 44, 'chest');
ps(47, walkY, 50, 'lectern[facing=east]');
checkpoint('DECK');

// ---------------------------------------------------------------- CABLES, PYLON, GONDOLA
drawLine(42, 38, 44, 66, 26, 44, 'chain[axis=x]');
drawLine(42, 38, 48, 66, 26, 48, 'chain[axis=x]');
drawLine(66, 26, 44, 79, 20, 44, 'chain[axis=x]');
drawLine(66, 26, 48, 79, 20, 48, 'chain[axis=x]');
var py, pz2;
for (pz2 = 43; pz2 <= 49; pz2 += 6) {
  fill(64, pad(64, pz2), pz2, 64, 24, pz2, 'iron_block');
  fill(68, pad(68, pz2), pz2, 68, 24, pz2, 'iron_block');
  for (py = pad(64, pz2) + 2; py <= 23; py += 3) drawLine(64, py, pz2, 68, py + 2, pz2, 'iron_bars');
}
fill(64, 24, 43, 68, 24, 49, 'iron_bars');
fill(64, 25, 44, 68, 25, 44, 'iron_block');
fill(64, 25, 48, 68, 25, 48, 'iron_block');
pb(66, 26, 44, 'iron_block'); pb(66, 26, 48, 'iron_block');
// gondola cabin docked at the deck (cable height at x~53 is Y33)
fill(51, floorY + 1, 44, 56, floorY + 1, 48, 'smooth_stone');
fill(51, 29, 44, 56, 31, 44, 'red_concrete');
fill(51, 29, 48, 56, 31, 48, 'red_concrete');
fill(51, 29, 44, 51, 31, 48, 'red_concrete');
fill(56, 29, 44, 56, 31, 48, 'red_concrete');
fill(52, 30, 44, 55, 31, 44, 'glass_pane');
fill(52, 30, 48, 55, 31, 48, 'glass_pane');
fill(51, 30, 45, 51, 31, 47, 'glass_pane');
fill(56, 30, 45, 56, 31, 47, 'glass_pane');
fill(50, 32, 43, 57, 32, 49, 'white_concrete');
fill(52, 33, 45, 55, 33, 47, 'iron_block');
fill(53, 34, 46, 53, 36, 46, 'chain[axis=y]');
fill(54, 34, 46, 54, 36, 46, 'chain[axis=y]');
ps(53, 29, 48, 'iron_door[facing=south,half=lower,hinge=left]');
ps(53, 30, 48, 'iron_door[facing=south,half=upper,hinge=left]');
checkpoint('CABLE_SYSTEM');

// ---------------------------------------------------------------- APPROACH + SCENERY
var sx, k;
for (k = 0; k < 7; k++) {
  fill(16, 26 - k, 56 + k, 22, 26 - k, 56 + k, 'stone_bricks');
  fill(16, 25 - k, 56 + k, 22, 25 - k, 56 + k, 'cobblestone');
}
for (sx = 15; sx <= 23; sx += 8) lampPost(sx, 27, 57, 4, 'iron_bars');
noisyScatter(6, 26, 30, 60, 28, 66, 'snow_block', 0.12, 44);
var tx3, tz4;
for (tx3 = 44; tx3 <= 76; tx3 += 8) {
  for (tz4 = 6; tz4 <= 66; tz4 += 15) {
    if (pad(tx3, tz4) < 18) placeTree(tx3, pad(tx3, tz4) + 1, tz4, 'spruce');
  }
}
for (tx3 = 10; tx3 <= 40; tx3 += 9) {
  pb(tx3, pad(tx3, 30) + 1, 30, 'stone');
  pb(tx3 + 2, pad(tx3 + 2, 62) + 1, 62, 'cobblestone');
  pb(tx3 + 1, pad(tx3 + 1, 62) + 1, 62, 'andesite');
}
checkpoint('SCENERY');

Static Renders

Alpine cable-car summit station (indexed) isometric viewisometric
Alpine cable-car summit station (indexed) front viewfront
Alpine cable-car summit station (indexed) side viewside
Alpine cable-car summit station (indexed) back viewback
Alpine cable-car summit station (indexed) top viewtop