https://pastein.ru/t/QMV

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

Загрузка данных


import mcpi.minecraft as minecraft
import mcpi.block as block
import minecraftstuff
import time
import datetime
import math


def findPointOnCircle(cx, cy, radius, angle):
    x = cx + math.sin(math.radians(angle)) * radius
    y = cy + math.cos(math.radians(angle)) * radius
    x = int(round(x, 0))
    y = int(round(y, 0))
    return (x, y)


# Создаем соединение с Minecraft
mc = minecraft.Minecraft.create()

# Создаем объект для рисования в Minecraft
mcdrawing = minecraftstuff.MinecraftDrawing(mc)

# Получаем позицию игрока
pos = mc.player.getTilePos()

# Создаем циферблат часов над игроком
clockMiddle = pos
clockMiddle.y = clockMiddle.y + 25

CLOCK_RADIUS = 20
HOUR_HAND_LENGTH = 10
MIN_HAND_LENGTH = 18
SEC_HAND_LENGTH = 20

# Рисуем круг циферблата часов
mcdrawing.drawCircle(clockMiddle.x, clockMiddle.y, clockMiddle.z,
                     CLOCK_RADIUS, block.DIAMOND_BLOCK.id)

while True:
    # Получаем текущее время
    timeNow = datetime.datetime.now()
    hours = timeNow.hour
    if hours >= 12:
        hours = timeNow.hour - 12
    minutes = timeNow.minute
    seconds = timeNow.second

    # Расчет угла для часовой стрелки
    hourHandAngle = (360 / 12) * hours
    # Находим координаты конца часовой стрелки на циферблате
    hourHandX, hourHandY = findPointOnCircle(clockMiddle.x, clockMiddle.y,
                                             HOUR_HAND_LENGTH, hourHandAngle)
    # Рисуем часовую стрелку
    mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z,
                       hourHandX, hourHandY, clockMiddle.z,
                       block.DIRT.id)

    # Расчет угла для минутной стрелки
    minHandAngle = (360 / 60) * minutes
    # Находим координаты конца минутной стрелки на циферблате
    minHandX, minHandY = findPointOnCircle(clockMiddle.x, clockMiddle.y,
                                           MIN_HAND_LENGTH, minHandAngle)
    # Рисуем минутную стрелку
    mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z - 1,
                       minHandX, minHandY, clockMiddle.z - 1,
                       block.WOOD_PLANKS.id)

    # Расчет угла для секундной стрелки
    secHandAngle = (360 / 60) * seconds
    # Находим координаты конца секундной стрелки на циферблате
    secHandX, secHandY = findPointOnCircle(clockMiddle.x, clockMiddle.y,
                                           SEC_HAND_LENGTH, secHandAngle)
    # Рисуем секундную стрелку
    mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z + 1,
                       secHandX, secHandY, clockMiddle.z + 1,
                       block.STONE.id)

    # Ждем 1 секунду
    time.sleep(1)

    # Удаляем стрелки, нарисованные на предыдущем кадре
    mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z,
                       hourHandX, hourHandY, clockMiddle.z,
                       block.AIR.id)
    mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z - 1,
                       minHandX, minHandY, clockMiddle.z - 1,
                       block.AIR.id)
    mcdrawing.drawLine(clockMiddle.x, clockMiddle.y, clockMiddle.z + 1,
                       secHandX, secHandY, clockMiddle.z + 1,
                       block.AIR.id)