Skip to content

Instantly share code, notes, and snippets.

@kalaspuffar
Created November 11, 2020 20:33
Show Gist options
  • Save kalaspuffar/374a3a0239b83ae2f16c6524ea36c814 to your computer and use it in GitHub Desktop.
Save kalaspuffar/374a3a0239b83ae2f16c6524ea36c814 to your computer and use it in GitHub Desktop.
# Import necessary modules
import mcpi.minecraft as minecraft
import mcpi.block as block
# Connect to Minecraft
mc = minecraft.Minecraft.create()
# Get the players position
pos = mc.player.getTilePos()
# Decide where to start building the house, slightly away from player
x = pos.x
y = pos.y
z = pos.z
HEIGHT = 10
SIZE = 20
def tower(x, z):
mc.setBlocks(x-5, y, z-5, x+5, y+HEIGHT+2, z+5, block.AIR.id)
# Sides
mc.setBlocks(x-5, y, z-2, x-5, y+HEIGHT+1, z+2, block.COBBLESTONE.id)
mc.setBlocks(x+5, y, z-2, x+5, y+HEIGHT+1, z+2, block.COBBLESTONE.id)
mc.setBlocks(x-2, y, z-5, x+2, y+HEIGHT+1, z-5, block.COBBLESTONE.id)
mc.setBlocks(x-2, y, z+5, x+2, y+HEIGHT+1, z+5, block.COBBLESTONE.id)
mc.setBlocks(x-3, y, z-4, x-3, y+HEIGHT+1, z-4, block.COBBLESTONE.id)
mc.setBlocks(x-4, y, z-3, x-4, y+HEIGHT+1, z-3, block.COBBLESTONE.id)
mc.setBlocks(x+3, y, z-4, x+3, y+HEIGHT+1, z-4, block.COBBLESTONE.id)
mc.setBlocks(x+4, y, z-3, x+4, y+HEIGHT+1, z-3, block.COBBLESTONE.id)
mc.setBlocks(x-3, y, z+4, x-3, y+HEIGHT+1, z+4, block.COBBLESTONE.id)
mc.setBlocks(x-4, y, z+3, x-4, y+HEIGHT+1, z+3, block.COBBLESTONE.id)
mc.setBlocks(x+3, y, z+4, x+3, y+HEIGHT+1, z+4, block.COBBLESTONE.id)
mc.setBlocks(x+4, y, z+3, x+4, y+HEIGHT+1, z+3, block.COBBLESTONE.id)
for i in range(-2, 3):
if i % 2 == 0:
mc.setBlocks(x+i, y+HEIGHT+2, z+5, x+i, y+HEIGHT+2, z+5, block.COBBLESTONE.id)
mc.setBlocks(x+i, y+HEIGHT+2, z-5, x+i, y+HEIGHT+2, z-5, block.COBBLESTONE.id)
mc.setBlocks(x+5, y+HEIGHT+2, z+i, x+5, y+HEIGHT+2, z+i, block.COBBLESTONE.id)
mc.setBlocks(x-5, y+HEIGHT+2, z+i, x-5, y+HEIGHT+2, z+i, block.COBBLESTONE.id)
# Floor
mc.setBlocks(x-3, y+HEIGHT, z-3, x+3, y+HEIGHT, z+3, block.COBBLESTONE.id)
mc.setBlocks(x-4, y+HEIGHT, z-3, x+4, y+HEIGHT, z+3, block.COBBLESTONE.id)
mc.setBlocks(x-3, y+HEIGHT, z-4, x+3, y+HEIGHT, z+4, block.COBBLESTONE.id)
def tower_stair(x, z, count, dir, side_count):
if count > HEIGHT:
return
if side_count > 6:
dir += 1
side_count = 1
if dir > 3:
dir = 0
if dir == 0:
display_dir = 0
x += 1
if dir == 1:
display_dir = 2
z += 1
if dir == 2:
display_dir = 1
x -= 1
if dir == 3:
display_dir = 3
z -= 1
mc.setBlocks(x, y+count-1, z, x, y+count-1, z, block.COBBLESTONE.id, display_dir)
mc.setBlocks(x, y+count, z, x, y+count, z, block.STAIRS_COBBLESTONE.id, display_dir)
mc.setBlocks(x, y+count+1, z, x, y+count+4, z, block.AIR.id, display_dir)
tower_stair(x, z, count+1, dir, side_count+1)
#mc.setBlocks(x-100, y-1, z-100, x+100, y-1, z+100, block.COBBLESTONE.id)
#mc.setBlocks(x-100, y, z-100, x+100, y+HEIGHT+5 , z+100, block.AIR.id)
mc.setBlocks(x-SIZE, y-1, z-SIZE, x+SIZE, y-1, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z-SIZE, x-SIZE+4, y+HEIGHT, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x+SIZE, y, z-SIZE, x+SIZE-4, y+HEIGHT, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z-SIZE, x+SIZE, y+HEIGHT, z-SIZE+4, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z+SIZE, x+SIZE, y+HEIGHT, z+SIZE-4, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z-SIZE, x-SIZE, y+HEIGHT+1, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE+4, y, z-SIZE, x-SIZE+4, y+HEIGHT+1, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x+SIZE, y, z-SIZE, x+SIZE, y+HEIGHT+1, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x+SIZE-4, y, z-SIZE, x+SIZE-4, y+HEIGHT+1, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z-SIZE, x+SIZE, y+HEIGHT+1, z-SIZE, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z-SIZE+4, x+SIZE, y+HEIGHT+1, z-SIZE+4, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z+SIZE-4, x+SIZE, y+HEIGHT+1, z+SIZE-4, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y, z+SIZE, x+SIZE, y+HEIGHT+1, z+SIZE, block.COBBLESTONE.id)
for i in range(-SIZE, SIZE+1):
if i % 2 == 0:
mc.setBlocks(x+i, y+HEIGHT+2, z+SIZE, x+i, y+HEIGHT+2, z+SIZE, block.COBBLESTONE.id)
mc.setBlocks(x+i, y+HEIGHT+2, z-SIZE, x+i, y+HEIGHT+2, z-SIZE, block.COBBLESTONE.id)
mc.setBlocks(x+SIZE, y+HEIGHT+2, z+i, x+SIZE, y+HEIGHT+2, z+i, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE, y+HEIGHT+2, z+i, x-SIZE, y+HEIGHT+2, z+i, block.COBBLESTONE.id)
for i in range(-SIZE+4, SIZE-4):
if i % 2 == 1:
mc.setBlocks(x+i, y+HEIGHT+2, z+SIZE-4, x+i, y+HEIGHT+2, z+SIZE-4, block.COBBLESTONE.id)
mc.setBlocks(x+i, y+HEIGHT+2, z-SIZE+4, x+i, y+HEIGHT+2, z-SIZE+4, block.COBBLESTONE.id)
mc.setBlocks(x+SIZE-4, y+HEIGHT+2, z+i, x+SIZE-4, y+HEIGHT+2, z+i, block.COBBLESTONE.id)
mc.setBlocks(x-SIZE+4, y+HEIGHT+2, z+i, x-SIZE+4, y+HEIGHT+2, z+i, block.COBBLESTONE.id)
tower(x-SIZE+2, z-SIZE+2)
tower(x+SIZE-2, z-SIZE+2)
tower(x-SIZE+2, z+SIZE-2)
tower(x+SIZE-2, z+SIZE-2)
tower_stair(x-SIZE+1, z-SIZE+5, 0, 2, 5)
tower_stair(x+SIZE-5, z-SIZE+1, 0, 3, 5)
tower_stair(x-SIZE+5, z+SIZE-1, 0, 1, 5)
tower_stair(x+SIZE-1, z+SIZE-5, 0, 0, 5)
# Doors
mc.setBlocks(x-SIZE+5, y, z-SIZE+5, x+SIZE-5, y+3, z+SIZE-5, block.AIR.id)
mc.setBlocks(x-SIZE+3, y+HEIGHT+1, z-SIZE+1, x-SIZE+1, y+HEIGHT+2, z-SIZE+8, block.AIR.id)
mc.setBlocks(x-SIZE+3, y+HEIGHT+1, z+SIZE-1, x-SIZE+1, y+HEIGHT+2, z+SIZE-8, block.AIR.id)
mc.setBlocks(x+SIZE-3, y+HEIGHT+1, z-SIZE+1, x+SIZE-1, y+HEIGHT+2, z-SIZE+8, block.AIR.id)
mc.setBlocks(x+SIZE-3, y+HEIGHT+1, z+SIZE-1, x+SIZE-1, y+HEIGHT+2, z+SIZE-8, block.AIR.id)
mc.setBlocks(x-SIZE+1, y+HEIGHT+1, z-SIZE+3, x-SIZE+8, y+HEIGHT+2, z-SIZE+1, block.AIR.id)
mc.setBlocks(x+SIZE-1, y+HEIGHT+1, z-SIZE+3, x+SIZE-8, y+HEIGHT+2, z-SIZE+1, block.AIR.id)
mc.setBlocks(x-SIZE+1, y+HEIGHT+1, z+SIZE-3, x-SIZE+8, y+HEIGHT+2, z+SIZE-1, block.AIR.id)
mc.setBlocks(x+SIZE-1, y+HEIGHT+1, z+SIZE-3, x+SIZE-8, y+HEIGHT+2, z+SIZE-1, block.AIR.id)
mc.setBlocks(x-3, y+4, z-3, x+3, y+4, z+3, block.WOOD_PLANKS.id)
mc.setBlocks(x-3, y, z-3, x-3, y+4, z+3, block.WOOD_PLANKS.id)
mc.setBlocks(x-3, y, z-3, x+3, y+4, z-3, block.WOOD_PLANKS.id)
mc.setBlocks(x-3, y, z+3, x+3, y+4, z+3, block.WOOD_PLANKS.id)
mc.setBlocks(x+3, y, z+3, x+3, y+4, z-3, block.WOOD_PLANKS.id)
mc.setBlocks(x+3, y, z, x+3, y+1, z, block.AIR.id)
mc.player.setTilePos(x+10, y, z);
mc.setBlocks(x-3, y+4, z+4, x+3, y+4, z+4, block.STAIRS_WOOD.id, 3)
mc.setBlocks(x-3, y+5, z+3, x+3, y+5, z+3, block.STAIRS_WOOD.id, 3)
mc.setBlocks(x-3, y+6, z+2, x+3, y+6, z+2, block.STAIRS_WOOD.id, 3)
mc.setBlocks(x-3, y+7, z+1, x+3, y+7, z+1, block.STAIRS_WOOD.id, 3)
mc.setBlocks(x-3, y+7, z, x+3, y+7, z, block.WOOD_PLANKS.id)
mc.setBlocks(x-3, y+6, z-1, x+3, y+6, z+1, block.WOOD_PLANKS.id)
mc.setBlocks(x-3, y+5, z-2, x+3, y+5, z+2, block.WOOD_PLANKS.id)
mc.setBlocks(x-3, y+4, z-4, x+3, y+4, z-4, block.STAIRS_WOOD.id, 2)
mc.setBlocks(x-3, y+5, z-3, x+3, y+5, z-3, block.STAIRS_WOOD.id, 2)
mc.setBlocks(x-3, y+6, z-2, x+3, y+6, z-2, block.STAIRS_WOOD.id, 2)
mc.setBlocks(x-3, y+7, z-1, x+3, y+7, z-1, block.STAIRS_WOOD.id, 2)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment