Генератор Тегов 26.1.2
Руководство по настройке генерации тегов с помощью datagen.
ТРЕБОВАНИЯ
Сначала убедитесь, что вы завершили процесс datagen setup.
Настройка
Здесь мы покажем, как создавать теги Item, но тот же принцип применим и для других вещей.
Fabric предоставляет несколько вспомогательных провайдеров тегов, включая один для элементов; FabricTagsProvider.ItemTagsProvider. Мы будем использовать этот вспомогательный класс в данном примере.
Вы можете создать свой собственный класс, который расширяет FabricTagsProvider<T>, где T - это тип вещи, для которой вы хотите предоставить тег. Он будет вашим провайдером.
Позвольте вашей IDE заполнить необходимый код, а затем замените параметр конструктора resourceKey на ResourceKey для вашего типа:
java
public class ExampleModItemTagProvider extends FabricTagsProvider.ItemTagsProvider {
public ExampleModItemTagProvider(FabricPackOutput output, CompletableFuture<HolderLookup.Provider> registriesFuture) {
super(output, registriesFuture);
}
@Override
protected void addTags(HolderLookup.Provider wrapperLookup) {
}
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
TIP
Вам понадобится отдельный провайдер для каждого типа тегов (например, один FabricTagsProvider<EntityType<?>> и один FabricTagsProvider<Item>).
Чтобы завершить настройку, добавьте этот провайдер к вашей DataGeneratorEntrypoint в методе onInitializeDataGenerator.
java
pack.addProvider(ExampleModItemTagProvider::new);1
Создание тега
Теперь, когда вы создали провайдера, давайте добавим к нему тег. Сначала создайте TagKey<T>:
java
public static final TagKey<Item> SMELLY_ITEMS = TagKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(ExampleMod.MOD_ID, "smelly_items"));1
Затем вызовите valueLookupBuilder в методе configure вашего провайдера. Отсюда можно добавить отдельные элементы, добавить другие теги или сделать так, чтобы этот тег заменял уже существующие.
Если вы хотите добавить тег, используйте addOptionalTag, так как содержимое тега может быть не загружено во время датагена. Если вы уверены, что тег загружен, вызовите addTag.
Чтобы принудительно добавить тег и игнорировать сломанный формат, используйте forceAddTag.
java
valueLookupBuilder(SMELLY_ITEMS)
.add(Items.SLIME_BALL)
.add(Items.ROTTEN_FLESH)
.addOptionalTag(ItemTags.DIRT)
.add(Items.OAK_PLANKS)
.forceAddTag(ItemTags.BANNERS)
.setReplace(true);1
2
3
4
5
6
7
2
3
4
5
6
7





