ПЕРЕДУМОВИ
Спершу переконайтеся, що ви виконали процес налаштування datagen.
Налаштування
По-перше, створіть власний клас, який розширює FabricTagProvider<T>, де T — це тип речей, для яких ви хочете надати теґ. Це ваш постачальник. Тут ми покажемо, як створити теґи Item, але той самий принцип застосовується і до інших речей. Нехай ваша IDE заповнить необхідний код, а потім замініть параметр конструктора registryKey на RegistryKey для вашого типу:
java
public class FabricDocsReferenceItemTagProvider extends FabricTagProvider.ItemTagProvider {
public FabricDocsReferenceItemTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, registriesFuture);
}
@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
}
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
TIP
Вам знадобиться інший постачальник для кожного типу теґу (наприклад, один FabricTagProvider<EntityType<?>> і один FabricTagProvider<Item>).
Щоб завершити налаштування, додайте цього постачальника до своєї DataGeneratorEntrypoint у методі onInitializeDataGenerator.
java
pack.addProvider(FabricDocsReferenceItemTagProvider::new);1
Створення теґу
Тепер, коли ви створили постачальника, нумо додамо до нього теґ. Спочатку створіть TagKey<T>:
java
public static final TagKey<Item> SMELLY_ITEMS = TagKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "smelly_items"));1
Потім викличте getOrCreateTagBuilder всередині методу configure вашого постачальника. Звідти ви можете додавати окремі предмети, додавати інші теґи або змусити цей теґ замінити вже існуючі теґи.
Якщо ви хочете додати теґ, використовуйте addOptionalTag, оскільки вміст теґу може не завантажуватися під час створення datagen. Якщо ви впевнені, що теґ завантажено, викличте 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




