Wir wollen zusammen einen Zoo, evt. mit Aquarium, bauen und haben dafür zuerst einige Gehege programmiert:
kleines Gehege:
def kleines_Gehege(x,y,z): blocks.fill(SPRUCE_FENCE, world(x, y, z), world(x+19, y+1, z+19), FillOperation.HOLLOW) blocks.fill(AIR, world(x+1, y, z+1), world(x+18, y+2, z+18), FillOperation.REPLACE) kleines_Gehege(x,y,z) #selber einsetzen
Wir haben uns für eine flache Welt entschieden, weil es so am einfachsten ist, den Zoo zu bauen.
Aquarium:
def Aquarium(x,y,z): blocks.fill(GLASS, world(x, y-1, z), world(x+14, y+10, z+20), FillOperation.HOLLOW) blocks.fill(GRASS, world(x, y-1, z), world(x+14, y-1, z+20), FillOperation.REPLACE) blocks.fill(SAND, world(x+1, y-1, z+1), world(x+13, y-1, z+19), FillOperation.REPLACE) blocks.fill(WATER, world(x+1, y+1, z+1), world(x+13, y+9, z+19), FillOperation.REPLACE) Aquarium(72,-60,99)
Tiere:
- Schweine:im Streichelzoo (eingezäuntes Gehege mit Sicherheitstor(zwei Türen nach einander, damit Tiere nicht raus können))
- Esel: im Streichelzoo (mit Unterkünften für die Tiere)
- Lamas:im Streichelzoo
- Pferd:im Streichelzoo
- Kuh:im Streichelzoo
- Schafe:im Streichelzoo
- Ziegen:hohes Gehege aus Glas(vllt Berg)
- Fledermaus:dunkle Höhle, man kann durchlaufen
- Meeresschildkröte:Sandbank und Wasserbecken,
- Fische&Delfine:in ein Aquarium aus Glas, geht auch unterirdisch, mit Durchgang zum Anschauen
- Tintenfische(2Arten)&Quallen: separates Aquarium
- Papageie: kleintier Streichelzoo?, ganz zu gehege
- Hase, Huhn: kleintier Streichelzoo, doppel Tor, überdachte Unterkunft
- Pandas:Bambuslandschaft
- Fuchs:Gehege mit Bäumen und unterirdischen Bau
- Wolf:grosses Gehege mitBäumen und Höhle
- Eisbär:Schneegebiet mit Wasserbecken
- Ocelot: mit Bäumen, dunkel
- Strider:Gehege mit Lava und Dach, wegen Regen (sonst stirbt)
Für unseren Zoo brauchen wir natürlich auch noch einen Weg und einen Eingang:
Als „Special Effect“ haben wir uns gedacht, wir könnten Laternen bauen, die angehen, wenn man auf eine „Pressure Plate“ tritt:
def lampe2(x, y, z): #Der Punkt ist dort, wo die Lampe ist, man schaut NICHT auf die PressurePlate blocks.place(STONE, world(x, y-1, z)) blocks.place(REDSTONE_LAMP, world(x, y, z)) blocks.place(REDSTONE_WIRE, world(x+1, y-1, z)) blocks.fill(REDSTONE_WIRE,world(x+2, y-2, z), world(x+4, y-2, z), FillOperation.REPLACE) blocks.place(STONE_PRESSURE_PLATE, world(x+4, y, z)) blocks.place(AIR, world(x+2, y-1, z)) lampe2(x,y,z)
runder Tunnel:
def tunnel(): agent.move(FORWARD, 10) agent.turn(LEFT) agent.turn(LEFT) agent.move(FORWARD, 10) for i in range(2): agent.move(UP, 1) agent.move(LEFT, 1) agent.turn(LEFT) agent.turn(LEFT) agent.move(FORWARD, 10) agent.move(UP, 1) agent.move(RIGHT,1) agent.turn(LEFT) agent.turn(LEFT) agent.move(FORWARD, 10) agent.move(LEFT, 1) agent.turn(LEFT) agent.turn(LEFT) agent.move(FORWARD, 10) for i in range(2): agent.move(DOWN, 1) agent.move(RIGHT, 1) agent.turn(LEFT) agent.turn(LEFT) agent.move(FORWARD, 10) agent.move(DOWN, 1) agent.move(LEFT,1) agent.turn(LEFT) agent.turn(LEFT) agent.move(FORWARD, 10) tunnel()
Aquarium mit Tunnel: (Korallen & Tiere selber einfügen)
def TunnelAquarium(X,Y,Z): blocks.fill(GLASS, world(X, Y, Z), world(X+25, Y+25, Z+25), FillOperation.HOLLOW) blocks.fill(WATER, world(X+1, Y+1, Z+1), world(X+24, Y+23, Z+24), FillOperation.REPLACE) blocks.fill(GLASS, world(X+10, Y-1, Z), world(X+15, Y+5, Z+25), FillOperation.HOLLOW) blocks.fill(SAND, world(X+1,Y-1,Z+1), world(X+24,Y-1,Z+24), FillOperation.REPLACE) blocks.fill(GLOWSTONE, world(X+10,Y-1,Z), world(X+15,Y-1,Z+25), FillOperation.REPLACE) blocks.fill(AIR, world(X+11,Y,Z-1), world(X+14,Y+4,Z+25), FillOperation.REPLACE)
Eisbärgehege: Hier um die Treppen zu drehen: sieheA. Tipps und Informationen zum automatisierten Bauen
def unterirdisch(x,y,z): blocks.fill(STONE_BRICKS,world(x+1,y-1,z+1),world(x-11,y-4,z-5),FillOperation.HOLLOW) blocks.fill(AIR,world(x-1,y-1,z),world(x-3,y-1,z-1),FillOperation.REPLACE) blocks.fill(AIR,world(x-9,y-1,z),world(x-7,y-1,z-1),FillOperation.REPLACE) blocks.place(TORCH,world(x-7,y-2,z+1)) blocks.place(TORCH,world(x-3,y-2,z+1)) for i in range(3): blocks.place(blocks.block_with_data(BRICK_STAIRS, -1), world(x-i, y-1-i, z-1)) blocks.place(blocks.block_with_data(BRICK_STAIRS, -1), world(x-i, y-1-i, z)) blocks.place(blocks.block_with_data(BRICK_STAIRS, 1), world(x-10+i, y-1-i, z)) blocks.place(blocks.block_with_data(BRICK_STAIRS, 1), world(x-10+i, y-1-i, z-1)) def Wasserbecken(x,y,z): blocks.fill(GLASS,world(x-10,y-4,z-5),world(x,y-1,z-10),FillOperation.HOLLOW) blocks.fill(AIR,world(x-9,y-1,z-6),world(x-1,y-1,z-9),FillOperation.REPLACE) blocks.fill(WATER,world(x-9,y-3,z-6),world(x-1,y-1,z-9),FillOperation.REPLACE) def Zaun(x,y,z): blocks.fill(OAK_FENCE,world(x-10,y,z-5),world(x,y,z-16),FillOperation.HOLLOW) blocks.fill(AIR,world(x-9,y,z-6),world(x-1,y,z-15),FillOperation.HOLLOW) def Boden(x,y,z): blocks.fill(SNOW, world(x-9,y-1,z-10),world(x-1,y-3,z-15),FillOperation.REPLACE) def Eisbärgehege(x,y,z): unterirdisch(x,y,z) Wasserbecken(x,y,z) Zaun(x,y,z) Boden(x,y,z) Eisbärgehege(x,y,z) #der Punkt ist auf der 1.rechten Treppe, zur Durchführung schauend
Für den Streichelzoo brauchen wir ein Gehege mit zwei Türen, damit die Tiere nicht entfliehen können.
def Streichelzoo(x,y,z): blocks.fill(GLASS, world(x,y,z), world(x+25, y+2, z+25), FillOperation.HOLLOW) blocks.fill(AIR, world(x+1,y,z+1), world(x+24, y+2, z+24), FillOperation.REPLACE) blocks.fill(GLASS, world(x+25,y,z+14), world(x+23, y+2, z+16), FillOperation.HOLLOW) blocks.fill(AIR, world(x+25,y,z+15), world(x+23, y+1, z+15), FillOperation.REPLACE) blocks.place(IRON_DOOR, world(x+26, y, z+15)) blocks.place(STONE_PRESSURE_PLATE, world(x+27, y, z+15)) blocks.place(STONE_PRESSURE_PLATE, world(x+25, y, z+15)) blocks.place(IRON_DOOR, world(x+24, y, z+15)) blocks.fill(GRASS, world(x+10, y, z+12), world(x+15, y, z+17)) blocks.fill(GRASS, world(x+11, y+1, z+13), world(x+14, y+1, z+15)) blocks.fill(GRASS, world(x+5, y, z+2), world(x+9, y, z+9)) Streichelzoo(x,y,z)
Papagei Gehege: selber Bäume wachsen lassen
def papagei_gehege(X,Y,Z): blocks.fill(GLASS, world(X, Y, Z), world(X+25, Y+25, Z+25), FillOperation.HOLLOW) blocks.fill(AIR, world(X+1, Y+1, Z+1), world(X+24, Y+23, Z+24), FillOperation.REPLACE) papageien_gehege(X,Y,Z)
Panda Gehege: selber Bambus reinsetzen
def panda_gehege(X,Y,Z): blocks.fill(OAK_FENCE, world(X, Y, Z), world(X+25, Y+2, Z+25), FillOperation.HOLLOW) blocks.fill(AIR, world(X+1, Y, Z+1), world(X+24, Y+2, Z+24), FillOperation.REPLACE) panda_gehege(X,Y,Z) #beliebig einsetzen
Wir wollen auf noch eine Federmaushöhle bauen. Dafür haben wir einen grossen, dunklen Raum gebaut, mit zweimal zwei Türen. Für Beleuchtung vllt Laternen in die Eingänge setzen(per Hand)
def fledermaushoehle(x, y, z): #Der Punkt ist unten(bei der Tür) rechts. blocks.fill(BLACKSTONE, world(x, y, z), world(x-50, y+3, z-20)) #Zuerst bauen wir die Hoele (50*20) blocks.fill(AIR, world(x-1, y, z-1), world(x-49, y+3, z-19)) blocks.fill(BLACKSTONE, world(x-1, y+4, z-1), world(x-49, y+5, z-19)) blocks.fill(AIR, world(x-2, y+4, z-2), world(x-48, y+5, z-18)) blocks.fill(BLACKSTONE, world(x-2, y+6, z-2), world(x-48, y+7, z-18)) blocks.fill(AIR, world(x-3, y+6, z-3), world(x-47, y+7, z-17)) blocks.fill(BLACKSTONE, world(x-3, y+8, z-3), world(x-47, y+8, z-17)) blocks.fill(BLACKSTONE, world(x-3, y, z-1), world(x-5, y+2, z-3)) #Dann bauen wir die zwei Tueren blocks.fill(AIR, world(x-4, y, z), world(x-4, y+1, z-3)) blocks.fill(BLACKSTONE, world(x-49, y, z), world(x-48, y+2, z-3)) blocks.fill(AIR, world(x-49, y, z), world(x-49, y+1, z-3)) blocks.fill(BLACKSTONE, world(x-4, y-1,z), world(x-4, y-1, z-10)) #Am Schluss bauen wir noch den Weg blocks.fill(BLACKSTONE, world(x-49, y-1, z), world(x-49, y-1, z-10)) blocks.fill(BLACKSTONE, world(x-49, y-1, z-11), world(x-4, y-1, z-11)) fledermaushoehle(x,y,z) #hier beliebig x,y,z einsetzen
Für die Ziegen brauchen wir ein Gehege, das oben geschlossen ist, weil Ziegen sehr hoch springen können. Auch haben wir einen kleinen Hügel in das Gehege hinein programmiert.
def ziegengehege(x, y, z): #Der Punkt ist unten rechts. blocks.fill(GLASS, world(x, y, z), world(x+20, y+5, z+20)) blocks.fill(AIR, world(x+1, y, z+1), world(x+19, y+4, z+19)) blocks.fill(GRASS, world(x+5, y, z+5), world(x+12, y, z+10)) blocks.fill(GRASS, world(x+6, y+1, z+6), world(x+10, y+1, z+9)) ziegengehege(x,y,z)
Für special effect (Bienen spawnen, wo man läuft)
def on_travelled_walk(): x = player.position().get_value(Axis.X) y = player.position().get_value(Axis.Y) z = player.position().get_value(Axis.Z) player.say("x:"+str(x)+" y:"+str(y)+" z:"+str(z)) if (-20<x<20) and (y==-60) and (z==4): #für 1. und 3. Klammer, Koordinaten vom ganzen Zoo eingeben mobs.spawn(BEE, pos(0, 0, 0)) player.on_travelled(WALK, on_travelled_walk)
Eingang:
def Eingang(x,y,z): #der Punkt ist unten rechts blocks.fill(PURPUR_BLOCK, world(x, y-1, z), world(x+25, y+4, z+5), FillOperation.HOLLOW) blocks.fill(STRIPPED_OAK_WOOD, world(x, y-1, z), world(x+25, y-1, z+5), FillOperation.REPLACE) blocks.fill(AIR, world(x, y, z+2), world(x, y+1, z+3), FillOperation.REPLACE) blocks.fill(AIR, world(x+25, y, z+2), world(x+25, y+1, z+3), FillOperation.REPLACE) blocks.fill(AIR, world(x+11, y, z+5), world(x+13, y+1, z+5), FillOperation.REPLACE) #Haupteingang blocks.place(AIR, world(x+12, y+2, z+5))
Hier ist unsere fertige Welt:
def Eingang(x,y,z): #selber Schilder und Seelenfackeln blocks.fill(PURPUR_BLOCK, world(x, y-1, z), world(x+25, y+4, z+5), FillOperation.HOLLOW) blocks.fill(STRIPPED_OAK_WOOD, world(x, y-1, z), world(x+25, y-1, z+5), FillOperation.REPLACE) blocks.fill(AIR, world(x, y, z+2), world(x, y+1, z+3), FillOperation.REPLACE) blocks.fill(AIR, world(x+25, y, z+2), world(x+25, y+1, z+3), FillOperation.REPLACE) blocks.fill(AIR, world(x+11, y, z+5), world(x+13, y+1, z+5), FillOperation.REPLACE) #Haupteingang blocks.place(AIR, world(x+12, y+2, z+5)) def panda_gehege(X,Y,Z): #selber Bambus blocks.fill(OAK_FENCE, world(X, Y, Z), world(X+25, Y+2, Z+25), FillOperation.HOLLOW) blocks.fill(AIR, world(X+1, Y, Z+1), world(X+24, Y+2, Z+24), FillOperation.REPLACE) def Streichelzoo(x,y,z): #selber Knopf für Tür & bonemeal blocks.fill(GLASS, world(x,y,z), world(x+25, y+2, z+25), FillOperation.HOLLOW) blocks.fill(AIR, world(x+1,y,z+1), world(x+24, y+2, z+24), FillOperation.REPLACE) blocks.fill(GLASS, world(x+25,y,z+14), world(x+23, y+2, z+16), FillOperation.HOLLOW) blocks.fill(AIR, world(x+25,y,z+15), world(x+23, y+1, z+15), FillOperation.REPLACE) blocks.place(IRON_DOOR, world(x+26, y, z+15)) blocks.place(STONE_PRESSURE_PLATE, world(x+27, y, z+15)) blocks.place(STONE_PRESSURE_PLATE, world(x+25, y, z+15)) blocks.place(IRON_DOOR, world(x+24, y, z+15)) blocks.fill(GRASS, world(x+10, y, z+12), world(x+15, y, z+17)) blocks.fill(GRASS, world(x+11, y+1, z+13), world(x+14, y+1, z+15)) blocks.fill(GRASS, world(x+5, y, z+2), world(x+9, y, z+9)) def papagei_gehege(X,Y,Z): #selber Türen & Knopf & Bäume & bonemeal blocks.fill(GLASS, world(X, Y, Z), world(X+25, Y+25, Z+25), FillOperation.HOLLOW) blocks.fill(AIR, world(X+1, Y, Z+1), world(X+24, Y+24, Z+24), FillOperation.REPLACE) blocks.fill(GLASS, world(X+11,Y,Z+24), world(X+13, Y+2, Z+20), FillOperation.HOLLOW) blocks.fill(AIR, world(X+12, Y, Z+25), world(X+12, Y+1, Z+20)) blocks.place(STONE_PRESSURE_PLATE, world(X+12, Y, Z+26)) blocks.place(STONE_PRESSURE_PLATE, world(X+12, Y, Z+24)) blocks.fill(GLASS, world(X+11,Y,Z+1), world(X+13, Y+2, Z+3), FillOperation.HOLLOW) blocks.fill(AIR, world(X+12, Y, Z), world(X+12, Y+1, Z+3)) blocks.place(STONE_PRESSURE_PLATE, world(X+12, Y, Z-1)) blocks.place(STONE_PRESSURE_PLATE, world(X+12, Y, Z+1)) def Wolf_Ocelot(x,y,z): #selber Bäume & bonemeal blocks.fill(SPRUCE_FENCE, world(x, y, z), world(x+14, y, z+20), FillOperation.HOLLOW) blocks.fill(AIR, world(x+1, y, z+1), world(x+13, y, z+19), FillOperation.REPLACE) def ziegengehege(x, y, z): #selber bonemeal blocks.fill(GLASS, world(x, y, z), world(x+14, y+5, z+20)) blocks.fill(AIR, world(x+1, y, z+1), world(x+13, y+4, z+19)) blocks.fill(GRASS, world(x+5, y, z+5), world(x+12, y, z+10)) blocks.fill(GRASS, world(x+6, y+1, z+6), world(x+10, y+1, z+9)) def Tintenfisch(x,y,z): #selber Tiere & Korallen blocks.fill(GLASS, world(x, y-1, z), world(x+14, y+10, z+20), FillOperation.HOLLOW) blocks.fill(GRASS, world(x, y-1, z), world(x+14, y-1, z+20), FillOperation.REPLACE) blocks.fill(SAND, world(x+1, y-1, z+1), world(x+13, y-1, z+19), FillOperation.REPLACE) blocks.fill(WATER, world(x+1, y+1, z+1), world(x+13, y+9, z+19), FillOperation.REPLACE) def Schildkrötenfisch(x,y,z): #selber Tiere, Korallen, Schilder blocks.fill(GLASS, world(x, y-1, z), world(x+14, y+10, z+20), FillOperation.HOLLOW) blocks.fill(GRASS, world(x, y-1, z), world(x+14, y-1, z+20), FillOperation.REPLACE) blocks.fill(SAND, world(x+1, y-1, z+1), world(x+13, y-1, z+19), FillOperation.REPLACE) blocks.fill(WATER, world(x+1, y+1, z+1), world(x+13, y+9, z+19), FillOperation.REPLACE) def TunnelAquarium(X,Y,Z): #selber Tiere & Korallen blocks.fill(GLASS, world(X, Y, Z), world(X+25, Y+25, Z+25), FillOperation.HOLLOW) blocks.fill(WATER, world(X+1, Y+1, Z+1), world(X+24, Y+23, Z+24), FillOperation.REPLACE) blocks.fill(GLASS, world(X+10, Y-1, Z), world(X+15, Y+5, Z+25), FillOperation.HOLLOW) blocks.fill(SAND, world(X+1,Y-1,Z+1), world(X+24,Y-1,Z+24), FillOperation.REPLACE) blocks.fill(GLOWSTONE, world(X+10,Y-1,Z), world(X+15,Y-1,Z+25), FillOperation.REPLACE) blocks.fill(AIR, world(X+11,Y,Z-1), world(X+14,Y+4,Z+25), FillOperation.REPLACE) def fledermaushoehle(x, y, z): #Der Punkt ist unten(bei der Tür) rechts. blocks.fill(BLACKSTONE, world(x, y, z), world(x-50, y+3, z-20)) #Zuerst bauen wir die Hoele (50*20) blocks.fill(AIR, world(x-1, y, z-1), world(x-49, y+3, z-19)) blocks.fill(BLACKSTONE, world(x-1, y+4, z-1), world(x-49, y+5, z-19)) blocks.fill(AIR, world(x-2, y+4, z-2), world(x-48, y+5, z-18)) blocks.fill(BLACKSTONE, world(x-2, y+6, z-2), world(x-48, y+7, z-18)) blocks.fill(AIR, world(x-3, y+6, z-3), world(x-47, y+7, z-17)) blocks.fill(BLACKSTONE, world(x-3, y+8, z-3), world(x-47, y+8, z-17)) blocks.fill(BLACKSTONE, world(x-3, y, z-1), world(x-5, y+2, z-3)) #Dann bauen wir die zwei Tueren blocks.fill(AIR, world(x-4, y, z), world(x-4, y+1, z-3)) blocks.fill(BLACKSTONE, world(x-49, y, z), world(x-48, y+2, z-3)) blocks.fill(AIR, world(x-49, y, z), world(x-49, y+1, z-3)) blocks.fill(BLACKSTONE, world(x-4, y-1,z), world(x-4, y-1, z-10)) #Am Schluss bauen wir noch den Weg blocks.fill(BLACKSTONE, world(x-49, y-1, z), world(x-49, y-1, z-10)) blocks.fill(BLACKSTONE, world(x-49, y-1, z-11), world(x-4, y-1, z-11)) def unterirdisch(x,y,z): blocks.fill(STONE_BRICKS,world(x+1,y-1,z+1),world(x-11,y-4,z-5),FillOperation.HOLLOW) blocks.fill(AIR,world(x-1,y-1,z),world(x-3,y-1,z-1),FillOperation.REPLACE) blocks.fill(AIR,world(x-9,y-1,z),world(x-7,y-1,z-1),FillOperation.REPLACE) blocks.place(TORCH,world(x-7,y-2,z+1)) blocks.place(TORCH,world(x-3,y-2,z+1)) for i in range(3): blocks.place(blocks.block_with_data(BRICK_STAIRS, -1), world(x-i, y-1-i, z-1)) blocks.place(blocks.block_with_data(BRICK_STAIRS, -1), world(x-i, y-1-i, z)) blocks.place(blocks.block_with_data(BRICK_STAIRS, 1), world(x-10+i, y-1-i, z)) blocks.place(blocks.block_with_data(BRICK_STAIRS, 1), world(x-10+i, y-1-i, z-1)) def Wasserbecken(x,y,z): blocks.fill(GLASS,world(x-10,y-4,z-5),world(x,y-1,z-10),FillOperation.HOLLOW) blocks.fill(AIR,world(x-9,y-1,z-6),world(x-1,y-1,z-9),FillOperation.REPLACE) blocks.fill(WATER,world(x-9,y-3,z-6),world(x-1,y-1,z-9),FillOperation.REPLACE) def Zaun(x,y,z): blocks.fill(OAK_FENCE,world(x-10,y,z-5),world(x,y,z-16),FillOperation.HOLLOW) blocks.fill(AIR,world(x-9,y,z-6),world(x-1,y,z-15),FillOperation.HOLLOW) def Boden(x,y,z): blocks.fill(SNOW, world(x-9,y-1,z-10),world(x-1,y-3,z-15),FillOperation.REPLACE) def Eisbärgehege(x,y,z): unterirdisch(x,y,z) Wasserbecken(x,y,z) Zaun(x,y,z) Boden(x,y,z) def Zoo(): TunnelAquarium(-31,-60,-87) Schildkrötenfisch(-36,-60,-56) Tintenfisch(-16, -60, -56) ziegengehege(45,-60,-57) Wolf_Ocelot(25,-60,-57) papagei_gehege(29,-60,-87) Streichelzoo(14,-60,-31) panda_gehege(-16,-60,-30) Eingang(0,-60,0) fledermaushoehle(45,-60,-100) Eisbärgehege(-9,-60,-94) blocks.fill(STONE, world(-1, -61, 3), world(-20, -61, 2), FillOperation.REPLACE) blocks.fill(STONE, world(-20, -61, 2), world(-18, -61, -61), FillOperation.REPLACE) blocks.fill(STONE, world(-20, -61, -88), world(-19, -61, -92), FillOperation.REPLACE) blocks.fill(STONE, world(-7, -61, -94), world(-4, -61, -95), FillOperation.REPLACE) blocks.fill(STONE, world(-4, -61, -96), world(-4, -61, -99), FillOperation.REPLACE) blocks.fill(STONE, world(41, -61, -99), world(41, -61, -62), FillOperation.REPLACE) blocks.fill(STONE, world(42, -61, -61), world(40, -61, 3), FillOperation.REPLACE) blocks.fill(STONE, world(39, -61, 3), world(26, -61, 2), FillOperation.REPLACE) def on_travelled_walk(): x = player.position().get_value(Axis.X) y = player.position().get_value(Axis.Y) z = player.position().get_value(Axis.Z) player.say("x:"+str(x)+" y:"+str(y)+" z:"+str(z)) if (-20<x<20) and (y==-60) and (z==4): #für 1. und 3. Klammer, Koordinaten vom ganzen Zoo eingeben mobs.spawn(BEE, pos(0, 0, 0)) player.on_travelled(WALK, on_travelled_walk) Zoo()