Source code for demo.pagoda

from mciwb.imports import Direction, FillMode, Item, get_client, polygon


[docs] def build_pagoda(pos, width=4, floor_height=4, item: Item = Item.GOLD_BLOCK): """ Create a pagoda out of blocks at the given position. Each successive floor is narrower and each has a balcony at the top. :param pos: position of the base of the pagoda :param width: width of the base of the pagoda :param floor_height: height of each floor :param item: block to use for the base of the pagoda """ c = get_client() # calculate how many levels we can make if we reduce width by 2 each level levels = width // 2 for level in range(levels): # calculate the width of the pagoda for this level floor_width = width - 2 * level # calculate the base position of the walls for this level base = pos + Direction.UP * level * floor_height # calculate the position of the balcony for this level # it should surround the top layer of the walls for this level balcony = base + Direction.UP * (floor_height - 1) # create the balcony for this level polygon( client=c, center=balcony, height=1, diameter=floor_width + 2, sides=4, item=item, mode=FillMode.REPLACE, ) # create the walls for this level polygon( client=c, center=base, height=floor_height, diameter=floor_width, sides=4, item=item, mode=FillMode.REPLACE, )