Команда Minecraft выпустила заключительный тестовый билд уходящего года - 26.1-snapshot-1. Этот снапшот знаменует переход на новую систему нумерации версий для Java Edition и содержит ряд важных технических изменений. Среди ключевых нововведений - полный переход торговли жителей и странствующих торговцев на data-driven систему, позволяющую тонко настраивать её через датапаки, а также фундаментальный пересмотр алгоритма работы освещения и карты света (lightmap). Кроме того, игра теперь требует Java 25 и использует сборку OpenJDK от Microsoft.
Основные изменения и технические аспекты
Помимо контентных обновлений, снапшот вносит значительные изменения в техническую основу игры. Версия датапака обновлена до 95. Если на сервере заканчивается место на диске, операторы теперь будут получать уведомление (toast). Самое важное требование - игра теперь работает на Java 25, а поставляемый в комплекте дистрибутив заменён на Microsoft build of OpenJDK 25. Также, начиная с этой версии, все сборки Minecraft Java Edition будут поставляться без обфускации, что упростит работу моддеров.
Data-driven торговля жителей
Одна из главных особенностей снапшота - полный перевод системы торговли с жителями на данные, управляемые датапаками. Теперь все предложения жителей и странствующих торговцев определяются с помощью детерминированных случайных последовательностей, аналогичных тем, что используются для генерации лута.
Формат villager_trade
В папке villager_trade датапаков теперь можно создавать шаблоны сделок. Каждая запись содержит следующие поля:
- wants и additional_wants: объекты, описывающие требуемый для обмена предмет (ID, количество, необязательные data components).
- gives: предмет, который получит игрок.
- given_item_modifiers: список модификаторов предмета (например, для добавления случайных зачарований или зелий), который применяется к предмету из
gives. - max_uses: максимальное количество использований сделки (по умолчанию 4).
- merchant_predicate: предикат, определяющий условия, при которых сделка будет предлагаться (например, только для жителей определённого биома).
Если финальный предмет в сделке имеет зачарование из тега #double_trade_price в компоненте stored_enchantment, то количество требуемых предметов в wants удваивается.
Формат trade_set
В папке trade_set определяются наборы сделок. Они группируют отдельные шаблоны villager_trade. Поля включают:
- trades: тег, ID или список ID шаблонов сделок.
- amount: количество сделок, которое нужно сгенерировать из этого набора.
- allow_duplicates: разрешено ли использовать один и тот же шаблон несколько раз (по умолчанию false).
- random_sequence: именованная случайная последовательность для детерминированной генерации.
В игре уже присутствуют хардкодные наборы для каждого уровня профессии жителя (<profession>/level_<level>) и для странствующего торговца.
Доступ к инвентарям
Теперь можно обращаться к слотам инвентаря пиглинов с помощью селектора piglin.*, аналогично villager.* для жителей.
Переработка освещения и Lightmap
Алгоритм, преобразующий уровень блочного и небесного света в итоговую яркость на экране, был полностью переписан. Цель изменений - упрощение кода и исправление ряда визуальных несоответствий.
- Эффект Тьмы (Darkness) и затемнение мира во время боя с Визером теперь работают одинаково во всех измерениях.
- Эффект Ночного зрения (Night Vision) теперь просто добавляет фоновый свет, вместо масштабирования итоговых цветов. Это значит, что полностью тёмные области больше не выглядят ярче, чем области, освещённые блочным или небесным светом.
- Такие аспекты, как оттенок блочного света, цвет фонового освещения и цвет ночного зрения, теперь управляются через data-driven атрибуты окружения (environment attributes).
Отладчик Lightmap (F3 + 4)
Добавлен новый инструмент для отладки освещения, активируемый комбинацией клавиш F3 + 4. Он взаимоисключающий с графиками FPS/TPS и сети. В правом нижнем углу экрана в реальном времени отображается текстура карты освещения:
- Вертикальная ось соответствует уровням небесного света (0-15 снизу вверх).
- Горизонтальная ось соответствует уровням блочного света (0-15 слева направо).
- Цвет каждого пикселя представляет итоговый цвет, который будет применён к блокам и сущностям при соответствующем уровне блочного и небесного света.
Data-driven атрибуты освещения
minecraft:visual/block_light_tint: Оттенок блочного света. По умолчанию задаёт желтоватый оттенок факелов (#FFD88C).minecraft:visual/ambient_light_color: Определяет цвет и яркость фонового освещения (при уровне света 0). Значения по умолчанию:#0A0A0Aдля Верхнего мира,#302821для Незера,#3f473fдля Края.minecraft:visual/night_vision_color: Цвет, используемый для эффекта Ночного зрения. По умолчанию#999999(без оттенка).
Новые команды и интерфейс
Команда /swing
Добавлена новая команда /swing <селектор сущностей> <mainhand|offhand>. Она заставляет выбранные сущности совершить взмах рукой (анимацию). Не все сущности поддерживают эту анимацию на стороне клиента, но команда будет успешно выполнена на сервере. Это, например, позволяет анимировать манекены. Команда возвращает количество сущностей, для которых анимация была отправлена.
Изменения в экране отладки (F3)
- Записи
looking_at_blockиlooking_at_fluidбольше не отображают теги. - Добавлены новые записи:
looking_at_block_tags,looking_at_fluid_tags,looking_at_entity_tags. - Переименованы записи:
looking_at_block→looking_at_block_state,looking_at_fluid→looking_at_fluid_state.
Изменения для разработчиков датапаков
Введены новые и изменённые функции, предикаты и компоненты, расширяющие возможности кастомизации.
Новые Data Components
minecraft:additional_trade_cost: Временный компонент (transient), используемый для модификации количества предметаgivesв сделке жителя. Удаляется после генерации сделки.
Новые и изменённые Loot Functions
- Добавлен тип лута
minecraft:villager_trade. - Добавлена функция
minecraft:set_random_dyes: аддитивно добавляет случайные красители к предмету, если он находится в теге#dyeable. - Добавлена функция
minecraft:set_random_potion: случайным образом устанавливает компонентpotion_contentsна предмете. - Функции
minecraft:enchant_with_levelsиminecraft:enchant_randomlyполучили новое необязательное полеinclude_additional_cost_component. Если установлено вtrue, к предмету будет добавлен компонентadditional_trade_cost, на основе стоимости зачарования.
Новые Predicates
- В под-предикат
playerдобавлено необязательное полеfoodдля проверки уровня сытости и насыщения игрока. - Добавлен предикат
minecraft:sum, возвращающий сумму списка number providers.
Изменения в зачарованиях и тегах
- Компонент зачарования
post_piercing_attackбольше не требует определённого уровня сытости у игрока для срабатывания. - Добавлены многочисленные теги для группировки сделок жителей по профессиям и уровням (например,
#armorer/level_1) и для странствующего торговца. - Удалены устаревшие теги зачарований вида
trades/desert_special. - Добавлен тег зелий
#tradeable, содержащий все эффекты, которые могут появляться в торговле.
Изменения Resource Pack (версия 76)
Шейдер карты освещения lightmap.fsh был значительно изменён:
- В uniform
LightmapInfoдобавлены два новых поля:BlockLightTintиNightVisionColor. - Поле
AmbientLightFactorудалено, его значение теперь предварительно умножено наAmbientColor. DarkenWorldFactorпереименован вBossOverlayWorldDarkeningFactor.- Текст и предметы, отображаемые в интерфейсе (UI), теперь используют отдельную текстуру lightmap размером 1x1 белого цвета, чтобы шейдеру не приходилось всегда держать пиксель (15, 15) чисто белым.





