Цикличный командный блок

Только для Java Edition и Bedrock Edition
|


Тип |
Твёрдый блок |
---|---|

Действует ли гравитация |
Нет |

Прозрачность |
Нет |

Светимость |
Нет |

Взрывоустойчивость |
3 600 000 |

Прочность |
-1 |

Инструмент |
Нет |

Дроп |
Нет |

Возобновляемый |
Нет |

Складываемый |
Да (64) |

Воспламеняемый |
Нет |

Первое появление |
См. Историю |

Значения данных |
См. Значения |

Текстовый идентификатор |
|


“ |
|
„ | |

— Jeb о командном блоке
[1] |


**Командный блок** (англ. *Command Block*) — это блок, который способен выполнять команды. Этот блок нельзя получить без использования читов, поэтому в основном он используется на серверах для создания особых механизмов.

## Получение

Раньше чтобы выдать себе командный блок, нужно было использовать команду `/give @s command_block`

(@a-все игроки,
@p-ближайший игрок,
@s-вы) или `/give Ваш_ник command_block`

. Но в снапшоте 22w44a была добавлена возможность взять командный блок из меню творческого режима, с 1.19.3 появляется в творческом инвентаре только с включенной опцией "Вкладка оператора" в меню «Управление». Чтобы сразу поставить командный блок, можно использовать команду `/setblock координаты command_block`

или `/fill начало конец command_block`

.

Как и другие блоки, этот блок хранит NBT данные; `СКМ` + `Ctrl` будет копировать командный блок вместе с командой и другими параметрами.

Командные блоки не могут быть сломаны в Выживании. Командный блок не горит и не может быть сдвинут поршнем.

## Использование

Командный блок может выполнять команды консоли, записанные в него, когда активирован редстоун-сигналом. С версии 1.9 может работать без сигнала (если установлена настройка «Всегда включён» или «Always active»). Он всегда имеет высший уровень доступа, а значит, может исполнять все доступные в игре команды, кроме большинства серверных (`/stop`

, `/ban`

, `/kick`

и т. д.), а также `/debug`

, `/publish`

и `/reload`

.

Добавлять и изменять код в командном блоке можно через его интерфейс (открывается использованием кнопки «Использовать предмет» на командном блоке). Игрок может открыть интерфейс только находясь в режиме Творчества. Для использования командного блока на сервере, в файле server.properties должны быть установлены следующие значения:

`enable-command-block`

должно иметь значение`true`

`op-permission-level`

должно иметь значение`2`

и более (по умолчанию 4)

На сервере его могут открывать только игроки со статусом оператора.

### Интерфейс командного блока

#### Командная строка

Команды вводятся в верхнюю строку интерфейса. Максимальное количество символов, умещающихся в одном командном блоке — 32 500, но строка может показывать только первые несколько десятков. Прокручивать текст можно с помощью кнопок `←` и `→`, если зажать `Ctrl` при прокрутке, она значительно ускорится. Автоподстановка команд производится кнопкой `Tab ↹` (пример: `/to`

+ `Tab ↹` → `/toggledownfall`

).

Подстановка символа `/`

перед вводом команды необязательна, он не влияет на выполнение команды.

Под командной строкой находятся подсказки по выбору целей для команд консоли.

#### Строка вывода

В нижней строке интерфейса выводится последний результат выполнения команды данным командным блоком при успешном выполнении, или отчёт об ошибке при невозможности выполнения. Изначально эта строка пуста. Текст в ней не редактируется игроком.

Кнопка справа от строки вывода определяет, должен ли отчёт быть сохранён и отображён (`O`

когда включено сохранение и отображение отчёта, и `X`

в обратном случае), по умолчанию — `O`

. Командный блок, отображающий отчёт и беспрерывно исполняющий команду, будет постоянно обновляться. Если 64 командных блока будут обновляться в одном и том же чанке, произойдёт обновление этого чанка и, возможно, некоторых соседних, что может значительно понизить количество кадров в секунду (FPS) для игроков, поэтому рекомендуется отключать вывод отчёта при возможности.

#### Импульсный/Цепной/Цикличный

Нажав на кнопку «Impulse/Chain/Repeat», командный блок сменит свой тип.

**Impulse**Цвет текстуры: оранжевый. Выполняет команду лишь единожды при активации.**Chain**Цвет текстуры: аквамарин (голубовато-зелёный). Активируется только если включён, и при этом активировался первый блок цепочки (цепочка составляется из одного командного блока типа «Импульсный» или «Цикличный» и неограниченного количества блоков типа «Цепной», направленных друг на друга по цепочке). Выполняет команду когда до него доходит очередь (если предыдущие командные блоки цепочки уже попытались выполнить свои команды). Если блок, состоящий в цепочке, оказывается выключен, цепочка не прерывается и следующим свою команду пытается выполнить следующий не выключенный блок цепочки.**Repeat**Цвет текстуры: фиолетовый. Выполняет команду каждый игровой такт (двадцать раз в секунду) пока включён.

