PREREQUISITI
Assicurati di aver prima completato il processo di configurazione della datagen.
Configurazione
Qui mostreremo come creare tag di Item, ma lo stesso principio si applica ad altre cose.
Fabric fornisce più fornitori ausiliari di tag incluso uno per gli oggetti; FabricTagProvider.ItemTagProvider. Useremo questa classe ausiliaria per questo esempio.
Puoi anche creare la tua classe che estenda FabricTagProvider<T>, dove T è il tipo di ciò per cui vuoi fornire un tag. Questo è il tuo fornitore.
Lascia che il tuo IDE compili il codice richiesto, poi sostituisci il parametro resourceKey del costruttore con la ResourceKey per il tuo tipo:
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
Ti servirà un fornitore diverso per ogni tipo di tag (per esempio un FabricTagProvider<EntityType<?>> e un FabricTagProvider<Item>).
Per completare la configurazione, aggiungi questo fornitore alla tua DataGeneratorEntrypoint nel metodo onInitializeDataGenerator.
java
pack.addProvider(ExampleModItemTagProvider::new);1
Creare un Tag
Ora che hai creato un fornitore, aggiungiamoci un tag. Anzitutto, crea una TagKey<T>:
java
public static final TagKey<Item> SMELLY_ITEMS = TagKey.create(Registries.ITEM, Identifier.fromNamespaceAndPath(ExampleMod.MOD_ID, "smelly_items"));1
Poi, chiama valueLookupBuilder nel metodo configure del tuo fornitore. Da lì, puoi aggiungere oggetti individualmente, aggiungere altri tag, o fare in modo che questo tag ne sostituisca di preesistenti.
Se vuoi aggiungere un tag, usa addOptionalTag, poiché i contenuti del tag potrebbero non essere caricati durante la datagen. Se sei sicuro che il tag sia caricato, chiama addTag.
Per aggiungere un tag forzatamente ignorando il formato errato, usa 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





