package net.minecraft.client.resources.metadata.animation; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.server.packs.metadata.MetadataSectionType; import net.minecraft.util.StringRepresentable; @Environment(EnvType.CLIENT) public record VillagerMetadataSection(VillagerMetadataSection.Hat hat) { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group(VillagerMetadataSection.Hat.CODEC.optionalFieldOf("hat", VillagerMetadataSection.Hat.NONE).forGetter(VillagerMetadataSection::hat)) .apply(instance, VillagerMetadataSection::new) ); public static final MetadataSectionType TYPE = new MetadataSectionType<>("villager", CODEC); @Environment(EnvType.CLIENT) public static enum Hat implements StringRepresentable { NONE("none"), PARTIAL("partial"), FULL("full"); public static final Codec CODEC = StringRepresentable.fromEnum(VillagerMetadataSection.Hat::values); private final String name; private Hat(final String name) { this.name = name; } @Override public String getSerializedName() { return this.name; } } }