34 lines
1.4 KiB
Java
34 lines
1.4 KiB
Java
package net.minecraft.client.renderer;
|
|
|
|
import com.mojang.blaze3d.vertex.PoseStack;
|
|
import java.util.Map;
|
|
import net.fabricmc.api.EnvType;
|
|
import net.fabricmc.api.Environment;
|
|
import net.minecraft.client.model.geom.EntityModelSet;
|
|
import net.minecraft.client.renderer.special.SpecialModelRenderer;
|
|
import net.minecraft.client.renderer.special.SpecialModelRenderers;
|
|
import net.minecraft.world.item.ItemDisplayContext;
|
|
import net.minecraft.world.level.block.Block;
|
|
|
|
@Environment(EnvType.CLIENT)
|
|
public class SpecialBlockModelRenderer {
|
|
public static final SpecialBlockModelRenderer EMPTY = new SpecialBlockModelRenderer(Map.of());
|
|
private final Map<Block, SpecialModelRenderer<?>> renderers;
|
|
|
|
public SpecialBlockModelRenderer(Map<Block, SpecialModelRenderer<?>> renderers) {
|
|
this.renderers = renderers;
|
|
}
|
|
|
|
public static SpecialBlockModelRenderer vanilla(EntityModelSet modelSet) {
|
|
return new SpecialBlockModelRenderer(SpecialModelRenderers.createBlockRenderers(modelSet));
|
|
}
|
|
|
|
public void renderByBlock(
|
|
Block block, ItemDisplayContext displayContext, PoseStack poseStack, MultiBufferSource bufferSource, int packedLight, int packedOverlay
|
|
) {
|
|
SpecialModelRenderer<?> specialModelRenderer = (SpecialModelRenderer<?>)this.renderers.get(block);
|
|
if (specialModelRenderer != null) {
|
|
specialModelRenderer.render(null, displayContext, poseStack, bufferSource, packedLight, packedOverlay, false);
|
|
}
|
|
}
|
|
}
|