Есть классная игра MINECRAFT. Думаю, что она не нуждается в представлении.
Так вот, строить вручную большие и/или однотипные объекты из блоков там достаточно долго. Для этого придумано много средств автоматизации.
Если вас пугают такие страшные слова, как Python, Java, C++, тогда welcome сюда!
Теперь можно управлять игрой прямо из встроенного языка программирования 1С:Предприятие.
В прикрепленных файлах находится внешняя обработка, которая является ключом к успеху инструментом для взаимодействия с миром Майнкрафта.
Но обо всем по порядку.
Что нам нужно:
1) Оригинальная игра Minecraft (купите лицензию!)
2) Модифицированный сервер игры (НЕ оригинальный), который поддерживает плагины. Я использую Spigot
3) Плагин RaspberryJuice для взаимодействия с игрой извне
4) Внешняя обработка из данной статьи, в которой содержится нативная внешняя компонента для передачи команд в игру.
5) Свободно распространяемый драйвер умелыеруки.sys
6) Немного времени, чтобы всё это настроить
Пристегнитесь и полетели...
Для упрощения создадим bat'ник для запуска игрового сервера примерно со следующим содержимым
%path_to_java% -Xmx2048M -Xms2048M -jar spigot-Х.Y.Z.jar nogui
%path_to_java% - это путь к рантайму виртуальной машины Ява (Джава, если вам так удобнее)
Много памяти для Java лишним не будет, но всё равно нужно понимать, для чего нужны параметры Xmx и Xms (у себя я ставлю 4096M или даже 8192M, если за раз необходимо возводить 1М+ блоков)
Заметьте, что с релиза игры 1.17 требуется версия Java 16+
скачать можно здесь , и желательно прописать путь к java в переменную PATH для удобства вызова (инсталлятор это умеет делать)
При первом запуске батника создадутся необходимые директории и файлы
в файле eula.txt нужно на всё согласиться:
eula=true
в файле server.properties нужно поменять для ... для... , ну вы поняли, о чём я )
online-mode=false
В папку plugins закидываем raspberryjuice-1.12.1.jar - он хоть и старый и уже не поддерживается, но работает даже с майнкрафтом версии 1.17.1
в файле plugins\RaspberryJuice\config.yml можно поменять номер порта, также можно изменить отсчет координат игрового мира на абсолютные (по умолчанию стоит от последнего места респауна)
Повторно запускаем игровой сервер, первоначальный запуск длится чуть дольше за счет генерации мира
Запускаем клиент игры, заходим в "Сетевая игра" и подключаемся к своему локальному или нелокальному серверу
Сразу можно изменить режим игры на Креатив для конкретного игрока (информация выходит за рамки данной статьи), чтобы можно было спокойно строить.
Далее открываем внешнюю обработку в конфигураторе и/или в режиме предприятия и наслаждаемся пробуем творить!
Обработка создана с использованием асинхронности (из новых возможностей платформы 8.3.18), поэтому в именах методов и свойств добавляется "Асинх". Для работы в более ранних версиях платформ просто уберите "Асинх" и избавьтесь от "ожиданий".
Внешняя компонента реализует следующие методы:
и свойства:
Вот таким простым кодом:
Координаты = Компонента.ПолучитьПозициюБлока();
мнКоорд = СтрРазделить(Координаты, ",", Ложь);
РазмерОснования = 100;
РасстояниеОтМеня = 10;
БлокИД = 24; // песчанник
х = Число(мнКоорд[0]);
у = Число(мнКоорд[1]);
з = Число(мнКоорд[2])-РазмерОснования-РасстояниеОтМеня;
Для аппликата = 0 По РазмерОснования Цикл
Для абсцисса = -(РазмерОснования-аппликата) По (РазмерОснования-аппликата) Цикл
Для ордината = -(РазмерОснования-аппликата) По (РазмерОснования-аппликата) Цикл
Компонента.УстановитьБлок(х+абсцисса, у+аппликата, з+ордината, БлокИД);
КонецЦикла;
КонецЦикла;
КонецЦикла;
За считанные секунды можно построить пирамиду Хеопса 1с-ника (в ней всего-то 1'373'701 блоков):
Можно в 1 клик создать говорящие аналоговые часы, в которых стрелки двигаются и отображают системное время.
Хотите еще больше приключений в Minecraft - попробуйте пройти собственный лабиринт любого произвольного размера:
Также есть функция очистки участка. Можете подготовить территорию к застройке или посмотреть, как выглядит шахта лифта мир игры в разрезе:
Можно запрограммировать всё, что вам захочется в мире Minecraft
Протестировано на платформе 8.3.19.1229.
Выражаю благодарность Infactum за хороший шаблон внешней компоненты!
P.S. Готов принять конструктивную критику, пожелания, дополнения по улучшению данного продукта. Если нужно добавить поддержку Linux, пишите в комментах.
Проверено на следующих конфигурациях и релизах:
- 1С:Библиотека стандартных подсистем, редакция 3.1, релизы 3.1.11.155