🇨🇳 中文 (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);