Bedrock; ручной пример команд для 1.20–1.21 · 5 мин чтения

Функции Bedrock: несколько команд одним запуском

Файл mcfunction объединяет команды в понятную последовательность. Начните с ручного запуска короткой функции, которая сообщает о работе и изменяет тестовый счёт. Автоматический запуск добавляйте после проверки исполнителя и позиции.

Редакция LonelyCraft · Обновлено

Схема: Файл → Контекст → Сценарий
Авторская схема LonelyCraft: последовательность действий и главные ориентиры.

Функция находится в пакете поведения

Для первого проекта создайте WorkshopFunctions/manifest.json по коду ниже и WorkshopFunctions/functions/workshop. Функции находятся рядом с манифестом внутри Behavior Pack, как в справке Microsoft. Манифест формата 2 с модулем data подходит для этого примера; [1,21,0] задаёт нижнюю границу, а не текущую версию игры.

Два UUID в примере различаются. Для собственного проекта получите два новых значения командой [guid]::NewGuid().ToString() в PowerShell. На Windows разместите проект в %appdata%\Minecraft Bedrock\users\shared\games\com.mojang\development_behavior_packs согласно Getting Started.

Для импорта на доступной платформе упакуйте содержимое WorkshopFunctions, сохранив manifest.json в корне ZIP, и переименуйте архив в .mcpack. Откройте его через Minecraft. В новом творческом мире включите Читы / Cheats, затем Наборы поведения / Behavior Packs → Мои наборы / My Packs → WorkshopFunctions → Активировать / Activate.

{
  "format_version": 2,
  "header": {
    "name": "WorkshopFunctions",
    "description": "Учебный пакет LonelyCraft",
    "uuid": "66714edc-cc70-438c-92d0-fbb09d781db5",
    "version": [
      1,
      0,
      0
    ],
    "min_engine_version": [
      1,
      21,
      0
    ]
  },
  "modules": [
    {
      "type": "data",
      "uuid": "420c5a52-d0b4-4467-8141-a805f1d2dd72",
      "version": [
        1,
        0,
        0
      ]
    }
  ]
}

Первый файл с сообщением

Создайте functions/workshop/hello.mcfunction с одной строкой из блока ниже. Файл должен быть обычным UTF-8 текстом, без расширения .txt. Внутри команды пишутся без начального /; в чате запуск имеет вид /function workshop/hello.

После сохранения и повторного входа в тестовый мир выполните /function workshop/hello. Ожидается одно сообщение Function loaded. Если функция не находится, проверьте активный пакет, имя файла и отсутствие лишнего внешнего каталога внутри архива.

  1. Сохраните манифест и файл hello.mcfunction, затем импортируйте или активируйте проект.
  2. В чате выполните /function workshop/hello и найдите одно сообщение Function loaded.
  3. Повторите команду: должно появиться ещё ровно одно сообщение.
  4. Перейдите к счёту только после успешного запуска: так ошибка селектора не смешается с ошибкой загрузки пакета.
say Function loaded

Добавьте понятную операцию со счётом

В чате один раз выполните /scoreboard objectives add workshop_points dummy, затем /scoreboard players set @s workshop_points 0 и /scoreboard objectives setdisplay sidebar workshop_points. Сохраните следующий код как functions/workshop/award.mcfunction.

Трижды вызовите /function workshop/award из чата игрока: справа ожидается 3. Для кнопки в командном блоке используйте execute as @p at @s run function workshop/award; ближайший игрок выбирается относительно блока, поэтому это подходит для локального учебного стенда. Синтаксис execute отдельно задаёт исполнителя через as и позицию через at.

scoreboard players add @s workshop_points 1
say Award function called

Инициализация отдельно

Создание цели не следует бездумно повторять при каждой выдаче очка. Цель создаётся один раз в подготовке, а рабочая функция изменяет счёт. Если процедура запуска должна быть повторяемой, продумайте обработку уже существующего состояния и не считайте ошибку повторного add нормальным проектом.

Выдача отдельно

Функция award выполняет конкретное действие и не должна заодно сбрасывать очки. Разделяйте подготовку, награду и очистку на небольшие файлы. Тогда тестирование одной операции не уничтожает результаты другой, а названия объясняют назначение без чтения всех строк.

Позиция и исполнитель

Относительные координаты зависят от места выполнения. Ручная функция игрока и та же функция из командного блока могут действовать в разных местах. Сначала используйте безопасные сообщения и счёт, затем проверяйте координаты в отдельном малом опыте.

Для строительной функции запишите, откуда она должна запускаться и в каком измерении. Команда fill не знает замысел автора и может изменить неправильную область. Абсолютные координаты помогают повторяемому проекту, но тоже требуют проверки выбранного мира. Не подключайте опасную функцию к циклу до успешного ручного теста.

Селектор @a обращается к всем подходящим игрокам, @p — к ближайшему в конкретном контексте, @s — к текущему исполнителю. Эти значения не являются взаимозаменяемыми. В многопользовательском опыте проверьте два игрока, чтобы награда не уходила случайному соседу.

Автоматический запуск

Если требуется постоянная проверка, tick.json размещается в functions/tick.json. В примере ниже он вызывает workshop/poll, но сама функция сначала проверяет метку workshop_ready.

В functions/workshop/poll.mcfunction запишите execute as @a[tag=workshop_ready] at @s run function workshop/award и второй строкой tag @a[tag=workshop_ready] remove workshop_ready. Команда /tag @s add workshop_ready выдаёт одно очко на следующем проходе и снимает метку. Повторный запуск требует нового добавления метки.

Для этой демонстрации не подключайте award прямо в tick.json: каждое выполнение прибавит очко. Остановить тест можно снятием метки и удалением учебной записи из tick.json; ручной вызов функции продолжает работать. Перед автоматизацией проверьте двух игроков, чтобы метка одного не меняла результат другого.

{
  "values": ["workshop/poll"]
}

Диагностика и выпуск

Функция не найдена: проверьте активный пакет, путь, имя и расширение. Сообщение есть, счёт не меняется: проверьте цель и исполнителя. Действие происходит не там: проверьте позицию и execute. Эти случаи нужно разделять, чтобы исправление не ломало рабочие части.

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

Подготовить цель и проверить значения помогает материал счётчик очков.

Для запуска на карте пригодится инструкция ручной вход через блок.

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

В файле нужен слеш перед командой?

Нет, команды mcfunction пишутся без начального /. Слеш используется в чате при ручном запуске. Также проверьте, что файл не содержит разметку текста и имеет настоящее расширение mcfunction.

Почему @s не выбирает игрока из командного блока?

Он обозначает текущего исполнителя, а не автоматически ближайшего человека. Контекст блока отличается от чата игрока. Выберите явный селектор или корректно задайте исполнителя через Bedrock execute.

Tick.json нужен каждой функции?

Нет. Для ручного запуска, кнопки и многих событий постоянный вызов излишен. Он способен повторять награду или другую операцию каждый тик. Сначала определите нужную частоту и механизм остановки.

Java-функцию можно перенести одним файлом?

Не всегда. Структура пакетов, синтаксис команд и контекст изданий различаются. Проверяйте каждую строку и путь. Наличие одинакового расширения не означает совместимость сценария.

Просмотры: … · Один просмотр с браузера за день

Было полезно?Общий счёт: …

Одна реакция с браузера. Нажмите повторно, чтобы снять её, или выберите другую.

Источники и документация

строительствофункцииbedrock

Читайте дальше