def draw_sierpinski_triangle(minecraft): def random_in_range(): return random.randint(-MAX_XZ, MAX_XZ) def int_average(a, b): return int(round((a + b) / 2.0)) # Draw the triangle vertices. for (x, y, z) in TRIANGLE_VERTICES: minecraft.setBlock(x, y, z, TRIANGLE_BLOCK_ID) # Pick a random point to start at. current = (random_in_range(), TRIANGLE_HEIGHT, random_in_range()) for i in range(MAX_ITERATIONS): if i % PRINT_FREQ == 0: print("Drew %s blocks" % i) # Pick a random vertex to "walk" toward. destination = random.choice(TRIANGLE_VERTICES) # Draw a block in the middle of the current location and the # destination. (c_x, c_y, c_z) = current (d_x, d_y, d_z) = destination current = (int_average(c_x, d_x), TRIANGLE_HEIGHT, int_average(c_z, d_z)) (x, y, z) = current minecraft.setBlock(x, y, z, TRIANGLE_BLOCK_ID)
def draw_sierpinski_triangle(minecraft): def random_in_range(): return random.randint(-MAX_XZ, MAX_XZ) def int_average(a, b): return int(round((a + b) / 2.0)) # Draw the triangle vertices. for (x, y, z) in TRIANGLE_VERTICES: minecraft.setBlock(x, y, z, TRIANGLE_BLOCK_ID) # Pick a random point to start at. current = (random_in_range(), TRIANGLE_HEIGHT, random_in_range()) for i in xrange(MAX_ITERATIONS): if i % PRINT_FREQ == 0: print("Drew %s blocks" % i) # Pick a random vertex to "walk" toward. destination = random.choice(TRIANGLE_VERTICES) # Draw a block in the middle of the current location and the # destination. (c_x, c_y, c_z) = current (d_x, d_y, d_z) = destination current = (int_average(c_x, d_x), TRIANGLE_HEIGHT, int_average(c_z, d_z)) (x, y, z) = current minecraft.setBlock(x, y, z, TRIANGLE_BLOCK_ID)
def spawnLine(position, direction, length, blockId): for i in range(1, length): time.sleep(0.1) print(i) position = util.addVectors(position, direction) minecraft.setBlock(position.x, position.y, position.z, blockId) return position
def setBlockColor(position, color): for counter in range(position.z - positions[color][z]): minecraft.setBlock(positions[color][x], positions[color][y], positions[color][z] + counter, mcpi.block.WOOL.id, blockColorOn[color]) for counter in range(10 - position.z + positions[color][z]): minecraft.setBlock(positions[color][x], positions[color][y], position.z + counter, mcpi.block.WOOL.id, blockColorOff[color])
def spawnLine(position, direction, length, blockData, blockId2): for i in range(0, length): time.sleep(0.05) position = util.addVectors(position, direction) if (i % 5 == 0): minecraft.setBlock(position.x, position.y, position.z, blockId2) else: minecraft.setBlock(position.x, position.y, position.z, 35, blockData) return position
def fireCannon(position, direction): position = addVectors(position, direction) hit = False while not (hit): time.sleep(0.1) minecraft.setBlock(position.x, position.y, position.z, block.AIR.id) position = addVectors(position, direction) if not (minecraft.getBlock(position.x, position.y, position.z) == block.AIR.id): hit = True minecraft.setBlock(position.x, position.y, position.z, block.IRON_BLOCK.id) explosion(position) return position
def drawAxis(): print("Drawing Axis on Map") colour = 13 drawX(vec3.Vec3(19, 3, 0), block.WOOL.id, colour) spawnLine(vec3.Vec3(-6, 0, 0), vec3.Vec3(1, 0, 0), 21, colour, block.GOLD_BLOCK.id) colour = 3 drawY(vec3.Vec3(0, 17, 0), block.WOOL.id, colour) spawnLine(vec3.Vec3(0, -6, 0), vec3.Vec3(0, 1, 0), 21, colour, block.GOLD_BLOCK.id) colour = 2 drawZ(vec3.Vec3(0, 5, 17), block.WOOL.id, colour) spawnLine(vec3.Vec3(0, 0, -6), vec3.Vec3(0, 0, 1), 21, colour, block.GOLD_BLOCK.id) minecraft.setBlock(0, 0, 0, block.GOLD_BLOCK.id)
def drawZ(position, blockId, blockData): minecraft.setBlock(position.x, position.y, position.z, blockId, blockData) minecraft.setBlock(position.x, position.y, position.z + 1, blockId, blockData) minecraft.setBlock(position.x, position.y, position.z + 2, blockId, blockData) minecraft.setBlock(position.x, position.y, position.z + 3, blockId, blockData) minecraft.setBlock(position.x, position.y, position.z + 4, blockId, blockData) minecraft.setBlock(position.x, position.y - 3, position.z + 3, blockId, blockData) minecraft.setBlock(position.x, position.y - 2, position.z + 2, blockId, blockData) minecraft.setBlock(position.x, position.y - 1, position.z + 1, blockId, blockData) minecraft.setBlock(position.x, position.y - 4, position.z, blockId, blockData) minecraft.setBlock(position.x, position.y - 4, position.z + 1, blockId, blockData) minecraft.setBlock(position.x, position.y - 4, position.z + 2, blockId, blockData) minecraft.setBlock(position.x, position.y - 4, position.z + 3, blockId, blockData) minecraft.setBlock(position.x, position.y - 4, position.z + 4, blockId, blockData)
def drawY(position, blockId, blockData): minecraft.setBlock(position.x, position.y, position.z, blockId, blockData) minecraft.setBlock(position.x, position.y + 1, position.z, blockId, blockData) minecraft.setBlock(position.x, position.y + 2, position.z, blockId, blockData) minecraft.setBlock(position.x, position.y + 3, position.z, blockId, blockData) minecraft.setBlock(position.x, position.y + 4, position.z + 1, blockId, blockData) minecraft.setBlock(position.x, position.y + 4, position.z - 1, blockId, blockData) minecraft.setBlock(position.x, position.y + 5, position.z + 2, blockId, blockData) minecraft.setBlock(position.x, position.y + 5, position.z - 2, blockId, blockData)
def drawX(position, blockId, blockData): minecraft.setBlock(position.x, position.y, position.z, blockId, blockData) minecraft.setBlock(position.x + 1, position.y + 1, position.z, blockId, blockData) minecraft.setBlock(position.x + 1, position.y - 1, position.z, blockId, blockData) minecraft.setBlock(position.x + 2, position.y + 2, position.z, blockId, blockData) minecraft.setBlock(position.x + 2, position.y - 2, position.z, blockId, blockData) minecraft.setBlock(position.x - 1, position.y + 1, position.z, blockId, blockData) minecraft.setBlock(position.x - 1, position.y - 1, position.z, blockId, blockData) minecraft.setBlock(position.x - 2, position.y + 2, position.z, blockId, blockData) minecraft.setBlock(position.x - 2, position.y - 2, position.z, blockId, blockData)
def setBlockColor(position, color): minecraft.setBlock(position.x, position.y, position.z, mcpi.block.WOOL.id, color)
def explosion(position): minecraft.setBlock(position.x, position.y, position.z, block.AIR.id) minecraft.setBlock(position.x + 1, position.y, position.z, block.AIR.id) minecraft.setBlock(position.x - 1, position.y, position.z, block.AIR.id) minecraft.setBlock(position.x, position.y + 1, position.z, block.AIR.id) minecraft.setBlock(position.x, position.y - 1, position.z, block.AIR.id) minecraft.setBlock(position.x, position.y, position.z + 1, block.AIR.id) minecraft.setBlock(position.x, position.y, position.z - 1, block.AIR.id)
import time blue = 18 minecraft = mcpi.minecraft.Minecraft.create() RPi.GPIO.setmode(RPi.GPIO.BCM) RPi.GPIO.setup(blue, RPi.GPIO.OUT, initial=False) def ledOn(port): RPi.GPIO.output(port, True) def ledOff(port): RPi.GPIO.output(port, False) try: while True: position = minecraft.player.getTilePos() material = minecraft.getBlock(position.x, position.y, position.z) if material != mcpi.block.SNOW.id: ledOn(blue) time.sleep(0.1) ledOff(blue) minecraft.setBlock(position.x, position.y, position.z, mcpi.block.SNOW) except KeyboardInterrupt: RPi.GPIO.cleanup()