https://pastein.ru/t/AKV

  скопируйте уникальную ссылку для отправки


from mcpi.minecraft import Minecraft
from collections.abc import Iterable

import time
import collections
import minecraftstuff
import mcpi.block as block

collections.Iterable = Iterable

mc = Minecraft.create()
pos = mc.player.getTilePos()
pos.y = 59

sub = [
    minecraftstuff.ShapeBlock(0, 0, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(1, 0, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(-1, 0, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(-2, 1, 0, block.GLASS.id),
    minecraftstuff.ShapeBlock(-1, 1, 1, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(-1, 1, -1, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(0, 1, -1, block.GLASS.id),
    minecraftstuff.ShapeBlock(0, 1, 1, block.GLASS.id),
    minecraftstuff.ShapeBlock(1, 1, -1, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(1, 1, 1, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(2, 1, -1, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(2, 1, 1, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(2, 1, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(0, 2, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(1, 2, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(-1, 2, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(2, 2, 0, block.IRON_BLOCK.id),
    minecraftstuff.ShapeBlock(1, 3, 0, block.DIAMOND_BLOCK.id),
    minecraftstuff.ShapeBlock(1, 4, 0, block.DIAMOND_BLOCK.id),
    minecraftstuff.ShapeBlock(0, 4, 0, block.DIAMOND_BLOCK.id),
]

subShape = minecraftstuff.MinecraftShape(mc, pos, sub)
xSub = 0
ySub = 0
zSub = 0
over = False
t = 1

mc.postToChat("Добро пожаловать! Ты диспетчер подводной лодки!")
mc.postToChat("Твоя задача - не врезаться и не всплывать слишком высоко!")
mc.postToChat("Иначе проиграешь!")
time.sleep(5)

mc.postToChat("Управление в чате:")
mc.postToChat("start: запустить лодку")
mc.postToChat("stop: остановить лодку")
mc.postToChat("up: плыть вверх")
mc.postToChat("down: плыть вниз")
mc.postToChat("mid: плыть прямо")
mc.postToChat("s1: первая скорость")
mc.postToChat("s2: вторая скорость")
mc.postToChat("s3: третья скорость")
mc.postToChat("control: управление лодкой")
mc.postToChat("exit: выйти")
time.sleep(5)

mc.postToChat("Игра началась!")

while True:
    time.sleep(t)
    b = mc.getBlock(pos.x - 2, pos.y + 3, pos.z)
    subShape.moveBy(xSub, ySub, zSub)
    chat = mc.events.pollChatPosts()

    for c in chat:
        m = c.message
        if m == "start":
            xSub = -1
            mc.postToChat("Запускаю двигатель!")
        elif m == "stop":
            xSub = 0
        elif m == "up":
            ySub = 1
        elif m == "down":
            ySub = -1
        elif m == "mid":
            ySub = 0
        elif m == "s1":
            t = 1
        elif m == "s2":
            t = 0.5
        elif m == "s3":
            t = 0.1
        elif m == "control":
            mc.postToChat("Управление в чате:")
            mc.postToChat("start: запустить лодку")
            mc.postToChat("stop: остановить лодку")
            mc.postToChat("up: плыть вверх")
            mc.postToChat("down: плыть вниз")
            mc.postToChat("mid: плыть прямо")
            mc.postToChat("s1: первая скорость")
            mc.postToChat("s2: вторая скорость")
            mc.postToChat("s3: третья скорость")
            mc.postToChat("control: управление лодкой")
            mc.postToChat("exit: выйти")
        elif m == "exit":
            subShape.clear()
            over = True

    if b != block.WATER_STATIONARY.id:
        mc.postToChat("---------------")
        mc.postToChat("Ты проиграл!!!")
        mc.postToChat("---------------")
        time.sleep(3)
        subShape.clear()
        break

    if over:
        break