from mcpi.minecraft import Minecraft
from collections.abc import Iterable
import time
import collections
import minecraftstuff
import mcpi.block as block
collections.Iterable = Iterable
# Создаем подключение к Minecraft
mc = Minecraft.create()
mcdrawing = minecraftstuff.MinecraftDrawing(mc)
# Создаем список блоков для судна
skateboardBlocks = []
# Добавляем блоки для создания квадрата (4 фиолетовые плиты)
skateboardBlocks.append(minecraftstuff.ShapeBlock(-1, 1, 0, block.Block(44, 6)))
skateboardBlocks.append(minecraftstuff.ShapeBlock(0, 1, 0, block.Block(44, 6)))
skateboardBlocks.append(minecraftstuff.ShapeBlock(-1, 1, -1, block.Block(44, 6)))
skateboardBlocks.append(minecraftstuff.ShapeBlock(0, 1, -1, block.Block(44, 6)))
# Остальной код остается неизменным
pos = mc.player.getTilePos()
mc.player.setTilePos(pos.x, 150, pos.z)
planePos = mc.player.getTilePos()
planePos.x += 2
planeShape = minecraftstuff.MinecraftShape(mc, planePos, skateboardBlocks)
x = -1
y = -1
z = 0
isExit = False
inPlane = False
# Выводим приветственные сообщения
mc.postToChat("Добро пожаловать в Симулятор полёта в Minecraft.")
mc.postToChat("Твоя задача - высоко лететь в небе и держаться подальше от суши.")
mc.postToChat("Управление осуществляется через чат.")
mc.postToChat("q - ЗАПУСК ДВИГАТЕЛЯ")
mc.postToChat("w - вверх.")
mc.postToChat("s - вниз.")
mc.postToChat("a - влево.")
mc.postToChat("d - вправо.")
mc.postToChat("end - завершить игру.")
mc.postToChat("v - переключить обзор камеры.")
while True:
b = mc.getBlock(planePos.x, planePos.y - 1, planePos.z)
planeShape.moveBy(x, y, z)
time.sleep(0.5)
if inPlane:
mc.player.setTilePos(planePos.x, planePos.y + 3, planePos.z)
# Проверяем события чата для управления самолетом
chat = mc.events.pollChatPosts()
for c in chat:
m = c.message
if m == "s":
mc.postToChat("Направление вниз.")
y = -1
elif m == "w":
mc.postToChat("Направление вверх.")
y = 1
elif m == "d":
mc.postToChat("Поворот направо.")
z = -1
elif m == "a":
mc.postToChat("Поворот налево.")
z = 1
elif m == "q":
mc.postToChat("Курс прямо.")
y = 0
z = 0
elif m == "end":
mc.postToChat("До свидания!")
planeShape.clear()
isExit = True
elif m == "v":
mc.postToChat("Обзор камеры изменен!")
inPlane = not inPlane
# Проверяем столкновение с поверхностью
if b != block.AIR.id:
mc.postToChat("Судно потерпело крушение!!! Всем покинуть свои места!!!")
x = planePos.x
y = planePos.y
z = planePos.z
mc.setBlocks(x + 10, y + 1, z, x, y + 1, z, block.TNT.id)
mc.setBlocks(x + 10, y + 2, z, x, y + 2, z, block.FIRE.id)
isExit = True
if isExit:
break