package net.minecraft.client.renderer.item; import com.google.common.base.Suppliers; import java.util.List; import java.util.function.Supplier; import net.fabricmc.api.EnvType; import net.fabricmc.api.Environment; import net.minecraft.client.multiplayer.ClientLevel; import net.minecraft.client.renderer.Sheets; import net.minecraft.client.renderer.block.model.BakedQuad; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.item.ItemDisplayContext; import net.minecraft.world.item.ItemStack; import org.jetbrains.annotations.Nullable; import org.joml.Vector3f; @Environment(EnvType.CLIENT) public class MissingItemModel implements ItemModel { private final List quads; private final Supplier extents; private final ModelRenderProperties properties; public MissingItemModel(List quads, ModelRenderProperties properties) { this.quads = quads; this.properties = properties; this.extents = Suppliers.memoize(() -> BlockModelWrapper.computeExtents(this.quads)); } @Override public void update( ItemStackRenderState renderState, ItemStack stack, ItemModelResolver itemModelResolver, ItemDisplayContext displayContext, @Nullable ClientLevel level, @Nullable LivingEntity entity, int seed ) { ItemStackRenderState.LayerRenderState layerRenderState = renderState.newLayer(); layerRenderState.setRenderType(Sheets.cutoutBlockSheet()); this.properties.applyToLayer(layerRenderState, displayContext); layerRenderState.setExtents(this.extents); layerRenderState.prepareQuadList().addAll(this.quads); } }