package net.minecraft.tags;

import net.minecraft.world.entity.EntityType;
import net.minecraft.world.level.material.Fluid;
import net.minecraft.world.item.Item;
import net.minecraft.world.level.block.Block;

public class SerializationTags {
    private static volatile SerializationTags instance;
    private final TagCollection<Block> blocks;
    private final TagCollection<Item> items;
    private final TagCollection<Fluid> fluids;
    private final TagCollection<EntityType<?>> entityTypes;
    
    private SerializationTags(final TagCollection<Block> adg1, final TagCollection<Item> adg2, final TagCollection<Fluid> adg3, final TagCollection<EntityType<?>> adg4) {
        this.blocks = adg1;
        this.items = adg2;
        this.fluids = adg3;
        this.entityTypes = adg4;
    }
    
    public TagCollection<Block> getBlocks() {
        return this.blocks;
    }
    
    public TagCollection<Item> getItems() {
        return this.items;
    }
    
    public TagCollection<Fluid> getFluids() {
        return this.fluids;
    }
    
    public TagCollection<EntityType<?>> getEntityTypes() {
        return this.entityTypes;
    }
    
    public static SerializationTags getInstance() {
        return SerializationTags.instance;
    }
    
    public static void bind(final TagCollection<Block> adg1, final TagCollection<Item> adg2, final TagCollection<Fluid> adg3, final TagCollection<EntityType<?>> adg4) {
        SerializationTags.instance = new SerializationTags(adg1, adg2, adg3, adg4);
    }
    
    static {
        SerializationTags.instance = new SerializationTags(BlockTags.getAllTags(), ItemTags.getAllTags(), FluidTags.getAllTags(), EntityTypeTags.getAllTags());
    }
}
