minecraft-src/net/minecraft/client/renderer/item/MissingItemModel.java
2025-07-04 03:45:38 +03:00

45 lines
1.6 KiB
Java

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<BakedQuad> quads;
private final Supplier<Vector3f[]> extents;
private final ModelRenderProperties properties;
public MissingItemModel(List<BakedQuad> 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);
}
}