PrettyPipes/src/main/java/de/ellpeck/prettypipes/pipe/PipeRenderer.java

50 lines
2.1 KiB
Java
Raw Normal View History

2020-04-16 04:42:42 +02:00
package de.ellpeck.prettypipes.pipe;
2020-04-14 17:14:24 +02:00
2021-12-02 14:44:26 +01:00
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.renderer.MultiBufferSource;
import net.minecraft.client.renderer.blockentity.BlockEntityRenderer;
2021-12-02 16:55:04 +01:00
import net.minecraft.client.renderer.blockentity.BlockEntityRendererProvider;
2021-12-02 14:44:26 +01:00
import net.minecraft.core.BlockPos;
2020-10-17 00:58:31 +02:00
import net.minecraftforge.client.ForgeHooksClient;
2021-12-02 14:44:26 +01:00
import net.minecraftforge.client.model.pipeline.ForgeBlockModelRenderer;
2020-04-14 18:51:43 +02:00
import java.util.Random;
2020-04-14 17:14:24 +02:00
2021-12-02 14:44:26 +01:00
public class PipeRenderer implements BlockEntityRenderer<PipeBlockEntity> {
2020-04-14 17:14:24 +02:00
2020-04-14 18:51:43 +02:00
private final Random random = new Random();
2021-12-02 16:55:04 +01:00
public PipeRenderer(BlockEntityRendererProvider.Context ctx) {
}
2020-04-14 17:14:24 +02:00
@Override
2021-12-02 14:44:26 +01:00
public void render(PipeBlockEntity tile, float partialTicks, PoseStack matrixStack, MultiBufferSource source, int light, int overlay) {
2020-10-17 00:58:31 +02:00
if (!tile.getItems().isEmpty()) {
2021-12-02 14:44:26 +01:00
matrixStack.pushPose();
2021-12-02 17:46:56 +01:00
var tilePos = tile.getBlockPos();
2020-10-17 00:58:31 +02:00
matrixStack.translate(-tilePos.getX(), -tilePos.getY(), -tilePos.getZ());
2021-12-02 17:46:56 +01:00
for (var item : tile.getItems()) {
2021-12-02 14:44:26 +01:00
matrixStack.pushPose();
2021-12-02 16:55:04 +01:00
item.render(tile, matrixStack, this.random, partialTicks, light, overlay, source);
2021-12-02 14:44:26 +01:00
matrixStack.popPose();
2020-10-17 00:58:31 +02:00
}
2021-12-02 14:44:26 +01:00
matrixStack.popPose();
2020-10-17 00:58:31 +02:00
}
if (tile.cover != null) {
2021-12-02 14:44:26 +01:00
matrixStack.pushPose();
ForgeBlockModelRenderer.enableCaching();
// TODO figure out how to render covers, maybe finally use baked models bleh
/*for (RenderType layer : RenderType.chunkBufferLayers()) {
2020-10-17 00:58:31 +02:00
if (!RenderTypeLookup.canRenderInLayer(tile.cover, layer))
continue;
2021-12-02 14:44:26 +01:00
ForgeHooksClient.setRenderType(layer);
Minecraft.getInstance().getBlockRenderer().renderBatched(tile.cover,tile.getBlockPos(),null, matrixStack,null, light, overlay, EmptyModelData.INSTANCE);
}*/
ForgeHooksClient.setRenderType(null);
ForgeBlockModelRenderer.clearCache();
matrixStack.popPose();
2020-04-14 17:14:24 +02:00
}
}
2021-12-02 14:44:26 +01:00
2020-04-14 17:14:24 +02:00
}