Блоки — это выполнения команд, обёрнутые в фигурные скобки. Как и переменные, блоки команд можно использовать вместо обычных аргументов команды. Например, эта команда:
фактически эквивалентна
Это полезно для переопределения обычного порядка операций или для объединения команд, когда вывод одной команды должен быть передан как аргумент, а не через pipe. Обратите внимание: команда explain в настоящее время не объясняет содержимое блоков команд — она обрабатывает их как обычные аргументы.
Некоторые команды явно требуют блок в качестве аргумента и не могут использовать обычные аргументы. Простейший пример — команда map, которая просто многократно вычисляет блок для каждого входного значения:
> help map
map - Применяет блок к каждому элементу входа.
Usage:
<value (IEnumerable<TIn>)> → map <block (Block<TIn,TOut>)> → IEnumerable<TOut>
Эта команда особенно полезна, если другая команда принимает только один TIn и не поддерживает IEnumerable<TIn>. Например, эта команда удваивает, а затем увеличивает все значения в последовательности, используя командный блок, принимающий только одно целое число за раз:
> i 1 to 4 map { * 2 + 1 }
3,
5,
7,
9
Обратите внимание, что это всего лишь пример, так как на самом деле существуют специальные математические команды для умножения или сложения отдельных чисел с последовательностью (i 1 to 4 */ 2 +/ 1).
В качестве другого примера, команда sortby требует блок, который принимает тип T и возвращает другой тип, сравнимый с самим собой (TOrd : IComparable<TOrd>). Это можно использовать для сортировки сущностей по количеству их компонентов:
entities with MobState sortby { allcomps count }
Блоки могут быть вложенными и комбинироваться. Например, эта команда телепортирует всех мобов к мобу с наименьшим количеством компонентов:
entities with MobState tp:to { entities with MobState sortby { allcomps count } first }
Однако на практике, возможно, стоит разбить эту команду для лучшей читаемости:
entities with MobState => $mobs
var $mobs sortby { allcomps count } first => $destination
var $mobs tp:to $destination
Некоторые команды, требующие блоков, могут также определять локальные переменные блока, то есть переменные, которые существуют только внутри блока и часто доступны только для чтения. Пример см. в команде Emplace. Последнее изменение 21 июня 2026 г.