This is my Raspberry Pi project. It's great to use Minecraft to create buildings, but the power of doing it programmatically is that you can create whole streets and towns. This basic Python code will produce a street of skyscrapers.

There's a lot of potential here and I am sure it would make the basis for some great lessons. What's great fun is as soon as you show people the idea people run with it & think of all sorts of refinements.

Here's the Python code, I hope it all makes sense.

# Setup Minecraft library

from mcpi import minecraft

mc = minecraft.Minecraft.create()

#Get player position

x, y, z = mc.player.getPos()

#Terraforming - Create air

mc.setBlocks(x-30, y, z-30, x+500, y+39, z+40, 0)

#Make a grassy area

mc.setBlocks(x-30, y-1, z-30, x+500, y-2, z+40, 2)

#Loop to create 6 buildings

for builder in range (0,5):

# Create stone block

mc.setBlocks(x+1, y-1, z+1, x+11, y+40, z+11, 1)

# Make it hollow

mc.setBlocks(x+2, y, z+2, x+10, y+39, z+10, 0)

#Create a series of windows

for glwin in range (0,4):

mc.setBlocks(x+2, y+(glwin*10), z+1, x+2, y+(glwin*10+3), z+1, 20)

mc.setBlocks(x+6, y+(glwin*10), z+1, x+6, y+(glwin*10+3), z+1, 20)

mc.setBlocks(x+8, y+(glwin*10), z+1, x+8, y+(glwin*10+3), z+1, 20)

mc.setBlocks(x+2, y+(glwin*10), z+11, x+3, y+(glwin*10+3), z+11, 20)

mc.setBlocks(x+6, y+(glwin*10), z+11, x+7, y+(glwin*10+3), z+11, 20)

mc.setBlocks(x+8, y+(glwin*10), z+11, x+9, y+(glwin*10+3), z+11, 20)

#Create door to see inside

mc.setBlock(x+2, y, z+1, 71)

mc.setBlock(x+2, y+1, z+1, 71)

x+=25

# Setup Minecraft library

from mcpi import minecraft

mc = minecraft.Minecraft.create()

#Get player position

x, y, z = mc.player.getPos()

#Terraforming - Create air

mc.setBlocks(x-30, y, z-30, x+500, y+39, z+40, 0)

#Make a grassy area

mc.setBlocks(x-30, y-1, z-30, x+500, y-2, z+40, 2)

#Loop to create 6 buildings

for builder in range (0,5):

# Create stone block

mc.setBlocks(x+1, y-1, z+1, x+11, y+40, z+11, 1)

# Make it hollow

mc.setBlocks(x+2, y, z+2, x+10, y+39, z+10, 0)

#Create a series of windows

for glwin in range (0,4):

mc.setBlocks(x+2, y+(glwin*10), z+1, x+2, y+(glwin*10+3), z+1, 20)

mc.setBlocks(x+6, y+(glwin*10), z+1, x+6, y+(glwin*10+3), z+1, 20)

mc.setBlocks(x+8, y+(glwin*10), z+1, x+8, y+(glwin*10+3), z+1, 20)

mc.setBlocks(x+2, y+(glwin*10), z+11, x+3, y+(glwin*10+3), z+11, 20)

mc.setBlocks(x+6, y+(glwin*10), z+11, x+7, y+(glwin*10+3), z+11, 20)

mc.setBlocks(x+8, y+(glwin*10), z+11, x+9, y+(glwin*10+3), z+11, 20)

#Create door to see inside

mc.setBlock(x+2, y, z+1, 71)

mc.setBlock(x+2, y+1, z+1, 71)

x+=25