May 1, 20178 yr Author 7 minutes ago, V0idWa1k3r said: Ehh.. What? It is fired each frame, as any other render event. I don't really get the 'player can be assigned later' bit too. Assigned to what? RenderLivingEvent only fires for entities which are, well, drawn on screen. The entity object you get in that event can't be null. And as far as I am aware MC will not render players on the client (and thus will not call the event) untill the full data but the skin has been recieved for that player. And if you really need it you can even wait for the skin to be recieved with a simple if check... I do not see the startDrawingESPs method, but I assume it simply renders the AABB you've provided. You are not offsetting enough. Say your entity is at 20 10 10. And the player is at -20 10 10. Right now you are translating the tessellator to 0 0 0... and rendering the box there. You know, at 0, yourEntityOffsetY, 0. Why are you not applying the X and Z entity coordintes to your aabb? Also your minY and maxY coordinates are the same for your aabb. Unless you are handling that differently in your render function that will not work. With player can be assigned later I mean that I will asign players for the box to render later, so it need to be fired afterwards. This is my startDrawingESPs method: public static void startDrawingESPs(AxisAlignedBB bb, float r, float b, float g) { GL11.glPushMatrix(); GL11.glEnable(3042); GL11.glBlendFunc(770, 771); GL11.glLineWidth(1.5F); GL11.glDisable(GL11.GL_LIGHTING); GL11.glDisable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_LINE_SMOOTH); GL11.glDisable(2929); GL11.glDepthMask(false); GL11.glColor4d(r, b, g, 0.185F); drawBoundingBox(bb); GL11.glColor4d(r, b, g, 1.0F); drawOutlinedBoundingBox(bb); GL11.glLineWidth(2.0F); GL11.glDisable(GL11.GL_LINE_SMOOTH); GL11.glEnable(GL11.GL_TEXTURE_2D); GL11.glEnable(GL11.GL_LIGHTING); GL11.glEnable(2929); GL11.glDepthMask(true); GL11.glDisable(3042); GL11.glPopMatrix(); } DrawBoundingBox method: Spoiler public static void drawBoundingBox(AxisAlignedBB axisalignedbb) { VertexBuffer tessellator = Tessellator.getInstance().getBuffer(); Tessellator tessellatorr = Tessellator.getInstance(); tessellator.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellatorr.draw(); tessellator.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellatorr.draw(); tessellator.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellatorr.draw(); tessellator.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellatorr.draw(); tessellator.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellatorr.draw(); tessellator.begin(GL11.GL_QUADS, DefaultVertexFormats.POSITION_TEX); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.minX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.minZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.maxY, axisalignedbb.maxZ).endVertex(); tessellator.pos(axisalignedbb.maxX, axisalignedbb.minY, axisalignedbb.maxZ).endVertex(); tessellatorr.draw(); } DrawOutlinedBoundingBox Method Spoiler public static void drawOutlinedBoundingBox(AxisAlignedBB par1AxisAlignedBB) { VertexBuffer var2 = Tessellator.getInstance().getBuffer(); Tessellator tessellator = Tessellator.getInstance(); var2.begin(3, DefaultVertexFormats.POSITION_TEX); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ).endVertex(); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ).endVertex(); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ).endVertex(); tessellator.draw(); var2.begin(3, DefaultVertexFormats.POSITION_TEX); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ).endVertex(); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ).endVertex(); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ).endVertex(); tessellator.draw(); var2.begin(1, DefaultVertexFormats.POSITION_TEX); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.minZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ).endVertex(); var2.pos(par1AxisAlignedBB.maxX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ).endVertex(); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.minY, par1AxisAlignedBB.maxZ).endVertex(); var2.pos(par1AxisAlignedBB.minX, par1AxisAlignedBB.maxY, par1AxisAlignedBB.maxZ).endVertex(); tessellator.draw(); } Edited May 1, 20178 yr by Checkium
May 1, 20178 yr Yes, you need to specify your AABB correctly. With appropriate XYZ coordinates. Something like (posX - 0.5, posY, posZ - 0.5, posX + 0.5, posY + offsetY, posZ + 0.5) Your vertexformat is position + texture coordinates yet you are only providing the position to your vertex. Why does your format even include texture coordinates if you are disabling the texture units with OpenGL in the first place? Also you do not need to call draw every n vertices. You can upload all your vertices first and then call the draw method.
May 1, 20178 yr Author 4 minutes ago, V0idWa1k3r said: Yes, you need to specify your AABB correctly. With appropriate XYZ coordinates. Something like (posX - 0.5, posY, posZ - 0.5, posX + 0.5, posY + offsetY, posZ + 0.5) Your vertexformat is position + texture coordinates yet you are only providing the position to your vertex. Why does your format even include texture coordinates if you are disabling the texture units with OpenGL in the first place? Also you do not need to call draw every n vertices. You can upload all your vertices first and then call the draw method. So, I fixed the AABB, and now its like this: I didn't get the part about the vertex texture thing, could you explain better?
May 1, 20178 yr I don't think you have fixed it as it is still clearly following the player with some of it's vertices. You should really use the RenderLivingEvent to not suffer with translations that much as it already has everything figured, you would just use the X/Y/Z it provides. VertexFormat is a way to tell OpenGL what data do your vertices carry. Like position. Or color. Or texture coordinates. When you start drawing with Tessellator's VertexBuffer you specify the format - the way vertices are packed. You should then follow that format when declaring your vertices. If your format is POSITION_TEX which is basically position followed by texture coordinates your vertices should include both (pos(xyz).tex(uv)). If you are not planning to use texture coordinates don't use the format which includes them. There is a POSITION format which only requires position. Or POSITION_COLOR. Edited May 1, 20178 yr by V0idWa1k3r
May 1, 20178 yr Author 3 minutes ago, V0idWa1k3r said: I don't think you have fixed it as it is still clearly following the player with some of it's vertices. You should really use the RenderLivingEvent to not suffer with translations that much as it already has everything figured, you would just use the X/Y/Z it provides. VertexFormat is a way to tell OpenGL what data do your vertices carry. Like position. Or color. Or texture coordinates. When you start drawing with Tessellator's VertexBuffer you specify the format - the way vertices are packed. You should then follow that format when declaring your vertices. If your format is POSITION_TEX which is basically position followed by texture coordinates your vertices should include both (pos(xyz).tex(uv)). If you are not planning to use texture coordinates don't use the format which includes them. There is a POSITION format which only requires position. Or POSITION_COLOR. I think i'm finally getting somewhere
May 1, 20178 yr Author 12 minutes ago, V0idWa1k3r said: I don't think you have fixed it as it is still clearly following the player with some of it's vertices. You should really use the RenderLivingEvent to not suffer with translations that much as it already has everything figured, you would just use the X/Y/Z it provides. VertexFormat is a way to tell OpenGL what data do your vertices carry. Like position. Or color. Or texture coordinates. When you start drawing with Tessellator's VertexBuffer you specify the format - the way vertices are packed. You should then follow that format when declaring your vertices. If your format is POSITION_TEX which is basically position followed by texture coordinates your vertices should include both (pos(xyz).tex(uv)). If you are not planning to use texture coordinates don't use the format which includes them. There is a POSITION format which only requires position. Or POSITION_COLOR. Ok so, I got the box working Is there any way to be able to control the box? Like, change its colors or remove it anytime I want? Maybe making some color variables and using them in the event?
May 1, 20178 yr Author 2 minutes ago, V0idWa1k3r said: Pretty much something like that, yea. The particular implementation is up to you Also, a slightly thing I wanna change if its not hard: The box currently keeps teleporting around wich is annyoing me, is it possible to make it move smoother, and would it be hard? Also, how can I make the box don't show for myself? Edited May 1, 20178 yr by Checkium
May 1, 20178 yr You mean when in third person view? Just check that the entity you are drawing the box around isn't the client player. Define 'teleporting around'. It is already translated using partial ticks so it should move smooth with the entity it is drawn around. If that entity is being teleported then the box is obviously going to follow the entity.
May 1, 20178 yr Author 3 minutes ago, V0idWa1k3r said: You mean when in third person view? Just check that the entity you are drawing the box around isn't the client player. Define 'teleporting around'. It is already translated using partial ticks so it should move smooth with the entity it is drawn around. If that entity is being teleported then the box is obviously going to follow the entity. It was a bug, it only happens when the box is on you, wich I will disable so no problem. Thanks for all the help man <3
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.