8.04. Разработка в Minecraft
Разработка в Minecraft
Minecraft — это не только популярная видеоигра, но и уникальная вычислительная среда, сочетающая в себе черты песочницы, симулятора, визуального конструктора и платформы для программирования. Её архитектура, основанная на дискретном клеточном пространстве, строгих правилах физики и прозрачной модели взаимодействия, делает её подходящей для применения в образовательных и исследовательских целях. В отличие от большинства коммерческих игр, у Minecraft существует богатая экосистема модификаций, официальных и неофициальных API, а также инструментов, позволяющих использовать игру как интерфейс к реальным языкам программирования: Java, Python, JavaScript и другим.
Основная ценность Minecraft в контексте разработки заключается в том, что он преобразует абстрактные понятия — такие как алгоритм, цикл, условие, функция, пространственные координаты, события — в визуальные, тактильные и немедленно наблюдаемые действия. Построение здания через цикл for, генерация ландшафта по заданному правилу, автоматизация фермы с помощью логических схем или управление роботом-агентом — всё это становится не теоретическим упражнением, а практическим экспериментом с обратной связью в реальном времени.
Ниже рассматриваются ключевые аспекты: устройство самой игры, её архитектурные особенности, подходы к программированию «внутри» и «вокруг» Minecraft, а также конкретные реализации с участием Java и Python — двух наиболее значимых языков в экосистеме.
Как устроен Minecraft
Геймплей как основа вычислительной модели
Minecraft построен на трёх ключевых режимах взаимодействия: выживание (Survival), творчество (Creative) и приключение (Adventure). Для разработчика наибольший интерес представляют режимы Creative и Adventure, поскольку они минимизируют ограничения, связанные с ресурсами и выживанием, позволяя сосредоточиться на проектировании и автоматизации. В режиме Creative игрок располагает неограниченным набором блоков, может летать и разрушать/устанавливать блоки мгновенно — это аналог режима проектирования в CAD-среде. В режиме Adventure, напротив, игрок не может свободно изменять мир, что делает его удобным для создания интерактивных сценариев, квестов и обучающих симуляций.
Геймплей опирается на дискретное трёхмерное пространство, разбитое на кубические блоки размером 1×1×1 метр. Каждый блок принадлежит определённому типу (земля, камень, вода, лава и сотни других) и имеет фиксированное поведение в контексте физики: например, вода и лава обладают свойством растекания, песок и гравий — свойством падения под действием гравитации. Эти правила не являются «физическими законами» в классическом смысле, а реализованы как конечные автоматы и правила замены, исполняемые синхронно в каждом игровом тике (20 раз в секунду). Такая дискретизация делает поведение мира предсказуемым и воспроизводимым — необходимое условие для программного управления.
Движок и его эволюция
Изначально Minecraft был разработан Маркусом Перссоном (Notch) на языке Java с использованием графической библиотеки LWJGL (Lightweight Java Game Library), предоставляющей привязки к OpenGL. Архитектура движка изначально предполагала максимальную простоту и модульность: рендеринг, физика, генерация мира, сетевое взаимодействие и обработка ввода реализованы как отдельные подсистемы, взаимодействующие через события и общее состояние.
В 2017 году Mojang представила Minecraft: Bedrock Edition — мультиплатформенную версию игры, написанную на C++. Эта версия использует движок, основанный на собственной реализации рендеринга и физики, и поддерживает консоли, мобильные устройства и Windows. Хотя Bedrock и Java Edition имеют схожую визуальную модель и механику, их программные интерфейсы радикально различаются. Для разработки с участием внешних языков (в первую очередь Python и JavaScript) актуальна именно Java Edition — благодаря открытой природе исходного кода, обширному сообществу и наличию таких инструментов, как Minecraft Forge, Fabric и официальный Education Edition API.
Важной особенностью архитектуры является разделение на клиент и сервер. Даже при одиночной игре запускается локальный сервер, с которым клиент (рендерер и обработчик ввода) взаимодействует по протоколу, схожему с сетевым. Это позволяет легко интегрировать внешние приложения: они могут подключаться к серверу Minecraft как клиенты, отправлять команды и получать события — без изменения исходного кода игры.
Архитектура Minecraft
Архитектура Minecraft допускает вмешательство на нескольких уровнях — от модификации исходного кода до взаимодействия с уже запущенным экземпляром через внешние интерфейсы. Ниже рассматриваются основные уровни, от низкоуровневых до высокоуровневых.
Уровень исходного кода (моддинг)
Наиболее глубокий способ изменения поведения игры — создание модификаций (модов) для Java Edition. Для этого используются фреймворки-загрузчики модов:
- Minecraft Forge — наиболее зрелая и стабильная платформа, ориентированная на обратную совместимость и поддержку крупных модпаков. Позволяет переопределять поведение блоков, сущностей, предметов, GUI, генерации мира и даже сетевого протокола.
- Fabric — более лёгкий и модульный подход, предпочитаемый разработчиками, стремящимися к минимальному вмешательству и высокой производительности. Fabric API предоставляет набор инструментов для расширения функциональности без жёсткой привязки к внутренней реализации.
- Quilt — ответвление от Fabric с упором на стандартизацию и совместимость между модами.
Моддинг требует глубокого понимания внутренней структуры игры: системы событий (event bus), системы регистрации объектов (registries), жизненного цикла мира (world tick), системы загрузки чанков (chunk loading), многопоточности (основной поток игры — единственный поток, обрабатывающий логику; рендеринг и загрузка чанков могут выполняться асинхронно). Код мода компилируется в JAR-файл и загружается вместе с игрой. Такой подход даёт полный контроль, но требует постоянной адаптации под новые версии Minecraft, поскольку внутренние классы и методы часто меняют сигнатуры или удаляются.
Уровень команд и функций (command/functions)
Начиная с версии 1.13, Minecraft получил мощную встроенную систему команд и функций, реализующую декларативный язык сценариев. Команды (например, /setblock, /execute, /scoreboard) позволяют изменять мир, управлять сущностями, считывать и записывать данные. Система функций (.mcfunction-файлы) позволяет группировать команды в файлы, организовывать их в папки-пакеты данных и управлять выполнением через планировщик тиков (tick.json). Это, по сути, встроенный язык программирования без переменных в классическом смысле, но с поддержкой условного выполнения, циклов (через рекурсивные вызовы schedule), локальных и глобальных счётчиков (scoreboard), а также пространств имён.
Хотя такой подход не заменяет полноценный язык программирования, он обладает значительной выразительной силой и часто используется для создания сложных механизмов — от автоматических ферм до мини-игр и интерактивных уроков. Преимущество — отсутствие необходимости в сторонних инструментах: всё работает «из коробки» в Java Edition.
Уровень внешнего взаимодействия (API-интеграция)
Наиболее удобный для начинающих и профессионалов-не-геймдевелоперов способ — взаимодействие с уже запущенным сервером Minecraft через внешние API. Здесь выделяются три основных направления:
-
RaspberryJuice / Minecraft Pi API — адаптация протокола Minecraft: Pi Edition для Java Edition. Предоставляет TCP-интерфейс (по умолчанию порт 4711), через который клиент на Python, Java или другом языке может отправлять команды вроде
chatPost,setBlock,getPlayerPos. Изначально создавался для Raspberry Pi, но сегодня используется как легковесный способ внедрения скриптов без модификации игры. -
Minecraft Education Edition API — официальный интерфейс от Microsoft, доступный только в версии Education Edition (платной, но распространяемой через школы и университеты). Поддерживает Python, JavaScript, MakeCode и Code Connection. Обеспечивает строгую типизацию, автодополнение, отладку и интеграцию с учебными планами. Архитектурно построен на REST-подобном протоколе поверх WebSockets.
-
ComputerCraft / OpenComputers — моды, добавляющие в мир виртуальные компьютеры с собственными операционными системами и возможностью запуска скриптов на Lua (ComputerCraft) или OCaml, Lua, JavaScript (OpenComputers). Сценарии выполняются внутри игры, и их можно использовать для управления редстоун-схемами, роботами (turtle), сенсорами и даже сетевым взаимодействием между компьютерами. Это наиболее «инженерный» подход — имитация встраиваемых систем в игровом мире.
Как разрабатывать с Minecraft
Разработка в контексте Minecraft — это не только написание кода, но и проектирование интерактивной среды, где программирование становится инструментом взаимодействия с миром. Эффективное применение Minecraft в обучении или инженерных задачах требует выбора подходящей методологии, соответствующей целям, уровню подготовки участников и техническим ограничениям.
Три основных методологических подхода
-
Скриптовая автоматизация внешнего мира
Внешнее приложение (на Python, Java и др.) управляет уже запущенным сервером Minecraft, меняя блоки, телепортируя игрока, генерируя структуры, анализируя состояние мира. Этот подход позволяет использовать привычные IDE, отладчики, системы контроля версий и тестирования — то есть весь инструментарий профессиональной разработки. Он подходит для демонстрации алгоритмов (поиск пути, рекурсивное деление пространства), генеративного проектирования (фрактальные города, параметрические ландшафты), а также для автоматизации рутинных задач в образовательных сценариях (например, сброс мира после урока). -
Внутриигровое программирование
Код исполняется внутри мира Minecraft — через ComputerCraft-черепах, дисплеи OpenComputers или командные блоки. Здесь программист ограничен ресурсами виртуальной машины (память, процессорное время в игре), синтаксисом встроенного языка (чаще всего Lua), но получает немедленную визуальную обратную связь: черепаха движется, выкапывает, строит, реагирует на датчики. Такой подход ближе к робототехнике и встраиваемым системам: код взаимодействует с «железом» (пусть и виртуальным), и ошибки проявляются физически — например, черепаха застряла или упала в лаву. Это снижает когнитивную нагрузку при обучении основам: циклы, условия, функции становятся осязаемыми. -
Проектирование через моддинг и кастомизацию движка
Этот путь предполагает работу с исходным кодом игры или его расширениями. Он требует глубокого понимания архитектуры Minecraft, но даёт полную свободу: можно добавить новые типы блоков с уникальной физикой, реализовать собственные механики (например, квантовые вентили или гидродинамику), расширить сетевой протокол для интеграции с внешними симуляторами. Такой подход используется в исследовательских и инженерных проектах — например, при моделировании логистических цепочек, тестировании распределённых алгоритмов или создании симуляторов чрезвычайных ситуаций.
Типичные сценарии использования в образовательной и профессиональной практике
-
Обучение основам программирования
Через Python-скрипты или ComputerCraft учащиеся решают задачи вроде: «постройте лестницу заданной длины», «найдите кратчайший путь в лабиринте», «запрограммируйте ферму, которая собирает урожай по расписанию». Пространственная метафора заменяет абстрактные структуры данных: массив — это ряд блоков, стек — вертикальная башня, очередь — лента транспортёров. -
Изучение алгоритмов и дискретной математики
Генерация лабиринтов (алгоритм Прима, поиск в глубину), триангуляция Делоне поверхности ландшафта, раскраска карт по теореме о четырёх красках, построение деревьев решений — всё это можно визуализировать в трёхмерном пространстве игры без необходимости в сложных графических библиотеках. -
Основы архитектуры и инженерного проектирования
Учащиеся проектируют здания по заданным параметрам (высота, площадь, материалы), применяя циклы и параметрическое моделирование. Можно ввести ограничения: «постройте мост длиной 50 блоков, используя не более 200 блоков материала» — это задача оптимизации, решаемая перебором или эвристиками. -
Введение в распределённые системы и сетевое программирование
Несколько внешних скриптов могут подключаться к одному серверу, координируя действия: один скрипт генерирует задачи, другой управляет агентами, третий собирает статистику. В OpenComputers возможна реализация TCP-подобного стека поверх rednet — игры с уровнями OSI становятся наглядными. -
Прототипирование человеко-машинных интерфейсов
Комбинируя командные блоки, редстоун-логику и внешние скрипты, можно создавать интерактивные панели управления, голосовые интерфейсы (через интеграцию с внешними NLP-сервисами) или системы визуальной обратной связи (например, индикаторы на основе цветных блоков, меняющих цвет в зависимости от состояния процесса).
Python в Minecraft
Python — один из самых распространённых языков для взаимодействия с Minecraft благодаря простоте синтаксиса и наличию нескольких зрелых библиотек. Основные реализации:
1. mcpi (Minecraft: Pi Edition API) и его форки
Изначально разработанный для Raspberry Pi, протокол был портирован на Java Edition через мод RaspberryJuice (или его современную замену — Minecraft Python API Server, часть проекта mcworld или mcapi-server). Серверный мод слушает TCP-соединения (по умолчанию localhost:4711) и интерпретирует входящие команды в формате ИМЯ_КОМАНДЫ|арг1|арг2….
Клиентская библиотека mcpi (доступна через pip install mcpi) предоставляет объектно-ориентированный интерфейс:
from mcpi.minecraft import Minecraft
from mcpi import block
mc = Minecraft.create() # подключение к локальному серверу
pos = mc.player.getTilePos() # получение целочисленных координат игрока
mc.setBlock(pos.x + 1, pos.y, pos.z, block.STONE.id)
Основные возможности:
- Управление блоками (
setBlock,setBlocks,getBlock) - Перемещение игрока и сущностей (
setPlayerPosition,setEntityPosition) - Отправка сообщений в чат (
postToChat) - Работа со сферами, параллелепипедами, высотными картами
- Реакция на события (
pollBlockHits,pollChatPosts)
Ограничения:
- Протокол односторонний: клиент отправляет команды, но не получает push-уведомления об изменениях в мире (только опрос событий).
- Нет поддержки предметов, инвентаря, NBT-данных, сущностей сложного типа (кроме базового позиционирования).
- Координаты целочисленные — для работы с дробными значениями требуется округление, что снижает точность при физических симуляциях.
2. mcworld / mcapi
Проекты вроде mcworld (гипотетический пример, но отражает текущие тренды) стремятся расширить функциональность:
- Поддержка WebSocket вместо TCP для более надёжной связи
- Передача структурированных данных в JSON (включая NBT-подобные объекты)
- Асинхронный клиент на
asyncio - Интеграция с
numpyдля массовой обработки чанков
Пример асинхронного скрипта:
import asyncio
from mcapi import AsyncMinecraft
async def main():
mc = await AsyncMinecraft.connect()
world = await mc.getWorld()
chunk = await world.getChunk(0, 0)
# Анализ высоты поверхности в чанке
heights = [max(y for y in range(256) if chunk.getBlock(x, y, z) != 0)
for x in range(16) for z in range(16)]
await mc.postToChat(f"Средняя высота: {sum(heights)/len(heights):.1f}")
await mc.close()
asyncio.run(main())
Такие библиотеки позволяют использовать Minecraft как источник данных для машинного обучения (классификация биомов по высотным картам), геопространственного анализа или генеративного дизайна.
3. Education Edition API через makecode-api или pymine
В Education Edition Microsoft предоставляет официальный Python API через приложение Code Connection. Клиентская библиотека mc (в среде MakeCode Python) имеет более строгую типизацию и поддержку IntelliSense:
from mc import *
def on_chat():
player.say("Привет из Python!")
blocks.fill(AIR, pos(0,0,0), pos(10,10,10), FillOperation.REPLACE)
player.on_chat("start", on_chat)
Преимущества:
- Интеграция с учебными планами Microsoft (например, уроки по информатике для 5–9 классов)
- Встроенная отладка с пошаговым выполнением
- Поддержка 3D-визуализатора кода
Недостатки:
- Требуется лицензия Education Edition
- Ограниченная совместимость с Java Edition (нельзя использовать на обычном сервере)
- Закрытая спецификация API — расширение функционала затруднено
Java в Minecraft
Java — родной язык Minecraft, и его применение охватывает полный спектр от глубокой кастомизации до автоматизированного тестирования.
1. Моддинг на Forge/Fabric
Разработка мода начинается с настройки среды сборки (Gradle + Loom или ForgeGradle). Простейший мод, добавляющий команду /hello, может выглядеть так (Fabric):
public class HelloCommand {
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
dispatcher.register(literal("hello")
.executes(context -> {
ServerPlayerEntity player = context.getSource().getPlayer();
player.sendMessage(Text.literal("Здравствуйте, " + player.getName().getString() + "!"), false);
return 1;
})
);
}
}
Моддинг позволяет:
- Вводить новые блоки с кастомным рендерингом и поведением (например, блок-сенсор, меняющий состояние при приближении игрока)
- Создавать сущности с ИИ (патрулирующие роботы, помощники)
- Перехватывать и модифицировать сетевые пакеты (для интеграции с внешними системами)
- Реализовывать многопоточную логику вне основного игрового цикла (например, фоновую генерацию мира)
Критически важно соблюдать правила потокобезопасности: любое изменение мира (World.setBlockState и т.п.) должно происходить в основном потоке игры — обычно через server.execute() или World.tickable.
2. Разработка собственных серверов и прокси
На базе исходного кода Minecraft можно создать урезанный сервер, ориентированный не на игру, а на вычисления. Например, сервер, который:
- Принимает JSON-запросы через HTTP-интерфейс (встроенный Jetty или Spring Boot)
- Выполняет генерацию структур по параметрам
- Возвращает результат в виде NBT-файла схемы
Такой подход используется в инструментах вроде WorldEdit (хотя он реализован как мод) или MCEdit (устаревший, но концептуально важный редактор миров).
3. Боты и автоматизированные клиенты
Существуют библиотеки для создания автономных клиентов Minecraft на Java:
- Mineflayer — на самом деле написан на Node.js, но имеет Java-аналоги вроде
minecraft-protocol - Steer — лёгкий клиент для Java 17+, поддерживающий современные версии
Бот может:
- Подключаться к серверу как обычный игрок
- Выполнять команды, строить, добывать ресурсы
- Реагировать на события (ущерб, сообщения в чате)
- Взаимодействовать с редстоун-механизмами через инвентарь
Пример сценария: бот-тестировщик, который проверяет, корректно ли работает ферма кроликов после обновления мода — он заходит на сервер, ждёт 10 минут игрового времени, считает количество кроликов и отправляет отчёт в CI/CD-систему.
Руководства
Руководство 1. Python-скриптинг через RaspberryJuice (Java Edition)
Цель: запустить сервер Minecraft, подключить к нему Python-скрипт и построить простую структуру.
Шаг 1. Установка Minecraft: Java Edition и Forge/Fabric
-
Убедитесь, что установлен Java 17 (OpenJDK или Oracle). Проверьте командой:
java -version
# Должно быть: openjdk version "17.x.x" ... -
Скачайте и установите Minecraft Launcher с официального сайта.
Запустите игру один раз, чтобы создались каталоги профиля (%APPDATA%\.minecraftна Windows,~/.minecraftна Linux). -
Установите Fabric Loader:
- Перейдите на fabricmc.net.
- Скачайте Fabric Installer.
- Запустите его, выберите версию игры
1.20.4, нажмите Install.
В лаунчере появится профильfabric-loader-0.15.11-1.20.4.
Шаг 2. Установка RaspberryJuice
-
Скачайте последнюю версию RaspberryJuice для 1.20.4:
— Например, с GitHub-репозитория →RaspberryJuice-1.12.1.jar. -
Создайте папку
modsвнутри каталога.minecraft:mkdir -p ~/.minecraft/mods # Linux/macOS
mkdir %APPDATA%\.minecraft\mods # Windows (в PowerShell) -
Поместите
RaspberryJuice-1.12.1.jarв эту папку. -
Запустите Minecraft через профиль Fabric. Убедитесь, что мод загрузился: в логах (
logs/debug.log) должно быть:[RaspberryJuice] Starting server on port 4711
Шаг 3. Настройка Python-окружения
-
Установите Python 3.10 или новее. Проверьте:
python --version -
Установите библиотеку
mcpi:pip install mcpi -
Создайте файл
first_script.py:from mcpi.minecraft import Minecraft
from mcpi import block
import time
# Подключение к локальному серверу
mc = Minecraft.create(address="localhost", port=4711)
# Получаем позицию игрока (целочисленную, "плиточную")
pos = mc.player.getTilePos()
mc.postToChat("Строим башню рядом с вами...")
# Строим башню 5×5×10 из камня
x, y, z = pos.x + 3, pos.y, pos.z
width, height = 5, 10
for dy in range(height):
for dx in range(width):
for dz in range(width):
mc.setBlock(x + dx, y + dy, z + dz, block.STONE.id)
mc.postToChat("Готово!")
Шаг 4. Запуск и проверка
-
Запустите одиночную игру в режиме Creative (создайте новый мир, выберите «Режим игры → Творчество»).
Сервер запустится автоматически. -
В консоли выполните:
python first_script.py -
В игре появится сообщение в чате, и рядом с вами возникнет каменная башня.
Важные замечания:
- Если скрипт выдаёт
ConnectionRefusedError, убедитесь, что игра запущена и вы находитесь в мире (не в меню). - RaspberryJuice по умолчанию разрешает подключение только с
localhost. Для удалённого доступа изменитеserver-ip=0.0.0.0вconfig/raspberryjuice.cfg. - Для массовой установки блоков используйте
setBlocks(x1, y1, z1, x2, y2, z2, block_id)— это одна команда вместо тысячsetBlock.
Руководство 2. Создание минимального мода на Fabric
Цель: разработать мод, добавляющий новую команду /structure pyramid, строящую пирамиду из песчаника.
Шаг 1. Настройка проекта
-
Установите Gradle и JDK 17, как в предыдущем руководстве.
-
Скачайте Fabric Example Mod с GitHub.
Распакуйте архив, откройте в IDE (рекомендуется IntelliJ IDEA). -
Выполните в корне проекта:
./gradlew genSources # Linux/macOS
gradlew.bat genSources # Windows -
Импортируйте проект как Gradle-проект в IDE.
Шаг 2. Реализация команды
-
В папке
src/main/javaсоздайте подпакет, например,com.example.structuremod. -
Создайте класс
PyramidCommand.java:package com.example.structuremod;
import net.fabricmc.fabric.api.command.v2.CommandRegistrationCallback;
import net.minecraft.block.Blocks;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.text.Text;
import net.minecraft.util.math.BlockPos;
import com.mojang.brigadier.CommandDispatcher;
import com.mojang.brigadier.arguments.IntegerArgumentType;
import static net.minecraft.server.command.CommandManager.*;
public class PyramidCommand {
public static void register() {
CommandRegistrationCallback.EVENT.register((dispatcher, registryAccess, environment) ->
dispatcher.register(literal("structure")
.then(literal("pyramid")
.then(argument("size", IntegerArgumentType.integer(1, 32))
.executes(context -> {
ServerCommandSource source = context.getSource();
int size = IntegerArgumentType.getInteger(context, "size");
BlockPos origin = source.getPosition().add(2, 0, 2).toImmutable();
buildPyramid(source.getWorld(), origin, size);
source.sendFeedback(() -> Text.literal("Пирамида " + size + "×" + size + " построена."), false);
return 1;
})
)
)
)
);
}
private static void buildPyramid(net.minecraft.world.World world, BlockPos origin, int size) {
for (int layer = 0; layer < size; layer++) {
int side = size - layer;
int y = origin.getY() + layer;
for (int x = 0; x < side; x++) {
for (int z = 0; z < side; z++) {
BlockPos pos = origin.add(x, y, z);
world.setBlockState(pos, Blocks.SANDSTONE.getDefaultState(), 3);
}
}
}
}
} -
В основном классе мода (например,
ExampleMod.java) добавьте вызов регистрации:public class ExampleMod implements ModInitializer {
@Override
public void onInitialize() {
PyramidCommand.register();
}
}
Шаг 3. Сборка и установка
-
Выполните:
./gradlew build -
В папке
build/libsпоявится файлexample-mod-1.0.0.jar. -
Скопируйте его в
.minecraft/mods. -
Запустите Minecraft через Fabric-профиль.
В игре введите:/structure pyramid 8Рядом с вами появится ступенчатая пирамида из песчаника.
Примечания:
- Используйте флаг
3вsetBlockState— этоNOTIFY_LISTENERS | REDRAW_ON_MAIN_THREAD, безопасный для вызова из команды. - Для отладки добавьте
System.out.println(...); вывод будет вlogs/latest.log. - Чтобы мод работал на сервере, поместите JAR-файл в
server/modsи запустите Fabric Server.
Руководство 3. Программирование в Minecraft: Education Edition
Цель: написать Python-скрипт, управляющий агентом (роботом) для сбора ресурсов.
Шаг 1. Установка Education Edition
- Получите лицензию через организацию (школы, университеты) или через Microsoft Azure for Education.
- Скачайте и установите Minecraft: Education Edition.
- Установите Code Connection с education.minecraft.net/code-builder.
— Это отдельное приложение, запускаемое параллельно с игрой.
Шаг 2. Настройка среды
- Запустите Code Connection. Оно откроет веб-интерфейс по адресу
http://localhost:8000. - Запустите Minecraft: Education Edition, создайте мир с включённым Code Builder (в настройках мира).
- Нажмите
Cв игре → выберите Python → MakeCode Python.
Браузер должен автоматически подключиться к Code Connection.
Шаг 3. Написание скрипта
В редакторе введите:
from mc import *
# Функция для сбора одного слоя
def harvest_layer():
for i in range(4):
agent.move(FORWARD, 1)
agent.destroy(FORWARD)
agent.collect_all()
agent.turn(RIGHT)
# Основной цикл: 3 уровня
def on_chat():
for level in range(3):
for _ in range(4):
harvest_layer()
agent.move(UP, 1)
# Привязка к команде в чате
player.on_chat("farm", on_chat)
Шаг 4. Запуск
- В игре нажмите
T, введитеfarmи Enter. - Агент начнёт выкапывать блоки перед собой, собирать предметы и подниматься по спирали.
Преимущества Education Edition:
- Агент имеет инвентарь, может нести инструменты, реагировать на типы блоков.
- Есть встроенные подсказки и проверка синтаксиса в реальном времени.
- Скрипты сохраняются в составе мира — их можно передавать ученикам.
Ограничения:
- Нет прямого доступа к NBT, сущностям (кроме агента и игрока), сетевым событиям.
- Нельзя выполнять код вне контекста чата или кнопки — нет
main()-функции.