
Полный код и видеоинструкцию вы можете найти в конце статьи.
Давайте приступим к программированию.
Программирование
Создадим python-файл под названием newYear (в переводе с англ. - Новый год).

Импортируем необходимые модули для программирования. Нам нужен модуль minecraft, модуль block и time, чтобы останавливать программу на какое-то время. Остановка времени нам пригодится для гирлянды.
В переменную mc поместим команду для программирования в Minecraft. Позицию персонажа поместим в переменную pos. Координаты по трём осям поместим в отдельные переменные: x, y, z. К переменной x прибавим один, чтобы ёлка в будущем появлялась не в персонаже, а на один блок дальше.
Создадим ствол дерева длиной в пять блоков. Ко второму Y мы прибавляем 4, так как отсчет идёт от нуля.


Теперь напишем строчки кода, чтобы сделать ёлку, но пока без украшений. Их мы добавим чуть позже. На верхушку елки поставим алмазный блок.



А теперь запустим бесконечный цикл. Создадим три списка: level1, level2, level3. Каждый список наполним блоками в разных порядках, чтобы ёлка красиво и равномерно переливалась цветами. Наряжать ёлку будем в три уровня. Первый уровень — это нижняя часть ёлки, второй — средняя, третий — верхняя, не считая верхушки.

Запустим цикл for, в котором будет останавливаться время на три миллисекунды. Наша задача — нарядить ёлку на первом уровне. Первый уровень будет показывать сначала алмазные блоки, затем — золотые, а потом — железные и так бесконечно.


Второй уровень начнет светить сначала золотыми блоками, затем — железными, потом — алмазными и так бесконечно.


Третий уровень начнем с железных блоков, затем пойдут алмазные, а потом золотые и так по кругу.


В каждом уровне можно ставить свои блоки, которые больше подойдут по вашему вкусу.


С помощью команды time.sleep можно регулировать скорость смены цветов. Чем число меньше, тем скорость смены цветов быстрее. И наоборот: чем число больше, тем скорость смены цветов ниже.

Кладём под ёлку подарочки. Пишите в комментариях, какое желание загадываете на Новый год.

Если хотите научиться программировать в Minecraft с помощью языка программирования Python и разрабатывать свои интересные проекты, записывайтесь к нам на продвинутый курс и мы вам всему научим.
Полный код программы
import mcpi.minecraft as minecraft
import mcpi.block as block
import time
mc = minecraft.Minecraft.create()
pos = mc.player.getTilePos()
x = pos.x + 1
y = pos.y
z = pos.z
mc.setBlocks(x, y, z, x, y + 4, z, block.WOOD.id)
mc.setBlocks(x + 1, y + 2, z, x + 3, y + 2, z, block.LEAVES.id)
mc.setBlocks(x - 1, y + 2, z, x - 3, y + 2, z, block.LEAVES.id)
mc.setBlocks(x, y + 2, z + 1, x, y + 2, z + 3, block.LEAVES.id)
mc.setBlocks(x, y + 2, z - 1, x, y + 2, z - 3, block.LEAVES.id)
mc.setBlock(x + 1, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x + 1, y + 2, z - 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z - 1, block.LEAVES.id)
mc.setBlock(x + 1, y + 2, z + 2, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z + 2, block.LEAVES.id)
mc.setBlock(x + 1, y + 2, z - 2, block.LEAVES.id)
mc.setBlock(x - 1, y + 2, z - 2, block.LEAVES.id)
mc.setBlock(x + 2, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x - 2, y + 2, z + 1, block.LEAVES.id)
mc.setBlock(x + 2, y + 2, z - 1, block.LEAVES.id)
mc.setBlock(x - 2, y + 2, z - 1, block.LEAVES.id)
mc.setBlocks(x + 1, y + 3, z, x + 2, y + 2, z, block.LEAVES.id)
mc.setBlocks(x - 1, y + 3, z, x - 2, y + 2, z, block.LEAVES.id)
mc.setBlocks(x, y + 3, z + 1, x, y + 2, z + 2, block.LEAVES.id)
mc.setBlocks(x, y + 3, z - 1, x, y + 2, z - 2, block.LEAVES.id)
mc.setBlock(x + 1, y + 3, z + 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 3, z + 1, block.LEAVES.id)
mc.setBlock(x + 1, y + 3, z - 1, block.LEAVES.id)
mc.setBlock(x - 1, y + 3, z - 1, block.LEAVES.id)
mc.setBlock(x + 1, y + 4, z, block.LEAVES.id)
mc.setBlock(x - 1, y + 4, z, block.LEAVES.id)
mc.setBlock(x, y + 4, z + 1, block.LEAVES.id)
mc.setBlock(x, y + 4, z - 1, block.LEAVES.id)
mc.setBlock(x, y + 5, z, block.DIAMOND_BLOCK.id)
while True:
level1 = [
block.ICE.id,
block.SNOW_BLOCK.id,
block.LAPIS_LAZULI_BLOCK.id
]
level2 = [
block.SNOW_BLOCK.id,
block.LAPIS_LAZULI_BLOCK.id,
block.ICE.id
]
level3 = [
block.LAPIS_LAZULI_BLOCK.id,
block.ICE.id,
block.SNOW_BLOCK.id
]
for i in range(3):
time.sleep(0.1)
mc.setBlock(x + 1, y + 2, z + 2, level1[i])
mc.setBlock(x - 1, y + 2, z + 2, level1[i])
mc.setBlock(x + 1, y + 2, z - 2, level1[i])
mc.setBlock(x - 1, y + 2, z - 2, level1[i])
mc.setBlock(x + 2, y + 2, z + 1, level1[i])
mc.setBlock(x - 2, y + 2, z + 1, level1[i])
mc.setBlock(x + 2, y + 2, z - 1, level1[i])
mc.setBlock(x - 2, y + 2, z - 1, level1[i])
mc.setBlock(x - 3, y + 2, z, level1[i])
mc.setBlock(x + 3, y + 2, z, level1[i])
mc.setBlock(x, y + 2, z - 3, level1[i])
mc.setBlock(x, y + 2, z + 3, level1[i])
mc.setBlock(x + 1, y + 3, z + 1, level2[i])
mc.setBlock(x - 1, y + 3, z + 1, level2[i])
mc.setBlock(x + 1, y + 3, z - 1, level2[i])
mc.setBlock(x - 1, y + 3, z - 1, level2[i])
mc.setBlocks(x + 1, y + 3, z, x + 2, y + 2, z, level2[i])
mc.setBlocks(x - 1, y + 3, z, x - 2, y + 2, z, level2[i])
mc.setBlocks(x, y + 3, z + 1, x, y + 2, z + 2, level2[i])
mc.setBlocks(x, y + 3, z - 1, x, y + 2, z - 2, level2[i])
mc.setBlock(x + 1, y + 4, z, level3[i])
mc.setBlock(x - 1, y + 4, z, level3[i])
mc.setBlock(x, y + 4, z + 1, level3[i])
mc.setBlock(x, y + 4, z - 1, level3[i])