Содержание статьи:
Ферма цветов в Minecraft
1) Ферма в Minecraft: постройка на Python
2) Размеры и положение
3) Ограничение воды стеклом по периметру
4) Размещение воды
5) Земля на воде
6) Размещение цветов на земле
7) Строительство забора вокруг фермы
Ферма железа в Minecraft
1) Создание переменных для программирования в Minecraft на Python
2) Строительство территории
3) Создание механизма генерации железных блоков
4) Запуск программы и проверка фермы железа на Python
Программирование жителей
import mcpi.minecraft as minecraft
import mcpi.block as block
#Подключение к серверу Minecraft
mc=minecraft.Minecraft.create()
#Получение координат игрока
player_pos=mc.player.getTilePos()
#Задаём размеры и положение
farm_width=10
farm_length=10
farm_height=1
farm_pos_x=player_pos.x+1
farm_pos_y=player_pos.y
farm_pos_z=player_pos.z+1
mc.setBlocks(farm_pos_x-1,farm_pos_y-1,farm_pos_z-1,farm_pos_x+farm_width,farm_pos_y-1,farm_pos_z+farm_length,block.GLASS.id)
#Размещаем воду
mc.setBlocks(farm_pos_x,farm_pos_y-1,farm_pos_z,farm_pos_x+farm_width-1,farm_pos_y-1,farm_pos_z+farm_length-1,block.WATER.id)
#Размещаем землю на воде
mc.setBlocks(farm_pos_x,farm_pos_y,farm_pos_z,farm_pos_x+farm_width-1,farm_pos_y,farm_pos_z+farm_length-1,block.GRASS.id)
#Размещаем цветы на земле
mc.setBlocks(farm_pos_x,farm_pos_y+1,farm_pos_z,farm_pos_x+farm_width-1,farm_pos_y+1,farm_pos_z+farm_length-1,block.FLOWER_YELLOW.id)
#Строим забор
for y in range(farm_pos_y,farm_pos_y+farm_height):
for x in range(farm_pos_x-1,farm_pos_x+farm_width+1):
mc.setBlock(x,y,farm_pos_z-1,block.FENCE.id)
mc.setBlock(x,y,farm_pos_z+farm_length,block.FENCE.id)
for z in range(farm_pos_z-1,farm_pos_z+farm_length+1):
mc.setBlock(farm_pos_x-1,y,z,block.FENCE.id)
mc.setBlock(farm_pos_x+farm_width,y,z,block.FENCE.id)
import mcpi.minecraft as minecraft
import mcpi.block as block
import time
#Подключение к серверу Minecraft
mc=minecraft.Minecraft.create()
#Получение координат игрока
player_pos=mc.player.getTilePos()
#Задаем размеры и положение фермы
farm_width=10
farm_length=10
farm_height=1
farm_pos_x=player_pos.x+1
farm_pos_y=player_pos.y
farm_pos_z=player_pos.z+1
#Строим ограничение земли стеклом по периметру
mc.setBlocks(farm_pos_x-1, farm_pos_y-1, farm_pos_z-1, farm_pos_x+farm_width, farm_pos_y-1, farm_pos_z+farm_length, block.GLASS.id)
#Размещаем землю
mc.setBlocks(farm_pos_x, farm_pos_y-1, farm_pos_z, farm_pos_x+farm_width-1, farm_pos_y-1, farm_pos_z+farm_length-1, block.GLASS.id)
#Строим забор вокруг фермы
for y in range(farm_pos_y, farm_pos_y+farm_height):
for x in range(farm_pos_x-1, farm_pos_x+farm_width+1):
mc.setBlocks(x,y,farm_pos_z-1, block.FENCE.id)
mc.setBlocks(x,y,farm_pos_z+farm_lenght, block.FENCE.id)
for z in range(farm_pos_z-1, farm_pos_z+farm_lenght+1):
mc.setBlock(farm_pos_x-1, y,z,block.FENCE.id)
mc.setBlocks(farm_pos_x+farm_width,y,zblock.FENCE.id)
#Координаты блока, на который нужно нажать для активации/деактивации фермы
activation_block_x=farm_pos_x+1
activation_block_y=farm_pos_y+1
activation_block_z=farm_pos_z+1
#Установка блока для активации фермы
mc.setBlock(activation_block_x,activation_block_y,activation_block_z,block.STONE.id)
#Основной смысл программы
While True:
#Проверить, нажал ли игрок на блок активации
if(player_pos.x, player_pos.y, player_pos.z)==(activation_block_x,activation_block_y,activation_block_z):
farm_active=True
mc.postToChat("Ферма железа активирована"
mc.setBlock(activation_block_x+3,activation_block_y+1,activation_block_z,block.IRON_BLOCK.id)
else:
farm_active=False
mc.postToChat("Ферма железа деактивирована")
time.sleep(0,1) # Подождать некоторое время перед следующей проверкой
from minecraft import *
mc = Minecraft.create()
# Определение координат
x, y, z = mc.player.getTilePos()
# Создание фермы
for i in range(5):
for j in range(5):
# Размещение моба
mc.spawnEntity(x + i, y, z + j, EntityType.COW)
# Вывод сообщения об успешном создании фермы
mc.postToChat(«Ферма мобов создана!»)