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