#### Условный/Безусловный

При нажатии на кнопку «Conditional/Unconditional» меняется поведение блока.

**Conditional**или «Условный» командный блок будет пытаться выполнить команду только в случае, если последняя попытка выполнить свою команду стоящего «сзади» командного блока была успешной.**Unconditional**или «Безусловный» командный блок будет выполнять команду при стандартных условиях выполнения команды для командных блоков своего типа.

По умолчанию — «Unconditional»

#### Нужен Редстоун-сигнал/Всегда включён

Нажав кнопку «Always active/Needs Redstone», можно переключать зависимость командного блока от сигнала красного камня.

**Needs Redstone**: командный блок в этом режиме не будет выполнять команд, пока не получит сигнал красного камня.**Always active**: командный блок в этом режиме не будет требовать сигнала красного камня (будет постоянно включённым).

По умолчанию у импульсного и цикличного — Needs Redstone, у цепного — Always active.

#### Принять/Отменить

При нажатии на кнопку «Done» в интерфейсе командного блока или кнопку «принять» (`↵ Enter`) клавиатуры, тот закрывается и сохраняет все внесённые в него изменения.

При нажатии на кнопку «Cancel» в интерфейсе командного блока или кнопку «отменить» (`Esc`) клавиатуры, тот закрывается, не сохраняя внесённые в него изменения.

### Сбор информации из командного блока

Есть несколько способов собрать данные с командного блока после его попытки выполнить команду:

#### Компаратор

Если поставить компаратор лицевой стороной от командного блока, он будет выдавать сигнал с силой, соответствующей успешности выполнения команды (0/1 — «не удалось выполнить»/«выполнено успешно» соответственно или 0-15 — найдено соответствующее количество сущностей/блоков, удовлетворяющих команде. Если таких более 15, выдаётся максимальный (сила 15) сигнал).

Компаратор выдаёт сигнал, соответствующий результату крайнего выполнения команды, даже если после этого командный блок был выключен.

#### Сообщение

Выводимые командным блоком сообщения уведомляют об успешном выполнении команды или о невозможности её выполнения. Отчёты командных блоков появляются в следующих местах:

*Строка вывода*- Протокол крайнего выполнения команды находится в строке вывода, которую можно увидеть, открыв интерфейс самого командного блока, если вывод не был отключён (см. строка вывода).
*Чат*- Сообщение о результате выполнения команды командным блоком присылаются в чат игроку в одиночной игре и операторам сервера в сетевой, если ранее не была прописана команда
`/gamerule commandBlockOutput false`

. Некоторые команды направлены на написание текста в чат (`/me`

,`/say`

и`/tell`

). На такой текст вышеуказанная команда не действует. *Журнал сервера*- Сообщение о результате выполнения команды командным блоком записываются в журнал (лог) сервера, если не была прописана команда
`/gamerule logAdminCommands false`

.

#### Статистика командного блока

Командные блоки могут записывать различные результаты успешного выполнения команд в списки задач, такие как:

- SuccessCount: количество успешных выполнений (по аналогии с компаратором см. cбор информации из командного блока, но не ограничено значением 15).
- AffectedBlocks: количество блоков, на которые подействовала команда.
- AffectedEntities: количество сущностей, на которые подействовала команда.
- AffectedItems: количество предметов, на которые подействовала команда.
- QueryResult: значение, возвращённое командой.

Цели, которые необходимо отслеживать, можно указать, выполнив команду `/stats`

или непосредственно изменив данные NBT-тега командного блока с помощью команды `/blockdata`

.

## Руководство

Указатель на сущность может иметь привязку к конкретному типу сущности. Задаётся эта привязка аргументом

`type`

— Как пример, команда`/kill @e[type=Skeleton]`

убьёт всех скелетов, а команда`/kill @e[type=!Player]`

убьёт все сущности, не являющиеся игроком.

Также если командный блок переименовать на наковальне и ввести в него команду `/say`

, то при активации в чат выведется вписанное сообщение. Но перед сообщением вместо символа **@** появится имя, которое было дано командному блоку.

Также были замечены особенности, в расположении командных блоков и порядком исполнения команд, при подключении нескольких блоков к одному источнику питания:

Вот расположение командных блоков относительно сторон света:

## Значения

### ID блока

Название | Идентификатор | Теги предмета (JE) | Форма | Ключ перевода |
---|---|---|---|---|

