package net.minecraft.world.item.component; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import io.netty.buffer.ByteBuf; import java.util.function.Consumer; import net.minecraft.ChatFormatting; import net.minecraft.network.chat.Component; import net.minecraft.network.codec.ByteBufCodecs; import net.minecraft.network.codec.StreamCodec; import net.minecraft.world.item.Item; import net.minecraft.world.item.TooltipFlag; public record Unbreakable(boolean showInTooltip) implements TooltipProvider { public static final Codec CODEC = RecordCodecBuilder.create( instance -> instance.group(Codec.BOOL.optionalFieldOf("show_in_tooltip", true).forGetter(Unbreakable::showInTooltip)).apply(instance, Unbreakable::new) ); public static final StreamCodec STREAM_CODEC = ByteBufCodecs.BOOL.map(Unbreakable::new, Unbreakable::showInTooltip); private static final Component TOOLTIP = Component.translatable("item.unbreakable").withStyle(ChatFormatting.BLUE); @Override public void addToTooltip(Item.TooltipContext context, Consumer tooltipAdder, TooltipFlag tooltipFlag) { if (this.showInTooltip) { tooltipAdder.accept(TOOLTIP); } } public Unbreakable withTooltip(boolean showInTooltip) { return new Unbreakable(showInTooltip); } }