package io.github.skippyall.minions.docs; import com.mojang.serialization.Codec; import com.mojang.serialization.MapCodec; import com.mojang.serialization.codecs.RecordCodecBuilder; import io.github.skippyall.minions.registration.MinionRegistries; import net.minecraft.dialog.body.DialogBody; import net.minecraft.registry.DynamicRegistryManager; import java.util.List; import java.util.function.Function; public interface DocsEntry { Codec CODEC = MinionRegistries.DOCS_ENTRY_TYPES.getCodec().dispatch(DocsEntry::getCodec, Function.identity()); Metadata getMetadata(); List getDialog(DynamicRegistryManager manager); MapCodec getCodec(); record Metadata(String titleKey) { public static final MapCodec CODEC = RecordCodecBuilder.mapCodec(instance -> instance.group( Codec.STRING.fieldOf("title").forGetter(Metadata::titleKey) ).apply(instance, Metadata::new) ); } }