Перейти к содержимому

Create: Logic

Безопасный скриптовый язык для автоматизации Create вместо Redstone.

NeoForge
Загрузчики
NeoForge
Скачиваний на Modrinth
574
Подписчиков на Modrinth
3
версий
11
Обновлён
15 июля 202615 июл.
Опубликован
в 2026
Flashing lamp code · свайп

Коротко о моде

Работает на NeoForge
Для Minecraft 1.21.1
Нужен и в игре, и на сервере
Последняя версия — 0.0.8 от 15 июля 2026
Лицензия MIT — бесплатно
Где нужен
В игреобязателенНа сервереобязателен

Нужен и в игре, и на сервере

Версии игры1.21.1
Описание переведено автоматическиПоказать оригинал (EN)

Автоматизация для Create с использованием собственного языка программирования под названием "Metal". Поставь компьютер, кликни правой кнопкой, введи код, нажми сохранить, shift+правый клик для переключения запуска.

Программирование: Объяви 2 системы (System — это как функция), "INIT" и "TICK" вот так:

SYSTEM(INIT): START;

код инициализации здесь

END_SYSTEM;

SYSTEM(TICK): START;

код тика (цикла) здесь

END_SYSTEM;

API: Есть несколько функций для работы с Metal.

встроенные функции:

MAKE_VAR(VAR_TYPE,$name,start_value); - создаёт глобальную переменную (глобальная переменная ДОЛЖНА начинаться с '$', ТОЛЬКО в INIT)

MAKE_ITEM_VAR($name,item_id); - создаёт переменную типа INT по числовому id предмета из minecraft (ТОЛЬКО в INIT)

SET($name,value); - задать новое значение переменной

ADD/SUB/MUL/DIV($name,value); - операции с переменными

WAIT(ms); - задержка скрипта (ТОЛЬКО в TICK)

CONTINUE(); - вернуться к началу текущей системы (ТОЛЬКО в TICK)

RERUN(); - вернуться к главной системе текущего скрипта (ТОЛЬКО в TICK), УДАЛЕНО с 0.0.7

EXIT_STACK(); - выйти из всего стека вызовов систем и вернуться к точке начала стека. УДАЛЕНО с 0.0.7

RETURN(); - выйти из 1 системы в стеке вызовов систем, с 0.0.7 может возвращать значения в вызов SYSTEM

ABORT(); - принудительно завершить текущий скрипт (не выключает компьютер)

CALL_SYSTEM(name, args...); - вызвать систему (максимальный размер стека — 16), нельзя вызывать системы-точки входа (INIT, TICK), args ТОЛЬКО в версии мода 0.0.3+, с 0.0.7 может возвращать значения

IF(condition): START; - базовый оператор IF (закрытие — "END_IF;")

ELSE(): START; - базовый оператор ELSE (между IF и END_IF), с 0.0.7 можно вызывать без "()"

BIND_ARGS_TO_SYSTEM(name, args...); ТОЛЬКО в INIT, args должны быть вида "#var:INT", задаёт аргументы для вызова системы (CALL_SYSTEM), ТОЛЬКО в версии мода 0.0.3+