Командный блок | `command_block` |
`dragon_immune` `wither_immune` |
Блок и предмет | `block.minecraft.command_block`
|

Цепной командный блок | `chain_command_block` |
`dragon_immune` `wither_immune` |
Блок и предмет | `block.minecraft.chain_command_block`
|

Цикличный командный блок | `repeating_command_block` |
`dragon_immune` `wither_immune` |
Блок и предмет | `block.minecraft.repeating_command_block`
|


Название | Идентификатор |
---|---|

Блок-сущность | `command_block`
|


Название | Идентификатор | Числовой ID | Форма | Ключ перевода |
---|---|---|---|---|

Командный блок | `command_block` |
`137` |
Блок и предмет | `tile.command_block.name`
|

Цепной командный блок | `chain_command_block` |
`189` |
Блок и предмет | `tile.chain_command_block.name`
|

Цикличный командный блок | `repeating_command_block` |
`188` |
Блок и предмет | `tile.repeating_command_block.name`
|


Название | Идентификатор |
---|---|

Блок-сущность | `CommandBlock`
|


### Нумерация данных

Байты | Значения |
---|---|

0x1 | Устанавливается, если командный блок был активирован ранее. |

0x2 0x4 0x8 |
(Не используется) |




### Состояния блока

Название | Значение | Описание |
---|---|---|

conditional | `true` `false` | `true` , если командный блок находится в условном режиме. |

facing | `north` `south` `east` `west` `up` `down` | Направление, куда указывает командный блок. |


## Галерея

## История

Официальный выпуск Java Edition | |||||
---|---|---|---|---|---|

27 июля 2012 | Джеб в своём твиттере опубликовал информацию о блоке, предназначенном для режима Приключения. Он начал размещать идеи, фотографии и намеки на те функции, которые блок будет выполнять. | ||||

Во время AMA Нотч намекнул, что блок будет добавлен в 1.4. | |||||

1.4 | 12w32a | Командный блок был добавлен в игру. | |||

12w38a | Был добавлен расширенный синтаксис указания цели. | ||||

1.7.2 | 13w37a | Появилась возможность ставить блоки с помощью команды setblock. | |||

13w39a | Была добавлена вагонетка с командным блоком. | ||||

Возможна ошибка с тем, что командный блок не увидит компаратор. | |||||

1.8 | 14w07a | Раздатчики могут устанавливать командные блоки. | |||

1.9 | 15w34a | Была переработана текстура командного блока. Теперь командный блок можно настроить на выполнение трёх функций: Impulse (активирует командный блок), Chain (активирует командные блоки по цепочке) и Repeat (повторяет заданную команду несколько раз в секунду, не останавливаясь). Командные блоки также имеют направление, как и поршни. | |||

15w34b | Добавлены две новые функции: Условная и Безусловная. При функции «Условная» командный блок выполнит команду только если команда предыдущего блока была успешно выполнена. | ||||

15w35a | Снова обновлены текстуры командного блока. Добавлены новые опции для командного блока: Всегда активен и/или Нуждается в настройках красного камня. | ||||

1.12 | 17w16a | Улучшена производительность у цепного командного блока. | |||

17w18a | Проведена оптимизация ошибочных условий в командных блоках. | ||||

1.12-pre6 | Авто-завершение команды с помощью Tab ↹ в командных блоках больше не добавляет `/` перед командой. | ||||

1.13 | 18w21a | Изменён цвет всплывающей подсказки у командного блока и его разновидностей. | |||

1.13-pre1 | Исправлена ошибка, которая гласит, что "Завершение табуляции команд в командных блоках не работает". | ||||

1.14 | 18w47b | Изменены текстуры командного блока и цикличного командного блока. | |||

Официальный выпуск Pocket Edition | |||||

1.0.5 | build 1 | Командный блок добавлен в игру. | |||

Официальный выпуск Bedrock Edition | |||||

1.8 | beta 1.8.0.8 | Командный блок теперь имеет имя по умолчанию «!» вместо «@». | |||

1.12 | beta 1.12.0.2 | Добавлено авто-завершение команды с помощью Tab ↹ в командных блоках.
| |||

Добавлена опция «Задержка» для командного блока, реализующая задержку между выполнениями команд в количестве тактов красного камня, указанном в значении данного поля. |


## Проблемы

Отчёты об ошибках, связанных с «Командный блок», поддерживаются в системе отслеживания ошибок Mojira. Сообщайте о найденных ошибках там (на английском языке).

## Интересные факты

- Если в мультиплеере во время передвижения на вагонетке зайти в командный блок, то минув несколько блоков, вы автоматически выйдете из его интерфейса.
- В Minecraft: Story Mode это одна из самых могущественных вещей