Dustpuppy Posted September 29, 2017 Share Posted September 29, 2017 (edited) And me again. I am trying to render a frame around an entity, but it will not do it. This is the way i try it in the renderer of the entity. Spoiler public void doRender(EntityWorker entity, double x, double y, double z, float entityYaw, float partialTicks) { this.swapArmor(entity); super.doRender(entity, x, y, z, entityYaw, partialTicks); renderWireFrame(entity); } public void renderWireFrame(EntityWorker entity) { GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glDepthMask(false); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glColor4f(0.0F, 0.0F, 0.0F, 0.4F); GL11.glLineWidth(2.0F); GL11.glDisable(GL11.GL_TEXTURE_2D); double xa = entity.posX - 0.5D; double xb = entity.posX + 0.5D; double ya = entity.posY; double yb = entity.posY + 2; double za = entity.posZ - 0.5D; double zb = entity.posZ + 0.5D; Tessellator tessellator = Tessellator.getInstance(); net.minecraft.client.renderer.VertexBuffer buffer = tessellator.getBuffer(); buffer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION_NORMAL); buffer.pos(xa, ya, za); buffer.pos(xa, yb, za); buffer.pos(xb, yb, za); buffer.pos(xb, ya, za); buffer.pos(xa, ya, za); buffer.pos(xa, ya, zb); buffer.pos(xa, yb, zb); buffer.pos(xb, yb, zb); buffer.pos(xb, ya, zb); buffer.pos(xa, ya, zb); tessellator.draw(); buffer.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION_NORMAL); buffer.pos(xa, ya, za); buffer.pos(xa, ya, zb); buffer.pos(xa, yb, za); buffer.pos(xa, yb, zb); buffer.pos(xb, ya, za); buffer.pos(xb, ya, zb); buffer.pos(xb, yb, za); buffer.pos(xb, yb, zb); tessellator.draw(); GL11.glDepthMask(true); GL11.glPopAttrib(); } Someone an idea, what i am doing wrong? The positions are right, checked it. Edited September 29, 2017 by Dustpuppy Quote Link to comment Share on other sites More sharing options...
Dustpuppy Posted September 29, 2017 Author Share Posted September 29, 2017 I've found the errors. Forgot somethings. But now i have another problem. As soon as i render the frame around the entity, all other entities will be gone, if they are in the same line of view. If i turn around, there will be a point, where they be rendered again. Spoiler public void doRender(EntityWorker entity, double x, double y, double z, float entityYaw, float partialTicks) { this.swapArmor(entity); super.doRender(entity, x, y, z, entityYaw, partialTicks); if(entity.selected && entity.worldObj.isRemote) renderWireFrame(entity, x, y, z); } public void renderWireFrame(EntityWorker entity, double x, double y, double z) { GL11.glPushAttrib(GL11.GL_ENABLE_BIT); GL11.glDepthMask(false); GL11.glDisable(GL11.GL_CULL_FACE); GL11.glDisable(GL11.GL_LIGHTING); GL11.glEnable(GL11.GL_BLEND); GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glTranslated(-entity.posX, -entity.posY, -entity.posZ); Color color = new Color(255, 0, 0, 150); GL11.glColor4d(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()); GL11.glLineWidth(2.0F); double xa = entity.posX - 0.5D + x; double xb = entity.posX + 0.5D + x; double ya = entity.posY + y; double yb = entity.posY + 2 + y; double za = entity.posZ - 0.5D + z; double zb = entity.posZ + 0.5D + z; Tessellator tessellator = Tessellator.getInstance(); net.minecraft.client.renderer.VertexBuffer buffer = tessellator.getBuffer(); buffer.begin(GL11.GL_LINE_STRIP, DefaultVertexFormats.POSITION_NORMAL); buffer.pos(xa, ya, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, yb, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, yb, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, ya, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, ya, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, ya, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, yb, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, yb, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, ya, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, ya, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); tessellator.draw(); buffer.begin(GL11.GL_LINES, DefaultVertexFormats.POSITION_NORMAL); buffer.pos(xa, ya, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, ya, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, yb, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xa, yb, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, ya, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, ya, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, yb, za).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); buffer.pos(xb, yb, zb).color(color.getRed(), color.getGreen(), color.getBlue(), color.getAlpha()).endVertex(); tessellator.draw(); GL11.glDepthMask(true); GL11.glEnable(GL11.GL_CULL_FACE); GL11.glEnable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_BLEND); GL11.glPopAttrib(); } Quote Link to comment Share on other sites More sharing options...
Dustpuppy Posted September 29, 2017 Author Share Posted September 29, 2017 Found it. Forgot to push and pop the matrix. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.