ПЕРЕДУМОВИ
Спершу переконайтеся, що ви виконали процес налаштування datagen.
Налаштування
Тут ми покажемо, як створити теґи Item, але той самий принцип застосовується і до інших речей.
Fabric надає кілька постачальників допоміжних теґів, включаючи один для предметів; FabricTagProvider.ItemTagProvider. Ми будемо використовувати цей допоміжний клас для цього прикладу.
Ви можете створити власний клас, який розширює FabricTagProvider<T>, де T — це тип речей, для яких ви хочете надати теґ. Це ваш постачальник.
Нехай ваша IDE заповнить необхідний код, а потім замініть параметр конструктора resourceKey на ResourceKey для вашого типу:
java
public class ExampleModItemTagProvider extends FabricTagProvider.ItemTagProvider {
public ExampleModItemTagProvider(FabricDataOutput 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
Вам знадобиться інший постачальник для кожного типу теґу (наприклад, один FabricTagProvider<EntityType<?>> і один FabricTagProvider<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
Потім викличте 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





