package net.minecraft.world.level.block.entity; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder.Instance; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.resources.RegistryFileCodec; import net.minecraft.resources.ResourceLocation; public record BannerPattern(ResourceLocation assetId, String translationKey) { public static final Codec DIRECT_CODEC = RecordCodecBuilder.create( p_327278_ -> p_327278_.group( ResourceLocation.CODEC.fieldOf("asset_id").forGetter(BannerPattern::assetId), Codec.STRING.fieldOf("translation_key").forGetter(BannerPattern::translationKey) ) .apply(p_327278_, BannerPattern::new) ); public static final StreamCodec DIRECT_STREAM_CODEC = StreamCodec.composite( ResourceLocation.STREAM_CODEC, BannerPattern::assetId, ByteBufCodecs.STRING_UTF8, BannerPattern::translationKey, BannerPattern::new ); public static final Codec> CODEC = RegistryFileCodec.create(Registries.BANNER_PATTERN, DIRECT_CODEC); public static final StreamCodec> STREAM_CODEC = ByteBufCodecs.holder(Registries.BANNER_PATTERN, DIRECT_STREAM_CODEC); }