package net.minecraft.client.resources.model; import java.util.Collections; import java.util.List; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.core.Direction; import net.minecraft.util.RandomSource; import net.minecraft.util.random.SimpleWeightedRandomList; import net.minecraft.util.random.WeightedEntry.Wrapper; import net.minecraft.world.level.block.state.BlockState; import org.jetbrains.annotations.Nullable; @Environment(EnvType.CLIENT) public class WeightedBakedModel extends DelegateBakedModel { private final SimpleWeightedRandomList list; public WeightedBakedModel(SimpleWeightedRandomList simpleWeightedRandomList) { super((BakedModel)((Wrapper)simpleWeightedRandomList.unwrap().getFirst()).data()); this.list = simpleWeightedRandomList; } @Override public List getQuads(@Nullable BlockState state, @Nullable Direction direction, RandomSource random) { return (List)this.list.getRandomValue(random).map(bakedModel -> bakedModel.getQuads(state, direction, random)).orElse(Collections.emptyList()); } }