package net.minecraft.client.renderer.block.model.multipart; import com.mojang.serialization.Codec; import com.mojang.serialization.codecs.RecordCodecBuilder; import com.mojang.serialization.codecs.RecordCodecBuilder.Instance; import java.util.Optional; import java.util.function.Predicate; import net.minecraft.client.renderer.block.model.BlockStateModel; import net.minecraft.world.level.block.state.StateDefinition; import net.minecraft.world.level.block.state.StateHolder; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public record Selector(Optional condition, BlockStateModel.Unbaked variant) { public static final Codec CODEC = RecordCodecBuilder.create( p_397009_ -> p_397009_.group( Condition.CODEC.optionalFieldOf("when").forGetter(Selector::condition), BlockStateModel.Unbaked.CODEC.fieldOf("apply").forGetter(Selector::variant) ) .apply(p_397009_, Selector::new) ); public > Predicate instantiate(StateDefinition p_391682_) { return this.condition.>map(p_393307_ -> p_393307_.instantiate(p_391682_)).orElse(p_392027_ -> true); } }