Новый снапшот 25w03a, который выйдет весной 2025 года (предположительно для версии 1.21.5 ) Minecraft теперь доступна в вашей программе запуска. Это влечет за собой серьезные изменения, в том числе совершенно новый подход к внутриигровому тестированию.
С появлением системы игровых тестов, доступной через пакеты данных с помощью новой команды /test , создатели и разработчики смогут тестировать и проверять свои идеи с беспрецедентной точностью. Независимо от того, являетесь ли вы опытным моддером или любопытным игроком, это обновление открывает двери в безграничные возможности для экспериментирования, автоматизации и совершенствования ваших проектов в Minecraft.
Дополнения и изменения
- Кучки листьев теперь можно компостировать
- Седла, которыми экипированы свиньи или planeswalker-ы, теперь сохраняют такие свойства, как собственное имя, при выпадении.
Технические элементы
- Добавление записи
net.minecraft.gametest.Main
в jar сервера- Автоматически запускает сервер и запускает все доступные игровые тесты.
- Параметры:
--help
– Показывает информацию об использовании--packs <path>
– Определяет папку пакетов данных для включения в мирpack.mcmeta
Включен любой zip-файл или папка, содержащая файл .
--report <path>
– Экспортирует результаты в отчет Junit XML по заданному пути.--tests <selection>
– Указывает, какие тесты следует запускать, используя выборку – выражение с подстановочным знаком, соответствующее идентификаторам экземпляров тестов в пространстве имен.- Если он опущен или используется с пустым идентификатором, выполняются все тесты.
--universe <path>
– Путь, по которому будет создан мир тестового сервера- Любая существующая папка будет заменена.
- по умолчанию:
gametestserver
--verify <boolean>
– Позволяет тестовую проверку- Запускает тесты, указанные с помощью test или testNamespace, 100 раз для каждого шага поворота на 90 градусов.
- по умолчанию:
false
- Пример использования:
java -DbundlerMainClass="net.minecraft.gametest.Main" -jar server.jar --packs mytestpacks
Пакет данных версии 63
Тестирование игры
Система тестирования игры — это новая интегрированная система для тестирования определенных аспектов игры. Каждый тест представляет собой ресурс, определяющий определенные параметры выполнения теста, в сочетании с сохраненным файлом инфраструктуры, содержащим базовую конфигурацию.
Обычно среда тестирования предполагает, что тесты будут выполняться в отдельном плоском мире.
Тестовые экземпляры
- Экземпляры тестов определяются в реестре
test_instance
. Это небольшие ресурсы, определяющие тест для запуска.- Поля:
environment
: Идентификатор тестовой среды, которая будет использоваться в этом тесте.structure
: Идентификатор структуры, используемой для теста.max_ticks
: Положительное целое число, представляющее максимально допустимое количество тактов, прежде чем тест будет считаться истекшим.setup_ticks
: Необязательное неотрицательное целое число (по умолчанию:0
), представляющее количество тактов ожидания после размещения структуры перед запуском теста.required
: Необязательное логическое значение (по умолчанию:true
) — указывает, требуется ли тест для проверки полного набора тестов.rotation
: Необязательное вращение для применения к тестовой структуре.- Один из следующих вариантов:
none
(по умолчанию)clockwise_90
,180
иcounterclockwise_90
.
- Один из следующих вариантов:
manual_only
: Необязательное логическое значение (по умолчанию:false
), установленноеtrue
для тестов, которые не включены в автоматическое выполнение тестов.sky_access
: Если тест требует свободного доступа к небу- По умолчанию (
false
) тесты заключены в невидимые барьеры – если установлено значениеtrue
, верхняя часть остается открытой.
- По умолчанию (
max_attempts
: количество попыток запуска теста (по умолчанию:1
).required_successes
: количество попыток, которые должны быть успешными, чтобы тест считался успешным (по умолчанию:1
).type
: Тип теста – может бытьblock_based
иfunction
- Функциональные тесты используют встроенные функции для запуска теста и сообщения о том, пройден он или нет. У них есть дополнительное поле:
function
: Идентификатор тестовой функции для выполнения.
- Блочные тесты используют тестовые блоки в среде тестирования для выполнения теста и определения успеха или неудачи.
- Поля:
Тестовые среды
- Тестовые среды — это способ сгруппировать тесты и предоставить им необходимые условия для запуска. Тестовая среда — это элемент реестра test_environment.
- Каждое определение тестовой среды имеет поле типа, которое определяет ее конфигурацию:
- Определения
all_of
применяют конфигурацию нескольких подопределений в поле определений. - Определения
function
используют файлы mcfunction для настройки и удаления.setup
: Необязательный идентификатор mcfunction, который будет использоваться для настройки, если таковой имеется.teardown
: Необязательный идентификатор функции mc, используемой для удаления, если таковая имеется.
- Определения
game_rules
определяют любое количество правил игры.bool_rules
: список логических правил игры, которые нужно установить, и значение, которое нужно установить.int_rules
: список правил игры в целых числах, которые нужно установить, и значение, которое нужно установить.- Каждое правило представляет собой объект с двумя полями:
rule
: точное имя определяемого правила.value
: значение, которое нужно определить
- Правила игры сбрасываются до значений по умолчанию после завершения тестовой среды.
- Определения
weather
определяют состояние погодыweather
: Погода, которую необходимо настроить средиclear
,rain
иthunder
- Определения
time_of_day
определяют данное время суток.
- Определения
- По умолчанию игра предоставляет одну пустую тестовую среду:
minecraft:default
.
Тестовые блоки
- Это
bloc de test
блок, используемый для реализации блочного тестирования. Имеет четыре режима:start
: запускает импульс красного камня в начале теста.log
: Записывает сообщение в журналы при питании от красного камня.fail
: не проходит тест при питании от красного камня.accept
: завершает тест при питании от красного камня.
Блок тестового экземпляра
- Для запуска теста в мире используется блок тестового экземпляра . Этот тип блока представляет тест в том виде, в котором он размещен в мире, и используется для взаимодействия с этим тестом, для сохранения структуры, сброса или запуска теста.
Заказ/test
- Команда
/test
— это новая команда, используемая для создания и запуска тестов.- Синтаксис и различные подкоманды подробно представлены в официальном журнале изменений .
/test run
позволяет запустить один или несколько тестов- Если одновременно запускаются несколько тестов, они помещаются в сетку и выполняются параллельно, но только до определенного предела. За пределами этого ограничения тесты выполняются пакетами, причем каждый пакет заканчивается до начала тестов в следующем пакете.
- Для каждого теста загружается заданная структура и выполняется соответствующий тест. На каждом месте проведения испытания будет световой луч, указывающий ход испытания.
- Серый = в процессе
- Красный = неудачно (требуется проверка)
- Оранжевый = неисправность (дополнительная проверка)
- Зеленый = успех
- Если тест не пройден, ошибка отображается в настольной книге и наложении.
- Обратите внимание, что игровое тестирование предназначено для работы в стандартных плоских мирах. Во время проведения каждого теста пространство вокруг каждого теста заменяется камнем, а сам тест окружен невидимыми барьерами.
/test stop
позволяет остановить все тесты
Заказы
- Ячейка предмета
horse.saddle
была переименована вsaddle
, и теперь она поддерживает любую сущность, которая может экипировать седло.
Теги
- Добавлен тег объекта
#can_equip_saddle
для объектов, которые могут быть оснащены седлом.- Это не означает, что седло будет работать, лишь то, что его можно будет вставить в предусмотренный для него слот.
Данные объекта
- Поля
ArmorItems
и были объединены в одноHandItems
поле .body_armor_item
equipment
- Формат данных седла был унифицирован для таких существ, как лошади и свиньи, став новым типом слота для снаряжения (и хранящегося в полевых условиях
equipment.saddle
). - Поле
FallDistance
было заменено двойным полем и теперь называетсяfall_distance
.
Компоненты функционального варианта
- У сущностей теперь есть набор компонентов для настройки вариаций и других аспектов внешнего вида.
- Если эти компоненты присутствуют в элементе, который его породил (например, яйца призывания, ведра,
minecraft:painting
,minecraft:item_frame
), они будут применены к новому объекту. - Компоненты в настоящее время не восстанавливаются, если яйцо получено из существующего объекта.
- Ведра и доски, доступные в творческом инвентаре, теперь используют новые варианты вместо компонента
minecraft:entity_data
. - Пользовательские всплывающие подсказки для ведер и таблиц с тропической рыбой теперь основаны на новых компонентах вместо
minecraft:bucket_entity_data
иminecraft:entity_data
.
Пакет ресурсов версии 48
Активы оборудования
- Ресурсы оборудования теперь могут определять новые типы слоев:
pig_saddle
strider_saddle
camel_saddle
horse_saddle
donkey_saddle
mule_saddle
skeleton_horse_saddle
zombie_horse_saddle
Объектные модели
- Добавление источника данных
component
в объектную модельselect
.- Возвращает значение компонента объекта, если он есть.
- Поля:
component
– Идентификатор типа компонента
- Возможные значения зависят от типа компонента
- Пример: если
component
установлено значениеminecraft:wolf/collar
, список вариантов будет принимать цвета красителей, напримерlime
.
- Пример: если