🇨🇳 中文 (Chinese - China)
🇨🇳 中文 (Chinese - China)
外观
🇨🇳 中文 (Chinese - China)
🇨🇳 中文 (Chinese - China)
外观
本页面基于这个版本编写:
1.21.4
前提
首先,请确保你已完成 Datagen 设置 。
首先,创建你自己的 extends FabricTagProvider<T> 类,其中 T 是您希望提供标签的类型。 这是你的提供程序。 在这里我们将展示如何创建 Item 标签,但同样的原则对其他场景也适用。 让你的 IDE 填充所需的代码,然后用你的类型的 RegistryKey 替换 registryKey 构造函数参数:
public class FabricDocsReferenceItemTagProvider extends FabricTagProvider<Item> {
public FabricDocsReferenceItemTagProvider(FabricDataOutput output, CompletableFuture<RegistryWrapper.WrapperLookup> registriesFuture) {
super(output, RegistryKeys.ITEM, registriesFuture);
}
@Override
protected void configure(RegistryWrapper.WrapperLookup wrapperLookup) {
}
}TIP
您需要为每种类型的标签提供不同的提供程序(例如,一个 FabricTagProvider<EntityType<?>> 和一个 FabricTagProvider<Item>)。
要完成设置,将此提供程序添加到 onInitializeDataGenerator 方法中的 DataGeneratorEntrypoint。
pack.addProvider(FabricDocsReferenceItemTagProvider::new);现在你创建了提供程序,让我们为其添加一个标签。 首先,创建一个 TagKey<T>:
public static final TagKey<Item> SMELLY_ITEMS = TagKey.of(RegistryKeys.ITEM, Identifier.of(FabricDocsReference.MOD_ID, "smelly_items"));接下来,在提供程序的 configure 方法中调用 getOrCreateTagBuilder。 自那里,你可以添加单个物品,添加其他标签,或用此标签替换预先存在的标签。
如果想添加标签,使用 addOptionalTag,因为标签的内容可能不会在 datagen 期间加载。 如果你确定标签已加载,调用 addTag。
要强制添加标签并忽略损坏的格式,使用 forceAddTag。
getOrCreateTagBuilder(SMELLY_ITEMS)
.add(Items.SLIME_BALL)
.add(Items.ROTTEN_FLESH)
.addOptionalTag(ItemTags.DIRT)
.add(Identifier.ofVanilla("oak_planks"))
.forceAddTag(ItemTags.BANNERS)
.setReplace(true);