Генерация таблиц добычи 26.1.2
Руководство по настройке генерации таблицы добычи с помощью datagen.
ТРЕБОВАНИЯ
Сначала убедитесь, что вы установили datagen.
Вам понадобятся разные провайдеры (классы) для блоков, сундуков и сущностей. Не забудьте добавить их все в свой пакет в DataGeneratorEntrypoint в методе onInitializeDataGenerator.
java
No lines matched.1
Как работают таблицы добычи
Таблицы добычи определяют, что вы получите при разрушении блока (за исключением содержимого, например в сундуках), убийстве сущности или открытии вновь сгенерированного контейнера. Каждая таблица лута (loot table) состоит из пулов (pools), из которых выбираются предметы. Таблицы лута также содержат функции (functions), которые определенным образом изменяют финальный лут.
Пулы лута содержат записи (entries), условия (conditions), функции (functions), броски (rolls) и бонусные броски (bonus rolls). Записи представляют собой группы, последовательности или варианты предметов, либо просто одиночные предметы. Условия — это проверяемые в мире параметры, такие как зачарования на инструменте или случайный шанс выпадения. Минимальное количество записей, выбираемых пулом, называется бросками, а всё, что свыше этого — бонусными бросками.
Блоки
Чтобы из блоков выпадали предметы — включая сам блок — необходимо создать таблицу лута. Создайте класс, который расширяет (extends) FabricBlockLootTableProvider:
java
No lines matched.1
Не забудьте добавить этот провайдер в свой пакет!
Существует множество вспомогательных методов, которые помогут вам в создании таблиц лута. Мы не будем рассматривать их все, поэтому обязательно изучите их в своей IDE.
Давайте добавим несколько результатов бросков в метод generate:
java
No lines matched.1
Сундуки
Лут для сундуков устроен немного сложнее, чем лут для блоков. Создайте класс, который расширяет SimpleFabricLootTableProvider, аналогично примеру ниже, и добавьте его в свой пакет.
java
No lines matched.1
Для нашей таблицы лута понадобится ResourceKey<LootTable>. Давайте поместим его в новый класс под названием ModLootTables. Убедитесь, что он находится в наборе исходных текстов main, если вы используете раздельные источники.
java
No lines matched.1
Затем мы можем сгенерировать таблицу лута внутри метода generate вашего провайдера.
java
No lines matched.1







