Подготовьте тестовый мир
Создайте отдельный плоский мир Bedrock: Творческий режим / Creative и Читы / Cheats включены. В чате выполните /give @s command_block 4. На BDS проверьте в server.properties значение enable-command-block=true и перезапустите сервер после изменения. Урок Microsoft объясняет доступ и режимы блоков.
Для начала поставьте два блока на прямой линии. Стрелка первого должна смотреть во второй. Получите каменную кнопку и разместите её на первом блоке: при установке используйте приседание, чтобы не открыть его интерфейс.
Сообщение say помогает проверить запуск до операций с инвентарём и координатами. Поле Previous Output / Предыдущий вывод показывает результат; оставьте его доступным, пока первая цепь не работает.
Импульсный блок с кнопкой
Откройте первый блок и задайте Block Type: Impulse, Condition: Unconditional, Redstone: Needs Redstone. В Command Input вставьте say First block, а в Tick Delay оставьте 0. Русские названия соответствуют импульсному, безусловному блоку с редстоуном.
Нажмите кнопку один раз: появится First block. После окончания сигнала повторите: должно добавиться одно сообщение. Постоянный поток означает повторяющийся тип либо постоянно подаваемый вход; отсутствующее сообщение проверяйте через предыдущий вывод.
При запуске командного блока @s не выбирает нажимающего кнопку игрока. Для следующего опыта ближайшего выбирает @p, и его расстояние отсчитывается от блока. Одиночный стенд удобен для проверки, но на карте с посетителями нужен явный выбор участника.
- Получите командный блок через чат и поставьте его на открытой площадке.
- Выберите Impulse, Unconditional и Needs Redstone по названиям вашего интерфейса.
- Запишите короткий say и подключите одну кнопку.
- Нажмите кнопку, прочитайте результат и повторите после окончания первого сигнала.
- Только после этого добавьте следующий блок по стрелке первого.
Цепной блок и порядок
Поставьте второй блок по стрелке первого и выберите Chain, Unconditional, Always Active, Tick Delay: 0. Введите say Second block. Нажатие кнопки должно вывести сначала First block, затем Second block.
Режим Always Active цепного блока разрешает его работу при приходе цепи; самостоятельного таймера он не создаёт. Для диагностики сначала оставьте Unconditional, затем испытайте Conditional с командой, которая может завершиться неуспешно.
Условное выполнение
Conditional связывает запуск с успешностью предыдущего блока в предусмотренной цепочке. Успех команды означает её технический результат, а не обязательно правильность игрового события. Например, сообщение может успешно выполниться, хотя игрок ещё не сделал нужное действие.
Безусловное выполнение
Unconditional не требует такого успеха предыдущей команды, но цепной блок всё равно должен попасть в правильный поток запуска. Это удобно для финального сообщения или части последовательности, которая должна выполняться независимо от отдельной проверки. Выбор зависит от замысла карты.
Повторяющийся тип
Repeat вызывает команду снова по заданным условиям и настройкам задержки. Без задержки он работает с частотой игровых тиков, пока активен соответствующий вход. Для простого сообщения это создаст поток текста, а для add очков — быстрое увеличение значения.
Поэтому повторяющийся тип не является заменой кнопки «выдать один раз». Если событие должно давать единственную награду, добавьте состояние, которое фиксирует обработку. Сначала испытайте вручную одну награду и защиту от повторения, затем подключайте постоянную проверку.
В Bedrock интерфейс включает задержку в тиках и настройку первого выполнения для соответствующего режима. Запишите выбранные значения в проекте. Двадцать игровых тиков при нормальной работе соответствуют секунде, но замедление мира меняет реальное время. Не используйте это как гарантированный секундомер при лаге.
Координаты и игроки
Относительные координаты относятся к месту выполнения команды. Если перенести блок под полом, строительная или телепортационная команда может действовать иначе. Для фиксированного участка карты записывайте нужные абсолютные позиции и проверяйте их на маленьком безопасном действии.
Селектор @p выбирает ближайшего в контексте и способен наградить соседа вместо участника. @a обращается к всем подходящим игрокам. Для проекта с двумя посетителями проверьте, кто получает результат. Единственный автор в мире не обнаруживает эту ошибку.
Новые Bedrock execute-команды имеют свой синтаксис. Старое видео или Java-пример может не подходить. Откройте справку своего выпуска и испытайте исполнителя через безопасное сообщение или тестовый счёт. Только потом подключайте выдачу, удаление и перемещение.
Завершение и обслуживание
Практический пример — одна награда на игрока. Сначала в чате создайте /scoreboard objectives add project_points dummy. Расставьте четыре блока последовательно по стрелкам: первый Impulse / Unconditional / Needs Redstone, остальные Chain / Unconditional / Always Active; задержки 0.
Впишите четыре команды ниже, по одной в каждый блок. Первый выбирает ближайшего игрока, второй выдаёт очко, если у него ещё нет reward_taken, третий сохраняет факт награды, четвёртый удаляет временную метку. Все цепные блоки безусловные: очистка нужна и при повторном нажатии, когда выдача не происходит.
Нажмите кнопку два раза и проверьте /scoreboard players list @s: у одного игрока ожидается 1. Подведите второго ближе к кнопке: его первое нажатие должно дать ему 1, не меняя первого. Для нового учебного раунда выполните /tag @a remove reward_taken; очищайте метки только участников нужной карты.
tag @p add reward_request
execute as @a[tag=reward_request,tag=!reward_taken] run scoreboard players add @s project_points 1
tag @a[tag=reward_request,tag=!reward_taken] add reward_taken
tag @a[tag=reward_request] remove reward_requestДля длинной последовательности используйте инструкцию группа команд в файле.
Сохранить обработку события помогает материал состояние и очки.



