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

59 lines
2.4 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
import com.mojang.blaze3d.matrix.MatrixStack;
2020-10-17 00:58:31 +02:00
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import de.ellpeck.prettypipes.Registry;
2020-04-14 17:14:24 +02:00
import de.ellpeck.prettypipes.network.PipeItem;
import net.minecraft.client.Minecraft;
2020-10-17 00:58:31 +02:00
import net.minecraft.client.renderer.BlockModelRenderer;
2020-04-14 17:14:24 +02:00
import net.minecraft.client.renderer.IRenderTypeBuffer;
2020-10-17 00:58:31 +02:00
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.RenderTypeLookup;
2020-04-14 17:14:24 +02:00
import net.minecraft.client.renderer.tileentity.TileEntityRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
2020-10-17 00:58:31 +02:00
import net.minecraft.entity.player.PlayerEntity;
2020-04-14 17:14:24 +02:00
import net.minecraft.util.math.BlockPos;
2020-10-17 00:58:31 +02:00
import net.minecraftforge.client.ForgeHooksClient;
import net.minecraftforge.client.model.data.EmptyModelData;
2020-04-14 18:51:43 +02:00
import java.util.Random;
2020-04-14 17:14:24 +02:00
public class PipeRenderer extends TileEntityRenderer<PipeTileEntity> {
2020-04-14 18:51:43 +02:00
private final Random random = new Random();
2020-04-14 17:14:24 +02:00
public PipeRenderer(TileEntityRendererDispatcher disp) {
super(disp);
}
@Override
2020-10-17 00:58:31 +02:00
public void render(PipeTileEntity tile, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer buffer, int light, int overlay) {
if (!tile.getItems().isEmpty()) {
2020-04-14 17:14:24 +02:00
matrixStack.push();
2020-10-17 00:58:31 +02:00
BlockPos tilePos = tile.getPos();
matrixStack.translate(-tilePos.getX(), -tilePos.getY(), -tilePos.getZ());
for (PipeItem item : tile.getItems()) {
matrixStack.push();
item.render(tile, matrixStack, this.random, partialTicks, light, overlay, buffer);
matrixStack.pop();
}
matrixStack.pop();
}
if (tile.cover != null) {
matrixStack.push();
BlockModelRenderer.enableCache();
for (RenderType layer : RenderType.getBlockRenderTypes()) {
if (!RenderTypeLookup.canRenderInLayer(tile.cover, layer))
continue;
ForgeHooksClient.setRenderLayer(layer);
Minecraft.getInstance().getBlockRendererDispatcher().renderBlock(tile.cover, matrixStack, buffer, light, overlay, EmptyModelData.INSTANCE);
}
ForgeHooksClient.setRenderLayer(null);
BlockModelRenderer.disableCache();
2020-04-14 17:14:24 +02:00
matrixStack.pop();
}
}
}