package zmaster587.advancedRocketry.client.render;
import org.lwjgl.opengl.GL11;
import zmaster587.advancedRocketry.tile.cables.TilePipe;
import zmaster587.libVulpes.render.RenderHelper;
import net.minecraft.client.renderer.OpenGlHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.common.util.ForgeDirection;
public class RendererPipe extends TileEntitySpecialRenderer {
private ResourceLocation texture;
public RendererPipe(ResourceLocation texture) {
this.texture = texture;
}
public void drawCube(double radius, Tessellator tessellator) {
//TOP
tessellator.addVertex(radius, -radius, radius);
tessellator.addVertex(radius, radius, radius);
tessellator.addVertex(-radius, radius, radius);
tessellator.addVertex(-radius, -radius, radius);
//BOTTOM
tessellator.addVertex(radius, radius, -radius);
tessellator.addVertex(radius, -radius, -radius);
tessellator.addVertex(-radius, -radius, -radius);
tessellator.addVertex(-radius, radius, -radius);
//EAST
tessellator.addVertex(radius, -radius, -radius);
tessellator.addVertex(radius, radius, -radius);
tessellator.addVertex(radius, radius, radius);
tessellator.addVertex(radius, -radius, radius);
//SOUTH
tessellator.addVertex(radius, -radius, -radius);
tessellator.addVertex(radius, -radius, radius);
tessellator.addVertex(-radius, -radius, radius);
tessellator.addVertex(-radius, -radius, -radius);
//WEST
tessellator.addVertex(-radius, -radius, radius);
tessellator.addVertex(-radius, radius, radius);
tessellator.addVertex(-radius, radius, -radius);
tessellator.addVertex(-radius, -radius, -radius);
//NORTH
tessellator.addVertex(radius, radius, radius);
tessellator.addVertex(radius, radius, -radius);
tessellator.addVertex(-radius, radius, -radius);
tessellator.addVertex(-radius, radius, radius);
}
public void drawCubeUV(double radius, Tessellator tessellator) {
//TOP
tessellator.addVertexWithUV(radius, -radius, radius,1,0);
tessellator.addVertexWithUV(radius, radius, radius,1,1);
tessellator.addVertexWithUV(-radius, radius, radius,0,1);
tessellator.addVertexWithUV(-radius, -radius, radius,0,0);
//BOTTOM
tessellator.addVertexWithUV(radius, radius, -radius,1,1);
tessellator.addVertexWithUV(radius, -radius, -radius,1,0);
tessellator.addVertexWithUV(-radius, -radius, -radius,0,0);
tessellator.addVertexWithUV(-radius, radius, -radius,0,1);
//EAST
tessellator.addVertexWithUV(radius, -radius, -radius,0,0);
tessellator.addVertexWithUV(radius, radius, -radius,1,0);
tessellator.addVertexWithUV(radius, radius, radius,1,1);
tessellator.addVertexWithUV(radius, -radius, radius,0,1);
//SOUTH
tessellator.addVertexWithUV(radius, -radius, -radius,1,0);
tessellator.addVertexWithUV(radius, -radius, radius,1,1);
tessellator.addVertexWithUV(-radius, -radius, radius,0,1);
tessellator.addVertexWithUV(-radius, -radius, -radius,0,0);
//WEST
tessellator.addVertexWithUV(-radius, -radius, radius,0,1);
tessellator.addVertexWithUV(-radius, radius, radius,1,1);
tessellator.addVertexWithUV(-radius, radius, -radius,1,0);
tessellator.addVertexWithUV(-radius, -radius, -radius,0,0);
//NORTH
tessellator.addVertexWithUV(radius, radius, radius,1,1);
tessellator.addVertexWithUV(radius, radius, -radius,1,0);
tessellator.addVertexWithUV(-radius, radius, -radius,0,0);
tessellator.addVertexWithUV(-radius, radius, radius,0,1);
}
@Override
public void renderTileEntityAt(TileEntity tile, double x, double y,
double z, float f) {
Tessellator tessellator = Tessellator.instance;
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5F, y + 0.5F, z + 0.5F);
int bright = tile.getWorldObj().getLightBrightnessForSkyBlocks(tile.xCoord, tile.yCoord, tile.zCoord,0);
int brightX = bright % 65536;
int brightY = bright / 65536;
OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, brightX, brightY);
bindTexture(texture);
tessellator.startDrawingQuads();
RenderHelper.renderCubeWithUV(Tessellator.instance, -0.3f, -0.3f, -0.3f, 0.3f, 0.3f, 0.3f, 0, 1, 0, 1);
tessellator.draw();
GL11.glDisable(GL11.GL_TEXTURE_2D);
//GL11.glDisable(GL11.GL_LIGHTING);
for(int i=0; i < 6; i++) {
if(((TilePipe)tile).canConnect(i)) {
GL11.glPushMatrix();
ForgeDirection dir = ForgeDirection.getOrientation(i);
GL11.glTranslated(0.5*dir.offsetX, 0.5*dir.offsetY, 0.5*dir.offsetZ);
tessellator.startDrawingQuads();
//tessellator.setColorRGBA_F(0.1F, 0.1F, 0.95F, 1.0f);
//bindTexture(texture);
//for(int g=0; g < 8; g++) {
tessellator.setColorOpaque_F(.4f, 0.4f, 0.4f);
RenderHelper.renderCubeWithUV(Tessellator.instance, -0.25f, -0.25f, -0.25f, 0.25f, 0.25f, 0.25f, 0, 0, 0, 0);
//drawCube(0.25D, tessellator);
//}
tessellator.draw();
GL11.glPopMatrix();
}
}
//GL11.glDisable(GL11.GL_BLEND);
//GL11.glEnable(GL11.GL_LIGHTING);
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glPopMatrix();
}
}