Source code for demo.gate

"""
Define a castle gateway with portcullis
"""

from time import sleep

from mciwb.imports import Direction, FillMode, Item, Switch, Vec3, get_client, get_world


[docs] def portcullis(position, close, width=4, height=6): """ Open and close a portcullis """ if close: steps = range(height, 0, -1) item = Item.ACACIA_FENCE else: steps = range(1, height) item = Item.AIR c = get_client() for step in steps: start = position + Direction.UP * (step - 1) stop = start + Direction.EAST * width c.fill(start, stop, item, mode=FillMode.REPLACE) sleep(0.5)
[docs] def make_gate(position=None): """ Create a castle gate with working portcullis """ position = position or Vec3(x=623, y=73, z=-1660) def open_close(switch): portcullis(position, switch.powered) gate_pos = position + Direction.SOUTH + Direction.WEST * 2 get_world().load("blocks/gate.json", gate_pos) Switch(gate_pos, Item.LEVER, open_close, name="portcullis")
def disable_gate(): Switch.remove_named("portcullis")