MAKE_LOCAL_VAR(VAR_TYPE,#name,start_value); - создаёт локальную переменную (локальная переменная ДОЛЖНА начинаться с '#') ТОЛЬКО в версии мода 0.0.3+

ACCEPT_INVOKES(); - разрешить вызов нерезервированных систем интеграциями ТОЛЬКО в INIT, для версии мода 0.0.4+

PRINT(args...); - вывод INFO (белый) ТОЛЬКО в версии мода 0.0.6+

WARN(args...); - вывод WARN (жёлтый) ТОЛЬКО в версии мода 0.0.6+

ERROR(args...); - вывод ERROR (красный) ТОЛЬКО в версии мода 0.0.6+

EVALUATE(str); - вычисляет выражение, добавлено с 0.0.7

EVAL(code); - выполняет код как новую SYSTEM, добавлено с 0.0.7

FUNC((args),{ body }); - создаёт MetalFunction, можно вызвать через .invoke(args), добавлено с 0.0.7

CAUSE_HARD_ERROR(message); - останавливает скрипт, логирует стек и информацию в консоль. добавлено с 0.0.7

WHILE(condition, { body }); выполняется, пока условие истинно, добавлено с 0.0.7

FOR(#i,start,end, { body }); Выполняется от #i = start до end - 1, добавлено с 0.0.7

LIST(TYPE); - создаёт MetalList, лимит элементов — 1024, добавлено с 0.0.7

SET_CATCH_MODE(); ТОЛЬКО в INIT, теперь некоторые ошибки не останавливают скрипт, а просто логируются с "Error catched!", добавлено с 0.0.7.

SENDER($name,"item1", "item2"); - ТОЛЬКО в INIT, создаёт RedstoneLinker (MetalObject) в режиме отправки, лучше старого функционального метода (CONNECT_LINK_SENDER), добавлено с 0.0.7.

RECEIVER($name,"item1", "item2"); - ТОЛЬКО в INIT, создаёт RedstoneLinker (MetalObject) в режиме приёма, лучше старого функционального метода (CONNECT_LINK_RECEIVER), добавлено с 0.0.7.

MAKE_PROCESS(SYSTEM_NAME); - создаёт вторую точку входа тика, можно вызвать один раз. ТОЛЬКО в INIT. добавлено с 0.0.7.

конец встроенных функций

Java-функции (регистрируются вне Metal):

CONNECT_LINK_SENDER(id,item1,item2); - создаёт соединение передатчика (для двух последних аргументов рекомендуется использовать MAKE_ITEM_VAR, id — любое значение, раньше не использовалось), ТОЛЬКО в INIT. ПРИМЕЧАНИЕ: с 0.0.7 используй SENDER($sender,item1name,item2name) вместо этого.

CONNECT_LINK_RECEIVER(id,item1,item2); - создаёт соединение приёмника (для двух последних аргументов используй переменные MAKE_ITEM_VAR) ТОЛЬКО в INIT. ПРИМЕЧАНИЕ: начиная с 0.0.7 используй RECEIVER($receiver,item1name,item2name) вместо этого.

SEND_LINK(id,power); - отправляет питание в Create Redstone Link (используй с id, применённым в CONNECT_LINK_SENDER). ПРИМЕЧАНИЕ: начиная с 0.0.7 используй $sender.send(power) вместо этого.

RECEIVE_LINK(id); - принимает питание от Create Redstone Link (используй с id, применённым в CONNECT_LINK_RECEIVER). ПРИМЕЧАНИЕ: начиная с 0.0.7 используй $receiver.receive() вместо этого.

RANDOM(min,max); - возвращает случайный INT между min и max

RAND(); - возвращает случайный DOUBLE между 0.0 - 1.0

SIN(value); - возвращает sin значения (используй радианы)

COS(value); - возвращает cos значения (используй радианы)

TAN(value); - возвращает tan значения (используй радианы)

SQRT(value); - возвращает sqrt значения

DTR(value); - градусы в радианы

RTD(value); - радианы в градусы

GET_PI(); - возвращает PI

MIN(args...); - возвращает MIN из всех аргументов

MAX(args...); - возвращает MAX из всех аргументов

CLAMP(value,min,max); - возвращает ограниченное значение в диапазоне

ABS(value); - возвращает модуль значения

POW(value,pow); - возвращает возведение значения в степень

GET_OPS(); - возвращает выполненные операции этого скрипта - 0.0.5+

конец Java Functions;

Советы:

ADD,SUB и т.д. используются ТОЛЬКО при изменении значения например:

ADD($x,1); = x += 1;

В скобках:

IF($x + 1 > $y): START;

code

END_IF;

И, ": START" не обязателен, но рекомендуется, также можно использовать

SYSTEM(INIT); ...

IF(condition); ...

и т.д.

Текущие типы переменных: INT, DOUBLE, POWER, BOOL. Начиная с 0.0.7 - STRING, OBJECT.

TICK EntryPoint (System) выполняется в другом потоке 1000 раз в секунду.

ИНТЕГРАЦИЯ: Начиная с 0.0.4 можно вызывать нерезервированные системы из мода Computer Craft, это выглядит так: Metal: SYSTEM(INIT): START; ACCEPT_INVOKES(); BIND_ARGS_TO_SYSTEM(SUM,#first:DOUBLE,#second:DOUBLE); END_SYSTEM; SYSTEM(SUM): START; RETURN(#first + #second); END_SYSTEM; SYSTEM(TICK): START;

END_SYSTEM;

CC Lua: local metal = peripheral.find("metal"); if metal then print(metal.callSystem("SUM",5,10)); -- output: 15 else print("Cannot find Metal Computer"); end

Начиная с 0.0.5 можно использовать SYSTEM(NAME,args...): START; вместо BIND_ARGS_TO_SYSTEM

пример:

SYSTEM(SET_POWER,#f:POWER,#s:POWER): START;

SEND_LINK(1,#f);

SEND_LINK(2,#s);

END_SYSTEM;

"**" вместо "POW(val,pow);" оператор "%"

Начиная с 0.0.6, в функциях вывода можно использовать литералы, вот так:

PRINT(~Hello World);

Hello World

или, с переменной:

MAKE_VAR(INT,$test,150);

PRINT(~counter: ,$test);

counter: 150

ОБЪЕКТЫ:

MetalList: $list.add(value); $list.get(index); $list.getFirst(); $list.getLast(); $list.remove(index); $list.removeFirst(); $list.removeLast(); $list.clear(); $list.size(); $list.maxSize(); $list.hasIndex(index); $list.forEach(MetalFunction);

MetalFunction: $func.invoke(args); $func.getTypes();

RedstoneLinker: SENDER: $sender.send(power); $sender.toggle(active); RECEIVER: $receiver.receive(); $receiver.isActive();

начиная с 0.0.8 переменные можно присваивать так:

TYPE $global_var = ...;

TYPE #local_var = ...;

изменение:

var++; (инкремент)

var--; (декремент)

var+=...; (сложение)

var-=...; (вычитание)

var%=...; (остаток)

var*=...; (умножение)

var/=...; (деление)

var**=...; (возведение в степень)

var=...; (присваивание)

Частые вопросы

Как установить Create: Logic?

Установите NeoForge под свою версию Minecraft, скачайте Create: Logic под ту же версию и загрузчик, положите файл в папку mods и запустите игру с профилем загрузчика.

Для каких версий Minecraft есть Create: Logic?

У Create: Logic есть сборки для Minecraft 1.21.1.

Нужен ли Create: Logic на сервере?

Нужен и в игре, и на сервере

Лицензия и источник
MIT Licenseможно свободно использовать и распространять с указанием автора
Оригинал — Modrinth↗Файлы — без изменений, проверены по SHA-512Это ваш мод? Правообладателям

Сайт использует cookie: необходимые — для входа и темы, а также счётчики посещений Яндекс Метрика и LiveInternet — по ним мы видим, как пользуются сайтом. Рекламных cookie у нас нет. Подробнее