VORAUSSETZUNGEN
Stelle sicher, dass du den Prozess der Einrichtung des Datengenerators zuerst abgeschlossen hast.
Einrichtung
Hier werden wir zeigen, wie man Item Tags erstellt, aber das gleiche Prinzip lässt sich auch auf alle anderen Dinge anwenden.
Fabric bietet mehrere Hilfs-Tag-Provider, darunter einen für Items: FabricTagProvider.ItemTagProvider. Wir werden für dieses Beispiel diese Hilfsklasse verwenden.
Du kannst deine eigene Klasse erstellen, die von FabricTagProvider<T> erbt, wobei T der Typ ist, für den du ein Tag bereitstellen möchtest. Dies ist dein Provider.
Lass deiner IDE den erforderlichen Code ausfüllen und ersetze dann den Konstruktorparameter resourceKey durch den ResourceKey für deinen Typ:
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
Du wirst für jeden Tag-Typ einen anderen Provider benötigen (z. B. einen FabricTagProvider<EntityType<?>> und einen FabricTagProvider<Item>).
Um die Einrichtung abzuschließen, füge den Provider zu deinem DataGeneratorEntrypoint in der onInitializeDataGenerator Methode hinzu.
java
pack.addProvider(ExampleModItemTagProvider::new);1
Erstellen eines Tags
Jetzt, nachdem du den Provider erstellt hast, lasst uns ein Tag zu diesem hinzufpgen. Zuerst, erstelle ein TagKey<T>:
java
public static final TagKey<Item> SMELLY_ITEMS = TagKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(ExampleMod.MOD_ID, "smelly_items"));1
Als nächstes, rufe valueLookupBuilder innerhalb der configure-Methode deines Providers auf. Von dort aus kannst du einzelne Items oder andere Tags hinzufügen oder diese Tags bereits vorhandene Tags ersetzen lassen.
Wenn du ein Tag hinzufügen willst, verwende addOptionalTag, da der Inhalt des Tags während der Datengenerierung möglicherweise nicht geladen wird. Wenn du sicher bist, dass der Tag geladen ist, rufe addTag auf.
Um zwangsweise ein Tag hinzuzufügen und das defekte Format zu ignorieren, verwende 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





