skills/amenti-labs/vibecraft/generating-terrain

generating-terrain

SKILL.md

Generating Terrain

MCP Tools

  • generate_terrain - rolling_hills, rugged_mountains, valley_network, mountain_range, plateau
  • texture_terrain - temperate, alpine, desert, volcanic, jungle, swamp
  • smooth_terrain - Post-process smoothing (iterations 1-5)
  • worldedit_deform - Math expressions
  • worldedit_terrain_advanced - smooth, naturalize, regen
  • build(code=...) - Procedural algorithms

Quick Start

generate_terrain(type="rolling_hills", center_x=100, center_y=64, center_z=200, size=50, amplitude=8)
texture_terrain(style="temperate", center_x=100, center_y=64, center_z=200, size=50)
smooth_terrain(center_x=100, center_y=64, center_z=200, size=50, iterations=2)

Procedural with build()

Rolling Hills

build(code="""
commands = []
def noise(x, z, seed=42):
    n = x * 374761393 + z * 668265263 + seed
    n = (n ^ (n >> 13)) * 1274126177
    return ((n ^ (n >> 16)) & 255) / 255.0

base_x, base_z, size, base_y, amplitude = 100, 200, 50, 64, 8
for x in range(base_x, base_x + size):
    for z in range(base_z, base_z + size):
        height = noise(x, z, 1) * amplitude + noise(x*2, z*2, 2) * amplitude * 0.5
        y = int(base_y + height)
        commands.append(f'/setblock {x} {y} {z} grass_block')
        for below in range(base_y - 5, y):
            mat = 'dirt' if y - below <= 3 else 'stone'
            commands.append(f'/setblock {x} {below} {z} {mat}')
""", description="Rolling hills")

Mountain Range

# Use ridged noise: abs(noise(x, z) - 0.5) * 2
# Snow above base+18, stone above base+12, grass below

River Valley

# Sinusoidal path: path_x = base_x + sin(i * 0.1) * 10
# Depth based on distance from center
# Water in deepest part, sand on banks

WorldEdit Expressions

//generate -h stone y<perlin(x/10,z/10,0)*5+64  # Noise terrain
//deform y+=sin(x/5)*3+sin(z/5)*3               # Sine wave hills
//generate stone (x*x+z*z)<radius^2 && y<sqrt(radius^2-x*x-z*z)  # Dome

Biome Texturing

Temperate: grass_block (Y+0), dirt (Y-1 to -3), stone (Y-4+), flowers/tall_grass Alpine: snow_block (Y>base+18), stone (Y>base+12), grass (Y>base+6), spruce trees Desert: sand (3-4 layers), sandstone below, dead_bush/cactus Volcanic: magma_block/obsidian (Y>base+15), blackstone (Y>base+8), basalt, lava pools

Common Patterns

Cliff Face: Random ledge depth per Y level Cave System: worldedit_terrain_advanced(command="caves", size=8, freq=40, rarity=7, minY=0, maxY=60) Erosion: 20% random block removal from surface

Smoothing

//smooth 3  # 3 iterations

# Manual: average neighbor heights
def smooth(heights, x, z):
    return sum(heights.get((x+dx, z+dz), 64) for dx in [-1,0,1] for dz in [-1,0,1]) // 9

Tips

  1. Generate in 16×16 chunks
  2. Only modify necessary Y levels
  3. Use /fill for rectangular areas
  4. Preview first: build(preview_only=True)
Weekly Installs
3
GitHub Stars
79
First Seen
Jan 25, 2026
Installed on
gemini-cli3
claude-code3
codex3
opencode3
trae-cn2
antigravity2