package pneumaticCraft.client.render.pneumaticArmor;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.world.World;
import org.lwjgl.opengl.GL11;
public class RenderBlockArrows{
public int ticksExisted;
public void render(World world, int x, int y, int z, float partialTicks){
// if(true) return;
Block block = world.getBlock(x, y, z);
block.setBlockBoundsBasedOnState(world, x, y, z);
double minX = block.getBlockBoundsMinX();
double minY = block.getBlockBoundsMinY();
double minZ = block.getBlockBoundsMinZ();
double maxX = block.getBlockBoundsMaxX();
double maxY = block.getBlockBoundsMaxY();
double maxZ = block.getBlockBoundsMaxZ();
if(ticksExisted > 10) ticksExisted = 0;
float progress = (ticksExisted + partialTicks) / 10F;
GL11.glLineWidth(1.0F);
GL11.glColor4d(1, 1, 1, progress);
GL11.glPushMatrix();
GL11.glTranslated(-0.5D, -0.5D, -0.5D);
GL11.glPushMatrix();
GL11.glTranslated(minX, minY, minZ);
GL11.glRotatef(45, 0, 1, 0);
GL11.glRotatef(45, 1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(maxX, minY, minZ);
GL11.glRotatef(45, 0, -1, 0);
GL11.glRotatef(45, 1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(minX, minY, maxZ);
GL11.glRotatef(45, 0, -1, 0);
GL11.glRotatef(45, -1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(maxX, minY, maxZ);
GL11.glRotatef(45, 0, 1, 0);
GL11.glRotatef(45, -1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(minX, maxY, minZ);
GL11.glRotatef(45, 0, 1, 0);
GL11.glRotatef(135, 1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(maxX, maxY, minZ);
GL11.glRotatef(45, 0, -1, 0);
GL11.glRotatef(135, 1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(minX, maxY, maxZ);
GL11.glRotatef(45, 0, -1, 0);
GL11.glRotatef(135, -1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPushMatrix();
GL11.glTranslated(maxX, maxY, maxZ);
GL11.glRotatef(45, 0, 1, 0);
GL11.glRotatef(135, -1, 0, 0);
drawArrow(progress);
GL11.glPopMatrix();
GL11.glPopMatrix();
}
private void drawArrow(float progress){
double arrowBaseWidth = 0.4D;
double arrowBaseLength = 0.8D;
double arrowLength = 1.5D;
double arrowWidth = 0.7D;
double scale = 0.1D;
GL11.glPushMatrix();
GL11.glScaled(scale, scale, scale);
GL11.glTranslatef(0, progress * 4, 0);
Tessellator tess = Tessellator.instance;
tess.startDrawing(GL11.GL_LINE_STRIP);
tess.addVertex(-arrowBaseWidth, -arrowLength * 0.5D, 0);
tess.addVertex(-arrowBaseWidth, -arrowLength * 0.5D + arrowBaseLength, 0);
tess.addVertex(-arrowWidth, -arrowLength * 0.5D + arrowBaseLength, 0);
tess.addVertex(0, arrowLength * 0.5D, 0);
tess.addVertex(arrowWidth, -arrowLength * 0.5D + arrowBaseLength, 0);
tess.addVertex(arrowBaseWidth, -arrowLength * 0.5D + arrowBaseLength, 0);
tess.addVertex(arrowBaseWidth, -arrowLength * 0.5D, 0);
tess.draw();
GL11.glPopMatrix();
}
}