package com.minelittlepony.unicopia.diet; import java.util.List; import java.util.Optional; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import net.minecraft.client.item.TooltipContext; import net.minecraft.item.FoodComponent; import net.minecraft.item.ItemStack; import net.minecraft.network.PacketByteBuf; import net.minecraft.text.Text; import net.minecraft.util.Formatting; import net.minecraft.util.Identifier; import net.minecraft.util.Util; public record FoodGroup( Identifier id, List tags, Optional foodComponent, Ailment ailment) implements Effect { public static final Codec CODEC = RecordCodecBuilder.create(instance -> instance.group( FoodGroupKey.TAG_CODEC.listOf().fieldOf("tags").forGetter(FoodGroupEffects::tags), FoodAttributes.CODEC.optionalFieldOf("food_component").forGetter(FoodGroupEffects::foodComponent), Ailment.CODEC.fieldOf("ailment").forGetter(FoodGroupEffects::ailment) ).apply(instance, FoodGroupEffects::new)); public FoodGroup(Identifier id, Effect effect) { this(id, effect.tags(), effect.foodComponent(), effect.ailment()); } public FoodGroup(PacketByteBuf buffer) { this(buffer.readIdentifier(), new FoodGroupEffects(buffer, FoodGroupKey.TAG_ID_LOOKUP)); } @Override public void appendTooltip(ItemStack stack, List tooltip, TooltipContext context) { tooltip.add(Text.literal(" ").append(Text.translatable(Util.createTranslationKey("food_group", id()))).formatted(Formatting.GRAY)); Effect.super.appendTooltip(stack, tooltip, context); } @Override public void toBuffer(PacketByteBuf buffer) { buffer.writeIdentifier(id()); Effect.super.toBuffer(buffer); } }